• 沒有找到結果。

2.4 啟發式解法回顧

2.4.1 傳統的啟發式解法

傳統求解 VRP 相關問題的啟發式解法可約略分成兩階段來討論,其一為構 建法(Construction Method),另一則為改善法(Improvement Method)。

(一) 構建法:

構建法為最初所發展的啟發式解法,目的在於根據一套特定的規則,從無到 有逐步地將所有的顧客點插入路線中,完成一個可行解。因此,構建法包含了三 個要件:起始準則(Initialization Criterion)、選擇準則(Selection Criterion)與插入準 則(Insertion Criterion)。選擇準則為選擇欲插入顧客點的依據,插入準則決定了插 入的位置(Cordeau et al. [8])。構建法又可進一步細分為循序(Sequential)與平行兩 種(Parallel)。循序法將ㄧ條路線構建完成之後才跳至另一條路線,平行法在插入 顧客點時同時考慮了一條以上的路線。在各種構建法中,最常被使用的方法為節 省法(Savings Method)與插入法(Insertion Method)。

節省法由Clarke and Wright [7]所提出,其概念如圖 2.1 所示,先計算出所有 的顧客點對( k

i

, )之節省值(

S );節省值公式為

ik (i,0)、( k 兩條節線之成本減去0, )

) ,

( k

i

之成本,其意涵為合併 i 與k兩節點所能減少的路線成本。接著依據節省值 大小進行排序,得到節省值列(Saving List)。選擇節省值最大者,如圖 2.1 方式優 先進行合併,其過程仍需在不違反車輛容量限制下進行。由此可知,節省法本質 上為平行法,同時考慮了多條路線(Cordeau et al. [8])。

0

i k

0

i k

C

io

ik k i

ik

C C C

S

= 0+ 0

C

ik

C

ok

圖2.1 節省法示意圖

插入法係由Rosenkrantz et al. [34]所提出,其概念可如 圖 2.2 所示:從一條 簡單的路線開始,考慮到若插入k點,路線會增加了成本Iiok ;此時便依路線所 增加的成本愈小的準則決定其插入的位置。在不違反車輛容量限制的情況下,逐 步加入新顧客點,直至所有顧客點皆已被服務。

0

i k

0

i k

C

io

0 0

0 ik k i

k

i

C C C

I

= + −

C

ik

0

C

k

圖2.2 插入法示意圖

由於節省法與插入法的觀念都非常簡單與容易執行,後續有多位學者採用並 針對問題特性改變其計算公式或執行架構等;例如插入法便有最近插入(Nearest Insertion)、最遠插入(Farthest Insertion)、最省插入(Cheapest Insertion)、最快插入 (Quick Insertion)、任意插入(Random Insertion)等多種修正方法。詳細內容可參考 Bodin et al. [4]或 Cordeau et al. [8]之整理。

(二) 改善法:

改善法乃是利用節點與節線的重新安置與交換,而使解獲得改善。因此,在 第一步應以一個起始解產生機制產生起始解,並將此起始解設定為現有解。透過 一個特定程序針對現有解的鄰域尋找新的解,當有一可行解的目標函數值優於現 有解時,將此新解更新為現有解,稱為一次移動(Move)。如此重複此動作,直到 找不到無任何可改善的可行解即停止,最後的現有解為所找到的區域最佳解。

VRP 路線改善的方法通常可約略分成節線交換(Arc Exchange)與節點交換 (Node Exchange)兩種類型。節線交換法中,K-Opt 節線交換法為常用的交換法,

由Lin [26]於 1965 年提出,K 表示為每次交換的節線數,且節線間互不相鄰。K 值愈大,可行的交換型態愈多愈複雜,因此K 值通常取 2 或 3。圖 2.3 (a)顯示 2-Opt 的解題概念:原本的(

i

,

i

+1)與(

j

,

j

+1)兩條節線被移除,而以( j

i

, )與(

i

+ j1, +1) 兩條節線來替代。

經由交換節線後,若找到一個可改善目標值的鄰解,即以此鄰解更新為現有 解,再重覆此鄰域搜尋的動作直至找不到可改善的解為止。由於K-Opt 原本設計 用於TSP 問題,於 VRP 問題上可被用來作為各路線內的節線交換。然而,2-Opt 亦可用於路線間的節線交換,如Tarantilis and Kiranoudis [37]所採用的方式。如 圖2.3 (b)所示,可看出路線間的 2-Opt 交換,是以不同的兩路線各抽出一條節線,

再分別插入一條節線,完成兩條新的路線。

+1

資料來源:Tarantilis and Kiranoudis [37]

由於 2-Opt與 3-Opt的交換方式都會造成某些節線產生需要反轉的情況,造 成計算上的負擔,Or [28]便提出了Or-Opt節線交換法,被視為是一種 3-Opt的變 形,它可將某一節點、某一段節線、或某兩段節線自路線抽出,再插入至其他節

+1

資料來源:Tarantilis and Kiranoudis [37]

Osman [29]將 1-0 交換法稱為一個轉移過程(Shift Process),而將 1-1、1-2 稱 之為λ-interchange,λ表示了牽涉到的節點數。圖 2.6 為 1-1 交換法的解題概念:

原本屬於路線A的 i 點與路線B的 j 點,先從原有路線斷開後,再分別重新插入彼 此之前的位置。1-0、1-1 節點交換亦可允許在同一條路線內發生,而不限定為不 同路線,如Tarantilis and Kiranoudis [37]所採用的方式。

−1

資料來源:Tarantilis and Kiranoudis [37]

1-2 交換法的解題概念如圖 2.7 所示,原本屬於路線 B 的 s 點插入了路線 A;

朱佑旌[51]在求解 HVRPBTW 時,依據其回程取貨問題先送貨後取貨的特性 使用了S-S(Segment-Segment)整段交換法,其概念如圖 2.8 所示。若將(

i

−1,

i

)及

圖2.8 S-S 交換法的概念示意圖 名的方法諸如:禁制搜尋法(Tabu Search, TS)、基因演算法(Genetic Algorithm, GA)、類神經網路(Neural Network)、螞蟻演算法(Ant Colony Optimization, ACO)、

模擬鍛鍊法(Simulated Annealing, SA)等不一而足。

卓裕仁[53]曾整理多種巨集啟發式解法包含的解題策略與觀念,而歸納出數 種基本類型。如表2.3 所示。這些巨集啟發式解法除了上述之巨集啟發式解法,

還包括:門檻接受法(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) 接受劣解:可接受劣於現有解之鄰解,以便搜尋過程能夠跳出局部最佳解。