• 沒有找到結果。

第二章 文獻探討

3.2 演算法之設計

3.2.1 兩層式染色體編碼方式

在兩層式的染色體編碼的表現模式中,第一層染色體存放生產排程的資 訊,以建立一訂單與機器加工順序的對應矩陣;第二層染色體存放車輛途程 的資訊,以客戶之所在位置,以建立一配送車輛資訊矩陣。在基因演算法的 編碼過程中,一般皆採用最簡單的二進位的編碼方式。但當染色體長度過長 時,則會有字串過長的困擾,再加上排程所著重的是加工順序,故本研究將 以順序編碼方式,將訂單加工及需求點配送的順序編碼為 1、2、3、4、…等,

來解決字串過於冗長的問題,且第一層染色體與第二層染色體的關係為一對

一或多對一,取決於配送車輛的數量及客戶之所在位置。其中以 0 為加工機 台間之分隔點以及配送車輛之分隔點。第一層染色體長度為訂單數加機台數 減一;第二層染色體長度為訂單數加配送車輛數減一。以下為 10 筆訂單、2 台機器、2 輛車輛之兩層染色體編碼示意圖,如圖 3.1 所示:

圖 3.1 兩層染色體編碼示意圖 3.2.2 起始解設定

理論上當產生的起始解品質越好時,應越容易找到最佳解。但事實上,

基因演算法為一種多點的平行搜尋法,若採用隨機方式產生起始解,只要所 產生之親代數足夠,對於尋求最適解並不會有太大的影響,且基因演算法所 需要之親代數有一定的數量,例如當染色體長度為50時,則至少要有200個以 上的起始解才有足夠的選擇空間,因此若採用啟發式解法來產生起始解,則 必須要使用200種啟發式演算法,那麼光在產生起始解這一部分就會花非常長 的時間,如此便失去基因演算法方便且快速求解的特性。因此,本研究以隨

3.2.3 適合度函數設定 較適用於排程與車輛途程問題的粗略標示交配法 (partial mapping crossover, PMX)為交配方式。其步驟如下:

步驟 1:隨機選取兩切點,此兩切點中的染色體稱為標示區段(mapping sections)。

母代 1:1 2 3 4 5 6 7 8 9

母代 2:5 6 9 8 7 1 4 2 3 步驟 2:對調兩切點中的基因。

子代 1:12 9 8 7 6 7 8 9

子代 2:5 6 3 4 5 1 4 2 3

步驟 3:調換切點外與切點內重複之基因。

子代 1:1 2 9 8 7 6 5 4 3

子代 2:7 6 3 4 5 1 8 2 9 3.2.6 突變

在搜尋空間中,當收斂至某區間時有可能只收斂至局部最佳解,而無法 收斂至期望的最適解。因此,藉由突變可避免收斂過早的問題。雖然移動突 變法包含了兩點突變以及三點突變方式,但移動突變法限制所選取的基因必 須相鄰,與兩點型一突變相同,較無法真正達到突變的效用,故本研究採用 能徹底交換的兩點型二突變方式。

3.2.7 基因演算法參數設定

一般基因演算法使用的參數有三種,茲分別說明如下:

1. 母體數(population size)

母體數是指基因系統內的染色體數目,母體數的多寡將影響基因求解的 效益與演算的效率。母體數較小的系統較難以達到預期的效果,且可能發生

的計算時間。由於本研究之問題為一複雜的 NP-HARD 問題,為了能增加搜 尋空間,本研究將母群體數設定的範圍為 1000 到 6000 之間,以期找到全域 最適解。

2. 交配率(crossover rate)

交換率是用來決定染色體被選擇交配的機率,愈高的交配率產生愈多的 子代。但若是太高則會將較佳的染色體快速的摒棄,太低則會使群體失去活 力及更新。基於能迅速脫離局部最佳解的道理,本研究將交配率設定為 Grefenstette [26]所提出之 0.95 交配機率,以達到快速更新染色體之目的。

3. 突變率(mutation rate)

突變率是指染色體被選擇突變的機率,適度的突變機率將可激發染色體 內潛伏的基因,以增加問題的搜尋空間。突變率若是太低則將會使整個群體 快速收斂而無法突破局部最佳解;太高則又會產生本質上的隨機搜尋而失去 突變的意義。因此本研究將突變率設定為 Schaffer et al.[48]所提出之 0.005 突 變率。

3.2.8 產生新群體

親代經過複製、交配及突變等過程所產生的子代,必須依照事先設定的 方式來決定是否完全或部分取代原族群,以成為一個新的循環點。取代方法 有以下三種:

1、親代取代法

親代取代法是指只有親代產生的子代,才能取代其親代。如果一個親代 產生很多子代,則此親代便有很多機會被其子代替換,如此在同一世代的兄 弟姊妹中,才不會有相互競爭而導致第二好的子代無法取代親代的情形。

2、完全取代法

完全取代法是指所有的親代都被所有的子代所替代,不論其是否為同一交 配來源,且此取代法,不考慮子代的適合度值是否比親代來得高,全部皆將 取代親代。

3、菁英保留政策(elite preserve strategy)

保留親代中適合度值較高的染色體,其餘不足的染色體由子代中適合度 較高之染色體填補,如此不斷循環以產生適合度較高之母群體。

雖然前兩種取代法較為簡單,但為了能確切地將適合度值較高的基因保 留住,本研究採取菁英保留政策來取代較差的親代,以獲得較佳的取代效果。

3.2.9 演化世代停止條件

基因演算法在正常情況下,母群體演化過程是趨向全域最適解發展,但 仍需要有一個停止條件來判斷是否已達成收斂或達到目標。常用之演化世代 停止條件是直接設定演化世代數以及演化時間的長短,至於須演化多少世代 或是設定多長的演化時間,則依照問題的複雜程度或資料量而定。由於此供 應鏈中的生產排程與物流配送兩階段問題為NP-HARD問題,其求解時間會隨 訂單大小而呈指數分配。當訂單數越大時,則演化世代數必須增加才能搜尋 到更理想之解。本研究世代數設定方式如下:

假設原本訂單數為n筆,而世代數為g次,則當訂單數增加至n×2x時,世 代數則為g+ x×1000次。舉例說明,若原訂單數為10筆,而世代數為1000次,

則當訂單數增加到10×21 =20筆時,世代數即為1000+1000×1=2000次;當訂 單數增加到10×23 =80筆時,世代數即為1000+1000×3=4000次,以此類推。

3.2.10 修復

經由複製、交配、突變的運算後,檢查是否有可行解產生,若無,則重新

3.2.11 求解流程

現將本研究所建之模式求解流程彙整成以下六個步驟:

步驟 1:問題集的產生-定義問題之假設與設定參數值。

步驟 2:編碼-依據問題將訂單及車輛的資訊編碼成兩層式染色體。

步驟 3:起始解的產生-利用隨機方式減少產生起始解之時間。

步驟 4:演化-進行基因演算法的複製、交配與突變的運算。

步驟 5:可行解的檢查-檢查所產生的解是否為可行解,若為可行解,則繼續 進行步驟 6;反之,則重新設定基因演算法中之參數後,再進行步 驟 4。

步驟 6:停止條件的確認-檢查在演化停止條件後所產生的解是否為可行解,

若為則停止;反之,則重新進行步驟 4。

本研究所設計之求解供應鏈中整合排程與配送二階段問題最小總成本之演算 法流程如圖3.2所示。

圖 3.2 求解整合供應鏈中生產排程與物流配送二階段最小總成本之流程圖

3.3 啟發式排程

由於目前中外文獻無可應用至本研究所探討之問題的演算法,且本研究 的下限(lower bound)亦不易計算,為了評估本研究所提出之基因演算法所得到

進行演化

檢查是否為 可行解

停止 問題集的產生

編碼

產生起始解

檢查是否達到 停止條件 修復

考慮權重下最短處理時間先加工(weighted shortest processing time first,WSPT)

+1

0 0 281 174 463 482 430 455 467

1

87.54393 65.27528 68.78321 116.5546 432.6497 86.19218 848.9683

i b i

w d1

N/A 32.3997 35.85477 304.7675 195.9432 39.5446 444.1726

i b i

w d 2

141.4653 90.58567 93.88813 N/A 592.9131 117.0095 1151.692

i b

i w

d3

65.31441 11.59506 11.52159 425.7833 N/A 4.664903 127.8041

i b i

w d 4

68.86427 15.4575 14.94595 438.9821 24.37085 N/A 165.1346

i b i

w d5

66.41435 N/A 3.877763 400.036 71.30419 18.19506 68.07871

i b i

w d6

73.83178 3.895442 N/A 416.5104 71.17545 17.67311 25.25899

b

di7

76.10433 5.69047 2.101731 425.121 65.69369 16.24759 N/A

配送順序 3 2 1 4 3 1 2

步驟7及步驟8:如表3.7所示:

表 3.7 訂單完工時間及成本說明表 order t_startj

(min)

diab (min) ci (min) wici (NT)

O6 83 455 583 3853.63

O5 83 455+26 564 3711.12

O1 83 455+26+213 777 2494.17

O4 249 482 731 4086.29

O7 249 482+91 822 452.1

O3 249 482+91+70 892 954.44

O2 249 482+91+70+634 1526 2273.74 i

N

1 i

i c

w ×

=

13812.46

第四章 電腦模擬驗證

本章將針對供應鏈中生產排程與物流配送兩階段中之機台數、車輛數、

訂單數以及訂單加工時間等參數之設定,藉以測試本研究解此兩階段問題之 有效性及可行性。

4.1 模擬設計

本研究之機台數、配送車數與訂單數之設計如下:

機台數設定為 2 台、4 台、8 台三種;

配送車數設定為 2 台、4 台、8 台三種;

訂單數設定為小量、中量及大量。其中小量包含 10 筆、20 筆的訂單數;中 量包含 40 筆、80 筆的訂單數;大量則為 120 筆的訂單數。

當機台數為 2 台時,則可加工 10 筆、20 筆、40 筆、80 筆以及 120 筆訂單;

當機台數為 4 台時,則可加工 20 筆、40 筆、80 筆以及 120 筆訂單;

當機台數為 8 台時,則可加工 40 筆、80 筆以及 120 筆訂單。

當訂單數為 10 筆時,則由 2 台配送車負責配送;

當訂單數為 20 筆以及 40 筆時,則由 3 台配送車負責配送;

當訂單數為 80 筆以及 120 時,則由 4 台配送車負責配送。

基因演算法之參數設計如下:

當訂單數為 10 筆時,則母體數設定為 1000 筆、世代演化數設定為 1000 次;

當訂單數為 20 筆時,則母體數設定為 2000 筆、世代演化數設定為 2000 次;

當訂單數為 40 筆時,則母體數設定為 3000 筆、世代演化數設定為 3000 次;

當訂單數為 80 筆時,則母體數設定為 4000 筆、世代演化數設定為 4000 次;

當訂單數為 120 筆時,則母體數設定為 5000 筆、世代演化數設定為 5000 次;

訂單加工時間及配送時間設計如下:

第二階段之訂單配送至顧客之時間矩陣使用車輛途程問題網站[51]中由

Taillard所提供之tai385 檔案。在tai385 之檔案中,共有 385 筆的顧客數,且顧 客之分配位置相當密集,如圖 4.1 所示。顧客間配送時間皆介於 200 至 500 分鐘之範圍,因此本研究直接使用前 120 筆資料作為訂單配送至顧客之配送 時間矩陣。為模擬不同情況,本研究依第一階段之訂單加工時間範圍配合訂 單配送時間之範圍,利用電腦依照均勻分配(uniform distribution)隨機產生,

共設計以下三部分的測試問題。

1、加工時間小於配送時間:加工時間介於 50 至 100 分鐘小於配送時間之範 圍;

2、加工時間近於配送時間:加工時間介於 200 至 500 分鐘近於配送時間之範 圍;

3、加工時間大於配送時間:加工時間介於 800 至 1000 分鐘大於配送時間之 範圍。

且在每一部分中皆相同地以電腦依照均勻分配隨機產生三次相同範圍的訂單

且在每一部分中皆相同地以電腦依照均勻分配隨機產生三次相同範圍的訂單

相關文件