2012-02-08 137 views
2

我寫了一個GA,我不知道如果選擇父母時,我想通過我的人口循環找到每個父母使用錦標賽選擇或如果我打算找到兩位父母在我的人羣中爲每種解決方案使用了特徵選擇。選擇錦標賽選擇的父母

這是哪一個?

回答

4

我不太清楚你的建議選擇之間的區別是什麼,但一般來說,它的工作方式是你挑選兩個隨機個體,保持最佳狀態,然後變成父母#1。然後你再挑選兩個隨機個體,保留最好的一個,然後它變成父母#2。這兩位父母隨後重組產生進入兒童人羣的後代。重複,直到你有足夠的後代。

所以你使用類似下面的循環來生成一個孩子羣體。 (您可以爲每組父母生成多個後代...調整環路邊界以適合您的情況)。

for i = 1 to N 
    pick individual t1 at random from parent population 
    pick individual t2 at random from parent population 
    parent1 = winner(t1, t2) 

    pick individual t1 at random from parent population 
    pick individual t2 at random from parent population 
    parent2 = winner(t1, t2) 

    generate offspring from parent1, parent2 
    mutate offspring 
    evaluate offspring 
    add offspring to child population 
end for 
+1

謝謝。 這是否意味着你有時會交叉同一父母? 值得一提的是,錦標賽的大小不一定限於兩個。你可以隨意選擇許多隨機父母,並找到最適合的人選。 – Undefined 2012-02-08 16:17:34

+0

如果你自己與父母交叉,你顯然會得到一個原始的克隆,以及一些典型的突變機會。我想,這是一個判斷的呼叫,但我不會這樣做,因爲如果你有一兩個成員比其他成員更合適,你可以很快地消滅你的多樣性。 – Novak 2012-02-08 18:32:51

+0

而且我經常保留一代人的頭號一兩名成員克隆。除了我的預訂外,我不希望發生這種意外。 – Novak 2012-02-08 18:33:31