• 沒有找到結果。

塔布搜尋法基本元素應用

第三章 研究方法

3.7 塔布搜尋法流程

3.7.1 塔布搜尋法基本元素應用

使用巨集啟發式演算法時,初始解的產生通常都以隨機方式產生符合題 意的解。本論文的解表達法有兩種不同的形式,若以隨機方式各自產生初始 解,即使在相同的 random number 下產生,其初始解並不相同,可能會造成 結果上的誤判。因此為了消除此影響因素,第一組初始解,必須使新表達法 與舊表達法為同一組解。本論文使用的方法為,新表達法的初始解以隨機方 式產生,舊表達法則是從新表達法轉換而來。其轉換步驟與新表達法解讀成 加工順序步驟類似,以圖 3.8 為例,首先從新表達法解讀出工件族的加工順 序,其方法為,由左至右,找尋第一次出現的工件族編號,因此可得工件族 順序 F1- F3- F2。得到工件族順序後,再解讀各工件族內的工件順序,其方 法與解讀工件族順序一樣,因此工件族 1 內的工件順序為 J3- J1- J2,工件族 2 內的工件順序 J5- J4- J6- J7,工件族 3 內的工件順序 J8- J11- J9- J10,如圖 3.9 所示。解讀出工件族加工順序與各工件族內工件加工順序後,即可依舊表達 法每各區段的意義,轉換成舊表達法的表達方式,如圖 3.10 所示。

圖 3.8 舊表達法初始解-工件族順序

圖 3.9 舊表達法初始解-工件族內工件順序

圖 3.10 舊表達法的初始解

2. 鄰近解(Neighbor Solution)

採取兩兩互換方式。例如:在某一機台上需處理工件 i、工件 j 與工件 k,

起始加工順序先做工件 i 在加工工件 j 最後在加工工件 k,故起始解為 i→j→k,

依本論使用之鄰近解定義,鄰近解有{j → i →k}、{k→ j→i}與{i→ k→j}三組 鄰近解。本研究採取舊表達法與新表達法表示工件加工順序,兩種不同的表 達法,在搜尋鄰近解上皆採用兩兩互換方式,但由於表達法不一樣,因此在 鄰近解的搜尋上也有些不同,以下將介紹這兩種表達法搜尋鄰近解的方式。

(1) 新表達法的鄰近解

於 3.5 我們已經介紹了新表達法,且已知新表達法無須分段,以一 區段表示即可,因此在鄰近解的搜尋上,只需兩兩互換即可找到所有鄰 近解。例如:已知一組新表達法其工件順序為 J1-J2-J3,依本論文的鄰 近解定義,第一組鄰近解為 J1與 J2交換,因此可得第一組鄰近解 J2- J1-J3第二組鄰近解為 J1與 J3交換,因此第二組鄰近解 J3-J2- J1。到此 J1與其 他工件皆交換過,因此 J1已經可以不須交換了。而第三組鄰近解為 J2 與 J3交換,得第三組鄰近解 J1-J3-J2。因此對於新表達法,鄰近解只需 工件兩兩互相交換即可找出所有鄰近解,而每一個工件又會附帶一個屬

性,再透過新表達法的解讀,即可排出該組鄰近解工件族的加工順序與 工件族內工件的加工順序,最後在計算該組鄰近解的目標值。新表達法 的鄰近解搜尋過程如圖 3.8 所示。

圖 3.11 新表達法鄰近解

(2) 舊表達法的鄰近解

相對於新表達法,舊表達法需分成許多區段,又因為每個區段所代 表的意義不同,在做鄰近解的搜尋時,如果與新表達法相同方式,則會 發生不合理的情況,例如,工件族 1 內的工件與工件族 2 內的工件交換,

交換後,工件族 1 內的工件交換到工件族 2,而工件族 2 內的工件交換 到工件族 1,但工件族 1 內的工件與工件族 2 內的工件,在製造性質上 並不相同或類似,所以不能將這兩類工件族的工件放置一起加工,因此 在搜尋舊表達法的鄰近解時,需分段做兩兩交換。由於需分段做兩兩交 換,因此在找一組鄰近解時,如果同時每一段都各做兩兩交換,則鄰近 解的空間實在太大,無法有效找鄰近解,因此為了解決此一問題,本論 文採用某一區段交換,其餘區段不交換的方式,提高搜尋鄰近解的效率。

做法為依區段順序,選定區段,先做選定區段內的兩兩交換,其餘區段 不交換,做完該區段的兩兩交換後,再依區段順序選定下一個區段,以 此重複,直至所有區段皆做完兩兩交換。以圖 3.9 所示為例,依區段順 序,先選定第一個區段,及工件族加工順序的區段,其加工順序為 F1-F2

兩兩交換後加工順序為 F2-F1,至於其他區段則不必做交換,因此第一 組鄰近解的工件族加工順序為 F2-F1,工件族 1 內工件的加工順序為 J3- J1-J2,工件族 2 內工件的加工順序為 J5-J4,此鄰近解在機台上的加工順 序即 J5-J4-J3- J1-J2。到此第一個區段已交換完所有鄰近解,則依區段順 序,做下一個區段做兩兩交換,其概念與做第一個區段的方式相同。下 一個區段為工件族 1 內工件的加工順序,工件加工順序為 J3- J1-J2。首 先工件族 1 交換 J3與 J1,其餘區段不做交換,所以第二組鄰近解,工 件族加工順序為 F1-F2,工件族 1 內工件加工順序為 J1-J3-J2,工件族 2 內工件加工順序 J5-J4,因此第二組鄰近解在機台上的加工順序即 J1-J3-J2-J5-J4。依相同概念,第三組鄰近解在機台上的加工順序為 J2- J1-J3-J5-J4。第四組鄰近解的加工順序為 J3-J2- J1-J5-J4。此時交換完第二 個區段內的工件,依序找下一個區段,因此第五組鄰近解加工順序為 J3- J1-J2-J4-J5。以此方式即可快速找出舊表達法的鄰近解,最後每一組 鄰近解再透過舊表達法解讀即可算出目標值。

圖 3.12 舊表達法鄰近解

3. 塔布列表

Glover(1977)學者建議塔布列表的長度為 7 或√𝑛,由於本研究在鄰近解

的定義上為兩兩互相交換,所以一組初始解所產生的鄰近解相當多,故若只 將塔布列表長度設定為 7 或√𝑛,會過早收斂,陷入區域解中,因此無法有 效利用塔布列表的功用,即避免陷入區域最佳解中。因此本論文採取 Hendizadeh et al. (2008)提出的概念,其概念為,依鄰近解的數量乘以某倍數 後的數值作為塔布列表的長度。本論文的應用在概念上相似,工件族數與工 件數 10 個以下,其塔布列表的長度為,鄰近解數量乘以三分之一。工件數 10 個以上,則為工件數乘上某一倍數,倍數隨工件數的範圍分成 2 倍、3 倍、5 倍、7 倍、9 倍、11 倍與 13 倍。其塔布列表的長度如表 3.1 所示。由 於有兩種不同的解表達方式,因此塔布列表的數量有所不同。對於新表達法,

由於不必分區段,因此塔布列表只需一個即可。而舊表達法,由於需分成 F+1 個區段,因此會有 F+1 個塔布列表。

表 3.1 塔布列表大小

工件族數 塔布列表大小 工件數 塔布列表大小 工件數 塔布列表大小

3 1 2 或 3 1 11~14 工件數*2

4 2 4 2 15~19 工件數*3

5 3 5 3 20~29 工件數*5

6 5 6 5 30~39 工件數*7

7 7 7 7 40~49 工件數*9

8 9 8 9 50~59 工件數*11

9 12 9 12 >60 工件數*13

10 15 10 15

4. 破禁準則

此世代所選定的鄰近解,其目標值優於最佳解且在塔布列表內,即符合 破禁準則。此時會先將此移步從塔布列表中移除,調整塔布列表,最後再將

此移步重新放入塔布列表內。

5. 結束準則

最佳解連續 2000 代不變即結束整個模擬搜尋。每一世代的定義為搜尋 一次完整的塔布搜尋,即從一組初始解,找尋此初始解附近的鄰近解,透過 鄰近解再找出下一次搜尋的起始解,即為一次完整的塔布搜尋。

相關文件