1

我在 python 中使用 DEAP 库来解决遗传编程最大化问题。

我曾经用eaSimple algorithm60% 的交叉概率和 30% 的突变概率创建种群。

种群中最佳个体的适应度正在增加,但种群的平均适应度有时会下降(例如,第一个种群的平均适应度大于最后一个种群的平均适应度)。

这是正常的还是设置有问题?

另一件要提的是,我将最差适应度设置为零,并且人口确实包括适应度值为零的个人(人口规模为 1000)。

4

1 回答 1

0

eaSimple算法varAnd对初始种群的所有个体使用该策略,并且不进行选择。因此,该eaSimple算法探索了特征空间,但对优化的作用不大。如果您确实想使用此算法,我建议使用一个HallOfFame对象来记住在探索过程中找到的最佳对象。


从描述什么的文档中的伪代码eaSimple

population = select(population, len(population))

表示人口中的所有元素都被取走。例如,如果您的select函数是tools.SelBest,那么您选择了与人口规模相同的n最佳个体。n

然后varAnd使用该策略(文档),其中父个体根据其在种群中的指数配对并交配。生成的两个后代有固定的概率替换两个原始父母。

于 2019-11-06T10:17:39.037 回答