• 沒有找到結果。

第三章 研究方法

3.1 第一階段演算法設計

3.1 為第一階段演算法流程,以下將針對每項流程作詳細說明。

圖 3.1 第一階段基因演算法流程圖 一、 編碼(Encoding)

本研究採用整數編碼,每一顧客有整數的定義,i∈{1,...,N},N 為顧客數,一基因 代表一顧客點。一條染色體代表一組解,即一條染色體表示多車之繞行路徑,路徑中不 包含場站,每一染色體定為整數字串,一條路徑被一輛車服務。

圖 3.2 染色體示意圖 二、 初始族群(Initial Population)

Solomon[13]所提出的 Push Forward Insertion Heuristic(PFIH),對於 PFIH 的詳細敘 述則參考[13],此方法目前已有許多研究使用。原始的 PFIH 方法第一個顧客非隨機選 擇,本研究沿用[12]針對原始 PFIH 方法做修改,每條新路徑的第一位顧客為隨機選擇,

其後的顧客點則依據式(15)所計算出的成本大小,選擇最小成本的顧客點插入路徑中。

) ) 360 /

(( 0

0i i i i

i d b p d

C =α +β +γ ………(15) 參數α設為 0.7;β設為 0.1;γ設為 0.2;d0i顧客點 i 到中心場站的距離;b 為允i 許最晚開始服務顧客 i 的時間;p 為從顧客點 i 到中心場站的極座標值。 i

隨機 PFIH 步驟如下:

1. 依據式(15)算出每一顧客的成本並由小到大做排序。

2. 從場站開始出發,路徑 r=1

3. 如果所有的顧客都服務完,到第 9 步驟。

4. 從尚未服務的顧客中挑選時窗上限最小之節點作為路徑的第一位顧客點,並更新路 徑之車容量。

5. 從尚未考慮之顧客中挑選成本最小者。

6. 若符合時間可行性,到第 7 步驟;若不符合,到第 5 步驟。

7. 如果符合車容量限制,更新路徑之車容量,到第 5 步驟;若不符合則到第 8 步驟。

8. 從場站開始出發,路徑 r=r+1。到第 3 步驟。

9. 所有的顧客都服務完,則結束。

三、改善路線交錯

一個好的初始族群,通常能夠縮短搜尋時間,在短時間內找到不錯的解。然而,在 初始族群中可能會有路線交錯的情況發生,因此在執行基因演算法前先改善路線交錯的 情況,期能產生一個較好的初始族群。路線交錯的情況如圖 3.3 所示。

. . . . n . . . . n . . . . n . . . . n . . n

車 1 車 2 …… ……

圖 3.3 路線交錯情況

0

1

2

3

4 5

6

7

圖 3.4 單一交錯情形

圖 3.5 單一交錯路線改善

圖 3.6 多重交錯情形 0

1 2

5

4 3 6

8 0

1

2

3

4 5

R

圖 3.7 多重交錯路線改善

圖 3.8 改善交錯流程圖 0

12 2

5

3 4

6

8

7

三、 適合度函數(Fitness Function)

適合度函數為總成本(TD)的倒數。如式(21):

TD=

st +

(ei ai)+

tij +

penalty(ai li)………(20)

fitness=TD1 ………..(21)

參數說明:

st:服務時間

ei:顧客 i 的時間窗下界 li:顧客 i 的時間窗上界 ai:到顧客 i 的時間

penalty:違反時間窗的懲罰值,設為 100

四、 選擇(Selection)

使用競爭法,隨機選 3 個染色體,從中挑選適合度函數值愈高者,此過程直到交配 槽的數目到達族群數目時結束。如圖 3.9 所示。

圖 3.9 選擇示意圖

五、 交配(Crossover) 交配步驟如下:

(1) 從交配槽中選擇兩個母代,母代一和母代二。

(2) 判斷母代中是否還有未考慮的路徑,若是,到步驟(2);若否,到步驟(6)。

(3) 在母代一尚未被考慮的路徑中挑選旅行成本最小的路徑。

(4) 判斷路徑在子代中是否有重覆的顧客點,若是,則繼承此路徑到子代中,到第 (2)步驟;若否,則到步驟(3)。

交配槽

(5) 在母代二尚未被考慮的路徑中挑選距離最小的路徑。

(6) 判斷路徑在子代中是否有重覆的顧客點,若是,則繼承此路徑到子代中,到第 (2)步驟;若否,則到步驟(4)。

(7) 尚未被服務的顧客,在考量車容量限制與時間可行性之下,若可行則嘗試將其 插入到子代原有的路徑中。

(8) 最後,若尚有未被服務的顧客,再進行隨機 PFIH 構建新路徑。

六、保留菁英(Elitism)

將初始族群的適合度函數值最高者保留下來,保留菁英的好處是可以確保新世代的 適合度函數值不會降低。將最佳的個體複製為兩份,避免因突變、交配而使個體的品質 退化,進行演化時最佳的個體維持不變,另一複製的最佳個體仍可做交配、突變。

八、突變(Mutation)

在突變之前先產生一個介於 0~1 間之隨機亂數 P,若 P 小於突變機率 0.05 則進行 突變。

突變有以下三個步驟,如圖 3.10 所示:

(1)在染色體中隨機挑選一個顧客點 i。

(2)在染色體中隨機挑選一條路徑 r。

(3)若顧客點 i 符合路徑 r 之車容量限制與時間可行性,則將顧客點 i 插入路徑 r 中。

圖 3.10 突變示意圖 九、終止條件

Zhu(2000)對於 VRPTW 問題,建議以演化 1000 世代為設定停止法則,本研究則採 用此法則作為終止條件,若世代數到達 1000,則終止;反之,則繼續演化。終止則將目 前世代輸出產生結果,否則繼續進行交配、突變與總距離計算等程序。

相關文件