第三章 本論文演算法
3.1 解的表達與計算
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
本論文決定最佳配方的想法相當簡單,先由過去的文獻之中找出一個具代表 性的題目,在本論文使用的是 Lawrence(1984)提出的 La29 這個題目,由於此題 目至今尚無任何演算法能找到最佳解,且需要大量的計算時間,適合做為標竿性 測試的題目;把本論文所有的演算法組合(包含參數改變的組合),都針對 La29 這個題目做 5 次實驗,且最後依據這 5 次實驗找到的平均完工時間(Mean makespan)來判斷這個演算法是否具有良好的發展性,並設定表現最好的演算法 為我們的最佳配方組合。
由於本論文使用許多不同的演算法機制,如果比較固定計算時間(CPU times) 產生的解品質,來判斷各種演算法的優劣,非常的不合情理;畢竟要比較的是求 解的品質,而不是求解的速度,所以採用另外一種停止條件,也就是使用產生的
「總新解數目」當作我們的停止條件,根據實驗結果,平均採用產生2000 萬組 新解為 La29 這個題目的停止條件(不同的題目有不同的停止條件),此外這個停 止條件是根據最主要的指標性方法,Huang & Liao (2006)發展的 ACOFT-MWR 當初在設計時候是使用320 個迭代為停止條件,本論文概括的計算平均產生新解 個數約略為2000 萬。
3.2.1 初始解
本論文演算法一共使用了三種不同的初始解,分別是RANDOM,也就是隨 機產生
N 組母體,並挑選其中最佳的 n 組當做初始母體,根據實驗發現,母體
數越多所計算出來的解品質會越好,但過多則是無意義的浪費新解個數;第二種 產生方法為ACOFT-MWR(ACO),也就是採用 ACOFT-MWR 這個方法產生出來 的 ACO 解當作初始母體,第三種方法則是 ACOFT-MWR(Taboo),也就是採用 ACOFT-MWR 這種方法產生的 Taboo 解當作初始母體,其中所謂的 ACOFT-MWR 法,是由Huang & Liao (2006)所提出的一種混合性螞蟻塔布演算法,演算邏輯如 圖3.10 所示。初始解 ACO
更新解 Taboo 最佳一組ACO解
根據Taboo結果,修改ACO參數
圖3.10 混合螞蟻塔布演算法邏輯
ACOFT-MWR 的演算想法如下,先由螞蟻演算法(ACO)來產生初始解(大約 3-5 隻螞蟻解),再由這些螞蟻解中,挑選完工時間最短的一組螞蟻解,做禁忌演 算法的計算,之後再把禁忌演算法求得的參數用來更新螞蟻演算法的費洛蒙 (pheromone)矩陣,之後便重複以上步驟,直到找到最佳解或是達到停止迭代 320 次 為 止 。 其 中 每 次 迭 代 裡 面 所 產 生 的 螞 蟻 演 算 法 解 , 就 是 本 論 文 所 謂 的 ACOFT-MWR(ACO) 解 , 而 禁 忌 演 算 法 所 得 到 的 解 就 是 本 論 文 所 謂 的 ACOFT-MWR(Taboo)解。
3.3 共識因子(consensus operator)
共 識 因 子 是 吳 政 翰(2006) 所提出的一種方法,當時他使用在專案排程 (Distributed Heterogeneous Computing; DHC)的問題,基於他的結論有很優秀的表 現,所以本論文希望可以應用到JSSP 的問題上面,期待也能有不錯的發展。以 下將針對共識因子的概念和計算方法做詳細解說。
3.3.1 共識因子架構
共識因子(consensus operator)是根據上一代解的工件排序「共識」來產生新 一代的解,好處是擁有優秀排列順序的解可以用來產生新一代解,不好的解自然 淘汰無法產生新解,在這樣的引導機制之下優秀排列順序的解會被保留起來,不 好的解自然淘汰,導致求解會慢慢的往好的解空間移動。相較於其他演算法如:
螞蟻演算法為最傑出解的更新方式,所以難免有時會落入區域最佳;基因演算法 為盲目的產生新解,缺乏整體的導引性。但本文使用的共識因子是屬於群眾智 慧,相較於單一傑出解的力量,理應會有更好的發展。
由於共識因子的導引機制是由母體所粹取的,所以對於母體的依賴性非常的 大,故在產生共識因子之前,必須要有一套好的方法來產生母體,但經過實驗發 現,光是增加母體數目(隨機產生),並不能很明確的提升共識因子的解品質,所 以借用別人的演算法作為初始母體,也就是之前所提到的ACOFT-MWR (Huang
& Liao, 2006)這個方法。其中 ACOFT-MWR(ACO)代表由這此方法抽取出 ACO 所產生的解當作母體初始解,另外 ACOFT-MWR(Taboo)則是抽取出這個演算法 裡面每代taboo 的最優秀解為母體初始值。
不過可惜的是即使改變了母體,共識因子所產生解依然無法令人滿意,於是 本論文在共識因子加入禁忌演算法(Taboo Search)來提升解的品質,關於如何使 用禁忌演算法的細節於3.5 會仔細說明。
共識因子產生解的過程主要可以分成兩個步驟,首先為建立導引機制,此導 引機制稱之為共識矩陣(consensus matrix),並根據此引導機制來產生新解。
共識因子的使用程序步驟如下:
1. 取得 Ninitial組解,把
N
initial的解放到母體P(t)裡面,此時 t=0。2. 把解由母體 P(t)抽出,並放入 setS。
3. 利用 setS 裡面的解,產生導引機制(3.3.3 會詳細說明)。
4. 根據導引機制,產生出 Nnew組新解(3.3.4 會詳細說明) 。
5. 把 P(t)和 Nnew的解放到
SSset 裡面,再由 SSset 裡面抽取出 N 組解放入 P(t),且 t = t + 1 (3.3.5 會詳細說明)。
6. 如果已達停止條件則停止程序,否之回到步驟 2。
通常停止條件有兩種方式,第一種方法為固定的迭代數,此種方法較為方 便,且計算時間較容易控制,缺點是有時候明明解空間已經收斂,卻還盲目的計 算浪費時間,或是解空間還未收斂,就匆匆停止;避免上述的情況就使用第二種 方式為設定一固定數目
N,連續 N 代最佳解都沒有更新時,才停止演算程序,這
種演算法可以避免收斂的情況發生,但由於停止的代數不固定,所以計算時間無 法掌握,只能用估計的方式進行。3.3.2 導引機制
建立導引機制:共識矩陣(Consensus Matrix)如圖 3.11 所示,必須要注意的 是,由於本文基於瓶頸飄移法的觀念把JSSP 問題拆解為|M|個小型子問題,所以 共會有|M|組共識矩陣,稱 Mi為機器
i 的共識矩陣。
建構初始矩陣
M
m(n x n matrix)由set S中抽取 一組job sequence:
Π
(m)計算job sequence matrix
A
m(n x n matrix)M
m= Mm+ Am 還有未選取的job sequence
標準化矩陣
M
產生矩陣C
m完成
Consensus Matrix Cm
set S內的
job sequence都已選取 圖3.11 共識矩陣產生流程
本研究提出的導引機制(consensus matrix , Cm,其中
m:第 m 台機器),產生
步驟如下:初始為一個0 矩陣 Mm (n × n matrix,n 為工件個數),更新方法由 setS 中抽取每組解的排列(job sequence),其中所計算出此機器 m 裡每個工件的先後關本研究提出的導引機制(consensus matrix , Cm,其中