第四章 禁忌搜尋法與結果分析
4.2 禁忌搜尋法的實驗情境與結果
此 小 節 將 描 述 實 驗 情 境 與 結 果 , 而 其 研 究 的 目 標 值 是 最 大 完 工 時 間 (makespan),比較 TS_Sold和 TS_Snew的績效表現。而其禁忌搜尋法的相關參數設 定為𝑇𝑓= 2,000且𝑞𝑠𝑖𝑧𝑒 = 𝐶2𝑛𝑠× 𝑝;其中𝑞𝑠𝑖𝑧𝑒為各區段相對應的禁忌列表儲存容量,
而機率𝑝 = 0.3,𝑛𝑠表示該區段的所有基因數目總和。此兩種演算法流程都是使 用 C++語言撰寫,而實驗的電腦配備為 AMD Athlon(tm) Ⅱ*4640 3.0Ghz CPU 以 及 4G Ram。
實驗資料的來源是跟據 Schaller et al. (2000)的文獻而來,其分成 30 個不同 的情境,而每個情境包含 30 個實例。因此會產生總共 900 個實驗實例;而每一 個實例代表唯一的排程問題。在這 30 個情境中,我們以 X-F-m 來表示其所代表 的不同情境。其中,X 表示不同的整備時間(LSU,MSU,SSU),F 表示工件族的數 目,m 表示機台的數目—有多少加工階段。SSU 表示整備時間最短,MSU 表示 整備時間為中間值而 LSU 表示整備時間最大。舉例來說,表 3.1 中的 LSU33 表 示一個大整備時間有 3 個工件族與 3 個機台的情境。
在每個情境的 30 個實例中,我們必須隨機產生以下的相關參數:每個工件 族中的工件數目(𝑛𝑓)、生產時間與每個工件族之間的整備時間。其中,𝑛𝑓是採用 間斷的單一分配(uniform)函數產生 U[1,10];而工件在每一個加工階段的生產時 間也是採用間斷的單一分配函數產生 U[1,10]。而整備時間則根據不同的整備時 間大小採用不同的方案,在 SSU 的時候是採用 U[1,20]、在 MSU 的時候是 U[1,50],
而大整備時間 LSU 則是 U[1,100]。
由於初始解會受到亂數的影響而產生不一樣的初始解,進而影響結果,造成 使用不同的亂數跑一樣的實驗會有不一樣的結果。為了避免實驗受到亂數的影響,
因此每一個實例都需要用 15 個不同的亂數種子(seed)來進行實驗。將此 15 個結 果取平均做為此實例的績效,然後再將每個情境的 30 個實例平均起來做為最後
23
評估的績效值。所以此研究為了比較此兩個方法需要做 27,000 次的實驗。
表 4.1 禁忌搜尋法的實驗結果
Scenario Makespan Computation Time
N Nw+Ne Ne Nw Cn Ct γ (%) Tn Tt
24
表 4.1 顯示了這 30 個情境的結果。而其參數解釋如下:TS_Sold所獲的的績 效為𝐶𝑡,TS_Snew所獲的的績效為𝐶𝑛;而其對應的計算時間分別為𝑇𝑡和𝑇𝑛。而為了 比較此兩種演算法的績效,此研究設定一個參數𝛾 = (𝐶𝑡− 𝐶𝑛)/𝐶𝑡。除此之外,
此研究還比較每個情境之中,新舊表達法在實例上的表現。𝑁 = 30表示每個情 境有 30 個實例,而𝑁𝑒表示𝛾 = 0的實例個數,而𝑁𝑤代表𝛾 > 0的實例個數。𝑁𝑤 + 𝑁𝑒 為 TS_Snew與 TS_Sold比較勝過或平手的總數量。如果𝑁𝑤 + 𝑁𝑒越大表示 TS_Snew
有明顯的贏過 TS_Sold。
由表 4.1 可得到在這 30 個情境下𝑁𝑤 + 𝑁𝑒 = 𝑁,而𝛾最好為 3.37%最差也有 1.41%,平均為 2.76%;表示 TS_Snew明顯的比 TS_Sold績效來的好。而此研究也 進行了統計上的檢定,其檢定方式是對 900 個實驗實例進行成對 t 檢定。首先計 算每一個實例的績效差異𝑑 =𝐶̅̅̅−𝐶𝑡𝐶̅̅̅̅𝑛
̅̅̅𝑡 ,其中𝐶̅ 和𝐶𝑡 ̅̅̅分別表示這兩種演算法在此實例𝑛 中的 15 實驗平均值。而 t 值可以根據公式 𝑡0 =𝑆 𝑑̅
𝑑⁄√𝑛 獲得,其中𝑑̅與𝑆𝑑分別表 示這 900 個實例的平均與變異數。因此此研究得到的 t 值為𝑡0 = 50.05 >
𝑡0.025,899 = 1.96,這表示 TS_Snew在 95%的信心水準下明顯的比 TS_Sold績效好。
除此之外,在表 4.1 中,𝑇𝑡和𝑇𝑛分別表示此兩種演算法的計算時間。然而我 們可以發現其計算時間都只需要幾分鐘,在實務上是可以接受的;因此在此研究 中就不討論計算時間的議題。
25