2016-05-04 23 views
2

遺傳算法中有一個階段,我們應該選擇交叉染色體從父母到後代。在遺傳算法中使用價值編碼方法時如何交叉父母?

通過二進制形式很容易做到。

但是如果我們使用值編碼來編碼染色體該怎麼辦?假設我染色體中的一個位是DOUBLE類型的值,比如0.99,它的範圍是(0-1),因爲它代表了一個概率。

如何交叉此DOUBLE號碼?

轉換爲二進制交叉然後轉換回來...?

+0

根據概率,你的意思是每個染色體的等位基因必須總和爲1?或者你的意思是說每個等位基因都有自己的概率?如果是後者,你可能只是做單點交叉... – DMML

+0

@DMlash嗨,謝謝你的回覆,每個等位基因都有自己的概率。如何針對雙類型值進行單點交叉?我知道如何對付二進制值.. –

+0

我想這取決於你正在解決的問題,以及它是否有意義這樣做首先。如果它是有意義的,那麼,正如你所說,每個染色體都是一個長度爲n的實值等位基因的向量。然後你在[1,n]範圍內繪製一個統一的隨機值;我們將這個值稱爲S.對於每個父母,您將等位基因保留在底部(S)位置(即,如果值爲5.333,則將元素保留在位置1,2,3,4,5)並將天花板(S)處的值交叉到n個位置(Ie,6,7,8,...,n)。 – DMML

回答

0

你可以使用共混物的交叉算子(與α = 0的變體):

p1 first parent 
p2 second parent 
u  random number in [0, 1] 

offspring = (1 - u) * p1 + u * p2 

假設p1 < p2,這個交叉算子創建範圍[p1, p2]隨機溶液。

混合交叉算子有一個有趣的屬性,如果父母之間的差異很小,孩子和父母解決方案之間的差異也很小。因此,當前人口的傳播決定了解決方案在人口中的傳播(這是一種形式adaptation)。

所述共混物的交叉算子(BLX- α)和另一種公知的操作者(模擬二進制交叉)的更高級的版本在Self-Adaptive Genetic Algorithms with Simulated Binary Crossover由格利亞莫伊·德布和Hans-喬治拜爾說明。


Differential Evolution是另一種可能性。

+0

謝謝你答案,特別是參考文章! –