我在 python 中使用 DEAP 库来解决遗传编程最大化问题。
我曾经用eaSimple algorithm
60% 的交叉概率和 30% 的突变概率创建种群。
种群中最佳个体的适应度正在增加,但种群的平均适应度有时会下降(例如,第一个种群的平均适应度大于最后一个种群的平均适应度)。
这是正常的还是设置有问题?
另一件要提的是,我将最差适应度设置为零,并且人口确实包括适应度值为零的个人(人口规模为 1000)。
我在 python 中使用 DEAP 库来解决遗传编程最大化问题。
我曾经用eaSimple algorithm
60% 的交叉概率和 30% 的突变概率创建种群。
种群中最佳个体的适应度正在增加,但种群的平均适应度有时会下降(例如,第一个种群的平均适应度大于最后一个种群的平均适应度)。
这是正常的还是设置有问题?
另一件要提的是,我将最差适应度设置为零,并且人口确实包括适应度值为零的个人(人口规模为 1000)。
该eaSimple
算法varAnd
对初始种群的所有个体使用该策略,并且不进行选择。因此,该eaSimple
算法探索了特征空间,但对优化的作用不大。如果您确实想使用此算法,我建议使用一个HallOfFame
对象来记住在探索过程中找到的最佳对象。
从描述什么的文档中的伪代码eaSimple
,
population = select(population, len(population))
表示人口中的所有元素都被取走。例如,如果您的select
函数是tools.SelBest
,那么您选择了与人口规模相同的n
最佳个体。n
然后varAnd
使用该策略(文档),其中父个体根据其在种群中的指数配对并交配。生成的两个后代有固定的概率替换两个原始父母。