第一章 序論
1.4 論文組織…
本論文後續章節安排如下,第二章為文獻回顧,說明過去發展的演算法,和 本論文使用的演算法文獻;第三章為本論文演算法,說明本論文如何使用在JSSP 問題上面,第四章為本論文演算法的實驗結果及分析,第五章為結論。
第二章 文獻回顧
2.1 排程問題
排程就是決定一群工件的加工順序,簡單說就是在正確的時間使用正確的資 源在正確的地點上面;在排程的領域,幾乎所有的排程問題都屬於NP-Hard 的問 題。
Graham (1979)與 Pinedo (1995),提出可以使用三個符號{α , β , γ}={機器環 境 , 加工特性 , 排程目標}來表示一個排程的環境設定:
對α 而言,通常可分為下列幾種主要的機器環境:
1. 單機問題(Single machine):單一個機器,此機器用來加工所有的工件。
2. 平行機台(Parallel Machine):多部功能相同的機器,但根據效率的不同,
分為等效機台(Identical),和不等效機台(Non-identical)。
3. 流程式生產(Flow Shop):每個工件的加工順序固定,且每個工件的加工 流程相同。
4. 零工式生產(Job Shop):每個工件的加工順序固定,但每個工件的加工 流程不一定相同。
5. 開放式生產(Open Shop):每個工件的加工順序不固定,且每個工件的 加工流程也不一定相同。
對β 而言,通常可分為下列幾種主要加工特性:
1. 能否中斷(preemptive or non- preemptive) 。 2. 先後順序限制(precedence constraint) 。 3. 當機情況(breakdown) 。
4. 無等待時間(no-wait) 。 5. 循環(cycle) 。
6. 阻塞和飢渴(blocking and starvation) 。
對γ 而言,通常可分為下列幾種主要排程目標 1. 總完工時間(Total Completion time)
2. 平均流程時間(Mean Flow time) 3. 平均延遲時間(Mean Tardiness) 4. 平均差異時間(Mean Lateness) 5. 平均早交時間(Mean Earliness)
2.2 關於 JSSP 的相關排程技術
排程技術已經有數十年的基礎,可以使用的技術很多且廣泛,不過整體上來 說可以分成兩種主要技術:
第一種是最佳化方法(optimization method),最佳化方法就如同字面上的意 義,主要為找到最佳解(optimal solution)為主,如:Carlier & Pinson (1989)年使用 的分支界線法(branch and bound ; B&B)、或是 Manne (1960)所使用的整數規劃法 (integral programming;IP),這些方法在計算的時候都需要大量的計算時間(time consuming),好處是往往都可以找到問題的最佳解,可惜的是求解的速度和問題 的大小特性有很直接的關係,於是此種方法的研究重點幾乎都放在發展有效率的 求解方式。
第二種是近似求解法(approximation method),近似求解法也如同字面上的意 義,主要以找尋近似解(near-optimal solution)為主,有時也會找到最佳解,最大 的優點就在於計算效率相當的高,且不易隨著問題的大小而大量的增加運算時間 (相較最佳化方法),為目前許多學者所喜愛。此外根據求解的方式又可以分成建 構式求解法(constructive algorithm)和迭代演算法(iterative algorithm)。
建構式求解法:Adams et al.(1988)使用的瓶頸飄移法(Shifting Bottleneck Procedure)為一標準建構演算法,主要構想為把大型問題(problem)切割成數個小 型的子問題(sub-problem),找出瓶頸子問題(bottleneck sub-problem)並最佳化各個 子問題,最後再把這些子問題合併做再次最佳化的(re-optimal)動作
迭代演算法如:基因演算法(genetic algorithm ; GA)、模擬退火法(simulated annealing ; SA)、螞蟻演算法(ant colony optimization ; ACO)、禁忌演算法(taboo search ; TS),由於求解方法是一代一代的更新,所以稱之為迭代演算法。本研究 將這些著名的基本的演算方法整理如表2.1,其他關於 JSSP 的詳細歷史回顧資訊 在Blazewicz et al(1996)和 Jain & Meeran(1999)有詳細說明。
表2.1 演算法分類
主概念 類別 演算法 論文/年代
B&B Branch and Bound
Carlier J, Pinson E (1989) Optimization
algorithms IP
Integral Programming Manne (1960) DPR
Dispatching Priority Rules Brucker et al.(1992) Constructive SB
Shifting Bottleneck Procedure
Adams et al. (1988) GA
genetic algorithm
Croce et al.
(1995) SA
simulated annealing
Van Larrhoven et al.
(1992) ACO
ant colony optimization
Dorigo & Stutzle (2004) Approximation
algorithms (meta-heuristics)
Iteration (Meta- Heuristics)
TS Taboo search
Nowicki & Smutnicki (1996)
可惜的是雖然有這樣多的演算法,但是每一個演算法都有其缺點,如螞蟻演 算法設定的參數會強烈的影響到求解的品質,禁忌演算法則是會強烈的受到初始 解的影響,由於單一的演算法都有其缺點,所以近年來許多學者結合兩種以上的 演算法來求解,稱之為混合式演算法(meta-heuristic algorithm),如 Dorndorf &
Pesch (1995)的 SB-GA,Nowicki & Smutincki (1996)的 TSAB,Pezzella & Merelli (2000)的 TSSB。
2.3 本研究的概念來源與標竿演算法
共識因子(consensus operator)是吳政翰(2006)所提出的方法,主要概念在結合 母體間的共識,並利用此共識來產生新一代的母體,以此達到世代循環的觀念(使 用 方 法 我 們 在 3.3 會 說 明 ) , 不 過 當 時 他 主 要 應 用 於 專 案 排 程 (Distributed Heterogeneous Computing ; DHC)的問題,當時在專案排程問題上他有很優異的結 果,所以我們希望可以用以延伸應用於工式排程問題(JSSP)。期待在 JSSP 問題 上也能有所表現。
田口方法是1949 年,由日本田口玄一(Genichi Taguchi)博士發明的,當初他 發明的原因是因為他於工作時發現傳統的實驗設計方法在實務上並不適用,為了 發展「品質工程」,他竭力於發展出一套新的實驗設計方法(Taguchi, 1986, 1987)。
田口方法通常用來改善品質工程,不過近年來也有人用來使用在排程上面發展,
有相當不錯的績效。
禁忌演算法(Taboo search;TS)又稱為塔布演算法,最早由 Glover (1986)所提 出的,為主要使用在「微調解」(local search)的機制,由於禁忌演算法的求解品 質十分受到母體的影響,所以通常都會搭配不同的演算法一起使用,如搭配螞蟻 演算法或是模擬退火法,此外本論文所使用的禁忌演算法的架構為 Nowicki &
Smutnicki (1996)所使用的快速禁忌演算法(fast taboo search;FT;TSAB)。
第三章 本研究演算法
本論文為應用「共識因子」(Consensus operator)和「田口方法」(Taguchi Methods)於 JSSP 問題,此外我們使用瓶頸飄移法(Shifting Bottleneck Procedure;
SB)的分解機制來作為求解基礎,並加上禁忌演算法(Taboo Search;TS)來做修正 解的動作。
根據瓶頸飄移法的概念,我們把 JSSP 問題拆解成許多子問題∏(m),每一 台機器就算是一個子問題(sub-problem),分別求解各個子問題的解,最後把所有 的子問題結合起來就是一組完整的解∏ 。
3.1 解的表達和計算
在說明本論文演算法之前,必須要先說明如何表達一組解,以及演算法原先 計算出來的應該是工作排序的結果,但這種產生解的方式並不能保證產生出來的 工件排序是合理解(feasible solution),因此需要使用另一種機制把產生出來的工 作排序轉換成合理解,本研究演算法使用Dauzere-Peres & Lasserre (1993)提出的 序限制(delayed precedence constraints;DPC)來解決此問題。
3.1.1 分離網路圖
解的概念我們使用圖3.1 來表示,需要兩種元素,第一種就是演算法計算出 來的一組解∏ ,代表每個機器中的工件加工順序,第二種就是一開始已經是先 給定的工件途程(routing);通常我們會使用分離網路圖來表示一個 JSSP 問題,
如圖3.2 就是一組擁有兩個作業,三個機台的分離網路圖,其中工件一的作業途 程為機器1Æ2Æ3,加工時間分別是 3/3/2,而工件二的作業途程為機器 1→3→2,
加工時間分別是4/4/2,框框左上角的代表作業編號,也就是作業代號 1 的是
σ
11代 表工件1 在機器 1 的作業,其中 PT(σ
11)=3;我們演算法的目標就是要找出不同
作業彼此的先後關係限制,如圖3.3 即為一組完整的解(包含原先的已知的工件途程,和演算法計算出來的作業限制),其中機器一的加工順序為作業 1→2,機器 二的加工順序為作業1→2,機器三的加工順序為作業 2→1。
Solution
Job Sequence for Each machine
Given
Job Routing
Makespan Existing
Methods (CPM)
圖3.1 解的概念圖
1/3 2/3 3/2
1/4 3/4 2/2
起點 終點
4 5 6
1 2 3
圖 3.2 起始已知的分離網路圖
1/3 2/3 3/2
1/4 3/4 2/2
起點 終點
4 5 6
1 2 3
圖 3.3 已知的工件途程和演算法計算出來的作業限制
我們使用簡單的要徑法(critical path method;CPM)來計算 JSSP 問題的完工 時間(makespan),概念就如同之前提到的圖 3.1。其中要徑法為根據工件先後關 係圖(有向分離網路圖),分別計算各個作業的最早開始時間(early start time;
EFT)、最早完工時間(early finish time;EFT)、最晚開始時間(late start time;LST)、
和最晚完工時間(late finish time;LFT),這樣一來就可以得到寬裕時間(slack time;ST)也就是 ST = EFT-EST = LFT-LST,其中寬裕時間為 0 的就是要徑(critical path;CP),要徑時間就是我們所需要的完工時間(makespan),如圖 3.4 所計算出 來的要徑長度就是14,要徑作業就是 1→2→3→5→6。
3.1.2 延遲作業順序(delayed precedence constraints)
在JSSP 這個問題之中,由於本論文使用的演算法都是產生工件在機器裡面 的順序,這種產生方式並不能保證每次產生的解都會是合理解(feasible solution) 於是Dauzere-Peres & Lasserre (1993)使用了一種轉換機制,稱之為延遲順序限制 (delayed precedence constraints ; DPC),簡單來說,會額外設定一個作業的限制式 來確保工件排定的先後關係,用以避免產生不合理解。如圖3.5 就是一個不合理 的狀態,四個工件彼此間受到牽制。
為了讓人容易了解,本文以一個小例子來說明使用DPC 的程序步驟:
假設已知一組解,M1={1Æ2},M2={2Æ1}並需把原先排定的工件排程轉換 成工件權重,權重數字越小的,有越先排定的能力,比如原先演算法計算出來的 工件排序M1{1Æ2},代表在機器 1 裡面工件的作業順序是 1Æ2,而現在轉換為 機器1 裡面工件 1 的權重為 1,工件 2 的權重為 2(權重值即為原先計算出的工件 順序),所有的機器排序都需要如此的轉換。
假設已知機器2 的工件已排入到分離網路圖,如圖 3.6。圖 3.6 表示的 X / Y 代表,工件
Y 在機器 X 上作業,也就是之前所提到的 σ
YX。下面是我們的排定程序:
1. 根據 TML 值(3.3.3 會仔細說明)決定要排入的機器 M(此例為機器 1) 2. 把該機器 M(此例為機器 1)中所有的作業(此例為 J1、
J
2),分別找尋出該作業的後續作業集合。
i.
σ
11的後續作業集合為:σ
12Æσ
22Æσ
12。 ii.σ
12的後續作業集合為:無。3. 如果有兩相同的作業屬於同一個集合之中,便額外給定一作業順序關係 (此例,由於
σ
11和σ
12在同一個作業集合裡,且σ
12為σ
11的後續作業,因 此我們便增加一限制式,限制作業σ
12要在σ
11之後完工,如圖3.7 所示。4. 開始排定作業,現在機器 1 有兩個作業可以排定(
σ
11、σ
12),去除後續 作業(2/1),只剩作業 1/1 可以排,5. 如果還有作業尚未排入,則根據剛剛排序的作業修改作業順序關係,並 回到步驟4。
6. 如果所有機器都已排序完畢,則結束程序,否之回到步驟 1。
1/1 1/2
2/2 2/1
開始 結束
圖3.5 不合理的解
1/1 1/2
2/2 2/1
開始 結束
圖3.6 機器2 的工件已經排序完畢
1/1 1/2
2/2 2/1
開始 結束
圖3.7 增加DPC 限制
1/1 1/2
2/2 2/1
開始 結束
圖3.8 合理的一組解
3.2 本論文演算法架構
下圖3.9 為本論文的整體架構圖,由於本論文演算法的組合太多,光是基本 組合表就有 18 組,此外加上一些參數調整或是流程改變更有 47 組(第四章會詳 細說明),因此本論文把基本的組合情況放在表 3.1,在此種情況之下如果針對所 有的問題去做實驗的話,不但花時間,也很沒有效益,為了快速的搜尋最好的配 方組合,本論文使用一個簡單的想法來挑選最佳配方組合,被挑選出來的配方組 合才開始針對有代表性的問題來實驗求解,比較的部分則是和跟過去的歷年文獻 做比較,用以判斷是否本論文演算法具有優異的表現。
更新解 產生器2
更新解
產生器1 修正器
C2:Consensus (linear weight)
D:Taboo 初始解
A1:RANDOM A2:ACOFT-ACO A3:ACOFT-Taboo
C3:Consensus (double weight) B:Taguchi
無
C1:Consensus (no weight)
圖3.9 整體架構圖
表3.1 基本組合表
初始解 更新解 1 更新解 2 修正解
(A1)Random 無 (C1)consensus normal (D)Taboo (A2)ACOFT-MWR(ACO) (B)Taguchi (C2)consensus linear
(A3)ACOFT-MWR(Taboo) (C3)consensus double
本論文決定最佳配方的想法相當簡單,先由過去的文獻之中找出一個具代表
本論文決定最佳配方的想法相當簡單,先由過去的文獻之中找出一個具代表