在自然编程中,使人口平均适应度下降(最大化问题)是否正常?

时间:2019-07-24 08:08:48

标签: python genetic-programming deap

我正在使用python中的Deap库解决遗传编程最大化问题。

我使用eaSimple algorithm创建了60%的交叉概率和30%的突变概率的种群。

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

这是正常现象还是设置有问题?

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

1 个答案:

答案 0 :(得分:0)

eaSimple算法对初始总体的所有个体都使用varAnd策略,并且没有选择。因此,eaSimple算法探索了特征空间,但是在优化上没有多大作用。如果确实要使用此算法,建议您使用HallOfFame对象来记住在探索过程中找到的最佳对象。


根据the documentation中的伪代码描述eaSimple的行为,

population = select(population, len(population))

表示人口中的所有要素均被占用。例如,如果您的select函数是tools.SelBest,那么您选择了n最佳个体,其中n是人口总数。

然后使用varAnd策略(documentation),在该策略中,根据个体在种群中的索引配对父母并进行交配。产生的两个后代具有替换两个原始父代的固定概率。