针对TSP问题的建议GA运营商?

时间:2010-02-02 15:27:48

标签: python algorithm genetic-algorithm evolutionary-algorithm traveling-salesman

我正在建立一个遗传算法来解决旅行商问题。不幸的是,我发现可以持续超过一千代的峰值,然后变异并获得更好的结果。在这种情况下,交叉和变异算子通常做得好吗?

3 个答案:

答案 0 :(得分:3)

有序突变和有序交叉(见this article)。标准变异和交叉操作通常会导致无效的解决方案(即路线中的重复和/或缺失的城市)。

最近有一个similar question

我有a Java applet that implements the TSP using ordered cross-over and mutation,如果您有兴趣比较实施的效果。

答案 1 :(得分:2)

如果您的问题是峰值仍然存在超过一千代,那么问题可能不在于交叉和变异算子。您可能不会为您的人群引入或保留足够的变异:我会检查交叉,突变和幸存者从一代到下一代的比例,并可能提高突变的比例。

答案 2 :(得分:1)

请你澄清一下

  

“不幸的是,我达到了峰值   维持超过一千   在变异之前的几代人   他们并取得了更好的结果“?

您可以检查交叉运算符,确保子染色体中没有重复节点。这些交叉运算符中的几个是Order Crossover(OX)和Edge Crossover运算符。

突变可以像简单地在单个染色体中交换两个位置一样简单。

顺便说一句,既然你已经标记了“python”,请看一下Pyevolve,它也有一个TSP示例。