algorithm - 遗传算法的自适应突变/交叉率

标签 algorithm optimization artificial-intelligence genetic-algorithm mutation

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

在我看到的算法中,您执行了以下操作:

mutationRate = (bestFitness - individualFitness) / (bestFitness - averageFitness) * 0.5

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

最佳答案

我认为没有“最佳方法”:变异算法和变异率是特定于问题/算法的。

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

通过您使用的自适应突变方法,一个具有高适应性的个体 对应较小的变异概率,适应度低的个体对应较高的变异概率。

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

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

否则,当观察到种群多样性增加时,该值会降低。

突变率值的这些变化也是探索和利用之间良好平衡的额外来源(参见 1)。

引用资料

  1. A New Strategy for Adapting the Mutation Probability in Genetic Algorithms - Natalia Stark、Gabriela Minetti、Carolina Salto
  2. Adaptive mutation rate control schemes in genetic algorithms -德克·蒂伦斯

关于algorithm - 遗传算法的自适应突变/交叉率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575447/

相关文章:

c - 从数组数据中获取平面切片

javascript - 优化:使用ajax加载内容

c++ - 优化 : Inline or Macrofunction?

artificial-intelligence - 大脑建模

java - 如何在 Java 中实现 Word2Vec?

lucene - 如何设计自动QA系统?

algorithm - 有没有时间复杂度为O(n*(log n)^2)的算法?

algorithm - 30,000 个数据点,找出 2 周时间内的最大变化

algorithm - 动态规划 : Optimal Binary Search Tree

optimization - 优化SPARQL查询