2009-07-20 117 views
1

嗨,大家好,我對錦標賽選擇的多次迭代如何工作感到困惑。遺傳算法中多次迭代錦標賽選擇

我知道你開始選擇隨機對(或k個成員),並將獲勝者放入交配池中。你繼續這樣做直到交配池被填滿。

但是,我不確定事後會發生什麼。

我們剛剛開始隨機交配那些交配池嗎?然後通過選擇新一代的隨機對重新開始選擇過程?

謝謝。

回答

1

傳統上,在比賽獲勝者被發現後,他們形成下一代。所有的突變,選擇等過程都是在循環之後繼續進行的。

4

我已經寫了相當多的這些通用算法,直到我提出了一個框架來避免一次又一次地寫入相同的代碼。

對於交配池,它取決於你所尋找的個體的種類,你正在尋找的解決方案,以及如果你有一種方式來組合個體,他們會有更好的機會一個更好的個人。

你可以使用隨機交配,但這會給你「更糟」的解決方案 - 更糟的是,因爲你不知道他們是否會產生更好的個體。這仍然是很好的解決方案,當我開始編寫這些算法時,我總是使用隨機交配,但是在從2箇舊的交易中獲得新的個體後,我立即比較了3個交易的表現,並且拋棄了更糟糕的交易,最終以2名父母有時(並丟棄1歲孩子),或者以1名父母和1名孩子結束。

但要更有效率,並且如果您知道如何組合個體以便他們能夠產生更好的解決方案(並且這可能非常棘手),那麼您可以使用親和函數,該函數需要2個個體並返回親和力它們之間。棘手的部分是確定親和力。根據問題,它可能會非常不同。例如,如果我把旅行商問題解決了,那麼當交配個體的相似性較低時,我會得到最好的解決方案。所以我的親和力函數返回1-相似性。

這樣,我可以將迭代次數減少80%,並獲得非常好的解決方案。

但請記住,池越大,執行親和函數的時間越長 - 親和函數可以是O(n²),甚至可以是O(n³),在這種情況下,它可能是瓶頸的算法。在這種情況下,使用隨機匹配​​可能會更好。

總之,隨機交配好 - 畢竟,我們可以說是這樣工作在現實生活中 - 但如果你知道如何計算2個個體之間的關聯性,你可以用它來減少數量迭代你需要獲得一個好的解決方案。請記住,計算親和力可能非常複雜(我甚至猜測計算給定池的最佳親和力是NP-Complete)。

+0

+1製作框架。當我愛上GA並且寫了很多算法時,我在大學裏自己做了一個。不幸的是,我沒有時間在大學畢業後繼續學習。 :( – 2009-09-09 19:21:41

2

這不是個好建議,但...

但是,我不知道以後會發生什麼。

做你想做的。你可以改變他們所有的......或者你可以在比賽中選出你選的每一對。使用最適合的方式。有創意。

正如這個論壇上的其他人所指出的:關於GA的骯髒的小祕密在於它比藝術更具藝術性。

此外,要獲得真正的好建議,您需要更好地描述您想要解決的問題。