2013-05-08 34 views
8

當孩子必須有特定的順序時,人們如何去跨越兩個父母?如何處理順序很重要的交叉?

例如,當在頂點/邊的固定圖上將旅行推銷員問題應用於遺傳算法時,您必須應對並非所有頂點都可以傳遞到其他頂點的事實。這使得交叉變得更加困難,因爲與所有頂點可能傳播到所有其他頂點的TSP不同,當交叉被執行時,它必須在產生合法路徑的點處完成。另一種選擇是反正交叉並拒絕非法路徑,但風險是巨大的計算成本昂貴,很少到沒有法律途徑。

我已閱讀關於置換交叉,但我不完全確定如何解決這個問題。有人能指引我正確的方向或建議嗎?

+0

在Da魚的進化中,如果一個新生物體無效,會發生什麼?大自然如何處理這個問題? – 2013-05-08 19:06:21

+4

它被拒絕,但達爾文進化並不需要擔心計算中的指數上升。 – user2341412 2013-05-08 19:14:20

+0

不知道爲什麼所有的近距離投票,這是一個完全有效(和題目)的問題 – 2013-05-08 23:01:30

回答

4

排序應儘可能不要成爲遺傳編程的限制條件。也許你應該考慮爲你的解決方案選擇另一種格式。 例如,在您的TSP中,考慮密碼子A-> B。

您可以考慮'從A到B的最短路徑',而不是'從A到B的邊緣'。這樣,您的解決方案始終可行。您只需預先計算最短路徑矩陣作爲預處理。

現在,這並不能保證候選人在交叉之後將是可行的解決方案。爲了確保您的解決方案仍然可行,您應該調整交叉點。例如,對於該TSP,考慮序列:

1:A B C d Ë F G H

2:d éģC B F H

選擇隨機的樞軸(ê在我們的例子)。這導致完成以下序列:

1':A B C D E。 。 。

2':A D E。 。 。 。 。

爲了有一個有效的解決方案,必須訪問所有的頂點。在1'中,F,G和H必須被訪問。我們爲了它們,因爲它們在序列2中2' ,G,C,B,F和H是重新排序,如1:

1' :ABCD È GFH

2' : AD E BCFGH

希望這會有所幫助。