• 沒有找到結果。

第三章 問題描述與禁忌搜尋方法

3.5 禁忌搜尋法

本研究首先設計兩套禁忌搜尋法(EXTS1、EXTS2),來求解 JNWF-SCM 排 程問題,以下五個步驟說明求解過程:

(1) 起始解之產生 (2) 鄰近解之產生方法 (3) 禁忌列表

(4) 終止條件

3.5.1 起始解之產生

從文獻中探討NWF 排程問題的兩個演算法 Bertolissi[1]與 Rajendran[14],分 別做為本研究 EXTS1 與 EXTS2 演算法的起始解。然而 Bertolissi[1]所提出的方 法,原本是以最小化總流程時間總和(sum of the total flow times)為目標,為了符 合本研究的研究目標,故將此演算法修改為以總排程時間為目標,作為 EXTS1 的起始解。此兩者的原演算方法於附錄一說明。

3.5.2 鄰近解之產生方法

禁忌搜尋法在每次迭代的過程中,都會搜尋數個現行解的鄰近解,作為移步 的候選名單。過去NWF 排程問題研究方法中,較常使用的三種鄰近解方法為交 換法(exchange)、插入法(insertion)與倒反法(invertion)。故本研究的 EXTS1 與 EXTS2 演算法的鄰近解則以上述方法為基礎,延伸出一共五種鄰近解搜尋方 法,分別為:(a)任意兩點交換法,(b)任意三點交換法,(c)任意四點交換法,(d) 插入式變動法,(e)兩點間倒反法。此五種鄰近解搜尋方法說明如下:

(a) 任意兩點交換法

任意兩點交換法與之後的任意三點交換法和任意四點交換法,又稱做交換 式變動法(Swap move),其方法為任意選取現行解的兩個工件,並將此兩工件交

換其優先順序來產生新的鄰近解。

舉例說明:假設原優先序列為{ , , , , , , , }J J J J J J J J1 2 3 4 5 6 7 8 ,隨機選取兩個工 件J 與4 J ,則7 J 與4 J 交換,產生新的優先序列為7 { , , , , , , , }J J J J J J J J1 2 3 7 5 6 7 4 ,示 意圖3.10 如下:

圖3.10 任意兩點交換法移步後示意圖

(b) 任意三點交換法

任意三點交換法為隨機選取三個工件,並互相交換其優先順序來產生新的 鄰近解。

舉例說明:假設原優先序列為{ , , , , , , , }J J J J J J J J1 2 3 4 5 6 7 8 ,隨機選取三個工 件J 、1 J 與3 J ,則7 J 移至1 J 的排序位置,再將3 J 移至3 J 的排序位置,最後將7 J7 移至J 原本的排序位置,產生新的優先序列為1 { , , , , , , , }J J J J J J J J7 2 1 4 5 6 3 8 ,示意 圖3.11 如下:

圖3.11 任意三點交換法移步後示意圖

J 1 J 2 J 3 J 4 J 5 J 6 J 7 J 8

J 1 J 2 J 3 J 7 J 5 J 6 J 4 J 8

J 1 J 2 J 3 J 4 J 5 J 6 J 7 J 8

J 7 J 2 J 1 J 4 J 5 J 6 J 3 J 8 交換

移至 移至

移至

(c) 任意四點交換法

任意四點交換法為隨機選取四個工件,並互相交換其優先順序來產生新的 鄰近解。

假設原優先序列為{ , , , , , , , }J J J J J J J J ,隨機選取四個工件1 2 3 4 5 6 7 8 J 、1 J 、3 J6J ,則8 J 移至1 J 的排序位置,將3 J 移至3 J 的排序位置,再將6 J 移至6 J 的排序8 位置,最後將J 移至8 J 原本的排序位置,產生新的優先序列為1

8 2 1 4 5 3 7 6

{ , , , , , , , }J J J J J J J J ,示意圖3.12 如下:

圖3.12 任意四點交換法移步後示意圖

(d) 插入式變動法

插入式變動是從現行解中隨機選取二個不同的工件,並將此兩工件中將排 序較後面的工件移至排序較前的工件之前,得到一個新的鄰近解。

舉例說明:假設原優先序列為{ , , , , , , , }J J J J J J J J1 2 3 4 5 6 7 8 ,隨機選取兩個工 件J 與2 J ,接著將排序後面的8 J 移至8 J 前面,產生新的優先序列為2

1 8 2 3 4 5 6 7

{ , , , , , , , }J J J J J J J J ,示意圖3.13 如下:

圖3.13 插入式變動法移步後示意圖

J 1 J 2 J 3 J 4 J 5 J 6 J 7 J 8

J 8 J 2 J 1 J 4 J 5 J 3 J 7 J 6

J 1 J 2 J 3 J 4 J 5 J 6 J 7 J 8

J 1 J 8 J 2 J 3 J 4 J 5 J 6 J 7 移至

移至 移至

移至

移至

(e) 兩點間倒反法

選取任意兩個工件,將這兩工件之間的所有工件,優序顛倒產生新的鄰近解。

舉例說明:假設原優先序列為{ , , , , , , , }J J J J J J J J ,隨機選取兩個工件1 2 3 4 5 6 7 8 J 與2 J ,則8 J 與2 J 兩工件之間的所有工件優序顛倒,產生新的優先序列為8

1 8 7 6 5 4 3 2

{ , , , , , , , }J J J J J J J J ,示意圖3.14 如下:

圖3.14 兩點間工作互換法示意圖 3.5.3 禁忌列表

本研究設定禁忌列表的大小為三倍總工件數,且更新的原則是採取先進先出 法則(FIFO),將每次迭代中將取代現行解的最佳鄰紀錄在禁忌列表,紀錄的資訊 是整個工件優先序列,當禁忌列表內的禁忌名單數到達上限時,則根據先進先出 法則更新名單。

禁忌列表是用來紀錄最近多次迭代過程中所獲得的解,作為提供禁忌限制記 憶機制,以避免重複搜尋造成的循環,每次迭代所產生的鄰近解,皆會檢視此鄰 近解是否已存在於禁忌列表中,若已存在名單中則重新搜尋新的鄰近解。

3.5.4 終止條件

現行解所產生的最佳鄰近解中,即使沒有優於最佳解,此最佳鄰近解仍可取 代現行解,沒有改善的次數則須累計一次,而當沒有改善的連續次數到達所設定 的次數(epoch length),則終止演算法,並以目前的最佳解為此次演算法的最終解。

下圖是禁忌搜尋法應用於JNWF-SCM 排程問題的流程圖:

J 1 J 2 J 3 J 4 J 5 J 6 J 7 J 8

J 1 J 8 J 7 J 6 J 5 J 4 J 3 J 2

選取 選取

交換

圖3.15 禁忌搜尋法流程圖 設定起始參數

建構起始序列 並作為現行解

搜尋鄰近解

是否在禁 忌名單內

更新禁忌名單

新解是否優於 現行最佳解

更新現行最佳解 從鄰近解中選取最 優者做為新現行解

開始

最佳解未改善 次數是否達到

結束演算法,得到最終解 否

是 否

相關文件