我应该总是在 steady-state 选择中改变后代吗?

Should I always mutate the offspring in steady-state selection?

已阅读 Essentials of Metaheuristics and this site 中遗传算法中实现 steady-state 选择的伪代码, 我应该始终对 children 进行变异还是应该对其进行变异概率,比如 50%?

我有点担心如果我总是在每一代都做变异,种群不会收敛,因为染色体是由0到1的实数值表示的。

遗传算法的行为对于您启发式选择的权重值非常明智。

分配给每个动作的概率值实际上取决于您正在应用的特定遗传方案,数据表示的方式突变交叉影响,初始种群和问题本身。

因此,为了启发式为您的问题选择最佳权重值,我建议您跟踪以下数据:

  • 随着时间的推移,您的种群熵多样性指数(参考:Wikipedia)的进化
  • 随着时间的推移,最佳适应度函数值的进化
  • 随着时间的推移平均适应度函数值的进化
  • 具有相同遗传密码的新个体比率 28=]现有(或过去)个人

我在这里附上了一张图,显示了这些参数在最早的一次执行中的演变 (我仍然需要平衡它) of AGER,一种定制的遗传算法,能够自动找到嵌入式微处理器理想设计的最佳近似值,基于用于执行给定应用程序的简单标量架构

(click to enlarge picture)

理想情况下,您希望设置权重值,使初始 斜率尽可能低 ,但不要达到 平均适应度函数 价值在几代人中都没有改善 (但应该允许它暂时恶化)diversity 应尽可能保持相对较高,而适应度函数的平均值应增长非常缓慢 (与图片不同).相反,最佳适应度值应该被验证为单调递增函数。


话虽如此,等于50%的变异率似乎很高