• 沒有找到結果。

本章內容將詳細說明本研究對於 GENIUS 如何應用於 VRP,以及本研究所採用鄰 域搜尋法和所做的改良方法。

3.1 起始解產生:一般化插入法(GENI)

本研究採用一般化插入法作為起始解的構建方法。一般化插入法不同於傳統插入 法,可選擇將一點插入至不相鄰的兩點之間,其插入的方法可分成型一與型二兩種。而 在考慮插入的位置時,先考量在順時針或逆時針的迴路中,型一與型二方法分別得到的 成本增加值,再選擇擁有最小值的方法來插入。

另外,一般化插入法原先是以TSP 為求解的問題(Gendreau et al. [21]),故應用在多 條路線的 VRP 時,可採用常見的循序或是平行兩種構建法則。本研究選擇較為簡單的 循序構建,其步驟流程詳細如下:

步驟 0. 將所有顧客點設定為尚未插入路線的集合

U

步驟 1. 找出

U

中距離場站最遠的一點a,與距離 a 最近的一點 b,與場站連成一條起 始路線,將 a 點與 b 點自

U

移除。同時,對所有節點均設定其鄰近清單 (Neighborhood list);某節點之鄰近清單為同路線中 p 個距離此點最近之節點的 集合。

步驟 2. 檢查

U

中每一點其是否插入後可以滿足車容量限制,若無任何點滿足則跳至 步驟1,以新增路線。反之,對所有滿足的點計算出其兩個方向與兩種型式的 成本增加值。選擇擁有最小成本增加值的點

v

,並以其所對應的插入法執行插 入;將

v

點自

U

移除,更新所有顧客點的鄰近清單。

步驟 3. 若

U

為空集合即停止。否則,重複步驟 2。

3.2 鄰域搜尋模組之設計

本研究採用的鄰域搜尋方法包含了解繫法(Unstring-and-String, US)與其他常見的鄰 域搜尋法。另外,在程式的資料結構上,本研究採用巨網(Giant Tour) [20]的概念,將多 路線的 VRP 問題視為一條整體的路線。並設計一個擴大解繫法搜尋範圍的機制使其找 到更多可能的交換,期以這樣的方法,來擴大其搜尋的鄰域,從而找到更佳的解。

3.2.1 於巨網結構下(Giant Tour)下執行鄰域搜尋

本研究在鄰域搜尋模組的程式撰寫中,利用了巨網結構(Giant Tour)[20]的概念。如 圖3.1 所示,圖 3.1 (a)是實際上 VRP 問題的路線結構,而在巨網結構的構想中則是用多 個虛擬的場站點將不同的路線隔開,使得每條路線均成為一條連結不同場站的路徑 (Path),而整個網路則可連結成單一迴路(Cycle)。如圖 3.1 (b)所示,路線ㄧ最後在一虛 擬的場站結束;而路線二則是從此場站出發,並到達另一個虛擬的場站,最後經由路線 三返回最初的場站。

19 場站

顧客點

路線一 路線二

路線三

路線二

路線三 路線一

(a) (b)

圖3.1 巨網結構的路線示意圖

由於解繫法原本應用於TSP 問題,而此種設計將可以使其應用於 VRP 問題時,除 了必須考慮每條路線的容量限制問題之外,其他仍然與應用於TSP 的情況大同小異。也 因此其所設定鄰近清單是由路網上最為鄰近的點所組成,而不考慮到其實際所在之路 線;所以執行搜尋時,其所選的Vi、Vj、Vk和Vl四點均在同一條路線時,為「路線內」

的交換,而如果至少其中一點與其他點不為同一條路線,則可視為「路線間」的交換。

圖 3.2 表示了一個路線間交換的範例。其中,Vj和 Vk屬於同一條路線,Vi則為另一條 路線,當被拔出路線外的第8 點重新插入路線 1 後,第 7 點反而被移至路線 1,第 1 點 則移至路線 2。由此可想見,當 Vi、Vj、Vk和 Vl此四點所分屬的路線愈多,其執行的 交換也愈複雜,特別是「路線內」與「路線間」兩種不同的交換在此結構下均可能發生,

使得在此所執行解繫法之變異性也大大地增加了。

圖3.2 路線間的解繫法示意圖

同樣地,原本適用於TSP 問題的交換法,2-Opt 與 Or-Opt 亦可以在此結構下同時考 慮「路線內」與「路線間」的交換,因此本研究將其納入為鄰域搜尋模組的交換方法。

而原本屬於路線間交換法的1-0、1-1,進行路線間或路線內的交換,亦均可能獲得改善,

但因Or-Opt 方法內將一個節點自路線內抽出,再將其插入其他節線中的作法,已與 1-0 交換法相當類似,故不將1-0 交換獨立出來,僅將 1-1 列為鄰域搜尋的交換方法。

20

因此,本研究之鄰域搜尋模組共包含了US、2-Opt、Or-Opt 和 1-1 四種方法。而在 執行順序上共有 24 種組合,但實際上無法有所依據斷言哪一種組合在最後會產生較佳 的結果。然而本研究希望在一開始執行較複雜的解繫法,藉此將互相鄰近的點先逐漸整 理至同一條路線,以獲得一個不錯的解。接著以1-1 交換進行微調。而由於 Or-Opt 可做 較為仔細的交換,因此先以2-Opt 進行快速地搜尋,最後則以 Or-Opt 把關,確保較少的 交換會被遺漏。故鄰域搜尋模組執行的順序為:(1) US、(2) 1-1、(3) 2-Opt、(4) Or-Opt。

3.2.2 擴大解繫法(US)鄰域搜尋範圍之設計

因為車容量的限制,使得在鄰域搜尋中大部分的交換並不可行;而解繫法以建立鄰 近清單來縮小其搜尋範圍,但也使得其可接受的交換變得更少。特別是解繫法是透過路 線中某個節點的拔出與重新插入來尋求改善,計算上較為繁複且較不容易找到可接受的 交換。

本研究認為,在 Gendreau et al. [21]所提之解繫法的架構下,任一個節點無論是 Unstring 或是 String 均有 Type I 和 Type II 兩種不同型態的方法去比較,再選出具有最 佳改善的方式。這樣目的應是著眼於不同的鄰域搜尋法其鄰域均不太相同,若同時考慮 到數種鄰域搜尋法可能的交換,將使得其鄰域擴大而更有機會找到較佳的解。以此觀 之,在執行解繫法的時候均需依順序針對每一個節點,進行點的重新拔出與插入來尋求 改善,而若此同時能比較此點與另一點的節點互換(1-1)之改善效果,或此點與另一點之 節線交換(2-Opt),或是將此點、或此點之後的一段節線或兩段節線抽出再插入其他節線 位置(Or-Opt),再選擇其中具有最佳改善的方法,相信將可進一步擴大其鄰域搜尋範圍,

進而達成上述之目的。本研究將此在US 的架構下,能綜合考慮各種交換法的機制,稱 之為Expanded US,並將於第四章中以實際測試說明其效果。

另外,在核心交換法的選擇策略上通常有(1) 最佳改善(Best Improvement)、(2) 首 先改善(First Improvement)和(3) 半最佳改善(Semi-best Improvement)三種:最佳改善意指 檢查所有可能的交換後選擇接受具有最多改善的交換;首先改善在當找到可行的交換後 即接受。半最佳改善則針對特定一點所能找到的鄰解中,選擇具有最多改善的交換。由 於此三種策略在改善效果方面尚未證實有明顯差異,但在執行時間上首先改善應為最 優。因此,本研究在鄰域搜尋模組所使用的策略均為首先改善。

21

相關文件