• 沒有找到結果。

第二章 文獻探討

前面提到彈性零工式工廠排程問題主要可分為路由問題和排序問題兩個子 問題,本章節將簡單介紹各種演算法在解決兩個子問題上的作法。

2.1 路由問題

演化式演算法在解決路由問題最常使用的方法就是 Approach by localization

(AL)(Kacem et al, 2002),此作法於分配機台的基本概念就是最小化每座機台

10

分配給目前工作量最小的機台,藉以達到最小化機台工作量的目的。重複相同步 驟直到所有製程都分配完成。

Pezzella 等人(2008)提供了一個交配機制與兩個突變機制來解決路由問題,

分別為 Assignment crossover(ASX)、Assignment Mutation 和 Intelligent Mutation。

前兩者都是隨機改變機台的分配,ASX 是針對兩個親代間互相交換相同製程的 執行機台;Assignment Mutation 是隨機改變自己製程的機台分配。而 Intelligent

Mutation 則是選擇工作量最大的機台,隨機選擇一個在這機台上執行的製程,然 後重新分配該製程到工作量最小的機台。

Yazdani 等人(2010)同樣提供一個 Intelligent Mutation,作法與上述的突變 相似,只是選擇的機台為完工時間最大的機台,並將該機台上的隨機一個製程重 新分配到完工時間最小的機台。

Xia 和 Wu(2005)提出粒子群最佳化演算法(Particle Swarm Optimization Algorithm, PSO)來解決路由問題並搭配模擬退火法(Simulated Annealing, SA)

或禁忌搜尋法(Tabu Search, TS)解路由問題。粒子群演算法解決路由問題最常 使用的編碼方式為雙染色體編碼(AB string),意即將製程的機台分配與排序分開 儲存。如圖 3 所示,A string 為製程依序的分配機台;B string 為製程的執行順序。

11

A 1 3 3 2 1 1 2

O

11 O21 O22 O31 O32 O41 O42

B 2 3 1 4 4 2 3

O

21 O31 O11 O41 O42 O22 O32

圖 3:AB string 範例

更新機台分配的作法為:根據每個製程,找出在族群中該製程最常分配的機 台編號,計算與現在機台編號的差值;以及找出該製程在自己的演化過程中最常 被分配的機台編號,同樣算出差值。之後給予兩個差值不同的權重值並計算加權 值總和,最後與自己現在的機台編號加起來就成為新的機台分配。該作法由於會 產生非整數值,所以必須以四捨五入來整數化。權重值的不同表示演算法的搜尋 方向是往區域最佳解(local optimum)或往全域最佳解(global optimum)。

Xing 等人(2009)提出蟻群最佳化演算法(Ant Colony Optimization, ACO)

來記錄演化過程中各機台分配(Oij, Mk)的選擇機率。一開始把每個機台分配的 機率設為相同的值,演化過程中按照機率的高低隨機選擇機台的分配,機率越高 越容易被選到。若選到機台分配(O12, M1,則把 O12 的執行機台設為 M1。根 據解的好壞來增加或減少其機台分配的機率。

Mastrolilli 和 Gambardella ( 2000 ) 為 了 減 少 在 區 域 搜 尋 中 的 鄰 域 解

(neighborhood solution)的數量,提出了一個鄰域函式:重新插入關鍵製程。排 程中最長的路徑稱為關鍵路徑(critical path),而在關鍵路徑上的製程稱為關鍵製 程(critical operation)。此方法為:隨機選擇一個關鍵製程,並將它重新插回所有

12

機台的特定位置,這些特定位置的算法將在第三章作詳細的說明。Mastrolilli 和

Gambardella 證明了選擇這些位置插回製程將不會違反問題的限制且包含最佳解。

該鄰域函式不只會改變機台分配,同時也會改變製程的排序。

Zribi 等人(2007)使用了分支定界法(branch-and-bound algothim)決定機 台分配。分支定界法為一種暴力展開的方式,針對已排序的製程,重新尋找最佳 的分配機台方式。過程中透過上界(upper bound)和下界(lower bound)去除一 些確定無法成為最佳解的分支來加快搜尋。

2.2 排序問題

Kacem 等人(2002)的演算法在使用 AL 法解決路由問題後,使用 SPT

(shortest processing time)派工法則(dispatching rules)來解決排序問題。對目 前可進行排程的製程中,選擇執行時間最短的製程最先進行排程。

Pezzella 等人(2008)在產生初始解的排序問題中使用了三種派工法則:隨 機選擇零件,選擇剩餘工作量最大的零件和選擇剩餘製程最多的零件進行排程。

Pezzella 等人(2008)同樣還提供了一個交配機制 POX crossover與一個突變 機制 PPS mutation。POX crossover 為隨機選擇一零件並保留該零件中所有製程 在親代中的位置,剩餘的製程則換成另一個親代的順序;PPS mutation 為隨機選 擇一個製程,隨機平移到另一個合法的位置上。合法的位置為在同零件的前一個

13

製程之後且在同零件的後一個製程之前。

Xing 等人(2009)提出的蟻群最佳化演算法同樣也可使用在排序問題上。

其記錄的對象為選擇派工法則的機率。在演化過程中,越能產生優良解的派工法 則就有越高的機率會再使用。

Nowicki 和 Smutnicki(1996)提出交換關鍵製程的鄰域函式。連續在同一 台機器上執行的關鍵製程,稱為關鍵區塊(critical block)。隨機選擇一個關鍵區 塊,若關鍵區塊為關鍵製程的第一個(最後一個)區塊,則交換其最後面(最前 面)的兩個關鍵製程,若為中間的區塊,則前兩個或後兩個製程都可交換。

上面解決路由問題以及排序問題的做法皆可互相搭配組合,最主要的關鍵在 於設計一個有意義且有目的性的演算法流程來使用。很多演算法使用的方式都很 類似,但透過一個小小的機制或加入既有的知識,或許都可使演算法發揮更高的 效率。

14

相關文件