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

时间:2014-10-26 16:51:37

标签: algorithm optimization artificial-intelligence genetic-algorithm mutation

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

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

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

这会是一个好方法还是更好?

2 个答案:

答案 0 :(得分:4)

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

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

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

这种方法可以有效保护优秀的个体,但很容易陷入局部趋同。

如果遗传多样性逐渐丧失(为了维持人口分布),一种不同的(并不一定更好)方法是提高突变率 搜索空间)。

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

突变率值的这些变化也是探索和利用之间良好平衡的另一个来源(见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 - Dirk Thierens

答案 1 :(得分:1)

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

你能做的最好的事情就是找出自己 - 用不同的方法玩,看看你是否能得到更好的结果。此外,或许https://cstheory.stackexchange.com/会更好地提出这样的问题。