第二章 文獻回顧
2.2 車輛定線問題相關啟發式解法文獻回顧
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
計算其他客戶點θ座 標,並依序排列:L
於序列L中選取θ值最小 者:客戶點 j 加入集群
中
c集群是否超過車輛 容量限制 開始一新集群:c
j 置回序列L中 所有點已加入集群 是
中 否
所有客戶點集群進行 TSP演算法進行路線構建
是
求得VRP解
否
圖 2-2 掃描法演算流程圖
計算點對節省值Sij
由大到小排序Sij:L
序列L中的節省值是 否皆以檢視完畢
選擇L中最小之節省值
是否選取的點對兩 點皆為端點
是否超過車輛容量 限制
連接點對(i,j),刪除節 線(0,i)、(j,0)
該點對自序列L中刪除 將該點對暫存於序列T中
是否所有點皆受到 車輛巡行服務
結束
將序列T中依大小併入 L中
否 是
否
否
是
是
是
否
圖 2-3 節省法演算流程圖
C.K-Opt 節線交換法
K-Opt 節線交換法是由 Lin 在 1965 年所提出,其中 K 代表的每次交換的節線
數目,一般常用者為 K 為 2 或 3,此交換法原先設計用於旅行推銷員問題上,而 對於車輛定線問題而言,可用在路線內的節線交換。
以圖 2-4 說明 2-Opt 的解題觀念由圖 2-4(a)中可看出,若刪除(1,4)及(2,3)
兩條節線,然後連接(1,2)及(4,3)兩條節線,將可維持一個路線的完整性且 可能節省路線成本。根據這樣的觀念,對任一條路線而言,可依上述的觀念交換 路線上任兩條不相鄰的節線,然後檢查交換後得到之新解是否優於交換前之解,
若是,則更新解;若否則維持原解,繼續交換其他條節線直到所有可能交換之節 線皆檢視完成。
1
2
3
4
(a)
1
2
3
4
(b)
圖 2-4 2-Opt 的解題觀念
Christofides 及 Eilon(1969)使用 Lin 及 Kernighan(1973)的 3-Opt 交換方 法來求解 VRP 問題解,其中加入一個要求為任何交換的節線不可以超越車輛容量 限制。Russell(1977)改善 Christofides 及 Eilon(1969)的程序,他選擇性的考 量一些包含三節線以上的交換。更多的改善方法研究可見 Savelsberg(1985)和 Thompson(1988)的報告。
表 2-2 中的第一個啟發式方法結果為 Christofides et al.(1979)的節省法,
第二個為 Gillett 及 Miller(1974)的掃描法,第三個啟發式方法為 Christofides 及 Eilon(1969),第四個啟發式方法為 Russell(1977),掃描法的解是使用不同起 始顧客 n 次執行後最佳的那個解,求解時間是做這些運算所需時間和,應該注意 的是 Altinkemer 及 Gavish(1991)使用大型機器運算 Clarke-Wright 基礎的平行 運算已經達到問題五解為 1351,但是他們並無揭露出求解計算時間為多少。
表 2-2 簡單式啟發試解法計算比較 (Fisher,1995) Clarke
& Wright
Gillett
& Miller
到 1980 年代,Fisher 及 Jaikumar(1981)提出以數學規劃為主之最佳化方法 來處理包含大約 50 個顧客點之問題。將 VRP 問題放鬆(Relax)成較簡單的 MP 模 式,如一般化指派問題、集合分割問題或集合涵蓋法,以便將需求點分群,然後 再針對各群求解 TSP 子問題。
數學規劃基礎啟發式解法與簡單式啟發式解法特點差異大,此類方法是解出 車輛定線問題之概似最佳解,以下介紹兩種普遍且通常優於簡單式啟發式解法之 模式,第一為一般性指派問題(generalized assignment problem),第二為集合 分割問題(set partitioning problem,簡稱 SPP)。
A. 一般性指派問題
Fisher 及 Jaikumar(1981)以一般性指派問題求解車輛定線問題,顧客被分配 到對應的車輛,然後再針對顧客作 TSP 問題求解,為了激發一般性指派問題概似
, 閉表(closed form),一般性指派問題的啟發式解法通常將 用一個線性的趨 近式表示:
∑
,加以求解此一般性指派問題而把顧客指派到相對的車輛上,選擇種子顧客的方法有許多啟發式解法,Fisher 及 Jaikumar(1981)建議用平 面的方法,意指他們在平面上指派 K 個種子點 ,而不是指派 K 個種子顧
集合分割啟發式解法由產生一些候選車輛路線解開始,一個候選車輛路線解
典型的集合分割問題一開始由 Balinski 及 Ouandt(1964)所提出,雖然當時 並未能求解大規模問題,大規模問題一直到許久之後才有人解出。Foster 及 Ryan(1976)成功應用此模式在拖車排程(truck scheduling)問題,Fleuren(1988) 則應用在有時間窗的的排程問題,Fisher 及 Rosenwein(1989)也有相同應用在排 程問題上。
表 2-3 整理此節介紹 Fisher 及 Jaikumar(1981)的一般性指派模式與 Foster 及 Ryan(1976)的集合分割模式之數學規劃啟發式解法比較。
關於亦屬於此節解法之集合涵蓋模式,由於此模式與本研究最為相關,故提 放在 2.3 節加以說明。
表 2-3 數學規劃式啟發式解法計算比較(Fisher,1995) Problem n Fisher & Jaikumar Foster & Ryan
Cost CPUa Cost CPUb 1 50 524 9.33 523 2.6 2 75 857 11.95 864 6.8 3 100 833 17.7 825 16.9 4 150 1014 33.6 c c 5 199 1420 40.1 c c
6 100 824 6.1 c c
aDEC 10 秒 b IBM 370/168 秒 c尚未有解 2.2.3 人工智慧啟發式解法
自 80 年代開始,由於電腦運算能力的精進,組合最佳化問題之求解方法乃發 展朝向更有效率的解題工具,其發展方向大致有二:一方面借重專家系統(expert system)的建立,對不同問題個案建議最合適求解方法;另一方面則是改變傳統 的局部搜尋法,建立通用性搜尋(genenic search)的演算法,其中這些演算法 與傳統演算法之間的差異在於,具有可跳脫局部最佳解的機制,但在運算過程中 仍需要借助傳統的搜尋方法。以下是一些人工智慧啟發式演算法的介紹與回顧。
A.基因演算法(Genetic Algorithms,GA)
基因演算法(genetic algorithm,GA)是 Holland 教授於 1975 年和他的同 事與學生共同研究出來,其基本理論以達爾文之「進化論」為根基,模擬「物競 天擇,適者生存」自然遺傳之搜尋法則。GA 是以一個族群為模擬對象,並選擇族 群中環境適應能力較強之個體,當作繁殖下一代之種子(親代),經過複製、交配、
突變等演化過程,產生新的下一代,如此反覆進行,最後得到適應環境最強的下 一代。以演算法的角度來看,GA 中相關名詞意義為:
1. 基因(Gene):相當於決策變數,其實際的值視編碼方法而定。
2. 染色體(Chromosome,String):一組決策變數,相當於搜尋過程中的一 個暫行解,也就是在決策空間中的一個搜尋點。
3. 族群:所有的染色體集合的集合,這也是基因最佳化方法的特色,傳統 方法大多以一個暫行解單線搜尋,而 GA 是多線平行搜尋。
4. 世代(Generation):相當於所有暫行解同時進行的一個搜尋步驟
(Iteration)。
5. 適應度(Fittness):相當於某個暫行解的目標值,目標值愈好則適應 度越好。
GA 包括幾個重要部分,一個典型的 GA 流程為:
1. 將每個染色體的基因設定一個初始值;
2. 一個個世代的反覆演進;
3. 將所有過程中最好的結果輸出。
其中第二個部分「世代反覆演進」包括計算適應度、與三個基因運算:複製
(Reproduction)、交配(Crossover)、突變(Mutation),這個部分是 GA 中能跳 出局部最佳解的機制,也是 GA 中最主要的一個部分。
(Reproduction)、交配(Crossover)、突變(Mutation),這個部分是 GA 中能跳 出局部最佳解的機制,也是 GA 中最主要的一個部分。