我在 python 中使用 DEAP 库来解决遗传编程最大化问题。
我使用 eaSimple 算法
创建了具有 60% 交叉概率和 30% 突变概率的群体。
种群中最好个体的适应度不断增加,但种群的平均适应度有时会下降(例如,第一个种群的平均适应度高于最后一个种群的平均适应度)。
这是正常现象还是设置有问题?
另一件事要提的是,我已将最差适应度设置为零,并且群体确实包括适应度值为零的个体(群体规模为 1000)。
最佳答案
eaSimple
算法对初始种群的所有个体使用 varAnd
策略,并且不进行选择。因此,eaSimple
算法探索了特征空间,但对优化没有多大作用。如果您确实想使用此算法,我建议使用 HallOfFame
对象来记住在探索过程中找到的最佳对象。
来自the documentation中的伪代码描述 eaSimple 的作用,
population = select(population, len(population))
表示选取总体中的所有元素。例如,如果您的 select
函数是 tools.SelBest
,那么您已选择 n
个具有 n
的最佳个体是人口规模。
然后使用 varAnd
策略 ( documentation ),其中父代个体根据其在种群中的索引进行配对并交配。生成的两个后代有固定的概率取代两个原来的 parent 。
关于python - 使用 DEAP 进行遗传规划(最大化问题)时,群体平均适应度下降是否正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57178174/