• 沒有找到結果。

第三章 以改良式基因演算法求解製造單元排程問題

3.4 四種基因演算法求解步驟

3.4.1 GA-T ( S max ) 求解步驟

GA-T 為傳統基因演算法,Smax表示 GA-T 傳統基因演算法產生新的解的最大次數,

即為演算法的結束條件,其詳細操作方法如下:

一、適應函數定義

適應函數為基因演算法評估染色體好壞之衡量基準,將每條染色體經由適應函數 之轉換,對應其相對之目標函數值,以利基因演算法在衍生過程中決定每條染色體之 優劣程度而加以演進。由於本研究是探討製造單元排程問題,目標在最小化最大完工 時間(Cmax)與總延遲時間(

Ti ),使產出最大且滿足兩項指標之最佳效益。

在一個給定的加工排程σ 下,由目標函數值轉換適應函數值定義如下:

P :表示初始族群染色體的數量

v :表示第 j 個染色體的目標函數值j

(

jP

)

f :表示第 j 個染色體的適應函數值j

(

jP

)

轉換方式如公式(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 求解流程圖

相關文件