2011-01-31 168 views
1

我一直在研究一個遺傳算法,其中有一個由具有顏色和偏好的個體組成的羣體。 (例如:1 | 1,5 | 2,3 | 3等)在「選民」中選擇一個倖存的遺傳算法遺傳算法

每個人都會根據自己的喜好投下一個「投票」,其中協助那些以這種投票作爲他們的顏色的人。

我目前的想法是循環每個人,並計算他們應該生存的機會,基於投票數量等,然後擲骰子,看看他們是否生活。

我目前做的這樣,如果v[x]代表投票的顏色x的百分比,個人k顏色cv[c]機會尚存。但是,這意味着,如果所有5種類型的(a | a)個體中有相同數量的人,則其中4/5會消亡,這並不好。

有沒有人有任何想法的隨機性我可以用來確定一個人的生存機會?例如,vc,v投票的算法可以在顏色c中生存(統計平均值)。

+0

我不知道你在找什麼。你說你的人口規模爲N,正好有N個選民。如果每個人都爲自己投票,你希望每個人都能生存下來?你想在每個回合中死亡多少人? – 2011-01-31 18:54:29

回答

0

分配你的健康(在你的情況下生存likelyness)到每一個人爲是,那麼降健身對它們進行排序,並使用二進制錦標賽選擇或類似的採樣你所選擇的尺寸的另一羣體的東西。

+0

謝謝。我認爲這應該很好。 – TaslemGuy 2011-01-31 20:35:31

0

那麼,您可以根據將每個 人口成員傳遞給成本函數而返回的值來加權概率。

對我來說,這似乎是最直接的方式,與元啓發式的遺傳基因 一致。

比較常見的,雖然,是將當前的人口成段的基礎上,從 將它們傳遞給成本函數的返回值。

因此,舉例來說,如果 每一代由100個成員,然後的前N(N是僅有一個用戶定義的參數 ,往往像總數的5-10%)的成員瓦特/最低成本 函數結果)就像它們一樣(精英主義)傳播到下一代。也許這就是你'生存'的意思。如果是,則再次,這些「倖存者」 通過根據成本函數 值居羣體的成員與選擇您所定義精英分數以上的那些成員常數確定。 下一代的其餘部分(多數)由 突變或交叉或者創建。

突變

# one member of the current population: 
[4, 5, 1, 7, 4, 2, 8, 9] 

# small random change in one member of prior generation, to create mutant that is 
# a member of the next generation 
[4, 9, 1, 7, 4, 2, 8, 9] 

交叉

# two of the 'top' members of the current generation 
[4, 5, 1, 7, 4, 2, 8, 9] 
[2, 3, 6, 9, 2, 1, 6, 4] 

# offpsring is a member of the next generation 
[4, 5, 1, 7, 2, 1, 6, 4] 
+0

我並不需要知道如何使下一代,這是獨立於問題。在這種情況下采取最高'N'的唯一問題是他們會一致,並且不允許其他人蔘與。 – TaslemGuy 2011-01-31 20:34:31