2014-05-01 33 views
0

大家好我正在研究遺傳算法來創建新一代。我遇到了以下問題:使用遺傳算法中的複製和交叉創建新一代

此問題涉及遺傳算法。假設你有一個由10個人組成的人口。每個人都由5位組成。這是最初的人口。

x1 = (1, 0, 0, 1, 1) 
x2 = (1, 1, 0, 0, 1) 
x3 = (1, 1, 0, 1, 1) 
x4 = (1, 1, 1, 1, 1) 
x5 = (0, 0, 0, 1, 1) 
x6 = (0, 0, 1, 1, 1) 
x7 = (0, 0, 0, 0, 1) 
x8 = (0, 0, 0, 0, 0) 
x9 = (1, 0, 1, 1, 1) 
x10 = (1, 0, 0, 1, 0) 

個人排名根據適應值(x1具有最大的適應值,x2次優等,等等)。假設在抽樣時,您按照排名順序獲取個人。假設以下情況,創建新一代解決方案:

複製爲20%。交叉是80%(假設交叉掩碼如下:11100;按照與排名相同的順序配對示例)。沒有突變完成。

我的解決方案:複製是20%,這意味着前兩個人口是不變的。下面給出的交叉口罩給予11100我隨機選擇3個字從交叉(11100)面具,所以從x3和x4開始,在這裏我保持前3單詞x3和x4相同,最後交換x3和x4的最後兩個剩餘單詞並生成新的羣體。我遵循x5和x6,x7和x8以及x9和x10的相同規則。我不確定這個答案是正確的還是錯誤的。任何機構都可以幫助我嗎?

+0

20%複製意味着您的個人中有20%會參與重組(您的情況爲交叉)。我理解交叉掩碼作爲位於bit1和bit2之間的交叉點(單點交叉,位枚舉爲(4,3,2,1,0))。這意味着你從一個人身上取得bit2-4,並將他們與另一個人的bit2-4交換來創造你的後代。 – orange

回答

0

我不知道你正在使用的實現的背景,所以我可能不是正確的,但從遺傳算法的角度來看,你的答案似乎大部分是正確的。

據我所見,你推理的唯一問題是交叉。複製發生後,您使用剩餘的染色體進行交叉。這從遺傳算法的角度來看似乎具有內在的缺陷。遺傳算法通常在交叉中使用最好的染色體。你已經保存了最好的,似乎然後排除他們從任何重組。這個想法違背了遺傳算法的思想,遺傳算法是通過適合個體的重組來發展種羣。至少應該包含最適合的染色體。

一般來說,大多數實現都包含選擇中的隨機性元素,而最適合的染色體賦予更多的權重。由於你的問題明確指出按照排序順序選擇對,因此沒有隨機性,我假設交叉是在染色體1至8上進行的。

你對交叉掩碼的理解在問題中似乎是正確的。

再一次,我對有關的實現一無所知,所以我不確定我的理解有多好。因爲遺傳算法看起來非常不尋常,所以我很想知道源代碼。