第三章 問題定義與研究方法 問題定義與研究方法 問題定義與研究方法 問題定義與研究方法
3.2 演算法之設計 演算法之設計 演算法之設計 演算法之設計
本小節將介紹非等效平行機台部份的編碼方式,接著說明狀態轉移法 則及費洛蒙更新法則,最後則是本研究提出之蟻群演算法架構的詳細步 驟。
3.2.1
非等效平行機台問題之轉換非等效平行機台問題之轉換 非等效平行機台問題之轉換非等效平行機台問題之轉換由於蟻群演算法的邏輯是根據距離及費洛蒙濃度構成的機率法則來 選擇下一個行經的節點,因此為了讓蟻群演算法能適用在非等效平行機台 部份,本研究參考陳民俊(2003)的編碼方式,將訂單與機台間的對應關 係轉換為新的作業編號,而每一個作業編號則相當於一個節點,以 5 個訂 單與 2 台機台的對應關係為例,其作業編號如表 2 所示:
表 2 作業編號表
編號 1 2 3 4 5 6 7 8 9 10 訂單 1 2 3 4 5 1 2 3 4 5 機台 1 1 1 1 1 2 2 2 2 2
透過這種轉換方式,可以同時將機台與訂單納入考量,並建構出排程 順序的費洛蒙矩陣。因為在平行機台問題中,每一個訂單只需要在一台機 台上加工,因此在轉換成作業編號後,同一個訂單所對應的作業編號只能 被選擇一次,例如表 2 中的編號 1 與編號 6 皆是代表訂單 1 的作業,但所 指派加工的機台不同,所以在決定排程時只能選擇其中一個,當其中一個 編號被選擇後(意即訂單 1 已排入排程中),另一個編號便不可以再選。
而轉換後建構出的排程費洛蒙矩陣大小為訂單數×編號數。
3.2.2
狀態轉移法則狀態轉移法則 狀態轉移法則狀態轉移法則為了獲得最佳解,螞蟻必須能夠參考過去所經歷過的較佳路徑(在本 研究中為一組排程或配送路徑),這種行為稱為「開發」(exploitation);同 時螞蟻也必須能夠發現還未嘗試過的解答組合,而這種行為稱之為「探索」
(exploration)。開發的主要功能為改善現有的解,然而這種行為有可能會使 螞蟻在求解時陷入區域最佳解中,因此可以藉由探索的機制使螞蟻跳脫至 另一個未曾嘗試的解空間,讓螞蟻有機會尋求更好的解。而為了使螞蟻兼 備開發與探索的行為,本研究採用Dorigo and Gambardella (1997) 所提出的 狀態轉移法則(state transition rule),來作為螞蟻選擇下一個節點的依據(在 排程部份的節點為作業編號;在配送部份的節點則為欲配送的顧客點)。
而本研究提出之演算法的求解過程中,共使用兩次轉移法則,分別用於求 解排程部份的加工排程,以及求解配送部分的車輛路徑。
排程部份的狀態轉移法則如式(3-1)與式(3-2)所示:
完工時間,以及與上一個加工訂單間的距離,使得完工時間與地理位置相
(一) 費洛蒙區域更新
其中Lgb表示所有螞蟻中最佳解的目標函數值,Q 一般設定為一固定參數,
而在本研究中,Q 值設定為第一次迭代中最佳的解的目標函數值乘上初始 費洛蒙濃度,而在本研究中,Q 值設定為第一次迭代中最佳的解的目標函 數值乘上初始費洛蒙濃度透過這種更新方式,當最佳解的目標函數值越小 時,其因獎賞而增加的費洛蒙濃度也會相對的越高。而全域費洛蒙蒸發係 數使得費洛蒙會隨著時間蒸發,其目的在於避免某些路徑上費洛蒙無限的 累積。此外,如同費洛蒙區域更新,在本研究方法中,當螞蟻找到一組完 整的可行解時,會同時執行排程與路徑費洛蒙矩陣的全域更新。
3.2.4
蟻群演算法架構蟻群演算法架構 蟻群演算法架構蟻群演算法架構本研究所提出的演算法架構以定理 1 為基礎,並可大致分為兩個階 段,第一階段是先利用螞蟻求出一組排程,指派各機台加工的訂單以及加 工順序。第二階段則是將訂單依照完工的順序分配到車輛,當一部車輛裝 載的訂單個數到達其容量上限時,便指派到另一部新的車輛,車輛的發車 時間為所裝載之訂單中,最後完工訂單的完工時間(定理 1)。最後求出各 車輛的配送路徑,而這部份可以將各車輛的路徑視為多個車輛途程子問 題。演算法流程如圖 3 所示,而詳細的步驟說明如下:
圖 3 演算法架構流程圖 是
否
設定初始參數
依照狀態轉移法則建構出生 產排程
執行排程費洛蒙矩陣的區 域更新
依排程中加工完成的順序將 所有的訂單依序分配給車輛
依照狀態轉移求出所有車 輛的配送路徑
執行路徑費洛蒙矩陣的區 域更新
計算所有螞蟻所得解的目 標值,並找出擁有最佳解的
螞蟻進行全域更新
停止演算法 是否達到停止條件 每隻螞蟻均建立其解
是
否
步驟 1:設定初始狀態及參數
設定總迭代數(TN)、費洛蒙初始值(τ0)、狀態轉移法則參數(q0)、費 洛蒙濃度權重參數(α)、能見度權重參數(β)、訂單權重參數(γ )、區域費 洛蒙蒸發係數(ρ,0<ρ<1)、全域費洛蒙蒸發係數(ρ',0<ρ'<1)、螞蟻數 量(ANT)。
步驟 2:選擇排程起始點
每一隻螞蟻隨機選擇一個作業編號為起始點,並將其紀錄到作業順序 的第一個位置中,並將其他代表相同訂單的編號移除。
步驟 3:建立訂單的生產排程
每隻螞蟻從排程的第二個作業開始,依照如式(3-1)與式(3-2)的狀態轉 移法則選擇下一個作業編號,直到所有的訂單都被納入排程為止。
步驟 4:費落蒙區域更新-排程費洛蒙矩陣
當螞蟻求出所有訂單的排程後,便依照式(3-5)進行排程費洛蒙矩陣的 區域費洛蒙更新。
步驟 5:分配批次
依據先完工之訂單先分配的原則,將訂單依序分配給車輛,當目前進 行分配的車輛達到容量上限時,便將訂單分配至下一部新的車輛。
步驟 6:各車輛的配送路徑
此一步驟類似步驟 3,當螞蟻決定每部車輛所裝載的訂單為何後,各 車輛以物流中心(工廠)為起始點開始建構配送路徑,依照如式(3-3)與式 (3-4)的狀態轉移法則選擇下一個配送點。
步驟 7:費落蒙區域更新-路徑費洛蒙矩陣
當螞蟻求出所有車輛的路徑後,便依照式(3-5)進行路徑費洛蒙矩陣的 區域費洛蒙更新。
步驟 8:全域費洛蒙更新
當螞蟻求出所有車輛的路徑後,便形成一組完整的解。計算所有螞蟻 的解的目標值,並選出擁有最小目標值的螞蟻進行全域費洛蒙更新,而此 一步驟包括更新排程的費洛蒙矩陣以及路徑的費洛蒙矩陣,如式(3-6)與式 (3-7)所示。
步驟 9:測試停止條件
當演算法達到停止條件時(t=TN)則停止,否則回到步驟 2
3.2.5
演算步驟演算步驟範例說明演算步驟演算步驟範例說明範例說明 範例說明本小節將以一小規模的問題為例,說明演算法在求解問題時的流程。
考慮 6 個訂單(n = 6)、2 台機台(m = 2)、車輛容量上限為 3 個訂單(l = 3)的 問題,而為簡化敘述,本研究在此假設訂單 i 由顧客 i 所訂購(i = 1, 2, 3…,6)。各訂單權重、加工時間以及轉換後的作業編號如表 3 所示,各訂 單所屬顧客與物流中心間的配送時間矩陣如表 4 所示。
表 3 訂單之權重與加工時間表
訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6
wi 3.1 2.5 2.9 4.7 1.8 6.2
pi1(作業編號) 15 (1) 40 (2) 34 (3) 18 (4) 27 (5) 45 (6) pi2(作業編號) 25 (7) 22 (8) 36 (9) 42 (10) 18 (11) 30 (12)
表 4 訂單之配送時間矩陣
dij 物流中心 訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6
物流中心 0 137 174 89 78 54 96
訂單 1 137 0 115 110 81 134 183 訂單 2 174 115 0 69 91 122 118 訂單 3 89 110 69 0 36 76 99 訂單 4 78 81 91 36 0 102 51 訂單 5 54 134 122 76 102 0 63
訂單 6 96 183 118 99 51 63 0
步驟 1:設定初始狀態及參數 設定總迭代數 TN = 30 費洛蒙初始值τ0=0.0001 費洛蒙濃度權重參數α=1 能見度權重參數β=0.9 訂單權重參數γ =1
區域費洛蒙蒸發係數ρ = 0.1 全域費洛蒙蒸發係數ρ' = 0.15 螞蟻數量 ANT = 5
狀態轉移法則參數q0=0.5 步驟 2:選擇排程起始點
以 5 隻螞蟻中的螞蟻 1 為例,假設其隨機選取的排程起始點為作業編 號 3,意即訂單 3 於機台 1 加工,則同樣代表訂單 3 的作業編號 9 必須從 S2(1)移除。
步驟 3:建立訂單的生產排程
表 6 排程部分狀態轉移機率表 作業編號
p2j值
1 0.0499
2 0.0386
4 0.1183
5 0.0290
6 0.0771
7 0.0603
8 0.0609
10 0.1336
11 0.0423
12 0.1066
步驟 4:區域費落蒙更新-排程費洛蒙矩陣
假設螞蟻 1 所建立之排程中的作業編號為{3, 10, 8, 11, 6, 1}
則排程費洛蒙矩陣需要更新的部份如圖 4 中的灰色部分所示。而螞蟻 1 的 排程甘特圖如圖 5 所示
圖 4 排程費洛蒙矩陣區域更新
圖 5 排程甘特圖 步驟 5:分配批次
依據先完工之訂單先分配的原則,將訂單 3、訂單 4、訂單 2 分配給 車輛 1,其發車時間為 64;將訂單 6、訂單 5、訂單 1 分配給車輛 2,其發 車時間為 94。
1 2 3 4 5 6 7 8 9 10 11 12 1
2 3 4 5 6
34 45 15
42 22 18
機台 1
機台 2
(訂單 3) (訂單 6) (訂單 1)
(訂單 4) (訂單 2) (訂單 5)
34 79 94
43 64 82
作業編號
作 業 順 序
步驟 6:各車輛的配送路徑
在此步驟,螞蟻 1 將決定車輛 1 裝載之訂單 3、訂單 4、訂單 2 的配 送順序,以及車輛 2 裝載之訂單 6、訂單 5、訂單 1 的配送順序,因此可 以視為兩個車輛途程子問題。以車輛 1 的路徑為例,其ηob及Pob的相關資 料及算如表 7 及表 8 所示。接著產生一隨機變數 q,若 q < 0.5 則螞蟻 1 會 直接選擇表 8 中具有最大 Pob的訂單 4,若 q > 0.5 則由式(3-4)來決定,意 即 Pob越大的訂單被螞蟻選擇的機率會較高。
表 7 配送部份能見度資料表 訂單 計算過程
ηob值 3
89 9 .
2 0.0326 4
78 7 .
4 0.0603
2
174 5 .
2 0.0144
表 8 配送狀態轉移機率表 訂單 POb值 3 0.2206 4 0.4081 2 0.0975
步驟 7:區域費落蒙更新-路徑費洛蒙矩陣
假設螞蟻 1 決定車輛 1 的配送路徑為:物流中心-訂單 4-訂單 3-
訂單 2,車輛 2 的配送路徑為:物流中心-訂單 1-訂單 5-訂單 6,
則路徑費洛蒙矩陣需要更新的部份如圖 6 中的灰色部分所示。
物流中心 訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6 物流中心
訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6
圖 6 路徑費洛蒙矩陣區域更新
步驟 8:全域費洛蒙更新
計算所有螞蟻的解,並選出擁有最小目標值的螞蟻進行全域費洛蒙更 新,如 3.2.2 節中的式(3-6)與式(3-7)所示。
步驟 9:測試停止條件
當演算法達到停止條件時(t = TN)則停止,否則回到步驟 2。