• 沒有找到結果。

第二章 遺傳演算法

2-1 基本理論概述

遺傳演算法(genetic algorithms, GA) 的理論基礎起源於1859 年達爾文所 說的「物競天擇,適者生存」演化及淘汰觀念。這種自然選擇的演化機制中,

生物界的任一個體會將其生物特徵由細胞中的染色體決定繁衍至下一代,由於 不同特徵的生物對於環境的適應力不一樣,所以適應力較高的個體就有機會生 存下來繁衍下一代,由於適應力較高之個體有較高的生存機率,經由長時間的 繁衍,可讓整體族群更適合生存最後將演變至最能適應於此生態環境下的種 族。

2-2 遺傳演算法之特色

遺傳演算法是一種用來求最佳解的工具之一,當解決一個問題需要龐大的 參數空間時,遺傳演算法可以發揮它搜尋、尋求最佳解的優勢及效率。它可以 搜尋出一組最佳的解,相較於其他求最佳解的傳統方法而言,的確存在許多差 異,其與一般搜尋法相比較,遺傳演算法有以下優點:

1. 遺傳演算法不同於單點搜尋方式,而是採用多點隨機搜尋,也可以跳脫搜索 空間分析上的限制,不容易發生找到之最佳解為局部解而降低搜尋的效率,

因此能有效率得到全域最佳解。

2. 遺傳演算法僅用適應度函數也就是演化方式(複製交配突變)來評估基因個

7

體,在一般傳統方法中,通常僅適用於連續且平滑、導數必須存在之函數,

或是屬於單純的遞增或是遞減之函數;而遺傳演算法不需要導數或其他輔助 資訊,可避免函數型態的運算,遺傳演算法只要有目標函數,就能根據適應 值的高低,來保留優良基因,慢慢地找到最佳解,這也使得問題處理簡單 化 。

3. 演算法有平行計算的本質可以平行分散於不同電腦,減少計算的時間。

4. 遺傳演算法容易與其他最佳化方法結合,可先利用遺傳演算法全域多點搜尋 的特性作初步的尋找,再結合梯度法於各局部最佳解附近搜尋,能有效找到 全域最佳解。

2-3 遺傳演算法之設計架構

遺傳演算法流程如圖2-1所示,大致可分為七個步驟:

(一) 設計編碼方式 (二) 決定族群規模 (三) 設計適應函數

(四) 決定選取與複製方法 (五) 定義交配與交配機率 (六) 定義突變與突變機率 (七) 決定中止條件

8

圖 2-1 遺傳演算法流程圖 主要能將遺傳演算法分成以下五個主要架構:

1. 編碼方式

遺傳演算法無法直接應用於求解最佳化問題,因此必須先將個體所對應的數 值轉換成相同長度之字串,稱為染色體,才能進行運算。常見的編碼方式有 兩種:

(1) 二位元編碼法:

直接將數值轉換為只有0與1所組成之染色體。

(2) 實數編碼法:

不需要藉由二位元字串來代替設計變數,直接以實數向量代表染色體,

本論文使用實數編碼。

9

2. 適應函數

適應函數訂定是從最佳化問題中的目標函數轉換而成,是模擬生物對環境之 適應度用來評估族群中個體好壞的標準,適應度越高,代表其生存機率越大,

遺傳至下一代機率越高。

3. 選取與複製機制

根據適應函數評估篩選後,被選中之適應度較高之個體有較高的機率放入配 對池中,被複製至下一世代。

選取的方法有:

(1) 輪盤法: 其主要特色是輪盤中的每個面積大小都是根據每個個體適應 函數的百分比來設定的,也就是適應度愈高者所佔具的盤面比例愈大,

因此被選中的機率也就愈高,如圖2-2 所示。

(2) 競爭法:隨機選取兩個以上的個體,再從其中選取適應度較大者,放入 配對池。

(3) 隨機均勻法:在一線段上依照適應函數來分段,適應函數較佳者所佔比 例較長,反之較短。設此線段含有n個適應函數,再將此線段分成n等 份,挑選方式由rand × (𝑛1)來產生第一個選擇點,第二點至第n點,則 則由n等份之線段來組成,至此挑出m個適應函數,數量上m必須等於n。

本論文採用輪盤法。

10

圖 2-2 輪盤法

4. 交配

交配是隨機選取配對池中兩組染色體,經由互換基因,以產生新的子代,其目 的是為了使個體互相交換優良的基因,使新的個體能有較高的適應度,而其根 據交配機率來決定是否進行交配。交配方法有下列三種:

(1) 單點交配: 選出的兩個染色體中,隨機選取一點做交配點,將交配點後的 基因進行交換成為新的兩組染色體,如圖2-3所示 。

11

圖 2-3 單點交配

(2) 雙點交配: 選出的兩個染色體中,隨機選取兩點做交配點,將交配點間的 基因進行交換成為新的兩組染色體,如圖2-4所示 ,本論文使用此法。

圖 2-4 雙點交配

(3) 散佈交配:隨機選取兩組染色體,再隨機產生二元向量,若向量值為1,則 兩點基因交換;若向量值為0,則兩點基因保留至下一代,如圖2-5所示。

12

random crossover Point = 3

child =〔a b c 4 5 6 7 8〕

單點交配法:

親代 p1=〔a b c d e f g h〕

p2=〔1 2 3 4 5 6 7 8〕

random crossover Point = 3

child =〔a b c 4 5 6 7 8〕

單點交配法:

親代 p1=〔a b c d e f g h〕

p2=〔1 2 3 4 5 6 7 8〕

random crossover Point = 3

child =〔a b c 4 5 6 7 8〕

單點交配法:

親代 p1=〔a b c d e f g h〕

p2=〔1 2 3 4 5 6 7 8〕

random crossover Point = 3

child

13

14

MATLAB中scale及shrink預設值為1,scale = scale − shrink × scale ×目前世代數

15

變率則進行突變,span = 變數之起始上限 - 變數之起始下限;突 變子代 = 變數之起始下限 + 亂數 × span。此法可用在指定設計 變數之起始值上下限的狀況,但必須是無限制式的問題。

(3) 適應可行範圍

若此代最佳解小於上一代最佳解,則步幅(stepsize) = max (1,4 × stepsize),否則

stepsize=max(√eps, stepsize / 4 ),stepsize預設起始值為1,

eps=2.2204 ×10-16。將所有平行於主動(active)線性限制式及主 動邊界(bound)的方向形成一矩陣A。突變子代 = 親代 + stepsize

× (矩陣A中任一行向量),若子代不在可行區域內則不進行突變,

本論文因為限制式及變數上下限所以必須使用此方法。

8. 終止條件(Stopping criteria):

遺傳演算法尚未求得全域最佳解之前,永遠都有機會往全域最佳解收斂,因此 最常見之收斂條件:

(1) 最大世代數

設定一個最大世代數是最常見的收斂條件,預設為100世代。

(2) 適應度限制

若是最佳適應度小於或等於適應限制值則停止運算,預設值為-∞

16

(3) 滯留世代

滯留世代中,若適應函數值平均變化小於容忍度則停止演算,預設 值為50世代。

(4) 非線性限制式容忍度

當最大非線性限制式違背值低於設定值,則終止運算,預設值為 1x10-6

(5) 適應函數容忍值

在滯留世代限制內,適應函數值平均變化量小於設定值,則終止演 算,預設值為1x10-6

(6) 時間限制

若設定的秒數內,找不到更好的適應值,則終止演算,預設值為

∞ 。

17

相關文件