第二章 文獻回顧
2.3 集合涵蓋模式
分割問題(set partitioning problem)之限制式(2-12),限制顧客只可被涵蓋一 次,如果改成 不等式,則是所謂的集合裝運問題(set packing problem),限制 式(2-16)表示所有 為 0-1 整數變數。。 題描述。例如 Hoffman 及 Padberg(1993)以集合涵蓋模式應用在車隊排程問題
( crew scheduling problem )。 對 於 多 場 站 之 車 輛 排 程 問 題 , Ribeiro 及 Soumisu(1994)也成功應用集合涵蓋模式求解。Irnich(2000)將一多點位撿貨運送 問題,轉化成集合涵蓋問題後再進行求解。張育彰(2001)應用基因演算法於台
鐵列車駕駛員排班與輪班整合問題之研究中,亦使用集合涵蓋模式概念,在排班 與輪班整合求解階段,將排班問題視為一集合涵蓋問題,從可行工作班集合中選 擇能涵蓋到所有乘務的工作班解集合。
有關集合涵蓋法之數學模式在車輛定線問題的應用,最先被 Cullen et al.(1981)成功將此法應用設計車輛定線問題的啟發式解法,另外尚有 Agarwal et al.(1989) 基 於 此 法 發 展 求 解 車 輛 定 線 問 題 之 精 確 的 演 算 法 , 近 年 來 Bixby(1998),Hadjiconstantinou et al.(1995)亦對演算法有相當程度的發展,
此法普遍應用在求解數量大之問題。
對於含時間窗限制但無容量限制之車輛定線問題,Desrosiers et al.(1984) 應用集合涵蓋問題模式求解此類問題得出最佳解。對於有容量限制車輛定線問題
(CVRP)及有時間窗限制車輛定線問題(VRPTW),Desrosiers et al.(1992)引伸 一定限分支演算法來求解 Solomon(1986)的部分含時間窗限制問題,亦可達到將 近最佳或是最佳解。
應用集合涵蓋問題可以找到 VRP 的最佳解,但前提是候選車輛路線解須產生 所有可行解,但對於大型問題,所有可行的候選車輛路線解數目龐大,以致求解 沒有效率,甚至無法產生所有的可行候選車輛路線解。
2.3.3 集合涵蓋問題之啟發式解法
集合涵蓋問題的啟發式解法通常使會用貪心法則,(例如在每一個循環 iteration 裡,短淺地去選擇最好的下一步);也使用交換的方法,也就是交換一 個或是多個以上的列,只要目標式的解有所改善,在實務上非常快速,但是特徵 是不能提供高品質的解(Fisher and Wolsey ,1982)。其他更新的啟發式解法方式 還有 Feo et al.(1989)使用機率搜尋,Johnson et al.(1989)使用模擬退火法,
Levineg(1992)使用基因演算法,Aourid 及 Kaminska(1994)使用類神經網路法 等,但是這些應用發法之間尚未出現比較的標準,來決定出在何情況下是哪個方 法比較優秀。
集合涵蓋問題亦可以用上下限夾集的方法加以尋找確切解,由前段所提之啟 發式解法皆可得到好的問題解上限,通常問題解的下限值是藉由放鬆限制式而求 解來的,有兩種經典的放鬆集合涵蓋問題的方法,第一是拉格蘭式放鬆法(可行解 集合還是保有 0-1 的可行解性質,但是會有限制式被移到目標式去),第二是線性 放鬆法(也就是整數限制式被放鬆,而目標式則依然和原本相同)。
第 一 種 採 用 拉 式 放 鬆 法 (Lagrangian relaxation) 以 及 次 梯 度 最 佳 化 (subgradient optimization) 是非常具有效率的的 SCP 啟發式解法,也就是跟隨 Balas 及 Ho(1980)的發展研究、Beasley(1990)、Balas 及 Carrera(1996)的改善 研究。
第二種採用放鬆集合涵蓋問題線性限制(也就是移走xr變數的整數限制),因為 集合涵蓋問題中含有大量的變數,所以我們可使用Gimore及Gomory (1961,1963)
發展的列運算技巧(column generation,以下泛稱CG)方法求解。
以下我們參考Bramel及Simchi-Levi(1995),將一次車輛路線巡迴視為一個集 合,轉換為類似集合涵蓋問題(set covering problems, SCP)的數學規劃模式,
放鬆整數限制式後,以列運算求解,詳細介紹如下:
將一次車輛路線巡迴視為一個組合,轉換為類似集合涵蓋問題(set covering problems, SCP)的數學規劃模式,以P 為原模式代號:
使用這些部分集合解代入後,讓x 為P'問題中的最佳解,且讓π =
{
π1,π2,...,πn}
為個分枝定限法求解 CG,Bixby et al.(1997)發展一個切割平面法(cutting plane algorithm)求解問題 CG,此法還可以詳見 Bixby(1998)的研究。
有些執行的小技巧可以幫助我們改善求解列運算問題時的收斂,通常列運算 裡的步驟三是最耗時間的,為了減少此步驟所花費的時間,我們可以採行以下方 法,第一是:在步驟一時,產生一個好的起始解是非常重要的,而要辦到如此,
已經有許多 CVRP 演算法可以使用了,事實上,如果可得一個好的對偶解,那麼此 解便可以拿來幫助產生負減少成本的車輛路線(指在對偶問題裡),有一些評估良 好對偶變數的方法可見 Agarwal et al.(1989)的研究,第二是:在步驟三的每個 循環裡,產生較多的負減少成本之車輛路線解,不要只產生一個。
整理 Column generation 列運算演算法,求解線性放鬆問題(P')的步驟如下:
1. 產生初始部分路線集合R'。
2. 以部分解R 代入求解 '' P ,並得到最佳原始變數解,及最佳對偶變數解。
3. 解問題 CG,找出滿足減少路線成本(reduced cost)小於零的路線集合。
4. 對每個r∈ ,且減少路線成本(reduced cost)小於零的 r,將 r 加入 'R R , 回到步驟 2。
5. 如果沒有任何 r 的減少路線成本cr小於零,則停止。
簡單來說,我們使用代入部分解所產生最佳的對偶變數,判斷是否有集合解 應該被涵蓋,以此求解較為簡單的最佳化問題,接著再繼續求解直到沒有任何集 合解可以再更減低目標值,當這個使用部分解出發的線性放鬆問題(P')的最佳解 x 被找到,目標式的值
∑
r∈ 'Rcryr (應為分數形式)也就是此 CVRP 問題的下界值。從現有產生的集合出發(或許只是總集合的一小部份集合),再使用如切割平 面法(cutting plane approach)或是分支法(branch-and-cut approach)求解為整 數可行解,此法不保證會是所有集合中最佳的整數解,但是非常容易趨近於收斂。