• 沒有找到結果。

第二章 文獻探討

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)解已符合系統的要求。

相關文件