• 沒有找到結果。

啟發式演算法(Huristic Method)

第四章 二階段生產系統的多次投料問題

4.3.3 啟發式演算法(Huristic Method)

O T D =T D TD TD⋅ ⋅ 。

T 和 D 很大的情況下,利用動態規劃的手法求解時,因為動態規劃的網 路規模是由二階段投料量k 和t(1) k 的上界所決定,導致動態規劃的網路規模變t(2) 得相當龐大,需耗費很長的時間才能求得最佳解。舉例來說,當T =10和D=50 時,就需要耗費大約 4 個小時才能求得最佳解。若能限定k 和t(1) k 的上界,即t(2) 可縮小態規劃的網路規模,以縮短計算時間。因此,我們將提出一個啟發式演算 法,來求解二階段生產系統有交期限制的多次投料問題。

4.3.3 啟發式演算法(Huristic Method)

啟發式演算法的基本概念是簡化動態規劃的網路規模,是將二階段投料決策

(1) (2)

(kt ,kt )所有可能的產出狀態,簡化成只有一個產出狀態(見圖 4.10)。簡化的作 法是利用期望值的概念,分別計算二階段投料量的期望產出個數,期望產出個數

若是有小數點時,小數點則採取無條件捨去。我們將原問題的成本遞迴式(4-1),

接著我們分析啟發式演算法的複雜度,它的複雜度是O T D ,分為以下( 3 4) 三點作說明:

(1)生產系統狀態st =( , )D Bt t 的總數是由三個變數:t 、D 及t B 所限制,而 t 、t D 及t B 的上界分別是t T 、 D 及TD 。在最差的情況下,生產系統狀態的總 數是T D TD⋅ ⋅ =(T D2 2)。

(2) 在 每 一 個 狀 態 st =( , )D Bt t 下 , 因 為 第 一 階 段 投 料 量 的 最 大 範 圍 是

(1) ( 1)

t t

k ≤ − ⋅t DTD,第二階段投料量的最大範圍是kt(2) ≤min{ , }D Bt t ≤ ,D

所以我們最多可採取投料決策(kt(1), kt(2))的個數是TDD=(TD2)。

(3)每一個投料決策(kt(1) , kt(2) )所有可能產出的狀態個數,只會產生一個結果。

綜 合 以 上 三 點 , 在 最 差 的 情 況 下 , 啟 發 式 演 算 法 的 複 雜 度 是

3 4 2 2 2

( 1)

O T D =T D TD⋅ 。

4.3.4 數值範例

為了分析啟發式演算法和 OPS 演算法的績效,進一步瞭解 IG 分配的參數 對最佳投料量的影響及最佳投料量的特性,我們做三個數值範例:(1)範例 1 是 比較啟發式演算法和 OPS 演算法的績效;(2)範例 2 是觀察 IG 分配的參數

(1) (2)

(

θ θ

, )對最佳投料量的影響;(3)範例 3 是觀察最佳投料量是否會隨著需求量 的增加而嚴格遞增。我們是用C++來撰寫程式,所使用的個人電腦規格是 3.0GHZ 的CPU,504 MB 的 RAM,來執行所有的例子。

範例 1:比較啟發式演算法和 OPS 演算法的績效

為了比較啟發式演算法和OPS 演算法的績效,我們執行 288 個例子,每個 例子是由 7 個變動的參數(T,D,

β

(1),

β

(2),

θ

(1),

θ

(2),m)所組合,其中T∈{3,5,7}、

} 50 , 20 , 10

∈{

D

β

(1)∈{1,2}、

β

(2)∈{1,2}、

θ

(1)∈{0.6,0.8}、

θ

(2)∈{0.6,0.8}及 }

200 , 100

∈{

m ,其他3 個固定的參數值設定為

α

(1) =50、

α

(2)=50及h=1。 我們定義成本誤差比率值和計算時間比率值,利用這二個指標值來評估演算 法的績效。這二個指標定義如下:(1)成本誤差比率值:以 c h o

o

C C

R C

= − 表示;(2)

計算時間比率值:以 t h

o

R T

=T 表示。其中,C 是利用啟發式演算法所計算出來的h 期望總生產成本,T 是啟發式演算法的計算時間;h C 是利用 OPS 演算法計算出o 來的期望總生產成本,T 是 OPS 演算法的計算時間。 o

我們針對二階段生產系統良率(

θ

(1),

θ

(2))的高低,產生四種情境的配對,將 執行結果彙整在表4.1 至表 4.4。表中每一組(T, D)共有 8 個例子,每個例子是由 3 個不同的參數(

β

(1),

β

(2),m)所組成。我們定義C 、o C 、h T 、o T 、h R 及c R 是這 8t 個例子的平均績效,也定義Rcmax是這8 個例子中成本誤差比率的最大值。

表4.1 當(

θ θ

(1), (2)) (0.6,0.6)= 時,比較啟發式演算法和OPS 演算法的績效

註:“≈0”表示幾乎接近為 0

表4.2 當(

θ θ

(1), (2)) (0.6,0.8)= 時,比較啟發式演算法和OPS 演算法的績效

註:“≈0”表示幾乎接近為 0

OPS algorithm Heuristic method Performance T D

Co To Ch Th Rc Rcmax Rt 3 10 1473 0.015 1500 ≈0 1.41% 3.13% ≈0 3 20 2973 0.240 3000 ≈0 0.69% 1.54% ≈0 3 50 7473 15.627 7500 ≈0 0.27% 0.61% ≈0 5 10 1438 0.267 1500 ≈0 3.28% 7.30% ≈0 5 20 2938 9.951 3000 0.002 1.59% 3.52% 0.019%

5 50 7438 1778 7500 0.002 0.62% 1.38% ≈0 7 10 1404 0.798 1500 ≈0 5.32% 11.88% ≈0 7 20 2904 34.064 3000 ≈0 2.53% 5.63% ≈0 7 50 7404 5603 7500 0.006 0.98% 2.18% ≈0

Avg=1.86% Max=11.88% Avg=0.002%

OPS algorithm Heuristic method Performance T D

Co To Ch Th Rc Rcmax Rt 3 10 1402 0.013 1464 ≈0 3.56% 6.78% ≈0 3 20 2902 0.254 2964 ≈0 1.70% 13.62% ≈0 3 50 7402 15.955 7464 ≈0 0.663% 1.249% ≈0 5 10 1297 0.277 1424 ≈0 8.31% 15.47% ≈0 5 20 2794 10.027 2924 ≈0 3.84% 7.04% ≈0 5 50 7294 1775 7424 ≈0 1.451% 2.636% ≈0 7 10 1202 0.802 1384 ≈0 13.19% 24.79% ≈0 7 20 2685 34.236 2883 0.002 6.17% 11.36% 0.005%

7 50 7185 5576 7383 0.004 2.259% 4.091% 0.0001%

Avg=4.57% Max=24.79% Avg=0.0006%

表4.3 當(

θ θ

(1), (2)) (0.8,0.6)= 時,比較啟發式演算法和OPS 演算法的績效

註:“≈0”表示幾乎接近為 0

表4.4 當(

θ θ

(1), (2)) (0.8,0.8)= 時,比較啟發式演算法和OPS 演算法的績效

註:“≈0”表示幾乎接近為 0

OPS algorithm Heuristic method Performance T D

Co To Ch Th Rc Rcmax Rt 3 10 1408 0.015 1440 ≈0 1.82% 3.48% ≈0 3 20 2908 0.238 2940 ≈0 0.87% 1.65% ≈0 3 50 7408 15.711 7440 ≈0 0.339% 0.643% ≈0 5 10 1295 0.273 1361 0.002 4.43% 7.79% 0.667%

5 20 2792 9.972 2860 ≈0 2.07% 3.58% ≈0 5 50 7292 1746 7360 0.010 0.785% 1.337% 0.001%

7 10 1193 0.800 1326 0.008 9.83% 18.59% 0.938%

7 20 2675 34.109 2780 0.015 3.39% 5.99% 0.045%

7 50 7175 5586 7280 0.036 1.242% 2.141% 0.001%

Avg=2.75% Max=18.59% Avg=0.18%

OPS algorithm Heuristic method Performance T D

Co To Ch Th Rc Rcmax Rt 3 10 1183 0.015 1274 ≈0 7.59% 8.24% ≈0 3 20 2674 0.252 2773 ≈0 3.66% 4.03% ≈0 3 50 7174 15.974 7273 ≈0 1.371% 1.477% ≈0 5 10 907 0.281 1072 0.004 17.58% 22.21% 1.335%

5 20 2311 10.103 2513 0.004 8.32% 10.57% 0.037%

5 50 6809 1794 7013 0.012 2.861% 3.489% 0.001%

7 10 756 0.820 932 0.013 22.66% 30.25% 1.603%

7 20 1959 34.639 2268 0.019 14.97% 19.94% 0.056%

7 50 6435 5613 6765 0.047 4.877% 6.094% 0.001%

Avg=9.32% Max=30.25% Avg=0.34%

由表 4.1 至表 4.4 得知,R 的範圍是從 0.27%到 22.66%,c Rcmax的範圍是從 0.61%到 30.25%,平均成本誤差比率值(R )的範圍很大,在所有的例子中,有些c 解的品質是令人不滿意的,因此我們必須確認啟發式演算法的適用情境,也就是 說,啟發式演算法應該使用在何種情境下較適當。在這4 個表中,每個表共有 9 組(T, D)的情境,共可得到 36 組(T, D)的情境。在 36 組(T, D)的情境中,只有 4 組(T, D)的R 偏高(超過 10%),這 4 組是出現在 T 大和 D 小的情境。相對來說,cT 小(即 T = 3)的情境下,R 的範圍是從 0.27%到 7.59%;在 D 大(即 D = 50)c

的情境下,R 的範圍是從 0.27%到 4.88%。從上述這些現象我們大概觀察出來,c 啟發式演算法可能較適合用於D 大和 T 小的情境。

為了更進一步確認我們所觀察的現象是否正確,我們做了更多(T, D)情境的 實驗,相關的參數值設定如下:

α

(1) =

α

(2) =50、

β

(1) =

β

(2)= 、2

θ

(1) =

θ

(2)=0.8、

200

m= 及h=1。我們測試了 54 個例子,其中包括 T 有 6 個選項,D 有 9 個選 項,將R 和c T 的實驗結果分別呈現在表 4.5 及表 4.6。 o

假設我們以OPS 演算法的計算時間,設定 5 分鐘作為門檻值,也就是說,

求解二階段的多次投料問題,若是求解時間是在 5 分鐘內,可直接採用 OPS 演 算法。因此,我們將表4.6 以粗線分隔成二個區域,一個是左上角的區域,該區 域的求解時間在5 分鐘內;另一個是右下角的區域,該區域的求解時間是超過 5 分鐘以上。對照表4.6 所標示的粗線位置,我們也將表 4.5 以粗線分隔成二個區 域。

由表4.5 右下角的區域得知,R 的範圍是從 0.65%到 7.11%,令人驚訝的是c 利用啟發式演算法求解這些(T, D)的情境,所需的計算時間不超過 0.1 秒。特別 是在D=100和T =7的情況下,若是利用 OPS 演算法,則需要的計算時間大約 是 3.88 天,然而若是利用啟發式演算法,則需要的計算時間不超過 0.1 秒,且

2.47%

Rc= 。

綜合以上的論述,我們建議 OPS 演算法和啟發式演算法的使用時機,在左 上角的區域建議使用 OPS 演算法,在右下角的區域建議使用啟發式演算法。舉 例來說,當D=10時,若採用啟發式演算法,R 的範圍是從 7.57%到 27.34%,c 解的品質誤差較大。然而若採用OPS 演算法,所需的計算時間不超過 0.84 秒,

即可求得最佳解。此外,當D=100時,採用啟發式演算法,它所需的計算時間 不超過0.1 秒,R 的範圍從 0.65%到 2.47%,解的品質很好。 c

表4.5 在不同的( , )T D 情境下R 的結果 c

(1) (2)

(

α

=

α

=50,

β

(1) =

β

(2)=2,

θ

(1) =

θ

(2) =0.8, m=200, and h= 1)

表4.6 在不同的 ( , )T D 情境下,OPS 演算法所需的計算時間 (

α

(1) =

α

(2)=50,

β

(1) =

β

(2) =2,

θ

(1) =

θ

(2) =0.8, m=200, and h=1) Demand T = 2 T =3 T = 4 T =5 T =6 T =7

10 13.23% 7.57% 15.69% 20.30% 24.42% 27.34%

20 2.40% 3.61% 7.42% 9.34% 13.66% 17.42%

30 1.19% 2.30% 4.59% 5.63% 8.09% 10.32%

40 0.88% 1.68% 3.32% 4.01% 5.67% 7.11%

50 0.70% 1.33% 2.60% 3.12% 4.36% 5.41%

60 0.58% 1.10% 2.14% 2.55% 3.54% 4.37%

70 0.50% 0.94% 1.82% 2.15% 2.98% 3.66%

80 0.44% 0.82% 1.58% 1.87% 2.58% 3.16%

100 0.35% 0.65% 1.25% 1.47% 2.03% 2.47%

Demand T = 2 T =3 T = 4 T =5 T =6 T =7 10 0 sec 0.02 sec 0.14 sec 0.28 sec 0.52 sec 0.84 sec 20 0 sec 0.25 sec 4.03 sec 10.09 sec 19.34 sec 31.19 sec 30 0.01 sec 1.55 sec 37.08sec 1.58 min 3.06 min 4.97 min 40 0 sec 5.66 sec 3.12 min 9.19 min 17.19 min 25.53 min 50 0.01 sec 15.95 sec 11.20 min 29.14 min 56.78 min 1.54 hr 60 0.03 sec 37.77 sec 32.13 min 1.40 hr 2.73 hr 4.44 hr 70 0.05 sec 1.32 min 1.32 hr 3.44 hr 6.81 hr 10.96 hr 80 0.06 sec 2.49 min 2.86 hr 7.51 hr 14.69 hr 1.17 day 100 0.11 sec 7.37 min 10.66 hr 1.17 day 2.28 day 3.88 day

範例 2:IG 分配的參數對最佳投料量的影響

為了觀察 IG 分配的良率參數(

θ θ

(1), (2))對最佳投料量N st*( ) (t = kt(1)*,kt(2)*)的 影響,我們也執行288 個例子,這 288 個例子的參數值和範例 1 設定值相同。實 驗結果我們發現,良率(

θ θ

(1), (2))愈高最佳投料量愈大,只有少數是例外。

為了佐證良率(

θ θ

(1), (2))愈高最佳投料量愈大,只有少數是例外這個發現,

我們列舉一個範例,呈現各期的最佳投料量,這個例子各參數值的設定是T =5, 10

D= ,

α

(1)=50,

α

(2) =50,

β

(1) = ,2

β

(2) = ,2 h=1和m=100。我們針對良 率 的 高 低 分 成 二 個 生 產 情 境 , 低 良 率 是(

θ θ

(1), (2)) (0.6,0.6)= ; 高 良 率 是

(1) (2)

(

θ θ

, ) (0.8,0.8)= 。將第 1 期到第 5 期的最佳投料量分別整理在表 4.7 至表 4.11。由於每一期的狀態個數太多,我們只擇列BtDt的狀態,以s1 =(10, )B1 為 例,B1可能的個數是40 個,亦即0≤B1 ≤40 (= T t D− ⋅ = − ⋅) (5 1) 10 40= ,我們只 擇列B1=0,1, 2, ...,10,這11 個狀態,其餘的狀態則省略。

表4.7 t=1的最佳投料量

表4.8 t=2的最佳投料量

表4.9 t=3的最佳投料量

(0.6,0.6)低良率 (0.8,0.8)高良率 (0.6,0.6)低良率 (0.8,0.8)高良率 s3

(1)*

k3 k3(2)* k3(1)* k3(2)*

s3

(1)*

k3 k3(2)* k3(1)* k3(2)*

(10,0) 0 0 10 0 (7,3) 0 0 7 3 (10,1) 0 0 9 0 (7,4) 0 0 7 3 (10,2) 0 0 10 2 (7,5) 0 0 6 3 (10,3) 0 0 10 3 (7,6) 0 2 6 4 (10,4) 0 0 9 3 (7,7) 0 2 0 4 (10,5) 0 0 8 3 (6,0) 0 0 6 0 (10,6) 0 2 8 4 (6,1) 0 0 6 0 (10,7) 0 2 8 4 (6,2) 0 0 6 2 (10,8) 0 2 7 4 (6,3) 0 0 6 3 (10,9) 0 3 7 4 (6,4) 0 0 6 3 (10,10) 0 3 0 4 (6,5) 0 0 6 3 (9,0) 0 0 9 0 (6,6) 0 2 0 3 (9,1) 0 0 9 0 (5,0) 0 0 5 0 (9,2) 0 0 9 2 (5,1) 0 0 5 0 (9,3) 0 0 9 3 (5,2) 0 0 5 2 (9,4) 0 0 9 3 (5,3) 0 0 5 3 (9,5) 0 0 8 3 (5,4) 0 0 5 3 (9,6) 0 2 8 4 (5,5) 0 0 0 3 (9,7) 0 2 7 4 (4,0) 0 0 4 0 (9,8) 0 2 6 4 (4,1) 0 0 4 0 (9,9) 0 3 5 4 (4,2) 0 0 4 0 (8,0) 0 0 8 0 (4,3) 0 0 0 3 (8,1) 0 0 8 0 (4,4) 0 0 0 4 (8,2) 0 0 8 2 (3,0) 0 0 3 0 (8,3) 0 0 8 3 (3,1) 0 0 3 0 (8,4) 0 0 8 3 (3,2) 0 0 0 2 (8,5) 0 0 7 3 (3,3) 0 0 0 3 (8,6) 0 2 6 4 (2,0) 0 0 2 0 (8,7) 0 2 6 4 (2,1) 0 0 2 0 (8,8) 0 2 6 4 (2,2) 0 0 0 0 (7,0) 0 0 7 0 (1,0) 0 0 0 0 (7,1) 0 0 7 0 (1,1) 0 0 0 0 (7,2) 0 0 7 2

表4.10 t =4的最佳投料量 低良率

(0.6,0.6)

高良率 (0.8,0.8) s4

(1)*

k4 k4(2)* k4(1)* k4(2)*

(10,0) 0 0 10 0 (10,1) 0 0 10 0 (10,2) 0 0 10 2 (10,3) 0 0 10 3 (10,4) 0 0 10 3 (10,5) 0 0 9 3 (10,6) 0 0 9 3 (10,7) 0 0 9 4 (10,8) 0 2 8 4 (10,9) 0 2 8 4 (10,10) 0 2 7 4

表4.11 t=5的最佳投料量 低良率

(0.6,0.6)

高良率 (0.8,0.8) s5

(1)*

k5 k5(2)* k5(1)* k5(2)*

(10,0) 0 0 10 0

我們分析良率(

θ θ

(1), (2))愈高,最佳投料量N st*( ) (t = kt(1)*,kt(2)*)愈大的原因,

率會隨著時間而逐漸提高,當良率提高到某一個值時,為了有效地求得最佳投料 量,我們利用過去求出低良率的最佳投料量作為下界,由這個投料下界開始往上 搜尋來求得最佳投料量,即可大幅縮減計算時間。

範例 3:最佳投料量具有非單調性

為了觀察最佳投料量是否會隨著需求量的增加而嚴格遞增,我們設定各參 數值為T =6、α(1)=100、α(2) =50、

β

(1) = 、2

β

(2) = 、1

θ

(1) =0.85、

θ

(2) =0.95、

=1

hm=200。期初狀態為sT =(DT,0),需求量從1 到 60,執行 60 個例子,

求得各個需求量的最佳投料量N s ,將結果繪製在圖T*( )T 4.12。研究發現,最佳 投料量不會隨著需求量增加而嚴格遞增。為何最佳投料量不會隨著需求量增加而 嚴格遞增的原因,我們在3.3.3 節中已作說明,請參見 3.3.3 節,範例 2 中圖 3.9 的說明。

0 5 10 15 20 25 30

0 10 20 30 40 50 60

Demand Lot size

圖4.12 最佳投料量的特性

)*

2 (

k6 )*

1 (

k6

4.4 本章結論

本章探討二階段生產系統有交期限制的多次投料問題,各階段產出的良品 個數服從IG 分配。本研究的特色是,在每個投料時點可同時決定各階段的投料 量,與過去研究僅決定單一階段的投料量不同。

我們將二階段生產系統有交期限制的多次投料問題,建構成動態規劃問 題。利用動態規劃的手法求解時,因為動態規劃的網路規模是由二階段投料量的 上界所決定,若能限定二階段投料量的上界,即可縮小態規劃的網路規模,以縮 短計算時間。因此,本研究證明二階段的最佳投料量有上界:(1)第二階段的最 佳 投 料 量 不 會 超 過 需 求 量 ;(2) 證 明 第 一 階 段 的 最 佳 投 料 量 , 若 滿 足

1 (1) ( (1))Dt m

β

θ

+ ⋅ ,則第一階段的最佳投料量不會超過需求量,否則第一階段的 最佳投料量上界為D tt⋅ − ,利用最佳投料量的特性,可以縮小解的空間。 ( 1)

針對二階段生產系統有交期限制的多次投料問題,我們提出二個求解方 法,一個稱為OPS 演算法,該方法可以求得最佳解;另一個稱為啟發式演算法,

該方法可以有效地求得滿意解。我們比較這二個求解方法的績效,當需求量較大 時,建議採用啟發式演算法;當需求量較小時,建議採用OPS 演算法。

由數值範例我們觀察最佳投料量的特性,有二點重要的發現:(1)IG 分配的 良率愈高,最佳投料量愈大,只有少數是例外;(2)最佳投料量不會隨著需求量 增加而嚴格遞增。

相關文件