我正在学习遗传算法,而我正在练习旅行商问题。
我想知道我应该真实地期望GA能够做些什么。
我在这里尝试了15个城市和48个城市问题TSP sample problems
我的GA非常快速地找到15个城市问题的确切解决方案。然而,它与48个城市问题斗争。我尝试了各种规格的儿童人口规模,我的结果大致如下:
正确解最小距离:33,551
我的GA解决方案距离:~39,000
Random Route distnace:~140,000
我知道GA不能保证给出确切的解决方案,但只能提供一个接近的解决方案,这基本上就是正在发生的事情。
我的问题是:关于GA算法可以解决48个城市问题的问题,或者我做错了什么,我的GA需要一些重大改进?
提前感谢
答案 0 :(得分:3)
城市数量越大,问题就越难,而且不仅因为搜索空间更大,而且因为成本函数通常变得更加复杂。
说启发录的表现总是很难(如果不是不可能)(不仅仅是GA,而是所有这些),但在我看来,16%的折扣是非常好的。我相信如果您更改了运算符并使用参数进行了一些修改,性能可能会提高。
每个运营商都对结果有限制和期望。例如,您的交叉算子(正如您在上一篇文章中所述)倾向于增加具有相同子路径的染色体数量,从而导致遗传收敛,并且您使用的变异算子不是最具侵略性的算子之一。因此,我建议您使用其他运算符,看看性能是否有所改善。您可以使用我之前回答中的所有引用来正确理解它们,并且实现不应该太难,因为一旦您理解它们就很简单。
答案 1 :(得分:1)
我认为你绝对可以改进。我的目标是误差不超过5%,最好是~1%
。