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

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

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

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

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

最佳答案

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



the documentation中描述eaSimple功能的伪代码中,

population = select(population, len(population))


表示人口中的所有要素都被采用。例如,如果您的select函数是tools.SelBest,则您选择了n最佳个体,其中n是人口规模。

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

关于python - 使用DEAP在基因编程(最大化问题)中降低群体的平均适应度是否正常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57178174/

10-10 19:26