在GA中过早收敛

时间:2013-07-15 18:14:01

标签: java selection genetic-algorithm

我目前正在研究遗传算法来解决群体分配问题(尽可能地将学生分配到平衡群体)。我已经实施了整个算法,但我不知道它是否产生高质量的结果或不。我认为我太早收敛,因为它从第10代左右开始保持相同的解决方案(没有改进)。

我使用了2-tournmenat选择并订购了交叉。我试图设置不同的人口规模,锦标赛规模和突变率,但它没有帮助! 问题出在哪儿?这是一个星期,我陷入了同样的进步。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

一般情况下,如果你的GA收敛太快,你需要注意几件事情:

  • 您的突变/交叉率是否设置合适?如果这个数字太低,你的人口就会很快停滞不前。
  • 您的效果指标是否合理?如果度量标准校准不佳,那么最终会给一个快速控制基因库的群体带来过高的优势。
  • 您是否使用了足够的随机数据?如果你正在处理一个非常小的解决方案空间,那么使用GA可能没有意义,如果你这样做,你最终会很快收敛。
  • 您的实施实际上是否正确?引入一些很难找到的微妙逻辑错误真的很容易。我建议使用调试器逐步完成一代,并确保关键点的行为与您认为的一样。
那说,十代并非完全不合理。在断言你的GA出现问题之前,我建议确保你的表现确实存在问题。

答案 1 :(得分:0)

你可能会在局部最大值上快速收敛;这是遗传算法中的固有问题。您通常可以通过长时间段检测这种状态,但没有进展。

如果是这种情况,可能最简单的解决方案是节省卡住的人口并创建一个新的人口。希望这个会陷入全局最大值,或者至少是不同的局部最大值。然后,您可以比较两个群体,并保持一个更好的解决方案。有时候,根据基因的相关程度,将两个种群一起繁殖,以寻求更好的解决方案。