• 沒有找到結果。

近似最佳解演算法之子問題執行步驟

第四章 近似最佳解演算法

4.4 近似最佳解演算法之子問題執行步驟

本研究為確保最佳性,故不考慮成本之限制,即只需符合 0 小節所提之五種限制,

而不檢驗成本限制,即可更新多重標籤。不考慮成本限制之演算法於每一迭代所更新 的節點會有許多不同路徑但相同的節點,如圖 27 所示,在迭代 2 中可發現,節點 1 可經由兩條不同的路徑抵達,以粗線條節點表示。因此需額外記錄每一節點多重標籤 所屬迭代,並記錄同迭代中其為第幾個相同的節點,以底線表示,以區別相同節點但 卻屬於不同路徑。

圖 27 檢驗條件不包含成本之多重標籤演算法示意圖

傳統標籤修正法於每迭代記錄更新之節點集合每點皆不同,本研究為確保最佳性,

此最佳解演算法每迭代更新之節點則會有相同節點之情形,故需記錄在第 k 迭代中第 i 個節點為第幾個相同的節點之編號。步驟如下,流程圖如圖 28 所示。

令 k 為迭代次數;n 為路網節點數;N 為所有節點之集合;Cap 為車容量上限;

S(k)為在第 k 迭代所有更新點之集合,其除了記錄更新之節點編號外,尚記錄在第 k 迭 代中某節點為第幾個相同的節點之編號,S(k)={(更新的節點 i,此節點 i 在第 k 迭代同 節點 i 中更新之順序)}。為分辨每一節點於每一迭代是否已詴著更新,故將每一點分 類為已嘗詴或未嘗詴。為分辨所有於 S(k)中的節點,是否已檢驗其到達所有必執行點之 時間在該必執行點之時間窗內,故再區分為已檢驗與未檢驗。

OPT-1. (多重標籤初始化)設定所有點的「前置點」為零、「累積載重」為零、起點 的「到達時間」為零,其他點的「到達時間」為無窮大,起點的「累積成 本」為零,其他點的「累積成本」為無窮大,所有點的「已收未送的訂單 集合」設為空集合。(資料初始化)迭代 k 為 0;S(0)={(0,1)};S(k)= ∅,k≠0。

OPT-2. 迭代 k 加 1,將所有屬於 S(k-1)的點設為未檢驗。

OPT-3. (停止條件)若迭代 k 小於等於 n-1 且第 k 迭代所有更新點的集合 S(k)≠∅,則 到 OPT-4。反之,則演算法停止,找到最短路徑。

OPT-4. 令 u 屬於 S(k-1)中的其中一點,對所有與 u 相連的節點 j𝜖N,計算節線成本 𝐶𝑢𝑗 = 𝑑𝑢𝑗 − 𝜋𝑗

OPT-5. 令節點 u 之標籤「已收未送的訂單集合」中各訂單之送貨點為 y,對所有節 點 y,檢驗由節點 u 到節點 y 的執行時間是否超過節點 y 的最晚可執行時間。

將節點 u 設為已檢驗。若到達其中一節點 y 之時間超過該點最晚可執行時 間(𝑇𝑢 + 𝑡𝑢𝑦 > 𝑙𝑦),則 u 不可行,執行 OPT-6;反之,u 可行,將所有點設 為未嘗詴,執行 OPT-7。

OPT-6. 判斷 S(k-1)內的點是否皆為已檢驗。若是,則執行 OPT-2;反之,執行 OPT-4。

OPT-7. 判斷節點 u 是否有與其相鄰(u 之下游點),且未嘗詴經過的點。若有,則設 該點為 v,並將節點 v 設為已嘗詴,到 OPT-8;若無,到 OPT-6。

OPT-8. (優先限制)若節點 v 為收貨點,則滿足優先限制,到 OPT-9。若節點 v 為送 貨點,則判斷節點 v 的收貨點是否在節點 u 的「已收未送的訂單集合」中,

若在,則滿足優先限制,到 OPT-9;若不在,則違反優先限制,到 OPT-7。

OPT-9. (時間窗限制)若從節點 u 到達節點 v 的時間等於或早於節點 v 最晚可執行時 間(𝑇𝑢 + 𝑡𝑢𝑣 ≤ 𝑙𝑣),則滿足時間窗限制,到 OPT-10;反之,若從節點 u 到達 節點 v 的時間大於節點 v 最晚可執行時間(𝑇𝑢 + 𝑡𝑢𝑣 > 𝑙𝑣),則違反時間窗限 制,回到 OPT-7。

OPT-10. (車輛容量限制)若節點 v 為送貨點,則車上總載重減少,必滿足車輛容量限 制,OPT-11;若節點 v 為收貨點,車上總載重將增加,故若節點 u 的累積 載重與節點 v 的需求載重量加總大於車輛容量(𝐿𝑢 + 𝑑𝑣 > 𝐶𝑎𝑝),則違反車 輛容量限制,回到 OPT-7;反之,若加總小於等於車容量(𝐿𝑢 + 𝑑𝑣 ≤ 𝐶𝑎𝑝),

則滿足車容量限制,到 OPT-11。

OPT-11. (將節點 v 放入 S(k)中,並更新節點 v 的多重標籤)更新節點 v 的「前置點」

為 Pv=u;節點 v 的「到達時間」為 Tv =Max(𝑇𝑢 + 𝑡𝑢𝑣, 𝑙𝑣) ;到節點 v 車輛 的「累積載重量」為𝐿𝑣 = 𝐿𝑢 + 𝑑𝑣;到 v 點的「累積成本」為𝐶𝑣 = 𝐶𝑢 + 𝐶𝑢𝑣 = 𝐶𝑢 + 𝑑𝑢𝑣 − 𝜋𝑢; 若 節 點 v 為 收 貨 任 務 點 則 「 已 收 未 送 的 訂 單 集 合 」 𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑣 = 𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑢 ∪ 𝑣,若節點 v 為送貨任務點則𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑣 = 𝑃𝑖𝑐𝑘𝑢𝑝𝑆𝑒𝑡𝑣\𝑣。到 OPT-4。

OPT-7. 節點u是否有與

相關文件