第三章 研究方法
3.2 演算法模組介紹
3.2.4 更新解產生器
更新解產生器包含了4 種運算子:雙點交配(standard two-point crossover)、
雙點式模擬電磁演算法(two-point electromagnetism)、共識因子(consensus operator) 和田口方法(Taguchi methods),茲將分別介紹如下。
(1) 雙點交配
雙點交配是Debels et al. (2006)的更新方法之一,交配的概念來自於基因演 算法。如圖3.7,輸入(input)為 2 條母代 SRK,隨機選取 2 個交配點,將各自介 於point 1 和 point 2 之間的 SRK 跟對方交換,可以得到 2 條子代(新的解),藉由 交換SRK 參考不同解的排序,以產生多樣化的更新解。
圖3.7 雙點交配示意圖
以下為雙點交配的釋例。首先隨機選取2 個交配點 Pmin∈[1, n-1]和 Pmax∈[2, n],其中 n 表示作業數目;D 表示[Pmin , Pmax]之間應有的最小距離。假設母代為 X1和 X2,產生第1 條子代的方法如下:
1. SRK<Pmin:將 X1小於 Pmin的SRK 減去一個很大的常數(i.e. n = 11)。
2. Pmin≦SRK≦Pmax:將 X1介於[Pmin , Pmax]的 SRK 換成 X2的SRK。
3. Pmax<SRK:將 X1大於 Pmax的SRK 加上一個很大的常數。
使上述方法就能產生出第一條子代染色體 Y1,如表3.5 所示(Pmin = 2 & Pmax = 7),而只要將 X1和 X2的角色互換就能生出第二條染色體 Y2。
SRK
SRK
SRK
SRK 兩者交換
部分SRK 母代 X1
母代 X2
子代 Y1
子代 Y2
表3.5 產生第一條子代釋例
作業 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11
X1 1 2 4 2 5 7 9 8 5 9 11
X2 1 3 6 2 7 5 8 7 3 10 11
X’2 -10 20 19 20 22
X’2 3 6 2 7 5 3
Y1 -10 3 6 2 7 5 20 19 3 20 22
另外需要注意的是,使用雙點交配產生的更新解 Y1和 Y2並不保證為SRK,
所以須要使用逐步排程法將 Y1和 Y2 (RK)解碼為 SRK。
近年以來,多數的演算法都已漸漸使用導引(guide)的方式,具有目標性的產 生新解,但Debels et al. (2006)卻使用交配這種非導引的更新方式,原因在於更 新的架構中,母代是使用品質集合 B1的最佳解,以C 的方式配對並進行雙點交2b1 配,同時因為 B1 裡的解是保有排序差異(diversity)的最佳解(總完工時間佳),所 以使用交配的方式能讓好的解互相交換排序,以期能產生近似最佳解。
(2) 雙點式模擬電磁演算法
雙點式模擬電磁演算法是Debels et al. (2006)的另一個更新方法,起初是由 Birbil & Fang (2003)所提出的方法,其概念來自於庫倫定律(Coulomb’s Law)同電 相吸、異電相斥的原理。如圖3.8 所示,將庫倫定律的概念想像在一個多維的歐 幾理德空間(Euclidian space)中有 2 條 SRK Xi ∈ B1和 Xj ∈ B2,SRK 裡每一個 Ai的排名代表 SRK 在每一個維度上的位置,而為了將較差的 Xj吸引到好的 Xi
的位置,必須經由下列2 個公式的計算:
worst best
( ) ( )
( ) ( )
j i
ji
f X f X
q f X f X
= −
− (2) 其中 f(X)表示解 X 的總完工時間
19
圖3.8 模擬電磁演算法示意圖
qji能計算出 Xi和 Xj之間的電荷量,也就是吸引的強度有多強,而 f(X worst) 代表在該空間(B1 & B2)裡的最差解,f(X best)則是最佳解。Fji則表示 Xi施加在的 Xj作用力,公式的內容是將 Xi的位置減去 Xj的位置,乘以電荷量 qji,此時可以 將 qji視為權重。計算出 Fji之後跟 Xj的SRK 相加就可以得到 Xj的新位置。
表3.6 為釋例,首先隨機選取 2 個交配點 Pmin∈[1, n-1]和 Pmax∈[2, n] (i.e. Pmin
= 2;Pmax = 7),其中 n 表示作業數目;D 表示[Pmin , Pmax]之間應有的最小距離。
SRK 為 X1和 X2,產生新解的方法如下:
1. SRK<Pmin:將 X2小於 Pmin的SRK 減去一個很大的常數(i.e. n = 11)。
2. Pmin≦SRK≦Pmax:將 X2介於[Pmin , Pmax]的 SRK 計算出 F21。 3. Pmax<SRK:將 X2大於 Pmax的SRK 加上一個很大的常數。
4. X2 + F21 + X ’2 = X ’’2
5. X ’’2以逐步排程法解碼為 X ’’’2 (SRK)。
舉例來說,X2在 A1的SRK 小於 Pmin = 2,所以 SRK 減去 n = 11,等於 X ’2
的 -10;接著 A2的SRK 介於[Pmin , Pmax]之間,因此可以用公式 2 & 3 求得 F21
如下(假設 Xworst = 19;Xbest = 15):
Xi
Xj
好的解B1
Fji
差的解B2
表3.6 產生第一條子代釋例
作業 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 ms
X1 1 2 4 2 5 7 9 8 5 9 11 15
X2 1 3 6 2 7 5 8 7 3 10 11 16
F12 -0.25 -0.5 0 -0.5 0.5 0.25 0.50
X’2 -10 19 21 22
X’’2 -10 2.75 5.5 2 6.5 5.5 19 7.25 5.50 21 22
X’’’2 1 2 4 2 5 7 9 8 5 9 11 15
21
16 15 19 15 0.25 q = − =
−
21 (2 3) 0.25 0.25 F = − ⋅ = −
求得 F21等於 -0.25 之後,代表 X2的 A2要向 X1的 A2移動 0.25 的距離,得 到2.75 的位置,以此類推可以求出新的 RK(X ’’2),最後用逐步排程法得到新的 SRK(X ’’’2)。
如上述釋例所示,雙點式模擬電磁演算法的求解數目為,將 B1和 B2集合的 解進行配對,可以有 b1×b2對,並且每一對只產生一個解。
(3) 共識因子
所謂的共識因子,其概念為一個解集合 Sc中,所有解{X1, …, XP}對作業 Ai
排序的意見。如表 3.7 為一個 n × n 的機率性矩陣 M,稱為共識矩陣(consensus matrix),其中每一格 mij表示 Sc裡的解認為作業 Ai應該在作業 Aj前執行的共識比 率。例如,m42表示百分之70 的解認為 A4應該在 A2前執行比較好。
使用共識因子(吳政翰, 2006)來產生新的解,即是希望可以從上一代好的解 尋找資訊,建立一個導引(guided)機制,讓好的排序保留,不好的排序則自然淘 汰,最終能產生近似最佳解。產生新染色體的方法依序如下:
21
表3.7 共識矩陣 M
作業 ( j )
M 1 2 3 4 5 6 7 8 9 10 11
1 1 1 1 1 1 1 1 1 1 1
2 0 1 0.3 0.9 1 1 1 0.6 1 1 3 0 0 0 0.3 0.3 1 1 0.3 1 1
4 0 0.7 1 0 1 1 1 0.8 1 1
5 0 0.1 0.7 1 1 1 1 0.3 1 1
6 0 0 0.7 0 0 1 1 0 1 1
7 0 0 0 0 0 0 0 0 0.5 1
8 0 0 0 0 0 0 1 0 1 1
9 0 0.4 0.7 0.2 0.7 1 1 1 1 1
10 0 0 0 0 0 0 0.5 0 0 1
作業 ( i )
11 0 0 0 0 0 0 0 0 0 0
1. 建立共識矩陣
流程如圖3.9,共識矩陣 M(n × n matrix)初始為一個 0 矩陣,從 Sc中依序抽 出每一條解,並且計算該解的對偶優先矩陣 Q,形成新矩陣 M( M = M + Q)。
計算對偶優先矩陣的方法如下:首先初始一個矩陣 Q = [qij] , (1≦i, j≦n)為 0 矩陣,從 Sc中選出一條解 Xp(1≦p≦P),例如表 3.1,X1 = {1; 2; 4; 5; 7; 2; 8; 9; 5;
10; 11}。其中 X1在 A1的排名為1,小於 A2的排名2,所以 q12加1;A2的排名為 2,小於 A3的排名4,所以 q23加1…依此類推直到計算完矩陣 Q (表 3.8),如果 有排名相同的情形就改成加0.5。
計算完所有矩陣 Q 之後,接著將矩陣 M 標準化為 M = M / N(Sc),N(Sc)代表 解集合 Sc裡解的總個數,如表3.9 是以 30 個解為例。由於共識矩陣有對偶的特 性,所以用公式(5)Mij+Mji = 可以計算出另一半的共識比率,最終結果如表 3.71 的矩陣。
先前提到,計算對偶優先矩陣的方法共有3 種:No weighting、Linear weighting 和Power weighting。上述計算方法是 No weighting,也就是累加 qij的方式是加1;
Linear weighting 則是考慮總完工時間 ms 的重要性,經由計算求得累加的數字
23
表3.8 對偶優先矩陣 Q 作業 ( j )
Q 1 2 3 4 5 6 7 8 9 10 11
1 1 1 1 1 1 1 1 1 1 1
2 0 1 1 1 0.5 1 1 1 1 1
3 0 0 1 1 0 1 1 1 1 1
4 0 0 0 1 0 1 1 0 1 1
5 0 0 0 0 0 1 1 0 1 1
6 0 0 0 0 0 1 1 1 1 1
7 0 0 0 0 0 0 1 0 1 1
8 0 0 0 0 0 0 0 0 1 1
9 0 0 0 0 0 0 0 0 1 1 10 0 0 0 0 0 0 0 0 0 1
作業 ( i )
11 0 0 0 0 0 0 0 0 0 0
表3.9 矩陣 M 作業 ( j )
M 1 2 3 4 5 6 7 8 9 10 11
1 30 30 30 30 30 30 30 30 30 30 2 0 30 8.5 26 30 30 30 17 30 30 3 0 0 0 9 9 30 30 9 30 30 4 0 0 0 30 30 30 30 24 30 30 5 0 0 0 0 30 30 30 8.5 30 30
6 0 0 0 0 0 30 30 0 30 30
7 0 0 0 0 0 0 0 0 15 30
8 0 0 0 0 0 0 0 0 30 30
9 0 0 0 0 0 0 0 0 30 30 10 0 0 0 0 0 0 0 0 0 30
作業 ( i )
11 0 0 0 0 0 0 0 0 0 0
2. 產生新染色體
如先前提到,以共識因子產生新解的方式是參考共識矩陣,以選擇性隨機的 方式進行排序,所以共識比率愈高表示形成某一種排序的可能性愈高。
首先建立一個空集合 Y 用來存放已排序的作業,X = {Ai ; 1≦i≦n}表示未排 序的作業集合。產生染色體 Y 的流程如下:
Step 1:建立合理區
由於任務有先後關係的限制,所以必須以共識矩陣的0、1 限制建立合理區,
將不能插入的位置排除在外。先設定 Ai的初始合理區域起點 hs = 0,迄點 he = n,
n 表示專案的作業數目,h(Ai)表示待決定的 Ai優先值(priority value)。假設目前有 N 個作業己完成排序,則對於每個 Aq∈Y (1≦q≦N),如果 miq = 0 且 h(Aq) > hs, 則 hs = h(Aq);反之若 miq = 1 且 h(Aq) < he,則 he = h(Aq)。更新完後的合理區域,
表示 Ai不論插入這個區域的哪個位置都不會違反順序限制。
For k = 1 to N /* for each task in Yh */
If miq = 0 and h(Aq) > hs,then hs = h(Aq) If miq = 1 and h(Aq) < he,then he = h(Aq) Endfor
Step 2:停止條件
當合理區建立之後,首先要判斷合理區域(包含 hs和 he)的作業數 n(Yh)是否 少於兩個,如果是則將作業 Ai插入合理區域 hs和 he,並決定優先值 h(Ai) = (hs + he) / 2;如果 n(Yh) > 2,則進行 Step 3 直到 n(Yh)≦2 為止。
25
Step 3:在合理區中選擇參考作業 Ar*
已知合理區域所有的作業集合 Yh = {Aq | hs≦h(Aq)≦he, Aq∈Y}大於 2 個,接 著要尋找參考作業 Ar*,讓 Ai決定插入合理區的哪個位置。尋找參考作業 Ar*時,
以共識比率最大的為優先,所以有2 種尋找方式,第一種是 Ai在 Aq之前共識比 率 miq最大的作業 Ak如公式(6);第二種是 Ai在 Aq之後共識比率 mqi最大的作業 Ar如公式(7)。最後將兩者的共識比率比較如公式(8)取最大的成為參考作業 Ar*。 Ak = Max{ m(Aq, Ai) },Aq∈Y (6) Ar = Max{ m(Ai, Aq) },Aq∈Y (7) Ar* = Max{ m(Ak, Ai),m(Ai, Ar) } (8)
Step 4:根據參考作業 Ar*執行伯努力(Bernoulii)試驗
尋找到參考作業 Ar*之後,必須決定 Ai要排在 Ar*之前或之後,而為了讓原 本的排序產生變異,根據 Ai與 Ar*的共識比例 mir*做為伯努力試驗的機率。試驗 成功代表 Ai排在 Ar*之前,所以 h(Ai) < h(Ar*),合理區域更新為 he = h(Ar*);試驗 失敗代表 Ai排在 Ar*之後,所以 h(Ai) > h(Ar*),合理區域更新為 hs = h(Ar*)。
Step 5:更新合理區域
實驗成功:合理區域更新為 he = h(Ar*)。
實驗失敗:合理區域更新為 hs = h(Ar*)。
更新完畢後回到Step 2。
以圖3.10 為例,要重新排序 11 個作業,A1和 A11為開始和結束節點,所以 A2直接放入 A1和 A11之間,接著要插入 A3。首先在表 3.7 的共識矩陣中,A3在 A1和 A2前的共識比率為0,所以將合理區的起點 hs設在 A2,接著 A3在 A11前的 共識比率為1,便將合理區的迄點 he設在 A11。由於合理區域的作業數 n(Yh)已小 於2,所以直接將 A3插入 A2和 A11之間的位置。
(Ar, A3)
27
用降級因子只會單純讓所有的共識降低,為此本研究結合1.2。當 mir* > 0.5 時以 0.8 降級;mir* < 0.5 時以 1.2 升級;mir* = 0.5 不調整;第四種,α= 0.8 and 1.2,
和 combined 的差別在於這種調整方式並非綜合指標,而是降級因子和升級因子 獨立產生各自的更新解。
建立共識矩陣的抽樣方法有2 種:第一種,以母體建構(b1 + b2);第二種,
母體加上雙點交配產生的新解,取28 個最佳解做為樣本。共識因子每一代產生 的新解個數為 b1×b2 (跟雙點式模擬電磁演算法相同)。
(4) 田口方法
田口方法(Taguchi, 1986 & 1987;蘇朝墩, 2002;黎正中, 2000)的起源,是由 品管大師田口玄一(Genichi Taguchi ) 博士於 1949 年間,發現傳統的實驗設計方 法並不適合實驗應用,因而逐漸發展「田口式品質工程」,簡稱為田口方法(Taguchi methods)。
田口方法的基本概念,是一種經由系統化的參數設計方法,使得產品對外在 因素的敏感度降至最低,所以重點在於如何最佳化產品的參數組合,方法是使用 直交表,目的是希望以較少的實驗次數達到最佳化的目標。田口直交表的符號說 明(Taguchi, 1987;蘇朝墩, 2002)如下:
圖3.13 田口直交表符號說明
L ( )
ab
c水準數
行數,表示因子數
表示直交表,L (Latin square) 列數,表示實驗次數
表3.10 L8(27)直交表 行(i)
L8 A1 A2 A3 A4 A5 A6 A7
L1 1 1 1 1 1 1 1 L2 1 1 2 1 2 2 2 L3 1 2 1 2 1 2 2 L4 1 2 2 2 2 1 1 L5 2 1 1 2 2 1 2 L6 2 1 2 2 1 2 1 L7 2 2 1 1 2 2 1 列
(a)
L8 2 2 2 1 1 1 2
田口博士一共設計了18 種直交表,以 L8(27)直交表為例可以描述如表 3.10,
表中共有7 個因子,每個因子 2 水準,有 8 次實驗要進行。若以專案問題來模擬,
可以將7 個因子想像成有 7 個作業,2 水準想像成有 2 條 SRK,而行列交叉欄位 Lai的內容所代表的意義為:”1”是第 1 條 SRK 的排名(rank);”2”是第 2 條 SRK 的排名。但是為了要使用田口博士所設計的直交表,必須實驗內容的因子和水準 組合都相同;然而,本研究欲探討的3 種情境 J30、J60 和 J120 並沒有相符的直 交表可以使用。為此,本研究以判斷式 2k≧n 來建構適合的直交表,以 J30(30 個作業)為例,n 為 30,所以至少需要 25 = 32 的直交表(實驗次數為 32,因子數 為31)。
介紹完田口方法的概念後,以下介紹本研究如何使用田口方法產生新解:
Step 1:建構 n 因子 2 水準直交表
Step 2:產生更新解
輸入(input)為 2 條 SRK (S1, S2),輸出(output)為 1 條 RK(Sb),依直交表的實
29
應使用 S1或 S2的SRK 才能形成最佳參數組合 Sb,必須累計 Ai在不同Lai的數值 等於1 或 2 的 1 / ms(La)總和(令 Sum1 為 Lai = 1 時的總和;令 Sum2 為 Lai = 2 時 的總和),流程如下:
For i = 1 to n For a = 1 to 2k
If Lai = 1,then Sum1 = Sum1 + (1 / ms(La)) If Lai = 2,then Sum2 = Sum2 + (1 / ms(La)) Endfor
If (Sum1 >= Sum2) Sb(Ai) = S1(Ai) else
Sb(Ai) = S2(Ai) Endfor
以圖3.3 為例,假設 2 條 SRK 為 S1 = {1; 2; 4; 2; 5; 7; 9; 8; 5; 9; 11},S2 = {1;
3; 6; 2; 7; 5; 8; 7; 3; 10; 11},因為有 11 個作業(因子),所以至少需要 24 = 16 的直 交表。如表3.11 所示,2 條 SRK 可以透過直交表產生 16 種實驗組合,由於只有 11 個作業,所以 A12到 A15的資料便省略不看。
首先計算每個實驗組合的總完工時間 ms(La),接著取倒數,最後依序從 A1
到 A11個別計算Sum1 和 Sum2 的值,並比較以決定最佳組合 Sb,由於總完工時 間為望小特性,取倒數以後變望大特性,所以Sum1 和 Sum2 的比較應該選較大 者。最後可得到 Sb = {1; 2; 4; 2; 5; 5; 8; 8; 3; 9; 11},因為這個組合是 RK,所以要
到 A11個別計算Sum1 和 Sum2 的值,並比較以決定最佳組合 Sb,由於總完工時 間為望小特性,取倒數以後變望大特性,所以Sum1 和 Sum2 的比較應該選較大 者。最後可得到 Sb = {1; 2; 4; 2; 5; 5; 8; 8; 3; 9; 11},因為這個組合是 RK,所以要