第二章 文獻探討
2.5 基因演算法
2.5 基因演算法(Genetic Algorithm)
學者 John Holland 於 1995 年提出基因演算法(Genetic Algorithm),
其基本精神是以達爾文的進化論為基礎,模仿生物界中的物競天擇、適者 生存的自然界演進法則,進行求得最佳解的搜尋技術。簡單來說,基因演 算法是透過模擬自然界的演進法則,依據各物種之間的相互競爭及演化的 法則,其中演算過程主要是模仿生物的演化特性,讓母體群隨世代進化,
經由競爭的過程與控制複製(Reproduction)、交配(Crossover )及突變 (Mutation)的方法來保留較佳的染色體,淘汰較差的染色體,再透過電腦 做出模擬方式來計算人為染色體的變化對問題解決的程度,進而改善過去 數學演算法當中難以解決的問題。
基因演算法不同於一般最佳解的求法和搜尋程序,其中主要的差別在 於:
1.根據目標函數的特性編碼,以編碼的結果執行。
2.每次搜尋的是染色體的個數。
3.使用目標函數的資訊,而不是藉由資料延伸或使用其他輔助知識。
4.使用機率遞移法則,而非確定法則。
在基因演算法的演算過程中,一開始必須對問題裡的所有變數編成二進
位字元(或者是其他形式如文字、數字等),這些字元就如同生物中的遺傳 基因(Gene)。接著將這些字元組合成一條字串(String),而一條字串就代 表著問題的一組解。這些字串就像是自然界當中,個個物種的染色體,以 及各種不同的組合,而不同物種的組合(即多條字串所形成的集合)則統稱 為群體(Population)。
接著是依據群體所必須面對的生態環境,架構出物種對環境適應能力之 評估方法。簡單來說,就是將問題的目標函數或限制式,轉化成適合度函 數(Fitness Function)。利用適合度函數來評估各物種的適應能力,決定 哪些物種該留下來,而哪些物種必須被淘汰,這就如同生物界的「物競天 擇,適者生存」的法則。
由於基因演算法最主要的精神為演化(Evolution)及篩選
(Selection),因此在適合度函數定義出來之後,就將染色體經由演算過程 中主要的三個基本運算方式:複製(Reproduction)、交配(Crossover )及突 變(Mutation)做重複的演算,進而產生新的染色體,如此就能夠達到演化 的目的。一般基因演算法如圖 4 所示:
圖 4 一般基因演算法流程圖 定義適合度函數
傳回適合度最高的 染色體 符合終止條件
結束 開始
決定編碼方式
產生母代群組
母代字串間進行複 製、交配、突變
產生新子代群組
是
否
產生適合度函數的 近似最佳解
2.5.1 定義適合度函數(Fitness Function)
定義適合度函數是為了檢驗每一個染色體對環境的適應能力,也就是染 色體是否能夠生存的一個依據,適應性越高的染色體就越能夠存活下來,
反之則淘汰。但因為不同的問題並不是都可以透過目標值來做評估,故可 以將目標值或問題特性轉成適合度函數後應用在不同的問題上。
1. 染色體編碼(Encoding)
首先,必須將搜尋空間中的解以編碼的方式來表示。經編碼後的解相當 於在生態中的染色體,而在基因演算法中稱之為字串(String ),每一個染 色體由數個基因( Gene)所組成,在基因演算法中稱為字元,每一個字元都 代表問題的一個變數,則字元亦稱為特徵值(Feature Value)。染色體的編 碼方式是基因演算法再求最佳解之一個重要關鍵,選擇適合的編碼方式是 可以提高計算效率。因此,編碼方式要視問題本身即變數的性質而定。基 因演算法編碼的方式有兩種,一為二元(Binary)編碼法,二為順序(Order) 編碼法。
(1)二進位編碼法:
最簡單而且最被廣泛使用的方法就是二進位編碼法,就是基因用 0 與 1 來表示,例如一個長度為 8 的染色體可表示為 01010101 的形式,
其中 0 和 1 分別代表物體的特質 (2)順序編碼法:
此種編碼方式比較適合用於需要排序的問題上,在排程問題上需要 各訂單在各機台上的加工順序,例如一個長度為 8 的染色體可表示 為 ABCDEFGH 的形式
2.產生初始母體及母代群體的個數
初始母代群體是第一代染色體,也可稱為母群體。一般來說基因演算法 產生初始母代群體的方式有兩種,一是以隨機方式產生,另一則是利用啟 發式方法(Heuristic Method )產生初始母代群體。
(1)以隨機方式產生:
藉電腦亂數產生,就是初始母代群體之每一個體擁有不同的特性,
採用隨機方式產生初始母代群體,會造成求解時間明顯增長,甚至 影響求解品質,因為不良的初始母代群體會使得求解的收斂情況不 解,影響求解的時間。
(2)啟發式方法產生:
為了使基因演算法能快速收斂,因此發展啟發式方法,常見的啟發 式法包括先到先服務(First Come First Service¸FCFS)、最短處理 時間(Shortest Process Time, SPT)、最長處理時間(Longest Process Time, LPT)、最早到期日 (Earliest Due Date,EDD)、
最小剩餘工作時間(Least Work Remgining,LWR )、最少作業數 (Fewest Operations Remaining,FOR)、寬裕時間(Slack Time,ST)、
寬裕時間/未完作業數(Slack Time Per Operation,S/O)、關鍵比 例(critical ratio,CR)、最小寬裕時間(Minimum Slack Time,MST) 等等。
母代群體的個數是指基因系統內的染色體數目,母代群體個數的多少將 影響基因求解的效益與演算的效率,個數少難以達到預期的效果,可能提 早收斂;如果個數多,會造成耗費較長的時間計算。
3.基因演算法之複製方法
複製(Reproduction )運算子: 適合度根據每個物種的適應能力高低,
並此用來決定物種被選用的機率。因此適應能力較高的物種,就會有比較 高的機率被選擇到進而產生下一代新的個體。較常用的複製方法有以下幾 種:
(1)輪盤法(Roulette Wheel Selection Method)
輪盤法是用適合度函數值相對於整體比例分配來切割整體面積,其 意義就是適合度函數值若越大則所占面積也越大,因此被選擇的機 率也越大。而當輪盤分割完成之後,以隨機轉動輪盤來選擇母代進 行基因配對。雖然輪盤法的好處是簡單且容易計算,但若染色體的 適合度特別好時將使得較優良的染色體不斷的被選擇出來,如此一 來很容易在未找到最佳解時就陷入了局部解。此外,若適合度函數 質差異不大時,則會很難挑選出好的染色體,而使得最佳化的運算 時間過長。
(2)競爭式選擇法(Tournament Selection Method)
在演化的過程中,隨機選取兩個或多個字串來做比較,具有較高度 適應函數值的字串將被選取出來。不斷重複以上所述的步驟直到所 選取的字串個數等於母代的個數為止。因為競爭式選擇法所需要的 計算很少,故可由每次選取字串個數的多寡來控制其競爭的速度。
4.基因演算法之交配方法
交配(Crossover)運算子:交配過程是從群體裡隨機選取兩個字串,然後 相互交換位元的資訊,進而組成兩個新的基因字串,藉此法累積前代優良 的位元資訊產生更優良的子代,故交配運算子為基因演算法中最主要的運 算子。常見的交配方式有單點交配(Single-Point Crossover)、雙點交配 (Two-Point Crossover)、多點交配(Multi-Point Crossover)及均等交配 (Uniform Crossover)、部分配對交配(Partial-mapped crossover,PMX)、
循環交配(Cycle crossover,CX)、線性順位交配(Linear order crossover,
LOX)等方法。
5.基因演算法之突變方法
所謂突變是指隨機選取字串,將其中某一位元或數個位元改為他值,而 突變的意義在於產生差異性較大的子代,在空間搜尋中,當收斂至某區間 時,有可能是收斂致局部最佳解,而掉入局部解陷阱中,因此,藉由突變 運算員通常被視為跳出局部最佳解的一個重要關鍵,雖然藉突變方式可能 避免過早收斂,然而亦有可能造成系統的不收斂。在基因演算法中突變運 算子是用來改變群體的變異度,突變是把已經交配完成後而產生的子代染 色體,依據是先設定好的突變率進行突變的步驟。一般而言,突變率不會 訂的太大,通常訂於 0.001~0.05 之間。突變的方式有兩種位置突變
(Position-based Mutation)及移動突變(Shift Mutation)。
6.產生新子代
經過複製、交配及突變三個基本運算子運算之後,母代群體會產生新的 子代群體,而這些子代群體將會替換原來的母代群體。但是並非所子代群 體在交配與突變的過程中皆可以替換先前的母帶群體,因此才需要有產生 新子代的方法。較常見的產生新子代的方法有親帶取代法、完全取代法及 菁英因取代法。
(1)親帶取代法
親帶取代法是指只有親代產生的子代,才有機會取代其親代,假設 一個親帶有很多個子代,則此親代就會有很多機會被子代所取代。
(2)完全取代法
完全取代法是指所有的親代都被所有的子代所取代。
(3)菁英取代法
保留舊母群體中適合度比較高的染色體。
在先前所陳述的運作原理之下,基因演算法仍有以下幾項假設條件:
所求之姐都必須以字串 (String)來表示,而且字串長度是固定的。
一個解只有一種編碼方式表示,而一個字串只能表示成一個解。
在演算的過程中,時間的計算是採取離散區間來衡量,這稱為世代
(Generation)不論是哪一個世代,群體(現行解之集合)的大小是固定的。
基因演算法搜尋得停止條件是當全部物種都趨於一致,沒有再出現比現在 更好的適合度函數時就終止,不過有時可以依據系統的要求來停止搜尋。
一般來說,我們以下列四種情形做為停止搜尋的條件:
結束法則
(1)已達成最大演化代數。
(2)已進行到一定的演化代數卻未得更進一步的解。
(3)以達成最大的運算時間。
(4)解已符合系統的要求。