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