• 沒有找到結果。

2 研究背景

2.3 基因演算法

基因演算法是以達爾文的進化論為概念來執行的一種尋找最佳解的演算法,

由美國密西根大學的 John Holland[9]所提出,其中心思想為「物競天擇,適者

生存」,在許多個體之中,依照每個個體對環境的適應性來篩選,保留下較能適

應環境的一群個體,也就是在該環境較有競爭力的個體,並且隨著一代一代的演 化重複這樣的篩選過程,最終可找到最適合在該環境存留的個體。

對 照 到 演 算 法 上 , 將 欲 解 的 最 佳 化 問 題 的 可 能 解 組 合 稱 為 染 色 體

(chromosome),而基因(gene)則是組成染色體的基本單位,每個個體

(individual)的染色體都不同,並依照最佳化問題設計可用來評估該個體適應 程度優劣的適應值(fitness),許多的個體形成一個族群(population),接著在 族群內經過挑選(selection)、交配(crossover)、突變(mutation)等運算,產 生出下一個世代(generation)。隨著每個世代的演化,每新的一代的染色體適 應性會漸漸變得更加優秀,也代表更接近我們所需要的最佳解。

在開始基因演算法之前,必須先決定 1. 染色體的編碼方式,2. 適應函數

(fitness function)。

染色體的編碼分成三種[10],實數編碼、二進制編碼、符號編碼。實數編碼

為直接使用時數填入代表染色體的陣列中。二進制編碼是將數字轉換為0 與 1,

但這麼做會造成染色體的長度增加,衍生出可能不易收斂的問題,所以比較常使 用在參數較少的情況下。符號編碼則是用符號(如英文字母)代替我們的目標。

適應函數是用來評估每個個體適應環境的程度,在演算法中扮演著演化論裡

「天擇」的角色,因此必須好好設計適應函數讓染色體可以依照我們所期望的方 向演化。

7

圖3 為基本的基因演算法流程圖:

圖 3 基因演算法流程圖

Initial population:初始化產生第 0 代族群,產生的方法通常為在可能的解 空間中亂數產生,另外也可以依照原始的資料分布給值,有可能可以加速程 式收斂,但也可能使演算法找到的解落在局部最佳解(local optimum)而 非全局最佳解(global optimum)。

Evalute fitness:評估每個個體的適應值,以作為接下來挑選個體的依據。

適應值表現越佳的個體越容易被選中演化。計算完適應值後,判斷整個程式 是否達到終止條件,終止條件一般是程式已收斂或已達到最初設定的要求,

若是則終止,若否則進行選擇(selection)。

Selection:選擇將會被保留並做運算的個體,通常有兩種選擇法:輪盤式選 擇[11]及競爭式選擇[12],輪盤式選擇的概念是將個體的適應值依照優劣比

例畫成圖,如圖4,接著再模擬以飛鏢射輪盤的方式來挑選,因此適應值越

佳在圖上占的面積就越大,也就越容易被選中。競爭式選擇則是先亂數挑選 幾個個體,再從其中選出適應值較佳的個體。

Start

Initial population

Evaluate fitness

End

Selection

Crossover Mutation New generation

No Yes

Stop

8

圖 4 輪盤式選擇法示意圖

Crossover:將兩個通過選擇機制的個體的染色體各取一段,並合成為新的 個體,此運算稱為交配。利用交配來產生新的一代,也稱子代,用來產生的 個體則稱為母代。此運算是期望透過融合兩個個體的基因來產生更具競爭力 的子代,當然也有變的更差的可能性,但這樣的個體將會在下一個迴圈被剔 除掉。一般常用的有單點[13]、雙點[14]及多點交配[15]等。見圖 5。

圖 5 交配策略示意圖

40%

32%

15%

13%

單點

雙點

多點

交配點

9

Mutation:突變運算對象是 crossover 之後產生的子代個體,依照突變機率

(通常機率很低)使得個體內的基因發生變化,如圖6。如果是二進制編碼,

則0 變 1,1 變 0;如果是實數編碼,則在解的範圍內亂數產生。突變的目 的是擴大解空間的搜尋範圍,並避免落入局部最佳解的狀況。但跟crossover 一樣不能保證經過此步驟的個體會變個更好或更差。

圖 6 突變策略示意圖 突變點

10

3 研究方法

相關文件