天天看點

《Java遺傳算法程式設計》—— 2.6 交叉方法

本節書摘來異步社群《java遺傳算法程式設計》一書中的第2章,第2.6節,作者: 【英】lee jacobson(雅各布森) , 【美】burak kanber(坎貝爾),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在交叉過程中,除了用不同的選擇方法,還有可用不同的方法在兩個個體之間交換遺傳資訊。不同的問題具有不太一樣的特點,采用特定的交叉方法更好。例如,“全一”問題隻要求完全由1構成的字元串。字元串“00111”與字元串“10101”具有相同的适應度值,因為它們都包含3個1。對于這種類型的遺傳算法,情況并非總是如此。設想我們試圖建立一個字元串,它按順序列出數字1到5。在這種情況下,字元串“12345”與“52431”的适應度值非常不同。這是因為我們不隻是尋求正确的數字,也尋求正确的順序。對于這樣的問題,适合采用考慮基因順序的交叉方法。

我們在這裡實作的交叉方法是均勻交叉(uniform crossover)。在這種方法中,後代的每個基因都有50%的機會來自第一個親代或其第二個親代,如圖2-2所示。

《Java遺傳算法程式設計》—— 2.6 交叉方法