第二章 文獻回顧
2.2 啟發式解法回顧
2.2.1 傳統的啟發式解法
傳統求解VRP 的啟發式解法可約略分成兩階段來討論,其一為構建法(Construction Methods),另一則為改善法(Improvement Methods)。
(一) 構建法:
構建法為最初所發展的啟發式解法,目的在於根據一套特定的規則,從無到有逐步 地將所有的顧客點插入路線中,完成一個可行解。因此,構建法包含了三個要件:起始 準 則(Initialization Criterion) 、 選 擇 準 則 (Selection Criterion) 與 插 入 準 則 (Insertion Criterion)。選擇準則為選擇欲插入顧客點的依據,插入準則決定了插入的位置(Cordeau et al. [13])。構建法又可進一步細分為循序(Sequential)與平行兩種(Parallel)。循序法將ㄧ條 路線構建完成之後才跳至另一條路線,平行法在插入顧客點時同時考慮了一條以上的路 線。 在各種構建法中,最常被使用的方法為節省法(Savings Methods)與插入法(Insertion Methods)。
節省法由Clarke and Wright[9]所提出,其概念如圖 2.2 所示,先計算出所有的顧客 點對( k
i
, )之節省值(S );節省值公式為
ik (i,0)、( k 兩條節線之成本減去0, ) ( ki
, )之成本,其意涵為合併 i 與
k
兩節點所能減少的路線成本。接著依據節省值大小進行排序,得到 節省值列(Saving List)。選擇節省值最大者,如圖 2.2 方式優先進行合併,其過程仍需在 不違反車輛容量限制下進行。由此可知,節省法本質上為平行法,同時考慮了多條路線最遠插入(Farthest Insertion)、最省插入(Cheapest Insertion)、最快插入(Quick Insertion)、 任意插入(Random Insertion)等多種修正方法。詳細內容可參考 Bodin et al. [6] 或 Cordeau et al. [13]之整理。
7
VRP 路線改善的方法通常可約略分成節線交換(Arc Exchange)與節點交換(Node Exchange)兩種類型。節線交換法中,K-Opt 節線交換法為常用的交換法,由 Lin[28]
於 1965 年提出,K 表示為每次交換的節線數,且節線間互不相鄰。K 值愈大,可行的 節線交換,如Tarantilis et al. [38]所採用的方式。如圖 2.4(b)所示,可看出路線間的 2-Opt 交換,是以不同的兩路線各抽出一條節線,再分別插入一條節線,完成兩條新的路線。
資料來源:Tarantilis et al. [38]
由於2-Opt 與 3-Opt 的交換方式都會造成某些節線產生需要反轉的情況,造成計算 上的負擔,Or[32]便提出了 Or-Opt 節線交換法,被視為是一種 3-Opt 的變形,它可將某 一節點、某一段節線、或某兩段節線自路線抽出,再插入至其他節線之間。如圖2.5 所 示。(
i
,i
+1)、(j
,j
+1)與(k
,k
+1)三條節線被斷開,而以(i
,j
+1)、(k
,j
)與(i
+ k1, +1)三 條節線替代,重新連成一條迴路。可看到(i
+1,j
)這段節線從路線中被抽出,接著再插8
資料來源:Tarantilis et al. [38]
Osman[33]將 1-0 交換法稱為一個轉移過程(Shift Process),而將 1-1、1-2 稱之為 λ-interchange,λ 表示了牽涉到的節點數。圖 2.7 為 1-1 交換法的解題概念:原本屬於路 線A 的 i 點與路線 B 的 j 點,先從原有路線斷開後,再分別重新插入彼此之前的位置。
1-0、1-1 節點交換亦可允許在同一條路線內發生,而不限定為不同路線,如 Tarantilis et al. [38]所採用的方式。
資料來源:Tarantilis et al. [38]
1-2 交換法的解題概念如圖 2.8 所示,原本屬於路線 B 的 s 點插入了路線 A;路線 A 的j 點與路線 B 的 i 點則互相交換,分別插入了彼此之前的位置。
9
另外,由Gendreau et al. [21]於 1992 年提出一般化插入/解繫法(Generalized Insertion/
Unstring and String, GENIUS)求解 TSP 問題,它包含了 GENI 與 US 兩部分,GENI 可用 作一起始解構建的方法,US 則可作為路線改善的方法,其內容如下小節詳述。
10
11
GENI 的演算法如下所述:
步驟 1. 任意選擇 3 點構建起始路線,初始化所有節點的 P-neighborhood。
步驟 2. 選擇尚未在路線內的任一點,需考慮路線的方向,與兩種形式的插入法。選 出其中具有最小成本的方式插入。最後更新P-neighborhood。
步驟 3. 所有的點都在路線中,則停止。否則重複步驟 2。
Gendreau et al. [21]亦利用此模組發展出一套路線改善的方法。即所謂的解繫法 (US)。與一般交換法不同的是,解繫法的概念共有兩個階段:其一為將一個節點移出現 有的路線,稱為Unstring;再以前述之 GENI 演算法插入此路線,稱為 String。Unstring 可視為GENI 方法的反轉(reverse-GENI),因此亦有 Type I 和 Type II 兩種形式。如下所 述:
Type I Unstring 如圖 2.11 所示,在
v
i被移出路線後,其上游點v
i−1和下游點v
i+1分別 找到了v
k與v
j相連,v
k與v
j的下游點v
k+1、v
j+1再連起來,重新形成一條路線。從圖中 可看出 Type I Unstring 是將 Type I Insertion 的插入步驟顛倒過來。同樣地,Type II Unstring 也是顛倒 Type II Insertion 的步驟,如圖 2.12 所示。圖2.11 Type I Unstring 之示意圖
資料來源:Gendreau et al. [21]
12
圖2.12 Type II Unstring 之示意圖
資料來源:Gendreau et al. [21]
而解繫法詳細的執行步驟則可如下所述:
步驟 1. 現有路線τ 的成本為 z ,設定τ :=τ , *
* z := z ,以及計數器 t := 1
步驟 2. 對
v
t而言,進行Unstring 和 String,同樣地需考慮路線的方向,與兩種形式的 操作。選擇其中具有最小成本z 的路線
'τ
',並使τ: =
τ'
,z : z = '
。若
z
<z
*,則τ :=*
τ , *' z := ' z ,以及 t := 1;重複步驟 2。
若
z
≥z
*,設定t := t +1。若t = n+1,停止,並回報τ 和成本 *
* z ,否則重複步驟 2。
13
2.2.3 巨集啟發式解法
由於傳統的啟發式解法,必須找到優於所紀錄最佳解的解,才允許更新,因此在執 行上容易掉入局部的最佳解。為了克服此缺點,後續的趨勢逐漸演變成以高階的策略作 為指引,結合傳統的啟發式解法,來跳脫出局部最佳解的束縛,形成巨集啟發式解法的 架構。
巨集啟發式方法發展至今,已演變出許多解題概念不盡相同的方法。較為著名的方 法諸如:禁制搜尋法(Tabu Search, TS)、基因演算法(Genetic Algorithm, GA)、類神經網 路(Neural Network)、螞蟻演算法(Ant Colony Optimization, ACO)、模擬鍛鍊法(Simulated Annealing, SA)等不一而足。
卓裕仁[2]曾整理多種巨集啟發式解法包含的解題策略與觀念,而歸納出數種基本類 型。如表2.1 所示。這些巨集啟發式解法除了上述之巨集啟發式解法,還包括:門檻接 受法(Threshold Accepting, TA)、大洪水法(Great Deluge Algorithm, GDA)、紀錄更新 法(Record-to-Record Travel, RRT)、變動鄰域搜尋法(Variable Neighborhood Search, VNS)、噪音擾動法(Noising Method, NM)、兩極跳躍法(Flip-Flop, FF)、搜尋空間平 滑法(Search Space Smoothing, SSS)、貪心隨機適應搜尋法(Greedy Random Adaptive Search Procedure, GRASP),以及分散搜尋法(Scatter Search, SS)等等。其策略解釋如 下:
(1) 接受劣解:可接受劣於現有解之鄰解,以便搜尋過程能夠跳出局部最佳解。
(2) 變換鄰域:於搜尋過程交替更換不同的鄰域搜尋法以產生相異的搜尋空間。
(3) 擾動成本:擾動成本函數以改變解空間,並在擾動後的解空間繼續搜尋。
(4) 多重起點:分別自不同的起點(起始解)進行鄰域搜尋。
(5) 保留資訊:記錄求解過程中之重要資訊,並利用該資訊導引搜尋的方向。
(6) 自我學習:應用人工智慧的方式,讓方法能夠自搜尋過程中累積求解經驗。
14
表2.1 多種巨集啟發式解法之解題策略比較
策略解法 接受劣
解 變換鄰域 擾動成
本 多重起點 保留資訊 自我學習
禁制搜尋法
3 3 3 3
模擬鍛鍊法
3
門檻接受法
3
大洪水法
3
紀錄更新法
3
變動鄰域搜尋法
3
噪音擾動法
3
兩極跳躍法
3 3
搜尋空間平滑法
3
跳躍搜尋法
3
貪心隨機適應搜尋
法
3 3
基因演算法
3 3
分散搜尋法
3 3
類神經網路法
3 3
螞蟻演算法
3 3
資料來源:卓裕仁[2]
其中,模擬鍛鍊法(SA)、門檻接受法(TA)、大洪水法(GDA)與紀錄更新法(RRT)
同屬於門檻型演算法,有著類似的解題策略。此類方法之基本觀念乃是在鄰域搜尋陷入 局部最佳解時,鬆綁其接受法則接受劣於現解之鄰解,以便跳脫局部最佳解而能搜尋到 更佳的解。因此,SA、TA、GDA 與 RRT 等方法的執行架構與傳統鄰域搜尋法之架構 相似,差別僅在於使用的接受法則不同:傳統的鄰域搜尋法僅接受較佳的鄰解;門檻型 演算法則可接受暫劣之鄰解。
SA 可說是 TA、GDA、RRT 的概念來源,其基本觀念最早由 Metropolis 等人於 1953 年所提出,然後由Kirkpatrick et al. [26]加以應用到組合最佳化問題之求解上。SA 法的 接受法則為機率性接受暫劣解:利用一個隨機產生的數值與門檻值做比較,此門檻值是 鄰解與現有解之目標值差額及溫度的函數;所謂的「溫度」是做為控制門檻值高低的參 數;降溫則是為了使SA 能夠逐漸收斂(卓裕仁[2 ])。
TA 法的觀念源自於 SA 法,由 Dueck and Scheuer[16]於 1990 年發表,1993 年 Dueck[15]又根據 TA 的觀念衍生出 GDA 與 RRT。此三種方法皆採用確定性的接受法則,
茲以圖2.13 說明其接受法則的異同:傳統之路線改善法採取嚴格的「接受法則」,即當 交換後的可行解之目標值低於原有解時(C(X') < C(Xc),C(Xc)為現有解 Xc之目標值,C(X') 為鄰解X'的目標值),才接受此解。但 TA 法所採用的接受法則為C(X' )<C(Xc )+Tk,
T
k15
16
也無法搜尋可接受的解,使得TA 快速的收斂,無法達到預期的效果。由此可知門檻數 列的設定關係著TA 的求解品質。
(a) (b) (c)
1 K K
T
k1 K K
T
k1 K K
T
k圖2.14 TA 門檻數列遞減型態
資料來源:楊智凱[4]
2.3 可回溯式門檻接受法
可 回 溯 式 門 檻 接 受 法(Backtracking Adaptive Threshold Accepting, BATA) 是 由 Tarantilis et al. [38]所提出的一種改良式門檻接受法。它與傳統的門檻接受法最大的不同 在於門檻數列的型態:以往門檻接受法的門檻數列皆呈現出逐漸遞減的型態。而可回溯 式門檻接受法在完成一次搜尋迴圈之後,若是有找到至少一次的可接受解,即可降低門 檻;反之,則必須放鬆門檻值再進行交換。如此門檻數列的型態,便呈現出有增有減而 逐漸收斂的情形。如圖2.15 所示。
圖2.15 BATA 門檻數列收斂示意圖
資料來源:朱佑旌[1]
而此方法回溯門檻值的機制,是假設在每次進行鄰域搜尋之後,若在期間有至少一 次移動(找到可接受的解),則減低門檻值;否則即提高門檻值,但不可超過上一次被接 受的門檻值。而其回溯公式為:Tn =Tc +(Tp -Tc )×
b
,其中 Tn 為得到的新門檻值,Tc17
為目前的門檻值,Tp為前一次被接受的門檻值;b 則為門檻回溯的比例值,由此公式可 知b 值不得超過 1,以避免違反上述規定。
可回溯式門檻接受法另一個與傳統門檻接受法的差異,在於停止法則除了達到原先 預定的門檻數列長度之外,當已經連續回溯一個預設次數,卻沒有找到任何一個可接受 的解,即直接停止。
可回溯式門檻接受法應用於組合最佳化問題在文獻上還不多見。Tarantilis et al. [38]
提出此方法時,被設計應用於 HFFVRP (Heterogeneous Fixed Fleet Vehicle Routing Problem)。其後,朱佑旌[1]則以 BATA 方法設計一套兩階段可回溯式門檻接受法 (TBTA),求解 HVRPBTW (Heterogeneous Fleet Vehicle Routing Problem with Backhauls and Time Windows)。
2.4 小結
目前,巨集啟發式解法所發展的概念可大致歸納為深度搜尋(Intensification Search) 與廣度搜尋(Diversification Search)兩種高階策略。乃是想像在一龐大的解空間當中,不 僅要策略地決定搜尋的方向,也要有優秀的搜尋工具快速地搜尋到其區域最佳解。可回 溯式門檻接受法調控門檻值的概念即符合此項作法,當門檻值縮小,意味著偏重深度搜
目前,巨集啟發式解法所發展的概念可大致歸納為深度搜尋(Intensification Search) 與廣度搜尋(Diversification Search)兩種高階策略。乃是想像在一龐大的解空間當中,不 僅要策略地決定搜尋的方向,也要有優秀的搜尋工具快速地搜尋到其區域最佳解。可回 溯式門檻接受法調控門檻值的概念即符合此項作法,當門檻值縮小,意味著偏重深度搜