我正在使用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/