遺傳算法 (Genetic Algorithm)

遺傳算法 (Genetic Algorithm)

基礎信息

選擇策略: 物競天擇,適者生存。即按照某一特定條件進行選擇。

遺傳因子: 在計算機中是用0/1編碼來完成的

遺傳方式: 交叉、變異

選擇策略

輪盤賭選擇法

輪盤賭選擇法是根據個體的適應度值計算每個個體在子代中出現的概率,並按照此概率隨機選擇個體構成子代種羣。

常用步驟

  1. 將種羣中個體的適應度值疊加,其中m爲種羣個體數。
    i=1my(xi)\sum_{i=1}^{m}y(x_{i})
  2. 每個個體的適應度值除以總適應度值得到個體被選擇的概率。
  3. 計算個體的累計概率以構造一個輪盤。
  4. 輪盤選擇:產生一個[0,1]區間內的隨機數,若該隨機數小於或等於個體的累積概率,選擇個體進入子代種羣。

重複上述步驟,即可得到一個由新個體構成的種羣。

隨即遍歷抽樣法

像輪盤賭一樣計算選擇概率,只是在隨機遍歷選擇中等距離的選擇個體。設npoint爲需要選擇的個體數目,等距離的選擇個體,選擇指針的距離是 [1,1npoint][1,\frac{1}{npoint}] ,第一個指針的位置由 [1,1npoint][1,\frac{1}{npoint}] 的均勻隨機數決定。

錦標賽選擇法

錦標賽選擇法選擇策略每次從種羣中選取出一定數量個體,然後選擇其中最好的一個進入子代種羣。重複該操作直到新的種羣規模到達原來種羣規。

步驟:

  1. 確定每次選擇的個體數量(百分比)
  2. 從種羣中隨機選擇個體(每個概率相同)構成組,根據每個個體的適應度值,選擇其中適應度值最好的個體進入子代種羣。

重複上述步驟,直到得到新一代種羣。

遺傳算法編碼

二進制編碼法

就像人類的基因有AGCT四種鹼基序列一樣,不過在這裏我們只用0和1兩種鹼基,然後將他們串成一條鏈來形成一條染色體,一個爲能表示出2種狀態的信息量,因此足夠長的二進制染色體便能夠表示所有的特徵。

例如:111000110101

優點:

  1. 編碼、解碼操作簡單易行
  2. 交叉、變異等遺傳操作便於實現
  3. 合最小字符集編碼原則
  4. 利用模式定理對算法進行理論分析

缺點

  1. 高精度問題上面表現較差
  2. 容易陷入局部最優

浮點編碼法

二進制編碼雖然簡單直觀,但明顯地存在着連續函數離散化時的映射誤差。個體長度較短時,可能達不到精度要求,而個體編碼長度較長時,雖然能夠提高精度,但增加了解碼的難度,使遺傳算法的搜索空間急劇擴大。

浮點法: 是指個體的每個基因值用某一範圍內的一個浮點數來表示。在浮點數碼方法中,必須保證基因值在給定的區間限制範圍內,遺傳反中所使用的交叉、變異等遺傳操作也必須保證其運算結果所產生的新個體的基因值也在這個區間限制範圍內。

例如:1.2-3.2-5.3-7.2-1.4-9.7

優點

  1. 適用於在遺傳算法表示範圍較大的數
  2. 適用於精度要求較高的遺傳算法
  3. 便於較大空間的遺傳搜索
  4. 改善了遺傳算法的計算複雜性,提高了運算交率
  5. 便於遺傳算法於經典優化方法的混合使用
  6. 便於設計針對問題的專門知識的知識型遺傳算子
  7. 便於處理複雜的決策變量約束條件

符號編碼法

符號編碼是指個體染色體編碼串中的基因值取自一個無數值含義、而只有代碼含義的符號集如(A,B,C…)

優點

  1. 符合有意義奇數塊編碼原則
  2. 便於在遺傳算法中利用所求解問題的專門知識
  3. 便於遺傳算法與相近似算法之間的混合使用

交叉

交叉操作: 是指對兩個相互配對的染色體按某種方式相互交換其餘部分基因,從而形成兩個新的個體。

適用於二進制編碼個體或浮點數編碼個體的交叉算子:

  1. 單點交叉 (One-point Crossover):指在個體編碼串中只隨機設置一個交叉點,然後再該點相互交換兩個配對個體的部分染色體。
  2. 兩點交叉 (Two-point Crossover):在個體編碼串中隨機設置了兩個交叉點,然後在進行部分基因交換。
  3. 多點交叉 (Multi-point Crossover): 在個體編碼串中隨機選擇多個交叉點,然後進行部分基因交換。
  4. 均勻交叉 (Uniform Corssover): 兩個配對個體的每個基因座上的基因都以相同的交叉概率進行交換,從而形成兩個新個體。
  5. 算數交叉 (Arithmetic Crossover): 由兩個個體的線性組合而產生出兩個新的個體,該操作對象一般是由浮點數編碼表示的個體。

變異

遺傳算法中的變異運算,是指將個體染色體編碼串中的某些基因座上的級音質用該基因座上的其他等位基因來替換,從而形成新的個體。

適用於二進制編碼和浮點數編碼的個體:

  1. 基本位變異 (Simple Mutation): 對個體編碼串以變異概率、隨即制定的某一位或某幾位僅基因座上的值進行變異運算。
  2. 均勻變異 (Uniform Mutation): 分別用符合某一範圍內均勻分佈的隨機數,以某一較小的概率來替換個體編碼傳中各個基因座上的原有基因值。
  3. 邊界變異 (Boundary Mutation): 隨機的取基因座上的兩個對應邊界基因值之一去替代原有基因值。
  4. 非均勻變異:對原有的基因值做一隨機擾動,以擾動後的結果作爲變異後的新的基因值。對每個基因座都以相同的概率進行變異運算之後,相當於整個解向量的解空間中做了一次輕微的變動。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章