【问题标题】:A detail question when applying genetic algorithm to traveling salesman将遗传算法应用于旅行商时的一个细节问题
【发布时间】:2011-02-02 06:51:35
【问题描述】:

我阅读了有关这方面的各种资料并了解所涉及的原理和概念,但是,没有一篇论文提到如何计算涉及相邻城市(在染色体中)的染色体(代表一条路线)的适应度的细节不直接由边连接(在图中)。

例如,给定一条染色体 1|3|2|8|4|5|6|7,其中每个基因代表一个城市在图/地图上的索引,我们如何计算它的适应度(即行驶距离的总和)如果,比如说,城市 2 和 8 之间没有直接的边缘/链接。我们是否遵循某种贪心算法来计算出 2 和 8 之间的路线,并将这条路线的距离添加到总计?

在将 GA 应用于 TSP 时,这个问题似乎很常见。有做过的朋友请分享一下经验。谢谢。

【问题讨论】:

  • 正如@kibibu 所说,您永远不能产生无效的染色体。这适用于任何 GA 实施。

标签: genetic-algorithm traveling-salesman


【解决方案1】:

如果图上的 2 和 8 之间没有联系,那么对于经典的旅行商问题,任何包含 2|8 或 8|2 的染色体都是无效的。如果您在 2 和 8 之间找到其他路线,您可能会违反“每个地点访问一次”的要求。

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

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

【讨论】:

  • 我认为 +INF 解决方案是解决问题的最简单方法
  • 最简单的解决方法是完全避免它:确保每对节点之间都有一条边。
  • 这就是我的意思 - 具有疯狂高距离的实际边缘。伪边缘是一个糟糕的词选择,改变了。
【解决方案2】:

这正是这类问题,专门的交叉和变异方法已应用于基于 GA 的 TSP 问题解决方案。看到这个question

【讨论】:

    【解决方案3】:

    如果染色体不代表有效的解决方案,那么它完全不适合解决问题。所以取决于你如何订购健身。即,如果较小的数字代表更多的适应度(当适应度代表总成本时可能是一个好主意),那么当您获得无效的基因序列时,您将为其分配一个最大值并中断对该染色体的任何进一步适应度计算。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-17
      • 2017-10-02
      • 1970-01-01
      • 2012-07-27
      • 2021-07-09
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多