【问题标题】:How to deal with crossover when sequence matters?当顺序很重要时如何处理交叉?
【发布时间】:2013-05-08 18:50:33
【问题描述】:

当孩子必须有特定的顺序时,如何跨越两个父母?

例如,将遗传算法应用于顶点/边的固定图上的旅行商问题时,您必须应对并非所有顶点都可以传播到其他顶点的事实。这使得交叉变得更加困难,因为与所有顶点都可能到达所有其他顶点的 TSP 不同,当执行交叉时,它必须在产生合法路径的点上完成。另一种方法是无论如何都交叉并拒绝非法路径,但风险是巨大的计算成本并且很少甚至没有合法路径。

我已阅读有关置换交叉的信息,但我不完全确定这如何解决问题。有人可以指出正确的方向或建议吗?

【问题讨论】:

  • 在道林进化论中,如果新的有机体无效会怎样?大自然如何处理这个问题?
  • 它被拒绝了,但达尔文进化论不必担心计算的指数增长。
  • 不知道为什么所有的近距离投票,这是一个完全有效(和主题)的问题
  • 同样的问题,措辞不同:Crossover operator for permutations,之前已经回答过:What you are looking for is ordered crossover
  • 顺便说一句,您从未验证过您的问题的任何答案。您可以考虑阅读about 页面以了解如何在网站上表现。

标签: algorithm genetic-algorithm


【解决方案1】:

排序应该尽可能不成为遗传编程的约束。也许您应该考虑为您的解决方案选择另一种格式。 例如,在您的 TSP 中,考虑密码子 A->B。

您可以考虑“采用从 A 到 B 的最短路径”,而不是“从 A 到 B”的意思。这样,您的解决方案总是可行的。您只需预先计算一个最短路径矩阵作为预处理。

现在,这并不能保证候选人在您的交叉后成为可行的解决方案。您的分频器应进行调整,以确保您的解决方案仍然可行。例如,对于 TSP,请考虑以下序列:

1 : A B C D E F G H

2 : A D E G C B F H

随机选择一个枢轴(在我们的示例中为 E)。这将导致完成以下序列:

1' : A B C D E 。 . .

2' : A D E 。 . . . .

必须访问所有顶点才能获得有效的解决方案。在 1' 中,必须访问 F、G 和 H。我们按照顺序 2 对它们进行排序。在 2' 中,G、C、B、F 和 H 重新排序为 1:

1' : A B C D E G F H

2' : A D E B C F G H

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多