基因演算法(generic algorithm)的基本概念和想法是在 1960 末到 1970 早期由 密西根大學的John Holland 教授所提出。基因演算法是一種隨機搜尋法,相對於 許多傳統的梯度(gradient)搜尋法需要設計初始值以避免落入了局部最佳(local optimum),並且需要計算目標函數(objective function)的一次或二次導函數來決定 搜尋的方向。所以此時的目標函數通常都會有所限制,當目標函數較複雜而無法 求出所需要的導函數時,這時候傳統的梯度搜尋法便需要作修正甚至會因而無法 使用。相反的,基因演算法是透過多個的初始值配合上物種演化的概念,所以不 需要作初始值的設計,圖3-1 可以看出基因演算法和傳統梯度演算法對初始值的 敏感度,而且基因演算法是透過物種演化的概念來作下一步的搜尋,所以不需要 計算目標函數的導函數來決定搜尋的方向,因此基因演算法可以應用的範圍會更 加的寬廣,目前也已經廣泛的被使用在電腦程式設計和人工智慧的開發。
圖3-1 傳統的梯度搜尋法和基因演算法對初始值的敏感度
基因演算法主要就是參考了物種演化中「物競天擇,適者生存」的概念,將 問題的最佳化適當的轉化成現實世界中物種的演進,要開始基因演算法前,必須 先將問題中不同的解適當的編碼成是不同的染色體(chromosomes)並且設計好目 標函數。有了適當表示染色體的方法及目標函數後便可開始進行基因演算法,其 流程圖如圖3-2 所示。首先會隨機的產生多個染色體稱之為族群(population),族 群中所含的染色體個數稱之為族群規模(population size)。接著會透過目標函數來 評量此染色體是否適於生存,最後再藉由挑選(selection)、交配(crossover)和突變 (mutation)來產生下一代的染色體。藉著這種逐步的演進直到符合我們所設計的 停止條件才結束演算法。接下來會對流程圖中的各個步驟作進一步的解釋和介 紹。[9]
圖3-2 基因演算法的流程圖 1. 產生初始族群 P(0)。
2. 計算出族群 P(k)中各個染色體的適應值。
3. 檢查是否滿足終止條件。
4. 從族群 P(k)挑選可以進入交配池 M(k)之染色體。
5. 針對交配池中的染色體做交配與突變的演化。
6. 產生新族群 P(k+1)並令 k=k+1 回到步驟二進行下一世代的 演化。
3-1 染色體編碼(chromosomes)和目標函數(objective function)
要利用基因演算法來解決最佳化的問題,首先,必須要先把所要分析的問題 做出適當的編碼,讓問題能以一個多變數的目標函數及多個變數來描述。此時,
這些用來描述問題的變數便是染色體內不同的基因,而變數集合而成的字串
(string)或是向量(vector)便是染色體。每個染色體都可以一對一的對應到一個問
3-2 初始族群(Initial population)
基因演算法是對所要最佳化的問題同時給定了多個解,所以在演算法一開始
1. 輪盤法 (roulette-wheel selection) :
3. 評等法 (rank selection) :
p
c (crossover rate)被挑選成為父母染色體(parents),父母染色體會隨機的兩兩配 成一對來進行交配的動作。交配主是要是藉著交換父母的基因可以產生兩個子1. 單點交配法(one point crossover)
隨機的挑選出一個交換地點(cross site),對於兩個父母染色體在交換地點後 的基因會互相的交換,圖3-5(a)可以更清楚的描述出單點交配法的機制。
2. 多點交配法(multi-point crossover)
隨機的挑選出多個交換地點,每遇到一個交換地點就會交換一次父母染色 體位於交換地點後面的基因,圖3-5(b)是多點交配法的圖解。
3. 均勻交配法(uniform crossover)
隨機的產生一個二進位之基因遮罩,基因遮罩裡數值為 1 之相對位置基因 不會作基因交換的動作,但若是基因遮罩裡之數值為0,則相對位置之基因 便需作基因交換之動作,圖3-5(c)即是均勻交配法之圖解。
圖3-5 (a)單點交配法 (b)多點交配法 (c)均勻交配法
3-5 突變(mutation)
3-6 新族群(new population)與精英策略(Best-so-far strategy)
在經過了挑選、交配和突變後,這時候在交配池中的所有染色體便會形成了
中產生出的新族群中適應值最低的染色體由上一世代的最強勢染色體取代。經過 許多實際的應用和測試都說明了此策略是可以改善基因演算法的效能。
3-7 終止條件(stop criterion)
終止條件有許多的實現方法,通常都要根據不同的問題去尋找一個合適的終 止條件。最簡單的終止條件便是設定一個最大的世代數目,當我們的演算法在重 複作演化到此一世代數目時便會停止。另一個適用於精英策略的終止條件是當我 們最強勢的染色體的適應值不在有大的變動時便可結束演算法。當演算法滿足終 止條件而結束時,此時母體中最強勢的染色體可以根據染色體的編碼回推出一個 問題的解,而這個解便是我們藉由基因演算法所找出最適宜該問題的解。