我一直在寻找可以为我正在研究的遗传算法实现自适应突变率的方法。我见过一种算法,它使用当前个体适应度和平均种群适应度来计算突变率,但是我不确定它是否非常有效。
在我见过的算法中,您执行以下操作:
mutationRate = (bestFitness - individualFitness) / (bestFitness - averageFitness) * 0.5
这是一个好方法还是有更好的方法?
最佳答案
我认为没有“最好的方法”:变异算法和变异率是特定于问题/算法的。
不幸的是,根据许多实际实验,即使是自适应突变也很容易陷入局部最优。
使用您正在使用的自适应突变方法,具有高适应度的个体
对应较小的变异概率,低适应度的个体对应较高的变异概率。
这种方法可以有效保护优秀个体,但容易陷入局部收敛。
如果遗传多样性逐渐丧失,另一种(不一定更好)的方法是增加突变率(以保持种群分布在
搜索空间)。
否则,当观察到种群多样性增加时,该值会降低。
突变率值的这些变化也是探索和利用之间良好平衡的额外来源(参见 1 )。
引用资料
关于algorithm - 遗传算法的自适应变异/交叉率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26575447/