0

我正在学习遗传算法,并且正在练习旅行商问题。

我想知道我应该实际期望 GA 能够做什么。

我在这里尝试了 15 个城市和 48 个城市的问题TSP 示例问题

我的 GA 很快就找到了 15 个城市问题的确切解决方案。然而,它与 48 城市问题作斗争。我尝试了各种规格的儿童数量和人口规模,我的结果大致是这样的:

正确解最小距离:33,551

我的 GA 解决方案距离:~39,000

随机路线距离:~140,000

我知道 GA 不能保证给出确切的解决方案,而只能提供一个接近的解决方案,这基本上就是正在发生的事情。

我的问题是:对于 48 个城市的问题,我离 GA 算法还差多远,还是我做错了什么,我的 GA 需要一些重大改进?

先感谢您

4

2 回答 2

3

城市数量越多,问题就越难,这不仅是因为搜索空间更大,还因为成本函数通常变得更加复杂。

总是很难(如果不是不可能的话)说明启发式算法的性能如何(不仅仅是 GA,而是所有这些),但在我看来,16% 的折扣是一笔不小的数目。我相信如果您更改运算符并稍微修改参数,性能可能会有所提高。

每个操作员对结果都有限制和期望。例如,您的交叉算子(如您在上一篇文章中所述)往往会增加具有相同子路径的染色体数量,从而导致遗传收敛,而您使用的变异算子并不是最具攻击性的算子之一。因此,我建议您使用其他运算符,看看性能是否有所提高。您可以使用我之前对您的回答中的所有参考资料来正确理解它们,并且实施不应该太难,因为一旦您理解它们就很简单。

于 2012-06-14T16:22:00.170 回答
1

我认为你绝对可以改进这一点。我的目标是误差不超过 5%,最好是~1%.

于 2012-06-14T17:17:11.633 回答