國
立
交
通
大
學
運 輸 科 技 與 管 理 學 系 碩 士 班
碩 士 論 文
應用變數產生法求解有時間窗限制的收送貨問題
A Column Generation Approach for the Pickup
and Delivery Problem with Time Windows
研 究 生:葉珮婷
指導教授:王晉元
應用變數產生法求解有時間窗限制的收送貨問題
A Column Generation Approach for the Pickup and Delivery
Problem with Time Windows
研 究 生:葉珮婷 Student:Pei-Ting Yeh
指導教授:王晉元 Advisor:Jin-Yuan Wang
國 立 交 通 大 學
運 輸 科 技 與 管 理 學系
碩 士 論 文
A ThesisSubmitted to Department of Transportation Technology and Management College of Management
National Chiao Tung University in partial Fulfillment of the Requirements
for the Degree of Master
in
Transportation Technology and Management
July 2009
Hsinchu, Taiwan, Republic of China
中文摘要
應用變數產生法求解有時間窗限制的收送貨問題
學生:葉珮婷
指導教授:王晉元
國立交通大學運輸科技與管理學系碩士班
摘 要
本研究目的為替貨運業之預先派遣作業產生具有效率的路線,除了頇
考量路徑成本外,尚需考量貨運業收送貨之特性,包含優先限制、聯結限
制、時間窗限制與車容量限制。本研究將有時間窗限制的收送貨問題
(Pickup and Delivery Problem with Time Windows, PDPTW)建構為一集合
分割問題,並提出兩套以變數產生法(Column Generation)為基礎的演算法
求解。此兩套演算法皆以變數產生法、分支定限法與解決重覆涵蓋問題之
啟發式解法三大部分所組成,兩套演算法不同之處在於變數產生法之求解
子問題演算法。本研究將子問題設計為考慮有時間窗限制收送貨特性之最
短路徑問題,第一套演算法之子問題使用修正後的 Dijkstra’s 演算法與啟
發式解法求解;第二套演算法之子問題使用修正後之 Label Correcting 演
算法求解。
測詴結果發現第一套演算法與第二套演算法於小例題測詴範例之求解
績效誤差在 5%內,但使用第一套演算法之求解時間遠較第二套演算法快。
本研究將第一套演算法求解子問題時之啟發式演算法分為三種組合方式,
測詴結果發現三種組合方式對於帄均旅行成本在小範圍時間窗客戶群與
同一客戶大小有顯著差異;三種組合方式對於帄均車輛數僅在 LR2 客戶
類型無顯著差異,在其餘客戶類型與同一客戶大小皆有顯著差異;三種組
合方式對於不包含分支定限法之帄均求解時間皆為第三種組合最快。由測
詴結果可知使用第一套演算法且子問題啟發式演算法使用第二種組合方
式能在較快速之運算時間內求得不錯的路徑組合。
關鍵字:有時間窗限制的收送貨問題,集合分割問題,變數產生法
英文摘要
A Column Generation Approach for the Pickup and Delivery Problem with
Time Windows
Student:Pei-Ting Yeh
Advisor:Dr. Jin-Yuan Wang
Department of Transportation Technology and Management
National Chiao Tung University
ABSTRACT
Pickup and delivery problem with time windows (PDPTW) is an
important and fundamental problem for many logistic service providers. We
first formulate this problem as a set-partitioning problem. Two column
generation based algorithms are proposed for solving this model. Both
algorithms consist of three phases: column generation, branch-and-bound, and
heuristic local search. The column generation subproblem is formulated as a
shortest path problem with multiple side constraints. The major differences
between these two algorithms are the adopted solution techniques. The first
algorithm is based on the traditional Dijkstra’s algorithm and the second
algorithm is basically a modified Label Correcting.
We use benchmark testing problems to evaluate the performance of these
two algorithms. Numerical experiments show that the proposed algorithms
can find near optimal solution for smaller test problems, and the second
algorithm could get better solutions efficiently on large test problems
generalized from benchmark problems in the literature.
誌謝
感謝交通大學運輸科技與管理學系的老師們,讓我在交大運管系的六年間獲得 了不少知識,讓我於六年間成長不少。感謝指導教授王晉元老師兩年間的用心指導, 每星期抽空費心指導,讓我每個星期能夠不斷的督促自己努力向上,能夠有這本論文 的產出,要歸功於老師像燈塔般,引領著我一步步的領略論文的精髓,使我可以很紮 實的將每一個步驟完成。 感謝論文期中報告審查委員韓復華老師與黃寬丞老師,於論文期中報告給予之寶 貴建議與評論,讓我對論文期中報告後續研究更加謹慎小心;感謝論文口詴委員中華 大學卓裕仁老師與蘇昭銘老師,於口詴前撥冗審閱此論文,並給予許多寶貴建議,使 本論文能夠更加完善,在此致上十二萬分的謝意。 感謝實驗室的學長們、同學們與學弟妹們,讓我研究所兩年中有歡笑與扶持,其 中最要感謝的是程式能力很強的學妹家儒,一起在 CVO 計畫中打拼,雖然於論文程 式中無得到你的幫助,但常於凌晨離開學校前讓我發洩情緒,有個抒發情緒的管道。 也要感謝韓老師實驗室的俊德學長,總是不厭其煩的讓我使用電腦跑程式,也提供我 論文上的建議,使本論文結果得以順利完成,我永銘記在心。 最重要的是感謝我的雙親,25 年來讓我衣食無缺,給予無限的愛與關懷,使我 無後顧之憂的求學,若沒有您們從小的教養,就沒有現在的我。在撰寫論文程式的過 程中,因常凌晨始離開學校,新竹治安不佳,導致常使您們擔心,讓我感到抱歉萬分, 但也因您們的體諒與關心,使我將此篇論文順利完成;感謝阿公阿嬤於我成長的過程 中教導我許多事情,論文撰寫過程中較晚回家時阿公的噓寒問暖,總是讓我感受到無 比的幸福;感謝當老師的姊姊在我成長的過程中永遠扮演著垃圾桶的角色,在我抱怨 與不愉快需要發洩時,總是靜靜的聽我說話與適時的給我建議,並不厭其煩的發揮國 文能力,幫助我於論文文字上的校正與美化;感謝比我高大不擅言詞的弟弟於心靈上 的支持,並適時的發揮馬殺雞的能力,幫我解除肌肉疲勞,讓我快速的恢復體力,繼 續撰寫論文。還有感謝永遠的班長邦展,生活上讓我有傾訴的對象,遇到論文程式撰 寫的瓶頸也讓我有所依靠。 最後,誠心的感謝我認識的所有人,並與您們分享完成論文的喜悅與成就感。 葉珮婷 謹誌 中華民國九十八年七月 于風城目錄
中文摘要 ... i 英文摘要 ... ii 誌謝 ... iii 目錄 ... iv 表目錄 ... v 圖目錄 ... vi 第一章 序論 ... 1 1.1 研究動機 ... 1 1.2 研究目的 ... 2 1.3 研究範圍 ... 2 1.4 研究流程 ... 3 第二章 文獻回顧 ... 5 2.1 一般化收送貨問題簡介 ... 5 2.2 PDP 與 PDPTW 問題簡介 ... 6 2.3 PDPTW 求解方法探討 ... 9 2.4 小結 ... 14 第三章 數學模式與求解演算法 ... 15 3.1 有時間窗限制的收送貨問題模式 ... 15 3.2 演算法求解流程 ... 15 3.3 變數產生法(Column Generation) ... 19 3.4 處理重複涵蓋之啟發式演算法 ... 37 第四章 近似最佳解演算法 ... 38 4.1 求解子問題演算法概念 ... 38 4.2 示意圖說明 ... 38 4.3 更新條件包含成本之缺點 ... 39 4.4 近似最佳解演算法之子問題執行步驟 ... 41 第五章 範例測詴 ... 44 5.1 測詴例題 ... 44 5.2 小規模例題測詴---本研究兩套演算法比較 ... 455.3 大規模例題測詴---單變量變異數分析(One Way ANOVA) ... 46
第六章 結論與建議 ... 52
6.1 結論 ... 52
6.2 建議 ... 53
參考文獻 ... 54
表目錄
表 1 本研究之 PDPTW 問題 ... 3 表 2 PDPTW 之啟發式解法相關文獻整理 ... 10 表 3 PDPTW 之巨集式啟發式解法相關文獻整理 ... 11 表 4 PDPTW 之最佳解解法相關文獻整理 ... 14 表 5 屬性資訊表 ... 22 表 6 演算法分類表 ... 45 表 7 本研究演算法與最佳解之比較 ... 45 表 8 帄均旅行成本分別對六類型客戶檢定結果 ... 46 表 9 帄均旅行成本分別對六種客戶數大小檢定結果 ... 47 表 10 帄均車輛數分別對六類型客戶檢定結果 ... 48 表 11 帄均車輛數分別對六種客戶數大小檢定結果 ... 49 表 12 帄均求解時間分別對六種客戶類型檢定結果 ... 50 表 13 帄均求解時間分別對六種客戶數大小檢定結果 ... 51圖目錄
圖 1 巡迴路徑示意圖 ... 2 圖 2 研究流程圖 ... 4 圖 3 一般化收送貨問題分類 ... 5 圖 4 演算法 DECAP 求解流程圖 ... 18 圖 5 起始可行變數示意圖 ... 23 圖 6 子問題路網建構圖 ... 23 圖 7 成本為負之 Dijkstra’s Algorithm ... 24 圖 8 求解子問題之總演算法流程圖 ... 25 圖 9 演算法 A 之流程圖 ... 28 圖 10 演算法 A 之缺點說明一 ... 29 圖 11 演算法 A 之缺點說明二 ... 30 圖 12 演算法 A 之缺點說明三 ... 30 圖 13 演算法 A 之缺點說明四 ... 31 圖 14 演算法 A 之缺點說明五 ... 31 圖 15 修補路線演算法 B1 之流程圖 ... 32 圖 16 路線修補 B1 演算法之範例說明一 ... 33 圖 17 路線修補 B1 演算法之範例說明二 ... 33 圖 18 改善成本演算法 B2 之流程圖 ... 35 圖 19 成本改善 B2 演算法之範例說明一 ... 35 圖 20 成本改善 B2 演算法之範例說明二 ... 36 圖 21 成本改善 B2 演算法之範例說明三 ... 36 圖 22 處理重複涵蓋之啟發式演算法流程圖 ... 37 圖 23 網路圖 ... 39 圖 24 由圖 23 轉成之樹狀圖 ... 39 圖 25 檢驗條件包含成本之範例 OPT-1 ... 40 圖 26 檢驗條件不包含成本之範例 OPT-1 ... 40 圖 27 檢驗條件不包含成本之多重標籤演算法示意圖 ... 41 圖 28 最佳解演算法之子問題演算法流程圖 ... 43 圖 29 ANOVA 流程圖 ... 46第一章 序論
1.1 研究動機
近年來全球商業的競爭趨勢改變,從企業與企業的競爭逐漸擴大至供應鏈與供應鏈 間的競爭。供應鏈內的企業組織均需配合整個供應鏈中的流程與活動,以降低成本,提 升效率與品質,並共享其利潤。物流配送作業為供應鏈中相當重要的一個環節,佔有不 少的成本,因此受到全球大小企業的重視與關切。在物流配送作業中,車輛的利用與規 劃的配送路線佔物流企業營運相當大的成本。因此在物流配送的相關領域中,車輛途程 問題(Vehicle Routing Problem, VRP)在國內外已有相當廣泛的研究[6][24]。現今提供物流服務的汽車貨運業中,其一型態為點對點運輸,顧客提供物流資訊要 求貨運公司派車至指定點收貨(Pickup)再送至另一指定點(Delivery),此類問題為收送貨 問題(Pickup and Delivery Problem, PDP),為VRP的延伸,VRP為替車輛規劃巡迴路徑的 問題,在這類的問題中每輛車均由場站出發,滿足所有顧客需求點,顧客的需求只有單 純的收貨或是送貨的服務,且考慮在每個顧客點只能服務一次的限制下,車輛最終回到 場站。而收送貨問題(PDP)所服務的顧客必定同時包含一收貨作業與一送貨作業,且分 別有不同之作業地點,必頇以同一車輛進行服務,且頇先完成收貨作業才可進行送貨作 業。由於JIT(Just in Time)概念興起,每個顧客需求點有時間窗限制,業者在消費意識高 漲與競爭壓力的促使下,必頇提供快速、穩定、正確、準時的服務。因此具有時間窗限 制的收送貨問題(Pickup and Delivery Problem with Time Windows, PDPTW)的研究將益發 重要。 實務上,貨車的調度派遣作業因考量的情況複雜多變,使得調度派遣作業通常缺乏 系統化的支援,僅依據派遣人員以往的經驗來指派任務與決定貨車行走的路線,因此容 易作出多繞路的路徑組合,造成公司人力與資源的浪費,長期如此必對公司的獲利能力 造成影響。 貨運業的調度派遣作業可分為預先派遣和即時派遣。預先派遣為訂單於實際需求前 幾天即下單,到了實際需求前一天一起將隔天需派遣之訂單實行派遣作業。即時派遣則 為當天接到訂單,馬上調度派遣。因此若使用系統化派遣時,即時派遣需求之系統需能 夠快速的求解,相對於預先派遣來說,預先派遣只需在前一天求出解即可。 PDPTW已知屬於NP-hard問題[24],運算時間會隨著問題規模增加而呈指數性的成 長,無法在合理的時間內求得最佳解,因此近年來許多屬於NP-hard問題皆朝向巨集啟 發式演算法(Meta-Heuristics) 的方向發展,啟發式演算法雖可較快速的求解,可用於實 務上的即時派遣,但容易陷入區域最佳解,且其所得出的解較差。 本研究針對貨運業之預先派遣作業提供車輛路徑組合,因此不需為了快速求解,退 而求其次使用啟發式解法求得較差的解。本研究將針對PDPTW問題建構一數學模式,
以最佳解為基礎的演算法求解該數學模式,替調度人員產生一組同時滿足顧客需求與貨 運限制的車輛路徑組合。
1.2 研究目的
本研究針對貨運業預先派遣與調度的情形,發展出一收送貨路徑規劃方法,使車輛 路徑的規劃作業自動化,以減少人工調度負擔,並降低貨運業與人工派遣與調度時所帶 來的損失,提升貨物運送效率與降低貨物運送的成本。同時,發展一套適當的求解演算 方法,進行相關的範例驗證。1.3 研究範圍
本小節首先定義 PDPTW 問題相關名詞,再說明本研究所探討的 PDPTW 問題, PDPTW 問題相關名詞定義如下: 1. 任務:貨運公司接獲顧客的訂單(貨運需求)後,即產生一個收貨任務與一個送貨 任務的配對。貨運公司需在指定的時間窗內派車前往收貨點載貨,之後在指定的 時間窗內前往送貨點執行送貨任務,完成服務此訂單的收送貨後才算完成此筆貨 運需求。在路網中,一收貨任務代表一收貨點,一送貨任務代表一送貨點。 2. 巡迴路徑:每輛貨車從場站出發後執行一連串的任務,最終再回到場站的路徑稱 為巡迴路徑,簡稱路徑。如圖 1 所示貨車從場站出發後行走的巡迴路徑為:場站-收貨任務 1-送貨任務 1-所示貨車從場站出發後行走的巡迴路徑為:場站-收貨任務 2-送貨任務 2-場站。 3. 優先限制(Precedence Constraints):針對每一貨運需求,收貨任務的服務順序必頇 於送貨任務前。 4. 聯結限制(Paring Constraints) :每一貨運需求之收送貨任務均由同一輛車服務。 送貨任務2 收貨任務1 收貨任務2 送貨任務1 貨車 場站 圖 1 巡迴路徑示意圖本研究所探討的具時間窗限制的收送貨問題(PDPTW)為多車輛、單車種、單場站, 每輛車載重容量相同,且車輛數有上限。貨物需求點已知,每個貨運需求即代表一組收 貨與送貨的配對,故每個收貨任務必有一送貨任務與其配對,每個送貨任務亦必有一收 貨任務與其配對。每個收送貨任務均有允許服務之時間範圍,車輛僅能於該任務之時間 範圍內執行任務,若於時間範圍前到達,則需等待至最早允許執行時間,產生等待時間, 並假設服務時間為0,即車輛開始執行服務後即完成任務離開。每個任務皆有貨物載重 量;若為收貨任務則貨物載重量為正值,若為送貨任務則貨物載重量為負值。每輛車從 場站出發,最後回到場站。每輛車均為混合式收送貨,亦即在車輛離開場站至回到場站 之路徑中,允許執行不同訂單之收貨或送或任務,但同一訂單之收貨任務必在送貨任務 前執行,且車輛一離開場站頇直接執行收貨任務。本研究PDPTW問題為求解總旅行距 離成本最小的車輛巡迴路徑組合。本研究探討之PDPTW問題特性如表1所示: 表 1 本研究之 PDPTW 問題 項目 說明 目標 最小化總旅行距離 設施資源 單場站 單車種,多車輛 車輛有容量限制 顧客需求 需求點已知且不變 包含一收貨點作業與一送貨點作業(聯結限制) 各作業點有時間窗限制 節點服務 混合收送貨 同一組的收送貨點,必先收貨後送貨(優先限制)
1.4 研究流程
本研究流程如圖2所示,首先界定問題,繼而回顧PDPTW相關文獻與求解方法之相 關研究,包括啟發式解法、最佳解解法等,分析各式解法之優缺點與適用性,挑選適合 本研究之求解方法。接著,建構一能夠滿足本研究之收送貨問題的數學模式,並設計一 套演算法求解該模式。之後,本研究進行範例測詴與分析。最後根據分析結果,提出結 論與建議。問題界定 相關文獻蒐集與回顧 建立數學模式架構 求解演算法設計與求解 範例測詴與分析 結論與建議 圖 2 研究流程圖
第二章 文獻回顧
本研究先介紹一般化收送貨問題(The General Pickup and Delivery Problem, GPDP), 並探討過去文獻針對PDP與PDPTW定義與數學規劃模式中限制式間之差異,以及各式演 算法求解方式,包含啟發式演算法與最佳解解法。2.1節介紹一般化收送貨問題;2.2節 探討PDP與PDPTW定義與數學規劃模式中限制式間之差異;2.3節回顧PDPTW之各式求 解演算法;2.4節文獻回顧小結。
2.1 一般化收送貨問題簡介
一般化收送貨問題在於替一貨車車隊做路徑規劃,顧客需求包含收貨作業與送貨作 業兩部分,車輛在不違反容量限制下,服務一連串的收貨點與送貨點。收送貨問題可依 配送方式不同分為兩大類[3][17]:車輛載貨從場站出發將貨物運送給送貨點顧客,再至 收貨點顧客收取貨物運回場站,此種將貨物從場站至場站的配送方式為「回程取貨車輛途程問題 (Vehicle Routing Problems with Backhauls , VRPB)」。若車輛從場站出發至顧客
指定地點收取貨物,將貨物送到顧客指定地點送貨,此種將貨物從顧客點直接配送至另 一顧客點之配送方式為收送貨車輛途程問題(Vehicle Routing Problems with Pickups and
Deliveries, VRPPD),如圖3所示。
VRPPD可依其收送貨點是否配對再細區分。若運送皆為相同商品,從一收貨點取貨 後,可送至任一送貨點,此為收送貨點無配對之收送貨問題(Pickup and Delivery Vehicle Routing Problem, PDVRP)。另收送貨點有配對之收送貨問題,若運送為人則分類為撥召 問題 (Dial-A-Ride Problem, DARP),若運送為物品則分類為有配對的收送貨問題簡稱收 送貨問題(Pickup and Delivery Problem, PDP)。
一般化收送貨問題 GPDP 回程取貨車輛途程問題 VRPB 收送貨車輛途程問題 VRPPD 無配對 有配對 收送貨問題 PDP 撥召問題 DARP 收送貨點無配對之 收送貨問題 PDVRP 圖3一般化收送貨問題分類 資料來源:[16][17]
2.2 PDP 與 PDPTW 問題簡介
PDP是VRP的延伸問題,顧客需求(訂單)為一組收送貨作業,收貨與送貨作業 可交錯服務,但同一組的收貨作業(Pickup)需在送貨作業(delivery)前完成,即為優先限 制(precedence);且每個貨運需求的收送貨作業均由同一輛車執行,即為聯結限制(pairing)。 PDPTW與PDP間之差異為PDPTW中之各作業點存在服務時間限制[21]。2.2.1
PDP 與 PDPTW 定義
PDP定義與VRP相似,但PDP之顧客需求為一組收送貨作業,不再僅是收貨或送貨, 且同一組的收貨作業需於送貨作業前完成服務,並由同一輛車服務。因此PDP問題可描 述為:客戶需求包含收貨作業與送貨作業兩部分,車輛由場站空車出發到顧客指定的收 貨地點收取貨物運送至顧客指定的送貨地點,任務完成後回到場站,配送過程不違反車 輛容量限制;目標為最小化車輛數及車輛路線的總運輸成本。 PDP問題定義如下: 1. 各車輛的起迄點頇為同一場站。 2. 每個顧客需求包含一個收貨作業與一個送貨作業,頇由同一車輛進行服務,且只 能服務一次。 3. 一顧客需求指派給一車輛進行服務,則車輛的行駛路線必頇包含該顧客需求的收 貨作業與送貨作業,且收貨作業的服務順序必頇於送貨作業前。 4. 各車輛的載貨量無論何時皆不能超過車容量上限。 5. 車輛於作業點完成後立即離開,並前往下一個作業點。 PDPTW 與PDP 差異僅在於各項需求作業新增了服務時間窗的限制,因此問題定義 較PDP新增了下列3 項。 6. 到達作業點 i 的時間 (Ai ) 若早於作業點 i 的最早開始服務時間 (ei),則必頇等待 到 ei 時間點時,才能開始服務。 7. 各作業點 i 需停留一段時間 (s ) 進行服務,待服務完成後方能離開。 i 8. 離開作業點 i 的時間 (Di),若晚於作業點 i 的最晚開始執行時間 (li),則出現延 遲狀況。2.2.2
數學規劃模式
求解 PDPTW 相關問題時,大多數研究皆同時考量最小化車輛數與路徑成本[7][24], 亦有少許研究針對問題不同之特性,加入最小化等待時間 (車輛閒置時間)、最小化服 務延遲時間或最小化顧客不便等其他次要目標,成為多目標優化問題[13][25]。文獻上 已有許多學者提出 PDPTW 的數學規劃模式[2][5][10][19]。 PDP中參數與集合定義如下: n: 訂單數 0:起點 2n+1:迄點 其中起迄點為同一場站,僅車輛流入與流出之不同差異。 𝑁𝑖+: 訂單 i 之收貨作業的地點 , 𝑖 ∈ 𝑁+ 𝑁+:收貨點作業的集合, i N i N N : N
1 , ,n
𝑁𝑖−:訂單 i 之送貨作業的地點,𝑖 ∈ 𝑁− 𝑁−:所有送貨點的集合, i N i N N : N
n1 , ,2n
N :所有作業點的集合,𝑁 ≔ 𝑁+∪ 𝑁𝑖− 𝑞𝑖:作業點 i 的貨物量。若𝑖 ∈ 𝑁+,𝑞𝑖為正數;若𝑖 ∈ 𝑁−,𝑞𝑖為負數;若𝑖 = 0 或 𝑖 = 2𝑛 + 1,𝑞𝑖 = 0 K:所有車輛之集合 Qk:車輛 k 的容量上限 𝑐𝑖𝑗𝑘:𝑘 ∈ 𝐾,𝑖, 𝑗 ∈ 𝑉,𝑖 ≠ 𝑗車輛 k 從作業點 i 到 j 的旅行成本 𝑡𝑖𝑗𝑘:𝑘 ∈ 𝐾,𝑖, 𝑗 ∈ 𝑉,𝑖 ≠ 𝑗車輛 k 從作業點 i 到 j 的旅行時間 𝑠𝑖:作業點 i 所需的服務時間 V:所有節點的集合, 𝑉 = {0, 2𝑛 + 1} ∪ 𝑁+∪ 𝑁− A:所有節線的集合, 𝐴 = { 𝑖, 𝑗 : 𝑖, 𝑗 ∈ 𝑉, 𝑖 ≠ 𝑛 + 2𝑛 + 1, 𝑗 ≠ 0, 𝑖 ≠ 𝑗} PDP 數學規劃模式中的決策變數如下:𝑥𝑖𝑗𝑘:𝑘 ∈ 𝐾,𝑖, 𝑗 ∈ 𝑉,𝑖 ≠ 𝑗,若車輛從作業點 i 到作業點 j,𝑥 𝑖𝑗𝑘 = 1;否則𝑥𝑖𝑗𝑘 = 0 𝐿𝑘𝑖:車輛 k 離開節點 i 時累積的承載量 𝑇𝑖𝑘:車輛 k 開始服務作業點 i 的時間 PDPTW 中增加的參數如下: [𝑒𝑖, 𝑙𝑖]:作業點 i 的時間窗限制。𝑒𝑖為最早可開始服務時間。𝑙𝑖為最晚可開始服務 時間。 PDP 與 PDPTW 之定式以[16]所提出之模式為例,PDP 之定式如式(1)~(11)所示。
K k ij A k ij k ijx c Minimize ) , ( (1) Subject to
K k j i j A k ij i N x 1 , ) , ( : (2)
A j j k j k K x ) , 0 ( : 0 1 , (3)
A n i i k n i k K x ) 1 2 , ( : 1 2 , 1 , (4) , , 0 ) , ( : :( ,) N j K k x x A j i i i ji A k ji k ij
(5) , , 0 ) , ( : :( , ) , k K i N x x A j i j j n i j A k j i n k ij
(6)
L q L
k K i j A xijk ki j kj 0 , ( , ) (7) K k N i T T nki k i , (8)
T s t T
k K i j A xijk ik i ijk jk 0 , (, ) (9)
0, min
,
, , max q L Q Q qi k K i V k k k i i (10)
k K i j A xijk 0,1 ,( , ) (11) 上述數學規劃式中,目標函數(1)為最小化總旅行成本;限制式(2)限制每一顧客需 求(包含一收貨作業和一送貨作業)被同一輛車服務,且恰好一次;限制式(3)(4)表每輛 車從場站出發,最後回到場站;限制式(5)確保流量守恆;(6)聯結限制,即同一組收送 貨作業要同台車服務;(7)確保服務完此點的車容輛等於上一點服務完的車容量加上要 服務此點的需求量;(8)確保優先限制,即車輛服務一顧客需求先收貨再送貨;(9)任一項作業點完成後立即前往下一個作業點服務,不會出現等待情形;(10)確保車輛服務 的過程中不超過車容量限制;(11)決策變數,若車輛從作業點 i 到作業點 j,𝑥𝑖𝑗𝑘 = 1; 否則𝑥𝑖𝑗𝑘 = 0。 PDPTW比PDP多了時間窗限制,如式(12)~(13),其中式(12)取代了PDP模式中的式 (9),因PDPTW中各個作業點都有時間窗限制,過早到達會導致等待,因此到達下一個 作業點的時間應「大於或等於」上一作業點完成時間加上旅行時間,且「小於或等於」 上一作業點最晚完成時間。
T T s t
k K i j A xijk jk ik i ijk 0 , (, ) (12) , , i N K k l T e i k i i (13)2.3 PDPTW 求解方法探討
在PDPTW相關文獻方面,Berbeglia et al.[3]、Sophie et al.[16][17]針對PDP問題進行 數學模式、問題分類、求解演算法等有完整回顧。以下將分為啟發式解法、巨集式啟發 式解法、最佳解解法與變數產生法做回顧。
2.3.1
啟發式解法 (Heuristic Solution Methods )
在面臨大型問題或具有時效性問題時,採用啟發式解法雖無法確保必能找到全域最 佳解,但若設計得宜,通常可求得品質不錯之近似最佳解。以下針對使用啟發式解法來 解決PDPTW問題的文獻作一討論說明:
Mitrović-Minić and Laporte[14]使用兩階段啟發式解法解決轉運的PDPTW問題。轉 運的PDPTW問題除了包含標準PDPTW的聯結限制與優先限制外,其允許一訂單需求被 兩台車服務:一輛車服務收貨點,將收到之貨物運至轉運站,另一輛車至轉運站載貨運 至各需求點卸貨。兩階段啟發式解法(two-phase heuristic)包含建構階段和改善階段。 於建構階段使用隨機選擇多個起始點的最省插入法,改善階段使用重新插入法。 Lu and Dessouky[12]提出以插入法為基礎的建構啟發式解法解決多車輛的PDPTW 問題。其所提出之解法不僅考慮插入時導致的距離增加,尚考慮到因將點插入後導致的 時間窗限制。除此之外,作者亦提出一個在插入時的非標準量測方式(Crossing length percentage,CLP)來評估在單一路線中路徑間的交叉程度。CLP定義為所有交叉路徑的總 長度除以總路線長度,藉由CLP值評估解的吸引力。最後比較提出之解法與傳統 sequential 和parallel插入法,發現提出的解法不論是標準或非標準的量測皆有較佳表 現。
表 2 PDPTW 之啟發式解法相關文獻整理 年份 作者 目標式 求解方法 2006 Mitrović-Minić and Laporte[14] 最小化巡迴路徑成本 最省插入法,區域搜尋改 善法 2006 Lu and Dessouky[12] 最小化巡迴路徑成本 以插入法為基礎的建構式 啟發式解法
2.3.2
巨集式啟發式解法 (Meta-Heuristic )
巨集式啟發式解法能夠跳脫啟發式解法求解過程中陷入局部最佳解的窘境,並改善 傳統啟發式解法的求解績效。為了克服傳統啟發式解法在執行上易掉入局部最佳解的缺 點,後續研究大部分採用依問題特性設計之合適的巨集式啟發式解法求解問題,針對問 題特性設計跳脫局部最佳解的機制,並增加搜尋之廣度與深度。Nanry and Barnes[15]提出反應式禁忌搜尋法(reactive tabu search)解決PDPTW問題。 其目標式為旅行距離、超時與超載之加總,起始解使用貪心插入法(Greedy insertion method),再使用反應式禁忌搜尋法和三種用來解決優先限制與聯結限制之移步(move) 方式,改善起始解。並設計了一套選擇鄰近解的層級(hierarchical search)策略,使其能夠 動態地在三種鄰近解中選擇並修正搜尋的方向。作者亦提出一套檢測是否掉入區域最佳 解的陷阱,並提供跳脫區域最佳解的方式。最後以Slomon[23]VRPTW之標竿例題為基礎, 於目前已知最佳解之相同路徑內將兩點配對,產生適用於PDPTW的標竿例題做驗證測 詴,並首開先例測詴9個100個密集的客戶點,其測詴結果不論在求解品質或是求解效率 上都有不錯的結果。
Li and Lim[10]提出以禁忌嵌入式模擬退火法(tabu-embedded simulated annealing algorithm)求解多目標的PDPTW問題。目標的優先順序為最小化使用車輛數(M)、總旅行 距離(Dist)、總工作時間(ST) (等待時間+服務時間+旅行時間)與司機人員總等待時間(WT) 之總和。為了符合目標的優先順序,作者在各項目標前分別加上懲罰值,𝛼、𝛽、𝛾、𝜆並 訂定𝛼 ≫ 𝛽 ≫ 𝛾 ≫ 𝜆,使得就算使用建構式所得到之起始解有很多的車輛數,在尋找更 好的解時車輛數即會降低。 𝐶𝑜𝑠𝑡 𝑆 = 𝛼𝑀 + 𝛽𝐷𝑖𝑠𝑡 𝑆 + 𝛾𝑆𝑇 𝑆 + 𝜆𝑊𝑇 𝑆 (14) 演算法首先使用三種交換法尋找鄰近解:PD-Shift,PD-Exchange與PD-Rearrange, Descent Local Search 找尋區域最佳解。首先用三個定義好的鄰近點為基礎找到區域最佳 解,作者將四個目標值建構成禁忌列表以避免產生迴圈,與過去文獻將所存放的 edge-move當作禁忌列表不相同。接著以類似多重開始的模擬退火法策略跳脫區域最佳 解,並於搜尋時將以求得之且放入禁忌列表以避免產生迴圈。由於過去文獻中,模擬退 火法是若無法改善則停止,此篇使用之多重開始的模擬退火法則為若無法改善則從目前 為止最好的解再重新開始求解,若重新求解了K次後皆無法再改善才停止。最後以
Slomon[23]VRPTW之標竿例題為基礎,不侷限於在目前已知最佳解之相同路徑內,而是 隨機將客戶點配對,使產生之例題更具多樣化分配,產生適用於PDPTW的標竿例題做 驗證測詴,可求出較少之車輛數。並首開先例測詴了56個100個客戶點為多樣化分配的 例題,測詴結果不論在求解品質或是求解效率上都有不錯的結果。
Lau and Liang [9]提出兩階段法(Two Phase Method)求解最小化使用車輛數與總旅行 距離的PDPTW。第一階段結合了傳統插入法與掃瞄法優點之創新的建構啟發式解法產 生起始解。第二階段使用禁忌搜尋法改善目標值,並透過三種不同鄰近區域移動方式尋 找最佳解。此篇亦提出一將Slomon[23]的VRPTW之標竿例題轉為有好的解的PDPTW標 竿例題。由於PDPTW比VRPTW多了優先順序與配對限制,在轉換時必頇注意是否仍是 可行解與轉換後仍保持好的解。
最後Lau and Liang [9]提出一轉換方法產生包含四種類型的27個例題作測詴。測詴分 為兩部分,第一部分比較插入法、分割插入法、掃描法與目前已知最好的解,測詴結果 發現分割插入法在27個例題中有18個例題為最好的解,插入法和分割插入法都可得到最 好的車輛數,分割插入法尚可得到較好的旅行距離。第二部份比較作者提出之禁忌搜尋 法和目前已知最好的解,測詴結果發現使用作者提出之禁忌搜尋法對大多數的例題可產 生與目前已知最好的解之相近解。
Bent and Hentenreyck[2]點出降低使用車輛數是降低總旅行成本的關鍵之一,使用兩 階段啟發式演算法求解PDPTW,第一階段使用簡易的模擬退火法(simulated annealing, SA)降低車輛數,第二階段使用大型鄰近搜尋法(Large Neighborhood Search, LNS)降低總 旅行成本。最後使用Li and Lim[10]產生之PDPTW之標竿例題測詴其績效,於100個客戶 點突破兩題、200個客戶點突破28題,600個客戶點亦突破46題的解。 本研究將有關PDPTW問題之巨集式啟發式解法的相關文獻,依其問題型態、求解 方法與測詴範利來源分類整理如表3所示。雖然巨集式啟發式解法已可在有效時間內求 得不錯之解,但巨集式啟發式解法相對於最佳解仍然有一段距離。 表 3 PDPTW 之巨集式啟發式解法相關文獻整理 年份 作者 目標式 求解方法 測詴範例 2000 Nanry and Barnes [15] 最小化巡迴路徑 成本 反應式禁忌搜尋法, 貪心插入法 以 Slomon[23]VRPTW 之標竿例題為基礎,於 目前已知最佳解之相 同路徑內將兩點配對 2001 Li and Lim [10] 最小化巡迴路徑 成本、車輛數、 等待時間、工作 時間 禁忌嵌入式模擬退 火法 以 Slomon[23]VRPTW 之標竿例題為基礎,隨 機將客戶點配對 2002 Lau and Liang
[9] 最小化巡迴路徑 成本、車輛數 插入法與掃瞄法 禁忌搜尋法 以 Slomon[23]VRPTW 之標竿例題為基礎,提
出一轉換方式,其轉換 時注意是否保持可行 解 2006 Bent and Hentenryck[2] 最小化巡迴路徑 成本、車輛數 模擬退火法 大型鄰近搜尋法 使用 Li and Lim[10]產 生之 PDPTW 之標竿 例題
2.3.3 變數產生法
變數產生法由Dantzig and Wolfe[4]所提出,又稱Dantzig-Wolfe Decomposition,主要 概念是利用線性規劃中的對偶理論(Dual Theory)產生可改善目標值的變數(column),以 避免浪費時間於窮舉對問題求解沒有貢獻的變數。因此,變數產生法常用於解決具有龐 大變數的線性規劃問題,例如集合分割問題(Set Partitioning Problem)與集合涵蓋問題(Set Covering Problem)。假設有一集合分割問題如下:
R r r rx c Minimize Subject to a x i N R r r ir
1
r R xr 0,1 (15)變 數 產 生 法 將 上 述 集 合 分 割 問 題 分 為 主 問 題 (Master Problem) 與 子 問 題 (Sub Problem)。由於考量求解的可行性與方便性,求解集合涵蓋問題較求解集合分割問題容 易,故多數研究將欲求解之集合分割問題放鬆,改求解集合涵蓋問題,並放鬆整數限制 為線性規畫問題,之後再做適當的調整機制以滿足集合分割之整數限制。因此放鬆(15) 為集合涵蓋問題並放鬆整數限制式,使變數產生法中的主問題成為放鬆整數限制的集合 涵蓋問題,即為一線性規劃問題(16)。利用簡捷法(Simplex Method)求解主問題目前所包 含變數的最佳解。並依據對偶理論(Dual Theory),定義線性規劃問題(16)限制式之對偶 變數為𝜋𝑖,主問題之對偶問題(Dual Problem)如(17)所示: (Primal) (Dual)
R r r rx c Min.
iN i Max. S.T a xr i N R r ir
1 a i cr r R N r ir
R r xr 0 (16) i 0 iN (17)建構子問題產生能對主問題目標值有改善的變數(columns)。子問題通常構建為最短 路徑問題 (Shortest Path Problem) 或有限制的最短路徑問題 (constrained shortest path problem)。將主問題得到的對偶變數值傳入子問題中,求解子問題,若求解得知的變數 可改善目標值,則加入主問題中重新求解。重複以上的步驟,逐步改善主問題的解,直 到無法再產生可改善目標值的變數為止,即得到最佳解。判斷子問題求得的變數是否可 以改善目標值,主要是依據對偶可行性(Dual feasibility)的觀念。 根據對偶可行性可知:若可證明對尚未考慮的變數(columns)均滿足(18)則可知剩餘 尚未考慮之變數無法再改善目標值的品質,即找到最佳解;否則可從尚未考慮的變數中 找到一個新的變數,使路徑r的減少成本𝐶𝑟′ = 𝐶𝑟− 𝑖𝜖𝑁𝑎𝑖𝑟𝜋𝑖 < 0,加入主問題中重新求 解。 𝐶𝑟′ = 𝐶𝑟 − 𝑖𝜖𝑁𝑎𝑖𝑟𝜋𝑖 ≥ 0 ∀𝑟 ∈ 𝑅 (18) 若最後求得之最佳解為整數解,此解即為原集合涵蓋問題之最佳解;若不為整數解, 多數文獻採用分支定限法以求得整數解。 變數產生法之優點在於求解過程中每次僅考慮部分變數,透過子問題產生一些對主 問題可改善目標值的變數,以增進求解效率。過去研究已將變數產生法應用於PDPTW 問題。 Dumas et al.[7]利用變數產生法求解多台車的PDPTW問題,並考慮異種車隊與多場 站等限制,其將子問題建構成一有限制式最短路徑問題,並使用forward動態規劃演算法 求解子問題,並提出label domination 和label elimination 規則,此篇提出之演算法可解 決至少50個需求任務。 Xu et al.[26]使用以變數產生法為基礎的啟發式演算法解決多車輛的PDPTW問題。 此研究考量了每個起迄點有多時間窗限制、載重限制、司機工時限制等額外限制式。變 數產生法的主問題建構為IP數學模式,子問題使用兩個啟發式解法:合併(merge) 和兩 階段(two-phase)啟發式解法,兩階段包含合併路線和需求點的插入與刪除。此篇提出之 演算法可求解隨機產生的200個需求任務。 Sigurd et al.[22]探討運輸豬的問題,每個需求任務代表運輸動物從一個地點運送到 另一特定地點,為了避免擴散(健康的豬必定不能被曾經載運過有病豬的車所運送)此問 題有額外的優先限制。Sigurd 將子問題設計成一非環狀的層級圖,可快速的解決較大的 例子。此篇提出之演算法可求解580個需求任務。
Ropke and Cordeau[18]用Branch and Price演算法加上有效不等式求解PDPTW問題。 其子問題構建為有限制式的最短路徑問題,使用label setting 最短路徑演算法求解。有 效不等式加入後使子問題產生的影響亦於此篇中討論。最後研究以Slomon所提出之產生 PDPTW標竿例題方法,產生適合此篇問題特性之PDPTW例題做測詴。
表 4PDPTW 之最佳解解法相關文獻整理 年份 作者 目標式 求解方法 1991 Dumas et al.[7] 最小化巡迴路徑成本 變數產生法 有限制式的最短路徑演算法 2003 Xu et al.[26] 最小化巡迴路徑成本 變數產生法 啟發式解法 動態規劃 2004 Sigurd et al[22] 最小化巡迴路徑成本 變數產生法 非環狀的層級圖 2007 Ropke and Cordeau[18] 最小化巡迴路徑成本 分支裁切價格法
2.4 小結
綜合上述,多數研究使用具有跳脫區域最佳解機制之啟發式解法,可求得品質不錯 的解,並可解決規模較大的問題,或在有限時間內求得一組可行解。但跳脫區域最佳解 之機制無法保證接近最佳解,故若僅為求解速度而使用啟發式解法,不僅無法證明求得 之解是否接近最佳解,且無法保證跳脫區域最佳解機制可應用於任何情況。故對於不需 快速的求解時間,則可考慮使用以最佳解為基礎的演算法求解。 本研究為替貨運業之預先派遣作業規劃一收送貨路徑規劃方法,將不採用啟發式解 法,而使用最佳解為基礎之演算法求解PDPTW,並設計變數產生法中子問題求解演算 法,使其可有效找出對主問題有貢獻之變數,快速解決較大規模之網路。第三章 數學模式與求解演算法
本研究首先對有時間窗限制的收送貨問題建構數學模式,再使用以最佳解為基礎的 變數產生法(Column Generation)求解數學模式,期望能針對預先調度派遣問題提出車輛 的巡迴路徑組合,以能供調度者參考使用,提升貨運公司之整體營運效率。本章將針對 所探討的問題建構數學模式與求解方法。3.1節對有時間窗限制的收送貨問題建構數學模 式;3.2節將說明本研究之演算法求解流程;3.3節說明演算法中之變數產生法;3.4節說 明處理重複涵蓋之啟發式解法。3.1 有時間窗限制的收送貨問題模式
本研究將有時間窗限制的收送貨問題建構成集合分割問題(Set Partitioning Problem), 其問題定式如下:
R r r rx c Min (19) ST a x i N R r r ir
1 (20) K x R r r
(21) xr
0,1 rR (22) 其中變數𝑥𝑟為二元變數,代表一可行之路徑(column),當路徑 r 被選到時𝑥𝑟=1, 反之𝑥𝑟=0;R 為所有路徑之集合。Cr為路徑 r 的旅行距離成本;N 為所有任務點的集 合,包含收貨作業與送貨作業任務。目標式(19)為最小化所有路徑的總旅行距離成本; 限制式(20)為集合分割限制式,表每一任務 i 都需被服恰一次。若路徑 r 包含任務 i, 則 air=1,反之 air=0。限制式(21)為車輛數限制,K 為可使用車輛數上限。 可行路徑定義為在一路徑中需滿足各任務之時間窗限制、優先限制、聯結限制與行 車過程中的車容量上限。3.2 演算法求解流程
本研究將PDPTW問題建構為集合分割問題,將其放鬆整數限制成為一線性規劃問 題,由於集合涵蓋問題較集合分割問題好求解,故將變數產生法中的主問題(Master Problem)建構為放鬆整數限制後的集合涵蓋問題。之後產生一組主問題的起始可行解, 即為受限主問題(Restricted Master Problem),利用簡捷法(Simplex Method)求解受限主問 題以獲得對偶變數值。將子問題設計成有限制式的最短路徑問題,將從受限主問題中求 解得知之對偶變數值代入路網之節線成本,並發展一個以Dijkstra’s演算法為基礎的最短 路徑演算法。求解出的最短路徑即代表主問題中的一個可行變數,藉由對偶可行性判斷是否將此變數加入主問題中繼續求解,若不滿足對偶可行性則加入主問題,反之;則表 示已獲得主問題放鬆後的最佳解,停止變數產生法的流程。由於主問題放鬆了整數限制, 故藉由變數產生法所產生的解可能為非整數解,此時再利用分支定限法求得整數解,即 為集合涵蓋之解,故有重複涵蓋之問題,本研究再使用移除法解決重覆涵蓋問題。圖4 為 演 算 法 流 程 圖 。 此 求 解 演 算 法 稱 為 演 算 法 DECAP(Dijkstra’s Embedded Column Generation Algorithm for Solving PDPTW)。
1. 資料輸入 依據問題特性描述,設定所有收送貨任務、貨車容量上限、各任務可服務時間範 圍等資訊。 2. 將 PDPTW 建構為集合分割問題,如 3.1 節所示。 3. 將變數產生法之主問題建構為線性規劃問題。 即將集合分割問題放鬆為集合涵蓋與整數限制,主問題之定式將於 3.3.1 介紹。 4. 產生一組可行的起始變數集合代入主問題中,成為受限主問題。 設定每一筆訂單就是一條路徑,即每輛車僅經過一對收貨點與送貨點。 5. 利用簡捷法求得目前受限主問題的最佳解與對應之對偶變數值 利用求解線性規劃之軟體求解目前主問題之最佳解,並獲得對應之對偶變數值, 即對應任務 i 之對偶值。 6. 建構子問題為最短路徑問題 本研究針對子問題建構成一有限制式的最短路徑問題,求解出的最短路徑即代表 主問題中的一個變數,之後依據對偶可行性判斷是否可將此新變數加入主問題中繼續 求解,以獲得更好的解。 7. 定義子問題之路網 定義子問題路網的節點、節線與節線成本,並產生路網。 8. 將對偶變數值傳入子問題路網中 將由求解線性規劃之軟體求得的對偶變數值𝜋𝑖傳入子問題路網中,𝜋𝑖為對應之對 偶變數,即路網中任務 i 的對偶變數值。 9. 求解子問題 本研究所設計的子路網問題需滿足時間窗限制、車輛容量限制、優先限制、聯結 限制等,因此欲找尋最短路徑時,並非傳統的最短路徑演算法即可解決。因此本研究 提出兩種求解子問題之演算法,使之能在滿足各限制下找出總節線成本最小的路徑。
10. 判斷是否滿足對偶可行性 利用對偶理論中的對偶可行性判斷子問題求得之最短路徑對於主問題是否有貢獻 度,若滿足對偶可行性則得知已達最佳解;反之則代表此路徑對主問題目標式有貢獻, 將對應此路徑的變數加入主問題,至步驟 5 繼續求解。 11. 判斷目前受限主問題的最佳解是否為整數解 若目前受限主問題的最佳解即為整數解,則已找到主問題之最佳解;反之,則利 用分支定限法(Branch and Bound)求得整數解。
12. 判斷求解結果是否有重覆涵蓋的不可行解
若有重覆涵蓋之不可行解,則利用啟發式解法之移除法解決不可行解之情形,以 獲得車輛路徑巡迴組合;若無,則求解結果即為 PDPTW 所求之車輛路徑巡迴組合。
資料輸入 建構主問題 產生一組可行的起始變數集合代入 主問題中(受限主問題) 利用簡捷法求得目前受限主問題的 最佳解與對應之對偶變數值 建構子問題 定義子問題中的節線成本 求解子問題 是否符合對偶可行性 目前受限主問題的最 佳解是否為整數解 新增變數至受限主問題 利用分支定限法求得整數解 停止 是 否 否 是 每一客戶是否恰一台車服務 否 啟發式解法解決重覆涵蓋問題 是 圖 4 演算法 DECAP 求解流程圖
3.3 變數產生法(Column Generation)
3.3.1 主問題(Master Problem)
由3.1節可知,本研究將有時間窗限制的收送貨問題建構為集合分割問題,使所有任 務點皆能被服務恰好一次。應用變數產生法時,主問題定式僅需放鬆本研究建構之集合 分割問題之整數限制,使其成為線性規劃問題即可。但因集合涵蓋問題較集合分割問題 易求解,且除非一任務由兩台車服務之成本較一台車服務之成本小,否則重複涵蓋情形 不會發生,故本研究將變數生法之主問題建構為放鬆整數限制後的集合涵蓋問題,即為 一線性規劃問題。主問題定式如下:
R r r rx c Min. (23) S.T a x i N R r r ir
1 (24) K x R r r
(25) xr 0 rR (26) 其中限制式(24)即為集合涵蓋問題之限制式,表每一任務i皆至少被服務一次。(26) 式即為放鬆整數限制後之非負限制。3.3.2 受限主問題(Restricted Master Problem)
由於主問題所包含之路徑組合(R)數量龐大,故在求解主問題前先產生一組包含起始 可行解之變數,僅包含起始可行解變數之主問題即稱為受限主問題(Restricted Master Problem)。本研究以同一訂單需求為一條路徑視為主問題之起始可行變數,即一條路徑 包含一收送貨配對。為使起始之受限主問題為可行解,本研究先設定K為訂單數目,當 受限主問題之變數增加到一定數量時,將K設定回該公司之車輛數,以滿足該公司車輛 數限制。受限主問題之定式如下:
rJ r rx c M i n. (27) S.T a x i N J r r ir
1 (28) K x J r r
(29) xr 0 rJ (30) 其中J為已使用變數之集合,J<<R。3.3.3 子問題(SubProblem)
由於將主問題建構為一線性規劃問題,故可利用簡捷法(Simplex Method)求解受限 主問題的最佳解,與其所對應的對偶變數值。並依據對偶理論(Dual Theory),定義受 限主問題之限制式(28)對應之對偶變數為𝜋𝑖,限制式(29)對應之對偶變數為𝜋0,受主問 題之對偶問題(Dual Problem)如(31)所示: 0 . K M a x N i i
S.T a i cr r J N i ir
0 N i i 0 0 0 (31) 根據對偶可行性(Dual Feasibility)可知:若可證明對尚未考慮的變數(columns)均滿足 (32)則可知剩餘尚未考慮之變數無法再改善目標值的品質,即找到最佳解;否則可從尚 未考慮的變數中找到一個可使路徑r的減少成本(Reduced Cost) 𝐶𝑟′ = 𝐶𝑟 − 𝑖𝜖𝑁𝑎𝑖𝑟𝜋𝑖 − 𝜋0 < 0的新變數,加入主問題中重新求解。 𝐶𝑟′ = 𝐶 𝑟 − 𝑖𝜖𝑁𝑎𝑖𝑟𝜋𝑖− 𝜋0 ≥ 0 ∀𝑟 ∈ 𝑅 (32) 欲找一減少成本小於零之路徑 r,可視為求解滿足 PDPTW 特性之目標函式 𝑀𝑖𝑛 𝐶𝑟′。故子問題建構為滿足 PDPTW 限制之最短路徑問題。若最後求得之最佳解為 整數解,此解即為原集合涵蓋問題之最佳解;若不為整數解,多數文獻採用分支定限 法(Branch and Bound)以求得整數解。由於一條路徑之旅行距離成本等於該路徑所有經過之節線加總,故𝐶𝑟= (𝑖,𝑗 )𝜖𝐴𝑑𝑖𝑗𝑥𝑖𝑗𝑟,其中 A 為所有節線的集合,𝑑𝑖𝑗為節點 i 到節點到 節點 j 的旅行距離,𝑥𝑖𝑗𝑟為決策變數,若路徑 r 經節線(i,j),𝑥𝑖𝑗𝑟 = 1;否則𝑥𝑖𝑗𝑟 = 0。故目 標函式可改寫成(33)。 𝑀𝑖𝑛 𝐶𝑟′ = (𝑖,𝑗 )𝜖𝐴𝑑𝑖𝑗𝑥𝑖𝑗𝑟 − 𝑖∈𝑁𝑎𝑖𝑟𝜋𝑖 − 𝜋0 (33)
3.3.4 建構子問題路網
根據變數產生法的概念,透過子問題的構建產生適合的變數加入主問題,以改善 解的品質。因此,本節構建收送貨之時空路網,並以一範例為例,以構建一最短路徑, 期望找到能改善主問題目標值之路徑(columns)。(一) 路網結構 假設圖 G 為一路網,V 表示節點的集合,A 為節線的集合。因此,G 可以定義為 G = (V, A)。茲將其路網結構詳述如下: 1. 節點(node) (1) 令 n 為訂單數,則節點集合 V 包含起點(0)、各訂單的收貨任務點𝑁+={1,2,…,n} 與各訂單的送貨任務點𝑁−={n+1,n+2,…,2n}與迄點(2n+1),訂單需求集合 𝑁 = {𝑁+∪ 𝑁−}。 (2) 每一訂單必有一收貨任務與一送貨任務,故每個收貨任務必有一相對應之送 貨任務與之配對(pairing constraint)。第 r 筆訂單之收貨任務即為節點集合 N 中之 r,送貨任務即為 n+r。 (3) 每個節點有數個屬性:節點編號 i、最早可開始執行之時間 ei、最晚需開始執 行之時間 li、需求載重量 qi、對偶變數值𝜋𝑖。若節點為收貨任務,則需求載 重量為正值;反之,若節點為送貨任務,則需求載重量為負值。 2. 節線(Arcs) 子問題路網中,每一任務皆以一節點表示,節線為兩不同節點相連所組成, 故 𝑖, 𝑗 ∈ 𝐴,其中𝑖, 𝑗 ∈ 𝑉且𝑖 ≠ 𝑗。節點分類包含收貨任務點、送貨任務點、起點 與迄點,各類節點間相互連接形成節線之條件如下所述: (1) 起點(0)與所有收貨點相連接,迄點(2n+1)與所有送貨點相連。 (2) 任兩任務節點 i 與 j 間需符合𝑒𝑖 + 𝑡𝑖𝑗 ≤ 𝑙𝑗條件即可相連。其中 tij為任務節點 i 到任務節點 j 的旅行時間。 (3) 為 保 持 優 先 限 制 , 同 一 配 對 任 務 不 能 先 送 貨 再 收 貨 (n+i, i), (2n+1,0),(2n+1,i)(2n+1,n+i),i=1,…,n 等節線不可相連。 3. 節線成本(Cost) 由於變數產生法是依據簡捷法之對偶可行性(Dual Feasibility)判斷目前主問 題是否已找到最佳解,因此子問題即為在路網中產生最短路徑;路徑成本為經過 之節線成本加總,因此路網中節線成本加總頇滿足對偶可行性條件,即(32)所示。 但子問題路網中,對偶變數對應於節點上,因此定義節線成本時,需將對偶變數 轉移至節線上。 令節點 i 到節點 j 的節線成本定義為𝐶𝑖𝑗′ = 𝑑𝑖𝑗 − 𝜋𝑗,其中𝑑𝑖𝑗為節點 i 到節點 j 的旅行距離,𝜋𝑗為節點 j 所對應之對偶變數值。𝜋0於路網中則視為迄點之對偶變 數值。
因此,根據本研究所定義之節線成本,將子問題路網之節線成本修正為旅行 距離成本減去對偶成本之形式,路徑 r 的成本即為所經過之節線成本加總,亦即 𝑑𝑖𝑗𝑥𝑖𝑗𝑟 (𝑖,𝑗 )∈𝐴 − 𝑗 ∈𝑉𝜋𝑗𝑎𝑗𝑟。因此路徑 r 的成本可寫成式(33),其中𝑥𝑖𝑗𝑟為決策變數, 若節點 i 到節點 j 屬於路徑 r 為 1;否則為 0。由式(33)可知路徑 r 的成本與主問題 中路徑 r 的減少成本相等,故可知由子問題中求得之最短路徑成本,即為該路徑 於對偶問題中對偶可行性限制式的左邊項目。 𝐶𝑟′ = 𝐶𝑖𝑗′ 𝑥𝑖𝑗𝑟 𝑖,𝑗 𝜖𝐴 = 𝑑𝑖𝑗𝑥𝑖𝑗𝑟 (𝑖,𝑗 )∈𝐴 − 𝜋𝑗 𝑗 ∈𝑉 𝑎𝑗𝑟 = 𝑥𝑖𝑗𝑟 (𝑖,𝑗 )∈𝐴 𝑑𝑖𝑗 − 𝑎𝑖𝑟𝜋𝑖− 𝑖𝜖𝑁 𝜋0 (33) (二) 建構子問題網路範例 以一個含有 8 個節點(3 筆訂單)的收送貨路網為範例,說明子問題路網之構建過程。 假設車容量上限為 30,節點資訊如表 5 所示,節點編號 i、最早可執行時間 ei、最晚 可執行時間 li與需求載重量 qi皆為固定值;對偶變數值因由主問題求解所得,故每次 加入新的可行路徑後(column),求解主問題所得之對偶變數值會不同。 根據本節節點之定義,表 5 中之節點編號 0 與節點編號 7 分別為起迄點;節點編 號 1~3 為收貨任務點,需求載重量為正值;節點編號 4~6 為送貨任務點,需求載重量 為負值。節點編號 1、4 為同一訂單;節點編號 2、5 為同一訂單;同理,節點編號 3、 6 為同一訂單。圖 5 圖 6 之節點內數字為節點編號,以黑色節點表示起迄點;白色節 點表示收貨點;灰色節點表示送貨點。本範例設定起始可行變數(任務)為同一訂單為 一條路徑,故起始解如圖 5 所示,起始解為 0147、0257 和 0367。 表 5 中之對偶變數值即由求解起始的主問題後可得。 表 5 屬性資訊表 節點編號 i 最早可執行時間 ei 最晚可執行時間 li 需求載重量 qi 對偶變數值𝜋𝑖 0 0 230 0 0 1 37 47 16 0 2 97 107 16 0 3 127 137 9 0 4 71 81 -16 50 5 0 193 -16 64 6 0 188 -9 79 7 0 10000 0 0
圖 5 起始可行變數示意圖 透過節點與節線之定義,可設定節點之間的連接情況,及各節線之對應成本。如 圖 6 所示,中括號為時間窗[ei,li],小括號為需求載重量(𝑞𝑖),以斜體字加底線書寫則 為本範例設定之起始解所求得之對偶變數值(𝜋𝑖與𝜋0)。假設旅行速度保持為 1m/s,則 各節點間之旅行時間等於旅行距離,已知各節點間之旅行時間(𝑡𝑖𝑗)等於旅行距離(𝑑𝑖𝑗), 即為圖 6 節線上之數字,則可藉由時間窗限制(𝑒𝑖 + 𝑡𝑖𝑗 ≤ 𝑙𝑗)、優先限制,與聯結限制 構建出一有向路網。而各節線所對應之成本則可藉由𝐶𝑖𝑗′ = 𝑑𝑖𝑗 − 𝜋𝑗求得。 圖 6 子問題路網建構圖
3.3.5 求解子問題演算法
由 3.3.3 節可知,子 問題為有限制之最短 路徑問題, 本研究應 用 Dijkstra’s Algorithm 求解最短路徑問題。Dijkstra’s Algorithm 於每次迭代(iteration)時,尋找標籤 尚未被固定且成本最小的節點,以此點更新其標籤尚未被固定的下游節點。若下游點 之成本標籤值比原成本還小時,則將其成本標籤與其前置點更新,並將該節點標籤固 定。
Dijkstra’s Algorithm 不 能 應 用 於 有 負 成 本 節 線 之 網 路 上 , 因 Dijkstra’s Algorithm 之觀念為每次選成本最小之節線,若節線成本有負,則所得到之最短路徑 並非真實之最短路徑。假設欲找一條從節點 S 到節點 D 之最短路徑,如圖 7 所示,迭 代 1 時,將固定節點 S,更新節點 1 的成本為 3 與節點 D 的成本為 2;迭代 2 時,固 定成本最小的節點 D,D 無其他可更新點;迭代 3,固定標籤尚為被固定且成本最小 的節點 1,從節點 1 至節點 D,因成本為負值,故到達節點 D 之成本為 1,比節點 D 已被固定之成本值還小。故 Dijkstra’s Algorithm 於負成本節線之網路不能找到最短路 徑。 圖 7 成本為負之 Dijkstra’s Algorithm 本研究之節線成本定義為節線距離減該點之對偶變數值,故節線可能有負成本之 情形,但本研究之子問題非單純之最短路徑,為有限制之最短路徑問題,除了需考量 成本外,尚有其他限制頇考量,如時間窗限制、優先限制、聯結限制與車容量限制等, Dijkstra’s Algorithm 無法直接適用於本研究。有負成本節線之網路於有限制條件下仍 有機會求得真實之最短路徑,例如於圖 7 之迭代 3,從節點 1 至節點 D 雖比已被固定 之成本標籤小,但卻因為時間窗限制,無法到達節點 D,故從 S 到 D 點仍是最短路徑。 因此本研究應用多重標籤觀念[7],修正 Dijkstra’s Algorithm 求解子問題。 本研究提出修正後之 Dijkstra’s 演算法為考量多種收送貨因素下的最短路徑問題, 故除了考量傳統 Dijkstra’s 演算法之「成本 Ci」與「前置點 Pi」兩標籤外,尚包含用
來記錄收送貨問題限制情形的標籤,其包含有:「執行時間 Ti」、「累積載重 Li」,與「已
行時間 Ti」記錄車輛開始執行節點 i 之時間;「累積載重 Li」記錄執行完節點 i 後車輛 累積載重量;「已收未送的訂單集合 PickupSeti」記錄到執行完節點 i 後,已收取貨物 但尚未將其貨物送達送貨點之訂單(聯結限制)。 (一) 演算法 DECAP 之求解子問題演算法流程 本研究修正傳統Dijkstra’s更新節點之檢驗條件為演算法A,由於演算法A包含了許多 限制條件,故有迄點無上游點之缺點,因此本研究再提出改善之演算法B,演算法B包 含演算法B1與演算法B2,將演算法A與演算法B結合,即為本研究演算法DECAP求解子 問題之總演算法流程。如圖8所示。詳細步驟詳述如後。 演算法A 迄點是否有上游點 演算法B1 演算法B2 否 是 結束 開始 圖 8 求解子問題之總演算法流程圖 (二) 演算法 A 本研究修正傳統 Dijkstra’s 演算法更新節點之檢驗條件為演算法 A,修正方 式與演算步驟如下。 1. 修正傳統 Dijkstra’s 演算法更新節點之檢驗條件 演算法 A 在判斷是否更新每個節點之多重標籤前,除了與傳統 Dijkstra’s 演 算法相同需檢查成本外,亦需針對各節點做下列五種限制之判斷,使之能找到一 條滿足收送貨情形之最短路徑。若其一限制違反則停止檢查,不更新節點上之多 重標籤,並繼續檢查下一點。此五種限制如下: (1). 優先限制:針對同一筆訂單,車輛需先執行訂單之收貨任務才可執行該訂單 之送貨任務。 (2). 聯結限制:每一訂單之收送貨任務均由同一輛車服務。 (3). 時間窗限制:若車輛在某節點 i 之最早可執行時間(ei)前到達,則車輛必頇等
候至最早時間(ei)才可開始執行任務;若車輛在某節點之最早可執行時間(ei) 與最晚可執行時間(li)之間到達,則車輛可直接執行任務;若車輛在某節點之 最晚可執行時間(li)後到達,則該車輛不可執行該節點。 (4). 車輛容量限制:若車輛於某一節點之累積載重超過車輛容量(Cap),則該車輛 不可執行該節點。 (5). 收送貨合理性:車輛之累積載重若不等於零,則車輛不允許回迄點。 2. 演算法 A 之執行步驟 演算法 A 步驟如下,流程圖如圖 9 所示。令 S 為標籤被固定住的節點集合。為分辨每 一節點於每一迭代是否已詴著更新,故將每一點分類為已嘗詴或未嘗詴。 步驟A-1. (多重標籤初始化)設定所有點的「前置點」為零、「累積載重」為零、起點 的「執行時間」為零,其他點的「執行時間」為無窮大,起點的「累積成 本」為零,其他點的「累積成本」為無窮大,所有點的「已收未送的訂單 集合」設為空集合。標籤被固定的節點集合設為空集合(S={∅});所有點設 為未嘗詴。 步驟A-2. (停止條件)若迄點已在 S 中,則演算法停止。反之,到步驟 A-3。 步驟A-3. 從標籤尚未被固定的點中,找成本最小的點,設為 u。並將 u 的標籤固定, u 放入 S 中。 步驟A-4. 對所有與 u 相連的節點 j𝜖N,計算節線成本𝐶𝑢𝑗 = 𝑑𝑢𝑗 − 𝜋𝑗。 步驟A-5. 判斷節點 u 是否有與其相鄰(u 之下游點),且未嘗詴經過的點。若有,則設 該點為 v,到步驟 A-6;若無,則將所有點設為未嘗詴,到步驟 A-2。 步驟A-6. (優先限制)若節點 v 為收貨點,則滿足優先限制,到步驟 A-7。若節點 v 為 送貨點,則判斷節點 v 的收貨點是否在節點 u 的「已收未送的訂單集合」 中,若在,則滿足優先限制,到步驟 A-7;若不在,則違反優先限制,將 節點 v 設為已嘗詴,到步驟 A-5。 步驟A-7. (時間窗限制)若從節點 u 到達節點 v 的時間等於或早於節點 v 最晚可執行時 間(𝑇𝑢 + 𝑡𝑢𝑣 ≤ 𝑙𝑣),則滿足時間窗限制,到步驟 A-8;反之,若從節點 u 到 達節點 v 的時間大於節點 v 最晚可執行時間(𝑇𝑢 + 𝑡𝑢𝑣 > 𝑙𝑣),則違反時間窗 限制,將節點 v 設為已嘗詴,回到步驟 A-5。 步驟A-8. (車輛容量限制)若節點 v 為送貨點,則車上總載重減少,必滿足車輛容量限 制,到步驟 A-9;若節點 v 為收貨點,車上總載重將增加,故若節點 u 的累 積載重與節點 v 的需求載重量加總大於車輛容量(𝐿𝑢 + 𝑞𝑣 > 𝐶ap),則違反車 輛容量限制,將節點 v 設為已嘗詴,回到步驟 A-5;反之,若加總小於等於
車容量(𝐿𝑢 + 𝑞𝑣 ≤ 𝐶𝑎𝑝),則滿足車容量限制,到步驟 A-9。 步驟A-9. (成本限制)若節點 v 之成本比該點原本成本小 𝐶𝑢 + 𝐶𝑢𝑣 < 𝐶𝑣 ,則到步驟 A-10;否則,將節點 v 設為已嘗詴,回到步驟 A-5。 步驟A-10. (將節點 v 放入 S 中,並更新節點 v 的多重標籤)更新節點 v 的「前置點」為 Pv=u;節點 v 的「到達時間」為 Tv =Max(𝑇𝑢 + 𝑡𝑢𝑣, 𝑙𝑣);到節點 v 車輛的「累 積載重量」為𝐿𝑣 = 𝐿𝑢 + 𝑞𝑣;到 v 點「累積成本」為𝐶𝑣 = 𝐶𝑢 + 𝐶𝑢𝑣 = 𝐶𝑢 + 𝑑𝑢𝑣 − 𝜋𝑢;若節點 v 為收貨任務點則「已收未送的訂單集合」𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑣 = 𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑢 ∩ 𝑣,若節點 v 為送貨任務點則𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑣 = 𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑣\𝑣。 將節點 v 設為已嘗詴,到步驟 A-5。
A-1 多重標籤初始 所有節點設為未嘗詴 S A-2 迄點 S } {
否 u S S A-5 節點u是否有與 其相鄰,且尚未嘗詴 經過的點 設此點為v A-6 節點v是否 滿足優先限制 A-7 節點v是否滿足 時間窗限制 A-8 節點v是否滿足 車輛容量限制 是 是 否 否 否 是 A-4 計算u到所有與u相連 的節點j的成本Cuj A-10 更新節點v的多重標籤值 是 是 停止 A-3 從N\{S}中, 找成本最小的點,設為u A-9 節點v是否 滿足成本限制 否 否 節點v設為已嘗詴 是 所 有 節 點 設 為 未 嘗 詴 圖 9 演算法 A 之流程圖(三) 演算法 B 演算法 A 為修正傳統 Dijkstra’s Algorithm 而得,但演算法 A 中隱含了無法求得一 條從起點至迄點的可行路徑之缺點。本小節將詳述演算法 A 之缺點、改善演算法A, 增加演算法 B 之方法與演算法 B 之演算流程。 1. 演算法 A 之缺點 由於演算法 A 除了成本限制外尚包含收送貨問題特性之四種限制,使得其中 某些路徑必頇執行某些特定節點才可回到場站(聯結限制、收送貨合理性)形成一 條路徑。即使迄點尚未有上游點,在其他節點均已經被固定住之情形下,迄點仍 會被固定而結束演算法。詳細說明如下。 圖 10 之表示方式與圖 6 之定義相同。即節點內數字為節點編號,以黑色節點 表示起迄點;白色節點表示收貨點;灰色節點表示送貨點。編號 0 與節點編號 7 分別為起迄點;節點編號 1~3 為收貨任務點,需求載重量為正值;節點編號 4~6 為送貨任務點,需求載重量為負值。節點編號 1、4 為同一訂單;節點編號 2、5 為同一訂單;同理,節點編號 3、6 為同一訂單。 圖 10 演算法 A 之缺點說明一 假設演算法 A 已執行一部分,目前找到之部分路徑為 01236,即該 路線已涵蓋三筆訂單之收貨服務,並已服務第三筆訂單之送貨服務。故於演算法 A 中,節點 0、1、2 與 3 之標籤已被設為固定{0,1,2,3}∈S,如圖 11 所示,圖中* 為標籤已被設為固定之節點,箭頭為車輛行駛路徑。
圖 11 演算法 A 之缺點說明二 演算法 A 繼續執行,標籤尚未被設成固定的節點中,節點 6 之成本最小,故 節點 6 之標籤被設成固定。此時與節點 6 相鄰且標籤尚未被設成固定的節點有節 點 4、節點 5 與迄點 7。因此時車上尚有第一筆與第二筆訂單之貨物,故不允許 回迄點 7;假設從節點 6 至節點 4 與節點 5 皆滿足優先、時間窗、車容量、成本 等限制,則可更新節點 4 與節點 5 之標籤資訊。如圖 12 所示。 圖 12 演算法 A 之缺點說明三 演算法 A 繼續執行,假設標籤尚未被設成固定的節點中,節點 5 之成本最小, 故將節點 5 之標籤設為固定。此時與節點 5 相鄰且標籤尚未被設成固定之節點有 節點 4 與迄點 7。因此時車上尚有第一筆訂單之貨物,故不允許回迄點 7;又假 設從節點 5 至節點 4 不滿足時間窗限制,故於此迭代中,僅固定節點 5 之標籤, 未更新任何節點。如圖 13 所示。
圖 13 演算法 A 之缺點說明四 演算法 A 繼續執行,標籤尚未被設成固定的節點中,僅剩節點 4 與迄點 7, 節點 4 之成本最小,故將節點 4 之標籤設為固定。此時與節點 4 相鄰且標籤尚未 被設成固定的節點僅剩迄點 7。由於此時車上尚有第二筆訂單之貨物,故不允許 回迄點 7。如圖 14 所示。 圖 14 演算法 A 之缺點說明五 演算法 A 繼續執行,除了迄點 7 以外之所有節點的標籤皆已被設成固定,故 此時將固定迄點 7 之標籤,而結束演算法,但此時迄點 7 無上游點,無法得到一 條從起點 0 至迄點 7 之完整可行路徑。 2. 改善演算法 A 之缺點---修補路線與改善路徑成本值 本研究為改善演算法 A 之缺點,設計演算法 B,利用最省插入法修補路線, 產生一條完整路徑,並使用交換法改善修補完整之路徑降低成本值,以期產生一 條負成本的路徑。故演算法 B 又可分為兩演算法:B1 為修補路線演算法,用於 演算法 A 執行完畢後,迄點無上游點時;B2 為改善成本演算法,可用於路線修 補完整後與演算法 A 執行完畢後且迄點有上游點時。