• 沒有找到結果。

第二章 文獻回顧

2.1 車輛定線問題

傳統車輛定線問題是延伸組合旅行推銷員問題的最佳化問題,即是在一個場站 下,對數量眾多的顧客需求點進行純粹送貨或收貨的作業,並尋找最短總途程距離。

在這個問題中,各途程需求點之需求量不可超過車容量限制,每輛車均由場站 出發,服務完所指定需求點後再回到場站,且每個需求點只能由一輛車來服務。根 據 Lenstra and Rinnooy(1981)文獻,VRP 是屬於 NP-hard 問題。詳見圖 2-1 VRP 問題示意圖,中央方形為場站(depot),圓形為客戶點。

1

depot 路線1

路線2

路線4 路線3

客戶點1

圖 2-1 VRP 示意圖

車輛定線問題定義一網路,G(V,E;D,C),V 代表網路上所有節點(vertex)

之集合,E 代表網路上所有節線(edge)之集合,D 代表發生在節點上之顧客需求

(demand)之集合,C 代表使用節線之一般化成本(generalized cost)集合。當 G 為一個完全性網路(complete graph),即任意兩節點之間均存在著直接連接該兩點 的節線,車輛定線問題(VRP)即在上述網路 G 中,給定具有相同容量的配送車隊,

然後決定出一組具有最小總成本的配送路線(自場站出發,最後回到場站)。其中每

條路線由一輛車行駛,各車所服務的顧客需求總和不得超過車輛容量;每位顧客皆 須被服務,而且僅能被一輛車服務。

表2-1將以上所簡介紹之VRP研究以指標、需求點、及資源限制型態作彙整:

表 2-1 VRP 研究彙整

類型 指標 需求點型態 資源限制

VRP 總路線成本最小 固定需求 只收貨或送貨

單一場站 單一種類車輛 有車輛容量限制

2.2 車輛定線問題相關啟發式解法文獻回顧

這一小節將會舉列文獻中所研究不同問題背景的相關演算法及啟發式解法,

相關車輛定線問題解法的文獻眾多,Bodin(1981)將車輛定線問題分類如下:

1. 先分群再排程(cluster first-route second): 先將需求點分成幾個群組,

然後再對個群組進行途程安排,如Gillett 及 Miler (1974) 提出的掃描法 (sweep procedure)。

2. 先排程再分群(route first-cluster second): 首先將所有需求點建構成一 路線,接著再依限制條件如車容量,將建構的起始路線分割成數個可行的路 線,如Golden et al.(1975)為求解多車種車輛定線問題所使用的方法。節省、

插入(savings、insertion):首先建立一起始途程,接著記算每個需求點插 入途程後的節省值,考量節省值最大的需求點為插入依據,直到無法再改善為 止,如Clark及Wright(1964)所提出的節省法(saving algorithm)、Mole及 Jameson(1976)所提出的插入法。

3. 交換改善(improvement exchange):必須先建立一可行途程為起始解,接著 利用路線交換來改善,直到無法再改善為止,如Lin(1965)的2-opt及3-opt、

Lin及Kernighan的K-optimal(1973)、Christofides及Eilon(1969)的交換法

(exchange algorithm)。

4. 數學規劃基礎(mathematical-programming based):利用數學模式進行最佳 化作業,如拉格蘭式鬆弛法(lagrangian relaxation)。

5. 人機互動(interactive optimization):利用使用者的直覺、經驗、以及知 識來納入求解過程的一個方法。

6. 最佳解方法(exact procedure):在可行域中搜尋出最佳解,如分支界限法 (branch and bound)。

另外根據 Fisher(1995)的分析指出求解車輛途程與規劃問題之演算法可以分 成三個時代。第一代是從 1960 年代到 1970 年代,屬於簡單啟發式方式,包括有各 種局部改善之啟發式法和貪婪法(Greedy);第二代是從 1970 年代到 1980 年代,屬

於一種以數學規劃為主的啟發式解法,包括指派法則(generalized assignment)、

集合分割法(set partitioning)和集合涵蓋法(Set Covering);第三代是從 1990 開始至今,屬於較新的發展方法,包括利用嚴謹啟發式方法、人工智慧法及最佳化 演算法。

第一類:簡單啟發式解法(simple heuristic):

發展時間約為60年代至70年代之間,是利用貪心(greedy)法則、局部改善(local improvement)等概念,設計出簡單、易執行的啟發式解法。具代表性的解法有:Clarke 及 Wright(1964) 的 節 省 法 、 Christofides 及 Eilon(1969) 的 交 換 法 、 Gillett 及 Miller(1974)的掃描法和Mole及Jameson(1976)所提出的插入法。另外Savelsbergh (1985)、Solomon (1987)、Kontoravdis及Bard (1992)、Potvin及Rousseau (1995)、

Russel(1995)和Baker及Sheasby(1999)所發表的文章都應用到此類的解法。

第二類:數學規劃基礎解法(MP-based heuristic):

發展時間約自 70 年代中期至今,第二類的演算法是以數學規劃為主,是將 VRP 的問題鬆弛(relax)成較簡單的 MP 模式,如一般化指派問題,或集合分割問題、

集合涵蓋問題,以便將需求點分群,再針對各子群求解 TSP 子問題,代表性的研究 有:Fisher 及 Jaikumar(1981)、Christofides et al.(1985)、Kolen (1987)、

Desrochers (1992)、Konskosidis (1992)、Bramel (1996, 1997)、Fisher (1997) 和 Kohl (1997) 所發表的文章都應用到此類的解法。

第三類:人工智慧啟發式解法(artificial intelligence techniques):

發展時間約自80年代開始。本階段的研究主要是在於人工智慧型啟發式解法的 發展,一方面是借重專家系統(expert system)的建立,輔助不同問題個案建議最 適合之求解方法,另一方面則是改變傳統局部搜尋方法,屬於萬用啟發式解法 (metaheuristic),主要是利用模擬退火法(simulated annealing)、基因演算法 (genetic algorithms)和禁忌搜尋法(tabu search)來求解,如Pureza及Franca (1991)提出一個move-generation的改善程序,這個改善程序是對途程間作單一個節 點的交換,或是嘗試將一途程裡的一個節點插入到別的途程裡,並利用禁忌搜尋法 的反覆搜尋來找尋全域的最好解,其他著名的解法還有:門檻接受法、成本擾動法 及搜尋空間平滑法等。

Gendreau et al.(1992)提出一個禁忌搜尋法來求解VRP,在他們的搜尋改善中,

他們嘗試每次將一個路線的一個節點插入至另一條路線中,以對總路線做改善。

Osman (1991, 1993a)利用路線間單一個節點的交換改善法來對總路線做改善,在改 善過程中,他加入了禁忌搜尋法與模擬退火法的混合搜尋法,來使改善的解能夠跳 脫局部最佳解。Van Breedam (2001)利用Savelsbergh (1988)所提出的三種路線間 的改善法,再加入模擬退火法的機制來做改善。這三個改善法分別是線段交換法 (string exchange)、線段移轉法(string relocation)、混合線段交換及移轉法 (string mix)。線段交換法是考量將某一條途程的顧客點或兩個以上相鄰的顧客

點,與另一條途程的顧客點或兩個以上相鄰的顧客點作交換。線段移轉法是將起始 解裡某一條途程的一個顧客點或是一群相鄰的顧客點,嘗試將它們從原途程中釋 放,並插入其它某一條途程裡的相鄰兩個顧客點之間。而混合線段交換及移轉法則 是混合考量線段交換法與線段移轉法的方法。根據Van Breedam(2001)的測試,當加 入模擬退火法的機制後之線段交換法、線段移轉法、混合線段交換及移轉法,所得 到的解均較只以單純做這三種改善要好。

以下本研究依據Fisher學者之分類加以介紹相關文獻,如2.2.1至2.2.3。

2.2.1 簡單式啟發式解法

所謂「簡單式啟發式解法」,在分類上屬於第一類啟發式解法,搜尋策略為先 分群後建構路線、插入節省等原則,設計出簡單易執行的啟發式解法,優點為運 算架構簡單,缺點為求解精確度不高且易陷入局部最佳的狀況。下面各節詳細說 明幾種著名的傳統啟發式解法,掃描法、節省法及節線交換法。

A.掃描法(sweep algorithm)

1974 年 Billy E. Gillett 和 Leland R. Miller 首次發表了掃描法,討論了 掃描法之啟發式解題邏輯,並測試掃描法的解題績效。

一個具效率的啟發式演算法名為掃描法。掃描法的特色為:1.計算量隨著節 點數呈線性增加 2.每個節點位置以極座標定義。掃描法是最簡單也是最被廣為流 傳的兩階段演算法(two phase method)之一,整個演算法的第一個階段為集群化,

掃描法集群化的做法為:客戶點以極座標表示,隨機選取某一客戶點為起點,以 該客戶點與場站之間之射線為基準,進行順時針方向或逆時針方向掃描,掃描到 的客戶點即加入該群中,直到該群客戶點總需求量達到車輛容量限制,則該群集 群完成,以上述原則,再開始下一集群之集群化動作,集群化的動作直到所有客 戶點皆加入集群中為止。第二階段違建構路線,在第一階段客戶點集群化動作完 成之後,每一群之客戶點以旅行推銷員問題之演算法進行路線構建。掃描法演算 流程為:

1. 將每個節點依角度大小編號由 2 號開始(1 號節點永遠是 depot)。

2. 在符合車輛容量限制條件下,由二號節點開始以順時針(或逆時針)方向掃描 角度連接各節點,形成路徑。

3. 為使總路徑長度縮短的情況下,進行路線間節點交換,來改善路線成本。

4. 分群組完成後,再進行每個群組之 TSP 問題最佳解求解。

掃描法演算流程如圖 2-2。

其他兩階段演算法的研究尚有 Christofides et al.(1979)和 Tyagi(1968) 等。

B.節省法(saving algorithm)

節省法是由Clarke 及 Wright在 1964 年首先提出,屬於直接建構路線的貪心

(greedy)方法,所謂節省值即指合併兩節點後所能減少的路線成本。首先計算 出所有點對(i,j)的節省值:Sij=Ci0+Coj-Cij,按照節省值由大至小排列,然後選 擇序列中節省值最大之點對構建新路線,並依序檢查下一組點對合併到路線端點 之可行性(主要是檢查是否符合車輛容量限制與是否為連接場站之節點),若可則 合併,否則掠過該點對。若序列中尚有點對未撿視完畢,則繼續檢查下一對點對。

若所有點對皆有車輛服務,則停止。若尚有節點未有車輛路線,則由未有車輛路 線的點對中選擇節省值最大者產生新的路線,再檢視節省值序列中之點對合併到 新路線之可行性,重複上述步驟直到所有客戶點皆受到車輛路線服務為止。

節省法演算流程如圖 2-3。

其 後 有 許 多 對 於 Clarke 及 Wright 的 基 本 節 省 法 模 式 加 以 調 整 的 研 究 , Gaskell(1967)以及Yello(1970)獨立地介紹一個節省法的修正觀念:Sij-θCij,θ 是一個數量參數(scalar parameter),藉由改變θ值,使用者可以任命兩點之間 的旅行成本之重視程度大小,這個參數可以改變,同時會得到不同解,再由這些 解裡面選出最佳解。Golden et al.(1977)已經使用電腦科學計算技術來減少 Clarke 及Wright的基本節省法模式的運算時間。

Altinkemer 及 Gavish(1991)在 Clarke 及 Wright 的基本節省法模式中,達 到於單次重複中多對點合併的明顯程度改善計算實行結果。

以場站為原點,計算各 客戶點極座標

隨機選取某一客戶點θ 座標為0

隨機選取某一客戶點θ 座標為0

相關文件