• 沒有找到結果。

第三章 問題定義與研究方法

3.2 Tabu_PDP 演算法設計

3.2.2 鄰域定義與交換法則

本研究的三個決策點為決定訂單於機台選擇與加工順序、訂單被分配 之批次以及訂單在批次中的訂單運送順序,故鄰近解的定義基於決策點來 設定。本研究設計了以下三種交換法則:

(1) 批次內運送順序交換

第一種類型之鄰近解,為批次內運送順序之兩兩交換。若 Br內有

n

r組訂單,則該批次這類型之鄰近解有C2nr種組合,若有 y 個批次則總 共有

= y

r nr

C

1

2 種組合

(2) 批次於機台加工順序之交換

第二類型之鄰近解為批次於機台加工順序之交換,批次的個數與 批次數相同,當 y ≥ 2 時,批次於機台加工順序交換之組合共有C2y種。

(3) 不同批次中訂單之交換

第三類型之鄰近解為不同批次中訂單之交換,選擇任兩批次中的 訂單利用兩兩交換法產生鄰近解,本研究假設當不同批次中的訂單交 換時,其在指派之機台與加工順序以及車輛運送順序亦同時被交換,

否則將違反最佳化性質(i)或者是(ii),此類鄰近解的組合共有C2yC1nr1C1nr2 種。

本研究之鄰近解定義,為三種類別解之集合,即目前解之鄰域,而鄰 域中目標函數值最低且不在禁忌表列中的解,即為最佳移步。

3.2.3 Tabu_PDP 之 之結構與流程 之 之 結構與流程 結構與流程 結構與流程

本研究 Tabu_PDP 基本搜尋流程如圖 6,以下說明各步驟之詳細內容。

圖 6 Tabu_PDP 演算法流程

輸入資料 利用 T_Start 演算法

產生一起始解

將起始解加入禁忌表列 計算目標值 做為目前最佳解 f(x)*

產生目前解之鄰域

鄰域之最佳解 是否在禁忌表列?

計算鄰近解目標值並排序

是否滿意 期望水準?

從鄰域中忽略此鄰近解

解除禁忌禁制 移步至此鄰近解

更新目前最佳解 f(x)* 禁忌表列、迭代次數

是否達到 結束準則?

結束搜尋

步驟一. 設定禁忌表列、期望水準與迭代次數

1. 禁忌表列:設定為 t 即是須經過 t 次的搜尋才能重複搜尋過去所 搜尋過的解。

2. 期望水準:本研究設定搜尋到新的解若要滿足期望水準必須同 時符合下列三種情況:

(i) 禁忌限制。

(ii) 對應目標值優於目前所得之最佳解 f(x)*。 (iii) 禁忌限制內最佳解。

3. 結束準則:預設當迭代次數達到指定之次數或最佳近似解連續 指定次數未更新時即停止。

步驟二. 利用 T_Start 產生 Tabu_PDP 的起始解

步驟三. 更新禁忌表列、計算目標函數值更新為 f(x)*

在求得 Tabu_PDP 之起始解後,將此解加入禁忌表列中,以避免在第 二次迭代時的鄰域中,將本研究所求得之起始解作為第二次迭代中鄰域的 最佳解,而發生重覆搜尋的情況。在第一次迭代中,目前演算法之 f(x)*為 起始解之目標函數值。

步驟四. 移步的選擇

本研究檢視在這次迭代所生成的鄰域,計算所有鄰近解所對應之目標 函數值,並找出所有鄰近解中目標函數值最小的一個。若此解不在禁忌表 列中,則移歩到此一新的解,此解為本次迭代的最佳移步,同時更新禁忌 表列並檢視最佳移步所對應之目標函數值是否優於目前最佳解 f(x)*,當此 解優於目前最佳解,更新此解成為最佳解 f(x)*。若此鄰近解位於禁忌表列 中,則視其是否符合期望水準,本研究所設定之期望水準為在禁忌限制中 其對應是目標函數值優於目前最佳解 f(x)*,若符合期望水準,則移步至此 鄰近解,更新禁忌表列與目前最佳解 f(x)*。當所有鄰近解中目標函數值最

小的一個解位於禁忌表列,而其目標函數值又小於目前最佳解 f(x)*時,則 在鄰域中排除此解後,重新搜尋鄰近解中目標函數值最小的可行解,並重 覆上述動作,直到找到最佳移步並更新禁忌表列、最佳解以及迭代次數。

步驟五. 檢視結束準則

本研究所設定之結束準則為迭代次數達設定之次數即停止。

3.3 範例說明 範例說明 範例說明 範例說明

本小節以本研究所設計之 T 架構為例,說明 T_Start 的計算步驟與 Tabu_PDP 第一次搜尋之結果。考慮 6 個訂單(即 n = 6)、2 部機台(即 k = 2)、

車輛容量上限為 3 個訂單(即 v = 3)的問題。為方便表示,假設訂單 i 由顧 客 i 所訂購。各訂單權重值以及訂單於各機台加工時間如表 1 所示,各訂 單與製造工廠間的運送時間矩陣如表 2 所示。

表 1 訂單權重值以及訂單於各機台加工時間 訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6 wi 3.1 2.5 2.9 4.7 1.8 6.2

pi1 14 42 35 16 27 50

pi2 20 19 40 48 20 30

表 2 各訂單與製造工廠間的運送時間矩陣

dij 製造工廠 訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6

製造工廠 0 137 174 89 78 54 96

訂單 1 137 0 115 110 161 134 183

訂單 2 174 115 0 69 91 122 118

訂單 3 89 110 69 0 36 76 99

訂單 4 78 161 91 36 0 102 51

訂單 5 54 134 122 76 102 0 63

訂單 6 96 183 118 99 51 63 0

步驟一. 設定禁忌表列、期望水準與迭代次數

由於此範例為說明生成起始解與第一次搜尋之結果,故不設定禁忌表 列長度以及結束準則。

步驟二. 利用 T_Start 產生一起始解 (i) 決定批次與車輛途程之運送順序

首先本研究將各訂單與製造工廠間的運送時間矩陣轉換成權重運送 時間矩陣如表 3,利用在3.2.1節介紹的演算法 A 來決定訂單的運送批次 以及其運送所花費的時間,可得從製造工廠至各訂單之最小值為訂單 6 的 15.5,因此訂單 6 為 B1中第一個被運送之訂單。當車輛到達將貨品送達訂 單 6 之位置後,需選擇接下來被運送之訂單;訂單 6 可以前往的顧客位置 中,其權重運送時間值最小的為訂單 4 的 10.9,故訂單 4 為批次中第 2 個 運送點。再來檢視訂單 4 可達位置中最小值為訂單 3 的 12.4,為第 3 個運 送點。此時 B1訂單體積已達車輛容量上限 3,B1可運送訂單與訂單運送順 序為製造工廠-訂單 6-訂單 4-訂單 3。接著開始新的批次 B2自製造工廠出 發,求得其運送訂單與順序為製造工廠-訂單 5-訂單 1-訂單 2。求得 B1

B

2之運送順序後,計算其從開始發車到成品送達顧客手上所花費之時間如 表 4 所示。

表 3 權重運送時間矩陣

dij 製造工廠 訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6 製造工廠 0 44.2 69.6 30.7 16.6 30.0 15.5 訂單 1 0 0.0 46.0 37.9 34.3 74.4 29.5 訂單 2 0 37.1 0.0 23.8 19.4 67.8 19.0 訂單 3 0 35.5 27.6 0.0 7.7 42.2 16.0 訂單 4 0 51.9 36.4 12.4 0.0 56.7 8.2 訂單 5 0 43.2 48.8 26.2 21.7 0.0 10.2 訂單 6 0 59.0 47.2 34.1 10.9 35.0 0.0

表 4 批次運送順序以及其對應之訂單到達時間

B1 訂單 6 訂單 4 訂單 3

到達時間 96 147 183

B2 訂單 5 訂單 1 訂單 2

到達時間 54 188 303

(ii) 計算各批次分別在機台負荷量為 0 時之最大完工時間

在第一階段中,本研究求得起始解中批次的分配方式以及運送順序,

接著以批次方式決定其在機台上加工的先後順序,已知 B1的訂單在各機台 加工時間如表 5。針對各批次利用演算法 B 求解,先求得各批次分別在所 有機台負荷為 0 時的最大完工時間。訂單 4 於機台 1 加工時間為 16,為所 有機台加工時間中最小的值,故第 1 個加入機台排程。此時更新機台 1 的 負荷量為 16。訂單在考慮機台負荷量後的機台完工時間如表 6,選擇最小 值之訂單 6 於機台 2 加工,其完成時間為 30,接著再次更新機台負荷量。

表 3-7 顯示最後一張訂單 3 需在機台 1 加工,該批次在起始時間為 0 的最 大完工時間即為訂單 3 之 51。B1於機台上之排程如圖 3-3,B1中機台 1 的 加工順序依序為訂單 4-訂單 3,機台 2 加工訂單 6,B1在機台上的完工時 間為 51。

表 5 B1的各機台加工時間

訂單 3 訂單 4 訂單 6

pi1 35 16 50

pi2 40 48 30

表 6 訂單 4 加工後剩餘訂單於各機台加工完成時間

訂單 3 訂單 6

pi1 51 66

pi2 40 30

表 7 訂單 6 加工後剩餘訂單於各機台加工完成時間

訂單 3 pi1 51 pi2 70

圖 7 B1於機台上加工之甘特圖(假設開始時間為 0)

同理,利用演算法 B 求得 B2機台排程之結果如圖 7,B1中機台 1 的 加工順序依次訂單 4-訂單 3,機台 2 加工訂單 6,批次之最大完工時間為 39。

圖 8 B2機台排程之甘特圖

39 訂單 1

機台 1

機台 2

14

訂單 2 訂單 5

19 20

訂單 6 51

訂單 3 訂單 4

機台 1 16

機台 2 30

35

(iii) 決定批次在機台上加工的順序

由演算法 A 與 B,我們求得兩批次之最大完工時間以及運送時間,以 演算法 C 求得該批次權重最大完工時間如表 8,並將其依遞增的方式排 序。由於 H1=17.0 小於 H2=46.2,故批次的加工順序為 B1-B2,B1之發車時 間即為 51,重新將訂單依照批次之順序,最後將訂單排入機台中;如圖 9 所示,各機台加工流程中 B2的最大完工時間往前移動至 69。

表 8 權重最大完工時間

H

r

B

1 17.0

B

2 46.2

圖 9 各機台加工流程圖 (iv) 一個起始解組合與計算目標函數值

由 (i)、(ii)以及(iii),本研究求得一起始解之組合如表 4 以及表 9 所示。

在此組合下其對應之訂單完成時間與加權後訂單總完成時間列於表 10,

4469 即為本研究起始解的目標函數值。

表 9 機台加工順序與完工時間表 批次1

51

訂單 2 訂單 5

49 69

65 訂單 6

訂單 1 訂單 3

訂單 4 機台 1 16

機台 2 30

35 14

19 20

批次 2

機台 1 訂單 4 訂單 3 訂單 1

完工時間 16 51 65

機台 2 訂單 6 訂單 2 訂單 5

完工時間 30 49 69

表 10 起始解訂單花費時間與目標函數值表

訂單 1 訂單 2 訂單 3 訂單 4 訂單 5 訂單 6

wj 3.1 2.5 2.9 4.7 1.8 6.2

cj 257 372 234 198 123 147

wjcj 797 930 679 931 221 911

Σwjcj 4469

步驟三. 更新禁忌表列、計算目標函數值更新為 f(x)*

在求得此範例之起始解後,將此解加入禁忌表列中,將目標函數值更 新成為目前搜尋法之最佳解 f(x)*。

步驟四. 產生目前解之鄰域

本研究鄰域共有三種鄰近解的類別:

(i) 批次內運送順序之兩兩交換

此例起始解之批次內皆為 3 張訂單,如圖所示,訂單與訂單交換 其運送順序成為一鄰近解,範例中此類鄰近解數共 6 個。

(ii) 批次於機台加工順序之交換

起始解只 2 個批次,故鄰近解僅 2 個。

(iii) 不同批次中訂單之兩兩交換

第三類型之鄰近解為不同批次中訂單之兩兩交換,在交換批次 時,同時交換兩張訂單在機台加工與運送時的順序,其組合共有 9 種。

步驟五. 移步的選擇

本研究檢視此範例之鄰近解並計算其目標函數值,在鄰域中以 B1中 的訂單 6 與訂單 4 兩張訂單交換其運送順序,為所有鄰近解中成本最低的 一組,其解之組合如表 11 與表 12,目標函數值之計算過程列於表 13,

此解之目標函數值為 4220,與起始解之目標函數值比較後,改善率約為 3%。移步至此解並將其記入禁忌表列中;同時因為此目標函數值低於起始 解,故更新此解為目前之最佳解。至此搜尋法之第一次迭代結束,搜尋法 將以此解做為第二次迭代中鄰域產生的基準,目前禁忌表列記錄起始解以

此解之目標函數值為 4220,與起始解之目標函數值比較後,改善率約為 3%。移步至此解並將其記入禁忌表列中;同時因為此目標函數值低於起始 解,故更新此解為目前之最佳解。至此搜尋法之第一次迭代結束,搜尋法 將以此解做為第二次迭代中鄰域產生的基準,目前禁忌表列記錄起始解以

相關文件