【发布时间】:2011-01-27 05:15:02
【问题描述】:
我已经实施了一种遗传算法来解决旅行商问题 (TSP)。当我只使用突变时,我会找到比添加交叉时更好的解决方案。我知道普通的交叉方法不适用于 TSP,所以我同时实现了 Ordered Crossover 和 PMX Crossover 方法,但结果都不好。
以下是我正在使用的其他参数:
突变:单交换突变或反向子序列突变 (as described by Tiendil here),突变率测试在 1% 到 25% 之间。
选择:轮盘选择
健身功能:1/行程距离
种群规模:测试了 100、200、500,我还运行了 GA 5 次,这样我就有了多种起始种群。
停止条件:2500代
对于相同的 26 点数据集,我通常使用具有高突变率的纯突变得到大约 500-600 距离的结果。添加交叉时,我的结果通常在 800 距离范围内。另一个令人困惑的事情是,我还实现了一个非常简单的爬山算法来解决这个问题,当我运行 1000 次(比运行 GA 5 次更快)我得到大约 410-450 距离的结果,我希望使用 GA 获得更好的结果。
关于为什么我的 GA 在我添加交叉时表现更差的任何想法?为什么它的性能比简单的爬山算法差得多,因为一旦找到局部最大值,它就无法探索,因为它应该卡在局部最大值上?
【问题讨论】:
标签: algorithm mathematical-optimization genetic-algorithm traveling-salesman