第三章 以改良式基因演算法求解製造單元排程問題
3.4 四種基因演算法求解步驟
3.4.1 GA-T ( S max ) 求解步驟
GA-T 為傳統基因演算法,Smax表示 GA-T 傳統基因演算法產生新的解的最大次數,
即為演算法的結束條件,其詳細操作方法如下:
一、適應函數定義
適應函數為基因演算法評估染色體好壞之衡量基準,將每條染色體經由適應函數 之轉換,對應其相對之目標函數值,以利基因演算法在衍生過程中決定每條染色體之 優劣程度而加以演進。由於本研究是探討製造單元排程問題,目標在最小化最大完工 時間(Cmax)與總延遲時間(
∑
Ti ),使產出最大且滿足兩項指標之最佳效益。在一個給定的加工排程σ 下,由目標函數值轉換適應函數值定義如下:
P :表示初始族群染色體的數量
v :表示第 j 個染色體的目標函數值j
(
j∈P)
f :表示第 j 個染色體的適應函數值j
(
j∈P)
轉換方式如公式(2):
(
1 1)
j
j
f
= v
+ (2)
圖3.7為適應函數求取較佳染色體流程,首先將染色體解讀後決定工序,接著進入用 C++所寫的模擬程式中,算出染色體的各項目標函數值,再以此轉換成適應函數值,而 目標函數值越小,則此染色體的適應性越好。
圖 3. 7 適應函數求取較佳染色體流程
二、Crossover Operators 交配運算子
在 本 研 究 使 用 之 交 配 運 算 子 , 是 由 Syswerda(1989) 提 出 的 PBX (Position-based crossover)交配運法則,屬於多點的染色體交配。每一次的交配,會選擇兩個染色體,稱 為母代(Parent1,Parent2);經過交配後,會產生一個染色體,稱為子代(Offspring)。PBX 交配運算步驟如下:
Step 1:隨機產生一組長度與染色體相同之二元編碼字罩(Mask)。
Step 2:將Parent1內所有基因與字罩相互比對,若基因位置對映到字罩之值為「1」,
則將該基因內容複製到Offspring相同的位置上。
決定加工順序
模擬程式
計算目標函數值 染色體解讀
Fitness of Chromosome 目標函數值越小,適合度越佳
轉換適應函數值 決定加工順序
模擬程式
計算目標函數值 染色體解讀
Fitness of Chromosome 目標函數值越小,適合度越佳
轉換適應函數值
Step 3:將parent2內所有與被選入Offspring相同之基因刪除。
Step 4:將parent2未被刪除之基因,由左至右依序填入Offspring至尚未被指派的位置。
如圖 3.8 所示,Parent1 所有基因對映字罩之值為「1」的有 J2, J4, J5, J6, J9,因 此將 J2, J4, J5, J6, J9 依照 Parent1 的位置複製到 Offspring;接著在 Parent2 刪除與目前 Offspring 相同之基因並保留其順序,可得 J3, J7, J8, J1, J10 ,最後由左至右依序填入 Offspring 到尚未被指派的位置,如此,可得一組 PBX 交配後的子代,其排序為:
J3-J2-J7-J4-J5-J6-J8-J1-J9-J10。
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
Parent 1
Offspring J3 J2 J7 J4 J5 J6 J8 J1 J9 J10
J3 J7 J6 J2 J8 J1 J4 J9 J5 J10
Parent 2
0 1 0 1 1 1 0 0 1 0
Mask
圖 3. 8 Crossover PBX 運算
三、Mutation Operators 突變運算子
染色體的突變運算是為了避免在基因演算法的搜尋過程中,避免染色體過早收斂而 陷入局部最佳化的方法。本研究所使用的突變方式有兩種,分別為Swap (交換)及Insertion (插入) Wang & Uzsoy (2002)。
Swap Mutation:在隨機產生的母代染色體中,隨機選取兩個不同的基因,將其對調 產生新的子代染色體,如圖3.9。
圖 3. 9 Mutation 運算-Swap
Insertion Mutation:在隨機產生的母代染色體中,隨機選取兩個不同的基因,將在 染色體中排序較後的基因,向前插入排序較前的基因,以便產生新的子代染色體,如 圖 3.10。
圖 3. 10 Mutation 運算-Insertion 四、替換策略
在完成基因運算後,會先經過染色體解讀的動作將其解讀成Family-based,完成此 程序後再使用競賽法的替換策略,決定適合度較佳的下一代。首先求出交配或突變後產 生之子代(Offspring)染色體的目標函數值大小,再將其轉換成適合度函數值,在做交配 運算時若子代的適合度函數值大於母代(Parent1和Parent2)中之最小適合度函數值,則子 代染色體將取代最弱之母代染色體進入族群裡,反之,將拋棄此子代;當做突變運算時,
若子代的適合度函數值大於母代(Parent)之最小適合度函數值,則子代染色體將取代母代 染色體進入族群裡,反之,亦將拋棄此子代。
競賽替換法,確保每一個進入族群裡的染色體,適合程度一定比上一代優秀,因此 在給定之結束條件內能搜尋到的可行最佳解,能夠較有效率的逼近全域最佳解。
五、結束條件
若產生的解符合結束條件
(
Smax)
則停止尋找最佳解,而此解亦為最終之近似最佳 解。本研究使用一種結束條件:當所有的可行解達到指定的數量即停止,而可行解的定 義,不論在交配運算或突變運算後產生的子代,其最終有無進入族群裡,即是一組可行 解。六、GA-T 求解流程與步驟
本研究利用基因演算法求解製造單元排程問題。基因演算法可以在龐大的解題空間 n!個工件排序中找尋近似解,圖3.11為GA-T求解流程與步驟如下所示:
Step 1:隨機產生初始群體,以隨機的方式選擇染色體,形成一個起始的母體(Population)。
Step 2:計算初始群體內每一個染色體的目標函數值,並轉換成適合度函數。
Step 3:在初始群體中隨機抽取一對染色體,適合度函數高者入選為母代1(Parent 1);再 以相同方法選取母代2(Parent 2)。
Step 4:隨機產生一個0到1間的亂數,若亂數小於接受交配的機率
( )
pc ,執行Step 5;反 之,執行Step 6。Step 5:使用交配運算法則(Crossover Operators)產生一個新染色體。
Step.6:隨機產生一個0到1間的亂數,若亂數小於接受突變的機率
( )
pm ,執行Step 7;反之,執行Step 9。
Step 7:使用突變運算法則(Mutation Operators)產生一個新染色體。
Step 8:將原始母代運用交配運算子所產生的子代,經由染色體解讀後再使用選擇策略 (Selection Strategy)去篩選染色體。
Step 9:若產生的解達到終止條件則停止尋找最佳解,而此解亦為最終之近似最佳解,
反之,執行Step 4。
圖 3. 11GA-T 求解流程圖