首页 > 解决方案 > 具有奇数个体的 DEAP eaSimple 算法

问题描述

eaSimple 算法的文档指出,父母被分成连续的个体对,每对产生两个后代。

首先,使用 toolbox.clone() 方法复制亲代种群 Pp,并将结果放入后代种群 Po。执行 Po 的第一个循环以配对连续个体对。根据交叉概率 cxpb,个体 xi 和 xi+1 使用 toolbox.mate() 方法进行交配。由此产生的孩子 yi 和 yi+1 取代了他们各自在 Po 中的父母。

如何处理具有奇数个体的群体中的最后一个个体?它是否从未与另一个个体交配而只是发生了变异?

标签: pythondeap

解决方案


通过查看代码,在人口中存在一个循环,它将个体配对以进行交叉varAnd

for i in range(1, len(offspring), 2):

这意味着如果有奇数个个体,一个个体将永远不会交配。

突变循环是

for i in range(len(offspring)):

所以每个人都会变异。

结论:确实,具有奇数个体的群体中的最后一个个体可能会发生突变,但永远不会用于交叉。


推荐阅读