第二章 背景回顧與文獻探討
2.5 遺傳演算法
在 1975 年 John H. Holland 出版第一本論述遺傳演算法和人工自適應系統的 專書[33]。遺傳演算法是一種仿效生物演化來解決最佳化問題的工具。遺傳演算 法是以隨機搜尋為架構,以多點搜尋的方式在搜尋空間中同時尋求問題的最佳 解。演化過程中所提供的資訊,會隨著世代的演進,由大範圍逐漸在最佳解附近 縮小搜尋範圍,期望能求得近似真解的最佳解。遺傳演算法具有以下的特性[53]:
1. 規劃最佳化的問題沒有太多限制,在離散型(discrete)、連續型(continuous) 或混合型(mixed)的搜尋空間中,不論目標函式為線性或非線性,都可運算。
2. 遺傳演算法在演化過程中是以一群的染色體進行處理,相當於對一群可能 解同時搜尋,使求解品質穩定有效率。
3. 在演化過程中可跳脫區域最佳解。傳統的點對點(point-to-point)搜尋法,
因單一求解,使得求解過程容易陷入區域最佳解。遺傳演算法的演化過程 中,以多個染色體搜尋多個不同的可能解,具較大的搜尋空間,其中選擇 機制是以適應值大小為依據,配合突變機制,更能確保搜尋到全域最佳解。
4. 只需要目標函式值,而不需要其他輔助工具。例如:最陡坡降法(gradient method)其目標函式須要有可微分的限制,遺傳演算法無這方面的限制,
只要有目標函式即可。
5. 使用隨機性的轉移法(probabilistic transition rule)進行解答的搜尋,而非以 決定性的方法(deterministic),其搜尋理念雖是「盲目的」(blind),卻不是 無條件地亂走(random walk)。
遺傳演算法具有以上的特性,應用在許多組合最佳化問題的研究,都能得
到不錯的效果。
遺傳演算法的基本流程如圖 2.2 所示。進行遺傳演算法之前,必須先隨機產 生多組染色體形成一個群族(population)。經由適應函數(fitness function)去決定每 一個染色體的適應值(fitness value)。染色體的互相競爭,其中較適合生存環境代 表具有較高的適應值,較高適應值的染色體可以複製出較多的子代,再從其中選 擇配對來交配(crossover)產生下一代,期望可以產生適應度更高的下一代。再者,
為了避免錯過某些有用的資訊,而加入突變(mutation)的處裡,以產生出更佳的 下一代。透過上述的演化機制,最後所產生的染色體具有較高的應適值,同時也 是最接近真實解的最佳解答。遺傳演算法在搜尋解答時,雖難以保證找到真正的 最佳解,而是找出近似解,但此近似最佳解是經過廣大搜尋空間演化到某種程度 的可能最佳解。對於 若干無法預知最佳解的狀況下,遺傳演算法是可以快速求得 某種程度的有效解答。
初始化
隨機產生族群染色體 計算染色體適應值
最佳解
選擇、交配與突變 產生新子代
是
否
結束圖 2.2:遺傳演算法的簡易流程圖
接者將逐步介紹染色體的編碼,選擇、交配與突變等機制,以及終止條件的 訂定。
2.5.1 染色體編碼
2. 實數編碼(real-coded):染色體中所有的基因型態可為整數或是實數的型態。
3. 排列編碼(permutation-coded):染色體的基因型態由序列關係的數字所構成。
4. 樹狀編碼(tree-coded):染色體是由樹狀結構所組成。
2.5.2 選擇機制
選擇機制是模擬物競天擇的效果。適應值高的染色體具較高的存活率,反之 適應值低則存活率就相對低。因此,如果某一個染色體適應值明顯高於其他的染 色體,就有可能隨著演化而逐漸成為這個族群的主體。常見的選擇方法是輪盤選 擇法(roulette wheel selection)與競爭選擇法(tournament selection)。
(a) 輪盤選擇法:
(b) 競爭選擇法:
此法是利用在族群中隨機選擇數個染色體,再比較其適應值,將適應值較好 的染色體複製到交配池中;反之適應值較差的染色體,置回族群使下次仍有機會 再次選擇。
2.5.3 交配
遺傳演算法藉由染色體的交換,重組並產生新染色體。主要目的是希望經由 交換部分的基因後,新產生的染色體能有較好的適應值;然而子代也可能遺傳親 代的缺點,因此交配機制並不保證會獲得更好的子代,但可以透過往後的選擇機 制,將較差的染色體淘汰。在執行交配運算前需先設定交配率,表示個體會產生 交配的機率。交配率愈高,則適應值高的染色體進入族群的速度愈快,搜尋最佳 解的速度也愈快。但交配機率設定太高,則適應值高的新染色體被取出的速度會 快於子代產生的速度,而落入區域求解的情形。反之交配率太低,會使搜尋過程 停滯。常見的交配機制有下列三種:
(a) 單點交配法(one-point crossover)
隨機產生出個一個交配點,透過交配點將染色體分割成兩部分。再將分割後 基因進行交換,產生新的子代(如圖 2.3 所示)。
0 0 0 0 0 0 0 0
Parent 1:
1 1 1 1 1 1 1 1
Parent 2:
交配點
互換
0 0 0 0 0 1 1 1
Child 1:
1 1 1 1 1 0 0 0
Child 2:
圖 2.3:二元編碼單點交配
(b) 雙點交配法(two-point crossover)
隨機產生兩個交配點,以劃分出交配的基因範圍。透過兩個交配點將染色體 進行分割,將兩交配點範圍內的基因進行交換產生出新的子代(如圖 2.4)。
0 0 0 0 0 0 0 0
Parent 1:
1 1 1 1 1 1 1 1
Parent 2:
交配點
0 1 1 1 1 0 0 0
Child1:
1 0 0 0 0 1 1 1
Child 2:
交配點
互換
圖 2.4:二元編碼雙點交配
(c) 均勻交配法(uniform crossover)
均勻交配是先隨機產生一組與染色體等長的 0 與 1 遮罩(mask)。基因之間是 否進行交配則由遮罩的內容值決定。當遮罩值為 1 進行交配,反之則不進行交配 (如圖 2.5)。
0 0 0 0 0 0 0 0
Parent 1:
1 1 1 1 1 1 1 1
Parent 2:
0 1 1 0 1 0 1 1
Child1:
1 0 0 1 0 1 0 0
Child 2:
互換
0 1 1 0 1 0 1 1
Mask:
圖 2.5:二元編碼均勻交配
2.5.4 突變
純粹只靠選擇與交配兩個演算 機制所產生的新染色體容易延續 新代的特 性,造成演化趨近緩慢,並限制在特定範圍內。因此需藉由突變機制產生不同於 親代特性的子代,增加族群 裡面染色體的多樣性,防止陷入局部最佳解。通常突 變是以一個很小的機率,將染色體中某個基因進行反轉,以助於遺傳演算法跳脫 局部最佳解(如圖 2.6 所示)。反之,若突變機率太大反而讓遺傳演算法變成隨機 搜尋而失去求解的方向性。
1 0 0 1 0 1 0 0
Parent :
進行突變
1 0 1 1 0 1 0 0
Child :
圖 2.6:二元編碼突變
2.5.5 終止條件
遺傳演算法是迴圈式的運算,因此必須先設定結束運算的條件,使演化得以 終止。情況有下列三種:
1. 當迭代次數已達到指定的演化次數時停止。
2. 當有染色體的適應值達到所要求時停止演化。
3. 在多次的迭代過程中,適應值產生停滯不前的現象時停止演化。