将遗传算法应用于旅行商的一个细节问题

时间:2010-03-30 00:37:28

标签: genetic-algorithm traveling-salesman

我阅读了有关这方面的各种内容并理解了所涉及的原理和概念,然而,没有一篇论文提到如何计算涉及相邻城市(染色体)的染色体(代表路径)的适合度的细节。没有通过边缘直接连接(在图中)。

例如,鉴于染色体1 | 3 | 2 | 8 | 4 | 5 | 6 | 7,其中每个基因代表图/地图上的城市指数,我们如何计算其适应度(即(例如,在城市2和8之间没有直接边缘/链接)我们是否遵循某种贪婪算法来计算2到8之间的路线,并将此路线的距离添加到总?

将GA应用于TSP时,这个问题似乎很常见。任何以前做过的人请分享您的经验。谢谢。

3 个答案:

答案 0 :(得分:6)

如果图表中2和8之间没有链接,那么任何染色体为2 | 8或8 | 2的染色体对于经典旅行商问题无效。如果你发现2到8之间的其他路线,你可能会违反“访问每个地点一次”的要求。

一个非常狡猾但实用的解决方案是在距离非常高的节点之间包含边缘,如果您的语言支持,则甚至包括+ INF。这样,您的标准最小化适应度函数将自然地修剪它们。

我认为问题的原始表述包括所有节点之间的边缘,因此这不是问题。

答案 1 :(得分:1)

这是确切的问题,专门的Crossover和变异方法已应用于基于GA的TSP问题解决方案。请参阅此question

答案 2 :(得分:1)

如果染色体不代表有效的解决方案,则完全不适合解决问题。所以取决于你如何订购健身。也就是说,如果较低的数字代表更多的适应度(当健康代表总成本时可能是一个好主意),那么当你得到一个无效的基因序列时,你会给它分配一个最大值并打破对该染色体的任何进一步的适应度计算。

(反之亦然,如果更高的适应度意味着染色体更适合这项工作,则将其赋予零适应度)

然而,正如其他人指出的那样,确保无效的染色体不会发生可能会更好。然而,如果这本身就是一个过度复杂的过程,那么允许它们并确保破碎的染色体不可能进入连续几代可能是一种可接受的方法。