第三章 研究方法
第四節 模擬實驗
一、基因演算法相關參數
在考量回收量多寡與路徑運輸成本之下,採用基因演算法在不同權重之下客觀求 解,來求得一組最適路徑。基因演算法應用於路徑的概念為,將計算求得的路徑編碼 (Coding)成染色體(Chromosome) ,隨機地重複產生 N 種初始解(染色體)與族群,然後 依據求解之條件來設計適應函數(Fitness Function) ,適應函數高的物種將被挑選制交 配池(Mating Pool)中,挑選的過程為複製,再依照生物概念中的基因演化運作過程,
交配及突變過程來運算,即完成一個世代(Generation)的基因演算法,一個世代完成後 將這一代的最優的數個染色體解輸出至菁英解集合,如此重複下去來產生適應性最強 的物種。其運作流程圖如圖 14 所示。
編碼(Encoding)
隨機產生 初始解(Initialization)
開始
交配(Crossover)
突變(Mutation) 選擇(Selection)
是否符合 終止條件
結束 是
評估(Evaluation)
清除
否
更新
菁英解 集合 暫存
菁英解 集合 清除
圖 14 多目標基因演算法流程
(一)染色體編碼(Coding)方式:
本研究編碼方式採用整數字串編碼,根據回收中心與各個回收據點排列順序,以 數字代碼表示。假設現有已知之回收中心與需求點分佈如圖15(a),”0”表示回收中心,
編號1~9代表回收需求點。染色體長度為可變動長度如圖15(b)所示。每個染色體表示 一個完整的解,包括車輛途程與車輛服務的顧客數。產生的染色體為回收排程的路線,
同一點出發在回收原點所以起點終點皆為回收中心。
4
6 3
8
1 5
2
7 9
0
染色體
0 2 5 7 0
0 1 3 4 8 9 0
0 6 10 6 4 0
0 4 5 0
(a) 回收中心與需求點示意圖
(b) 染色體
圖 15 染色體編碼方式
(二)初始解產生方法
初始解產生方法採用隨機方式產生,重複產生N個符合限制條件之可行解,並且 從中挑出適應度函數較高的值,做為起始解,以期能發揮同時進行多點搜尋之特性。
(三)族群數目
本研究採用兩個族群,透過兩個族群不斷的演化,期望能找出最優良解,如圖16 所示。兩個族群用途分別為:
1. 族群A:用來保留優良後代,並且透過基因演算法之演化特性(選擇、交配與突變
等)來尋找最佳解。
2. 族群B:不斷使用初始解之方法更新,選取部分優良的染色體複製到族群A,
族群A 交換資訊 族群B
圖 16 族群數目示意圖
(四)適應函數(Fitness Function)
基因演算過程是以適應函數值決定一組染色體之優劣,計算產生的與交配、突變 等作業後的染色體所換算出來的目標值,可以用來評斷所產生的路徑優劣,適應函數 值越高代表解的品質越佳。本研究中主要有三個目標分別為路徑成本、需求吻合度、
回收量等三個目標,化為單一目標-回收效益最大化,如第三節所敘述之目標式為 𝛚i。
(五)交配(Crossover)
基因演算法運作中的交配方式將大大影響求解效率,為了讓產生出來的染色體更 多樣性,交配方式採用部分配對交配PMX(Partially Matched Crossover),兩個染色體 交配之後,子帶長度等於母帶長度,交配時隨機決定欲交配的染色體片段長度,如果 交配後重複產生不合法路徑,則往前搜尋尚未使過的數字並且取代之,但不會取代到 交配的染色體。如圖17所示,圖17(a)為交配的母帶,圖17(b)是交配的子帶,圈選的 範圍為交配區域,交配後染色體有所重複,所以將第子帶的染色體更正為最小並且沒 出現過的數字,結果為圖17(c)所示。
01438560 0439620
01396560 0443820
01396520 0143820
圖 17 PMX 交配示意圖
(六)突變(Mutation)
基因演算法運作中突變將有助於求解時,避免陷入局部最佳解,所以適時的突變,
將有助於增加求解效率。突變方式為互換突變法(Swap Mutation),方法為在任一突變 後的子代染色體中,隨機增一點節點或減少一點節點,如圖18所示,圖18(a)為欲突變
(a) (b) (c)
的子代染色體,圖18(b)為突變後的染色體。
09675430 01678620
09375460 01278660
圖 18 SM 突變示意圖
(七)停止規則(Stop Rule)
本研究所採用的停止規則包括下列兩項:
1. 最大運算世代數。
2. 經過 N 世代數最佳解尚未更新。
3. 以上兩項規則其中一項滿足則停止。
(八)程式的輸出與輸入資料(Input and Output)
本研究之程式主要以多目標基因演算法求解逆物流途程規劃問題,程式主要輸入 的資料包括:
1. 回收中心與據點之間路徑成本矩陣
2. 據點之回收量 3. 庫存需求量
4. 設定基因演算法之交配機率、突變機率和停止條件等。
程式輸出的結果包含:
1. 適應度函數值 2. 回收途程
3. 執行世代數與運算時間等
(a) (b)