首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遗传算法的自适应变异/交叉率

遗传算法的自适应变异/交叉率
EN

Stack Overflow用户
提问于 2014-10-27 00:51:37
回答 2查看 1.3K关注 0票数 4

我一直在寻找为我正在研究的遗传算法实现自适应突变率的方法。我见过一种算法,它使用当前的个体适应度和平均群体适应度来计算变异率,但我不确定它是否非常有效。

在我所见过的算法中,您可以执行以下操作:

代码语言:javascript
复制
mutationRate = (bestFitness - individualFitness) / (bestFitness - averageFitness) * 0.5

这是一个好的方法,还是有更好的方法?

EN

回答 2

Stack Overflow用户

发布于 2014-10-29 23:23:35

我不认为有一个“最好的方法”:突变算法和突变率是特定于问题/算法的。

不幸的是,根据许多实际实验,即使是自适应变异也很容易陷入局部最优。

使用您正在使用的自适应突变方法,具有高适应度的个体对应于较小的突变概率,而具有低适应度的个体对应于较高的突变概率。

该方法能有效地保护优秀个体,但容易陷入局部收敛。

一种不同的(不一定是更好的)方法是在遗传多样性逐渐丧失的情况下增加突变率(以便保持种群在搜索空间中的分布)。

否则,当观察到种群多样性增加时,该值就会减小。

突变率值的这些变化也是在探索和开发之间实现良好平衡的另一个来源(参见1)。

参考

  1. A New Strategy for Adapting the Mutation Probability in Genetic Algorithms --娜塔莉亚·斯塔克,加布里埃拉·米内蒂,卡罗莱纳州Salto
  2. Adaptive mutation rate control schemes in genetic algorithms - Dirk Thierens
票数 4
EN

Stack Overflow用户

发布于 2014-10-29 23:10:03

在GA中没有银弹。有多种方法可以实现变异和其他因素,但所有这些都取决于您使用的域、约束的数量、适应度函数和所有其他因素。

你能做的最好的事情就是发现自己--尝试不同的方法,看看你是否能得到更好的结果。此外,也许https://cstheory.stackexchange.com/会是一个更好的地方来问这样的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26575447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档