• 沒有找到結果。

瀰集演算法求解方法

第三章 研究方法

3.3 瀰集演算法求解方法

本研究所使用求解此排程問題的方法為瀰集演算法,圖 3.6 為瀰集演算法的 詳細求解流程,本研究對於瀰集演算法的使用方式是參考 Moscato (1989)所提出 對於此演算法的發明想法與實際應用方式,利用 GA(全域)+SA(區域)去求解問題,

接下來將會對於每個步驟進行說明。

圖 3.6 瀰集演算法之流程架構

Step1. 設定各參數

利用瀰集演算法求解本研究的問題時,對於瀰集演算法的使用必頇在一開始 時將一些基本的參數進行設定,需要設定的參數如下:

 初始解產生方式

 初始母代群體之數目

 決定區域搜尋方式

 適應度函數值的計算方式

 交配方式

 菁英政策方式

 突變方式

 收斂條件

 終止條件

Step2. 產生初始解

產生初始母代群體的方式是隨機產生的,但因為新舊染色體表達法不同,所 以在此環節上會有問題產生,實際初始解的解決之道和產生方式會在 4.2.2 節做 詳細說明。而母代群體的大小為一千條,這樣的母代群體大小配合本研究的龐大 運算次數並不會造成問題。

Step3. 將母代進行區域搜尋

對於新產生的母代為了能夠加速整體演算法的精進,所以需要進行區域搜尋 的動作,本研究所使用的區域搜尋方法是模擬退火法,相關流程如圖 3.7 所示(參 考來源 Metropolis (1953) ),而相關的參數設定如下:

 起始溫度:1000 度

 降溫係數:0.6

 柯西函式:溫度2/(溫度2+目標值差距2)

 終止條件:溫度降到 10 度以下

 初始解:需要進行區域搜尋的染色體

 鄰近解:利用交換(Swap)得到

圖 3.7 模擬退火法之流程架構

Step4. 計算母代的適應度函數

將已經進行區域搜尋的母代分別計算其適應度函數值,以便於接下來進行各 項工作時,判斷染色體的存在價值。本研究染色體的適應度函數值的計算方式是 先將染色體的目標值計算出來,再經由適應度函數的轉換而得知,如下所示:

P :表示初始族群染色體的數量

v :表示第 j 個染色體的目標函數值j

jP

f :表示第 j 個染色體的適應函數值j

jP

適應度函數值:

1 1

j

j

fv

Step5. 交配

做好 Step1 到 Step4 的工作後,算是完成演算法的準備工作,而此步驟即開 始進行演化世代的動作,透過交配產生出新的子代,並透過不斷的世代演化來達 成尋優的動作。本研究的交配方式是屬於 PBX 多點交配的方式如圖 3.8 所示,

不管是舊染色體表達法或是新染色體表達法所使用的交配方式皆相同,先隨機從 母代群體中挑選兩條染色體,再找出其中一條適應度函數值較好的當作母代一,

再以同樣方式找出母代二來進行交配。利用一個 mask 將各點產生一個 0 或 1 的 數字,當基因的位置是 1 時,則將母代一在此位置的染色體基因複製給子代,依 序往後執行,等完畢後再將子代剩餘位置用母代二來補上。

圖 3.8 舊與新染色體表達法之 PBX 多點交配方式

Step6. 將子代進行區域搜尋

將新產生的子代像 Step3 一樣的進行區域搜尋動作,因為瀰集演算法就是在 每一代皆導入局部最佳化的概念,所以每個產生出的新解都要進行這樣的一個步 驟。

Step7. 菁英政策

為了保持母代群體的大小,所以對於新產生出的子代要考慮它是否適合母代 群體,因此本研究的菁英政策是從母代一和母代二以及子代中三個挑出兩個放回 母代群體中,執行的方式如圖 3.9 所示,先分別算出此三條染色體的目標值,再 經過轉換成適應度函數值,選擇較大的兩個進行菁英化保留下來,最後在把這兩 個放回母代群體中,便完成了所謂的菁英政策。

圖 3.9 菁英政策

Step8. 是否達到終止條件

到 Step7 時算是完成一個世代的演化,在進行下個世代前要先判定是否到達 終止的條件,若已到達終止的條件則結束此尋優的過程;若還未到達終止的條件,

則繼續進行 Step9。而本研究的終止條件會在 4.2.1 節做一個詳細的說明與設定。

Step9. 是否收斂

由 Step8 已經得知是否執行下一個世代的演化,但是在執行下一個世代前要 先判定此母代群體是否已經造成收斂的現象,如此可避免此演算法的求解過程已 經落入某個局部最佳解卻還一直往那個方向進行尋優的動作。本研究收斂的判定 是當連續十個世代皆未改變最佳解。若判定為收斂,則進行 Step10;若還未收斂

Step10. 突變

本研究所使用的突變時機與傳統的基因演算法不同,是當發現收斂時才需要 使用,用以跳脫局部最佳解的框架。而本研究所使用的突變方式是將染色體進行 連續十次的交換(Swap)動作,執行的方式如圖 3.10 所示,先隨機從母代群體中 挑選兩條染色體,再找出其中一條適應度函數值較好的當作母代,本研究所使用 的新染色體表達法只需要以隨機找出兩點的方式來進行交換基因即完成一次的 交換(Swap)動作,但是舊染色體表達法需要在每一段皆隨機找出兩點來進行交換 基因才算完成一次的交換(Swap)動作,此為兩者不同之處,這也可能是造成本研 究的運算時間較快的原因。做完此步驟則跳回 Step3。

圖 3.10 舊與新染色體表達法之 Swap 突變方式

相關文件