第四章 調適型導引螞蟻演算法
4.3 導引式路徑改善法
螞蟻演算法是以群體為基礎,將求解過程所求得不錯的解,透過費洛蒙 激素記錄在路段上,是屬於廣度搜尋策略的方法。然而,許多研究指出,這 種僅具廣度搜尋策略的方法,必須搭配有力的區域搜尋方法,才能提升其解 題績效,因此研究配合GLS演算法,補足螞蟻演算法搜尋深度不足的缺點。
本研究求解問題屬PDPTW型態,每次執行作業交換時,皆須考慮一組 收、卸貨作業,以及服務時間窗、車容量與服務順序的限制,為避免交換法 複雜度太高而降低了求解效率,因此本研究採用路徑間與路徑中節點交換 法,配合巨集式啟發式演算法中的門檻接受法,設計導引式路線改善法的演 算核心。導引式路線改善法架構如圖4.4所示,包括路徑間1-0節點交換法、
路徑間 1-1 節點交換法、與路徑中節點交換法。求解SPDP問題的方式與作 業步驟,分別條列詳述於後。
一、路徑間 1-0 節點交換法
路徑間 1-0 節點交換法目的旨在減少車輛數(路徑數),Bent等學者 研究中指出,減少車輛數(路徑數)是減少總路徑成本的關鍵要素之一
【12】,且進行1-0節點交換法時,修改目標式如式(4.7)時,較僅考慮較 少車輛數與較低路徑成本的目標式而言,更可有效降低車輛數。
因此,本研究執行1-0 交換法時,目標式改以減少指派車輛數為主要目 標,加入考慮每條路徑中服務的作業(節點)數( 2
r
r
σ
∈
− ∑
),將目標式(4.6) 修改為式(4.8),僅供路徑間 1-0 節點交換法使用。, 2, ( )
σ σ
σ
∈ ∈
−
∑ ∑
r r
Min r t r (4.7)
其中 σ:車輛集合;|σ|:使用的車輛數;
|r|:第 r 條路徑中服務的作業(節點)數;
t(r):第 r 條路徑的路徑成本
( )
2 2
0,
1 1 0 σ
= = = ∈
∑∑ ∑
m n f u k− ∑
car ui
k u i r
Min C X r
(4.8)1-0 交換法執行架構如圖 4.5 所示,從第一條路徑開始,將目前路 徑中所包含的其中一組需求(作業),試著插入其他路徑中,若可插入成 功,且車容量也能滿足限制,即將該需求作業從目前路徑中刪除,並插 入標的路徑中最適合的位置。反覆執行至目前路線中的需求作業皆無法 合併至其他路線中服務,即換其他路線重複執行相同的作業。
使 用1 -0 節 點 交 換 法 減 少 車 輛 數
現 有 解 改 變 ?
現 有 解 持 續 未 改 變 次 數 加1
使 用1 -1 節 點 交 換 法 改 善 現 有 解
現 有 解 改 變 ?
現 有 解 持 續 未 改 變 次 數 加1
路 徑 中 節 點 交 換 法 改 善 現 有 解
現 有 解 改 變 ?
更 新 現 有 解 持 續 未 改 變 次 數 等 於 0
更 新 現 有 解 持 續 未 改 變 次 數 等 於 0
更 新 現 有 解 持 續 未 改 變 次 數 等 於 0
現 有 解 持 續 未 改 變 次 數 加1
現 有 解 持 續 未 改 變 次 數
等 於 3 ?
是
否
是
否
是
否 現 有 解 持 續 未 改 變 次 數
等 於 2 ? 更 新 現 有 解 持 續
未 改 變 次 數 等 於 0
是 否
否
開 始
更 新 門 檻 值
符 合 停 止 條 件 ? 結 束
輸 出 目 前 最 佳 解
否
是
※ 停 止 條 件 :
1 . 所 有 門 檻 值 執 行 完 成 2 . 1 -0 、 1 -1 、 2 -2 皆 無 法 再 改 善 現 有 解
是
圖4.4 導引式區域搜尋法改善 SPDP 問題可行解架構圖
否 設定初始參數值
i =j=s= 1
第i輛車中的第s組 作業,插入第 i+j 輛
車中服務
滿足所有 限制條件?
換下一輛車 ( j++)
第 i+j 輛 車存在?
作業改交由 第 i+j 輛車服務
第 i 輛車 中還有作業組?
i++
s=j=1 第 s 組 作業存在?
s++
是
是
否
是
否
是
第 i+j 輛車 存在?
否
是
結束1-0節點交換法 否 否
j=1
j=1 更新解特徵
懲罰值
成本增量 最小,且符合接
受法則?
是
圖4.5 路徑間 1-0 節點交換法執行架構圖 二、路徑間 1-1 節點交換法
1-1 交換法執行架構如圖 4.6 所示,從第一條路徑開始,將目前路 徑中所包含的其中一組需求(作業),試著與其他路徑中的需求(作業)交 換,若可交換成功,且車容量與成本增量皆能滿足限制條件,即將交換 結果儲存於集合 S 中,當單一標的路徑中可交換的需求(作業)皆試著交 換完成後,若 S 為空集合,表示沒有任何可以交換的需求(作業),則換 下一條標的路徑嘗試交換;若 S 不為空集合,表示有成功交換的新路 徑,及選擇並接受成本增量最小的交換結果,作為兩條新的路徑,且目 前路徑中已經交換過的需求作業,在同一回合終將不在考慮其他交換的 可能性。如此反覆執行至目前路徑中的需求作業全部都試著執行交換 後,即換其他路線重複執行相同的作業。
設定起始參數 i = j = s = 1 Si為車輛 i 所服務的作業集合 Si+j為第 i+j 輛車所服務的作業集合 Si中的第s項作業,與Si+j中的作業,
逐一交換服務,並將交換成功,且符 合車容量的結果,儲存於集合S中
接受S中成本增量 最小的交換結果
S為空集合?
S中 成本增量最小的 交換結果符合接
受法則?
將s從Si中刪除
Si為空集合?
j++ 第 i+j 輛 車存在?
i++
j=1 第 i+j 輛
車存在?
是 是
否 否
是
否
是
是
1-1節點交換法結束 否
否
現有解 優於目前最佳
解?
更新解特徵懲罰值 更新目前最佳解
否 是
否
圖4.6 路徑間 1-1 節點交換法執行架構圖
該節點交換法是將目前路徑中的一組需求(作業),與其他路徑(標的 路徑)中的一組需求(作業)交換。需選擇標的路徑中成本增量最小的需求 (作業)進行交換,並將執行交換的兩個需求作業,都加入路徑中成本增 量最小的位置。為避免執行效率低落,以及避免搜尋過程快速落入區域 最佳解,因此路徑間 1-1 節點交換法並非選擇所有需求(作業)中成本增 量最小的那一個進行交換,而是只針對標的路線中成本增量最小的需求
(作業)進行交換。交換的必要條件必須同時滿足車容量限制,以及成本 增量必須小於或等於門檻值,如此反覆執行至目前路徑中的需求(作業) 皆考慮過後,即換下一條路徑重複執行相同的作業。值得注意的是,為 避免交換作業出現無窮回圈,因此本研究所使用的1-1 交換法設定在同 一回合中曾經作為現有路徑者,將不被當作標的路徑進行交換作業。
三、路徑中節點交換法
與路徑間 1-1 節點交換法相似,是將目前路徑中的二組需求(作業) 的服務順序重置。目的在於改善現有路徑的成本以及增加0 交換與 1-1 交換產生新的可行解的機會。路徑中節點交換法執行架構如圖 4.7。
設定起始參數 i =s = 1 Si為車輛 i 所服務的作業集合
Si中第s項作業與Si中其他作業s'逐 一交換服務(s'> s),將交換成功且 符合車容量的結果,儲存於集合S中
接受S中成本增量 最小的交換結果
S為空集合?
S中 成本增量最小的 交換結果符合接
受法則?
換下一條路徑 (i++)
第 i輛 車存在?
是
否
是
是
路徑中節點交換法 結束
否 現有解 優於目前最佳
解?
更新解特徵懲罰值 更新目前最佳解
是
否
圖4.7 路徑中節點交換法執行架構圖
4.4 調適型導引螞蟻演算法求解績效測試