python - 具有奇数个体的 DEAP eaSimple 算法
问题描述
eaSimple 算法的文档指出,父母被分成连续的个体对,每对产生两个后代。
首先,使用 toolbox.clone() 方法复制亲代种群 Pp,并将结果放入后代种群 Po。执行 Po 的第一个循环以配对连续个体对。根据交叉概率 cxpb,个体 xi 和 xi+1 使用 toolbox.mate() 方法进行交配。由此产生的孩子 yi 和 yi+1 取代了他们各自在 Po 中的父母。
如何处理具有奇数个体的群体中的最后一个个体?它是否从未与另一个个体交配而只是发生了变异?
解决方案
通过查看代码,在人口中存在一个循环,它将个体配对以进行交叉varAnd
:
for i in range(1, len(offspring), 2):
这意味着如果有奇数个个体,一个个体将永远不会交配。
突变循环是
for i in range(len(offspring)):
所以每个人都会变异。
结论:确实,具有奇数个体的群体中的最后一个个体可能会发生突变,但永远不会用于交叉。
推荐阅读
- assembly - 如何使用星号来屏蔽密码?
- android - Google 像素 ReactiveNetwork wifi 更改事件在 30 秒延迟内收到
- tableau-api - 嗨--如何在tableau中的日期参数上计算当前周和上一年同一周。此日期参数需要ISO周格式
- vagrant - 如何在 Ubuntu 中使用主机浏览器在 vagrant guest 中运行 Cypress 测试运行程序
- excel - Excel vba插入照片但照片没有出现在其他用户计算机中
- c++ - 如何在另一个函数内部调用结构内部的函数
- amazon-web-services - 即使没有代理,也会放大初始化错误“无法获取本地颁发者证书”
- mysql - 关于“外键约束失败”异常
- python - Django DRF 嵌套序列化器
- gitlab-ci - 从 gitlab shell 运行器中的容器运行器上传 Junit 报告