5

我正在構建一個遺傳算法來解決旅行商問題。不幸的是,我在達到一千多代的高峯之前,突變了它們並獲得了更好的結果。在這種情況下,交叉和變異運營商通常做得好嗎?針對TSP問題的建議GA算子?

+0

http://stackoverflow.com/questions/1544055/rossover-operation-in-genetic-algorithm-for-tsp可能有幫助。 – 2010-02-02 16:31:14

回答

1

能否請您澄清

「不幸的是,我打峯變異出他們的 並獲得更好的結果之前,可以 維持了一千 代」?

您可以檢查交叉運算符,它確保您在子染色體中沒有重複節點。這些交叉運算符中的幾個是Order Crossover(OX)和Edge Crossover運算符。

突變可以像簡單地交換單個染色體中的兩個位置一樣簡單。

順便說一句,既然你已經標記了「python」,看看Pyevolve,它也有一個TSP的例子。

2

如果您的問題是峯值超過一千代,那麼問題可能不是交叉和變異算子。你可能不會引入或保持足夠的變異:我會檢查交叉比例,突變和倖存者之間的比例,並可能提高突變的比例。