- 遺傳演算法教程
- 遺傳演算法 – 首頁
- 遺傳演算法 – 簡介
- 遺傳演算法 – 基礎知識
- 基因型表示
- 遺傳演算法 – 種群
- 遺傳演算法 – 適應度函式
- 遺傳演算法 – 父代選擇
- 遺傳演算法 – 交叉
- 遺傳演算法 – 突變
- 倖存者選擇
- 終止條件
- 生命週期適應模型
- 有效實現
- 高階主題
- 應用領域
- 進一步閱讀
- 遺傳演算法資源
- 遺傳演算法 - 快速指南
- 遺傳演算法 - 資源
- 遺傳演算法 - 討論
基因型表示
在實現遺傳演算法時,最重要的決定之一是決定我們將用來表示解決方案的表示方法。已經觀察到,不正確的表示會導致遺傳演算法的效能下降。
因此,選擇合適的表示方法,對錶型和基因型空間之間的對映進行適當的定義,對於遺傳演算法的成功至關重要。
在本節中,我們將介紹一些遺傳演算法中最常用的表示方法。但是,表示方法高度依賴於具體問題,讀者可能會發現其他表示方法或此處提到的表示方法的混合可能更適合他的問題。
二進位制表示
這是遺傳演算法中最簡單和最廣泛使用的表示方法之一。在這種表示方法中,基因型由位串組成。
對於一些問題,當解空間由布林決策變數(是或否)組成時,二進位制表示是自然的。例如,考慮0/1揹包問題。如果有n個物品,我們可以用一個n個元素的二進位制字串來表示一個解,其中第x個元素表示是否選擇(1)或不選擇(0)第x個物品。
對於其他問題,特別是那些處理數字的問題,我們可以用它們的二進位制表示來表示這些數字。這種編碼的問題是不同的位具有不同的意義,因此突變和交叉運算元可能產生不希望的結果。這可以透過使用**格雷編碼**在一定程度上解決,因為一位的變化不會對解產生巨大的影響。
實值表示
對於我們想使用連續變數而不是離散變數來定義基因的問題,實值表示是最自然的。然而,這些實值或浮點數的精度受限於計算機。
整數表示
對於離散值的基因,我們不能總是將解空間限制為二進位制的“是”或“否”。例如,如果我們想編碼四個方向——北、南、東和西,我們可以將它們編碼為**{0,1,2,3}**。在這種情況下,整數表示是可取的。
排列表示
在許多問題中,解由元素的順序表示。在這種情況下,排列表示是最合適的。
這種表示的一個經典例子是旅行商問題 (TSP)。在這種問題中,旅行商必須遊覽所有城市,每個城市恰好訪問一次,然後返回起始城市。必須使行程的總距離最小化。這個問題的解自然是一個所有城市的排序或排列,因此對這個問題使用排列表示是有意義的。