• 沒有找到結果。

2. 文獻探討

2.10 遺傳演算法

遺傳演算法由Holland 提出,模仿達爾文主張的「適者生存、優勝劣汰」的生 物演化原理,所規劃的最佳化求解程序。自然界生物為了適應當下環境,需不斷的

doi:10.6342/NTU201701607

9

演化提高生存能力。適應力高的生物較不易被環境淘汰因而有較大的機會存留下 來,反之則易被淘汰。而遺傳演算法的優化問題求解過程即模仿自然界生物的演化 特性,以母體(population)架構為演化基礎,透過個體染色體間的交配(crossover)、

突變(mutation)、和篩選(selection)步驟逐步朝優演化。遺傳演算法至今已廣為應用 於求解各類優化問題,如裝箱問題、旅行推銷員等問題。

遺傳演算法的母體由多條染色體(chromosome)構成,染色體則由一序列的基因 (gene)組成。通常一條染色體代表優化問題中的一個解,基因值會依問題特性而定 義成不同的形態,常見型態有二元數值、實數、整數、和符號等。遺傳演算法將優 化問題的解編碼(encoding)成適合的染色體型態後,反覆對這群染色體進行交配和 突變演化使染色體中基因組成產生變化,並以篩選改善保留適應值高的染色體。使 用遺傳演算法求解優化問題的主要作業有:將問題的解編碼成染色體、設定染色體 母體大小(population size)、定義染色體的適應函數、設定交配和突變運算方式和子 代篩選方法、設定演算法中的參數值包括交配率(crossover rate)、突變率(mutation rate)、和停止條件(stop criterion)。

遺傳演算法應用在最佳化求解問題的流程是先設定母體大小、演算法參數、以 及染色體編碼方式。接著產生母體大小個數的染色體並初始化,計算各染色體的適 應值(fitness value)。反覆執行依設定的交配率和突變率進行染色體交配和突變運算,

並計算適應值以從中篩選出適應值高的染色體進入下一代次的母體演化直到符合 停止條件為止。以下說明遺傳演算法的主要演算方法與內容。

(1) 基因編碼

將優化問題的解編碼成遺傳演算中可以演化的染色體,即將問題的決策變數 轉換成染色體的基因值。編碼方式必須根據問題特性選擇適合的編碼方式,並搭配 染色體解碼(decoding)方式,將染色體解碼成優化問題的解。

本研究遺傳演算中的染色體編碼方式採用二段整數編碼。第一段是整數排列 編碼,作法是將繞行站點索引依序存入基因值中,則染色體中的基因值順序即代表 站點繞行順序。而另一段是整數編碼,依給定的卡車容量決定基因值的上下界範圍,

使染色體在限制範圍內演化。

doi:10.6342/NTU201701607

10

(2) 母體初始化

首先決定母體大小。染色體數目多寡影響演算法的求解效益。當數目太小,難 以達到廣泛搜尋效果,容易陷入區域最佳解;反之則會耗費過多的求解時間,降低 求解效率。而母體初始化的方式常以亂數產生或依啟發式程序產生。

(3) 適應值計算

藉由計算適應值衡量染色體的優劣,而適應值也代表染色體存活率,即被挑選 進入下一代次演化的機率。適應值以大者為優,而當優化問題目標值望小時,需將 問題的目標值反向轉換成望大的適應值。常見的作法是將問題目標值取倒數或是 利用正值大數減去目標值作為適應值。而本研究為最小化問題,採用將問題的目標 值取倒數作為適應值。

(4) 交配運算

染色體交配運算以隨機方式從母體中選取兩親代作為交配對象,依交配方式 交換親代染色體中部份基因值,產生兩條新的子代染色體。交配運算目的是透過親 代染色體中的部份基因值產生變異,即針對親代染色體的組合解進行搜尋,期望子 代組合出具有更高適應值的染色體。而交配後產生的子代也可能較親代適應值差,

但透過篩選法會淘汰適應值差的染色體。遺傳演算法透過代次的演化,優良的子代 將能產生更好的子代,使演算法朝優演化。

常見的排序型整數交配法(Permutation Encoding)有部份相應交配法(Partial Mapped Crossover, PMX)、順序對應交配法(Order Crossover, OX)、循環對應交配法 (Cycle Crossover, CX)、順序為基交配法(Order Based Crossover)、和位置為基交配 法(Position Based Crossover) Goldberg (1989); Syswerda (1989) 。而常見的實數交配 法則有單點、雙點、多點、及均勻交配等。

(5) 突變運算

染色體突變運算以隨機方式從母體中選取一親代作為突變對象,依突變方式 變換親代中的部份基因值,產生一條新的子代染色體。突變運算的目的是導引染色 體搜尋鄰近解。當遺傳演算因交配失敗陷入區域最佳解時須靠突變跳脫。

doi:10.6342/NTU201701607

11

常見的整數突變法有反轉法(Inversion)、插入法(Insertion)、交換法(Reciprocal Exchange)、和取代法(Displacement)Gen and Cheng (1997)。而常見的實數突變法為 內插法。

(6) 篩選方法

遺傳演算法以染色體適應值評量存活率。篩選法以適應值高低選出母體大小 個 數 的 染 色 體 進 入 下 一 世 代 演 化 。 常 見 的 篩 選 法 有 隨 機(stochastic) 、 確 定 (deterministic)、和混合(mixed) Gen and Cheng (1997); Goldberg (1989)三種篩選法。

最常使用的隨機篩選法是Holland 提出的輪盤式篩選法(roulette wheel selection),即 適應值大小決定染色體在輪盤上所佔區域,再隨機射飛鏢選取;是一種比例式機率 隨機篩選法。確定型選擇法直接選取適應值高者。混合型選擇法則結合確定和隨機 法。典型的是Goldberg 提出的對戰挑選(tournament selection),此方法反覆隨機選 取數個染色體中最佳者進入下一代,直到選出足夠的染色體則停止。