第六章 蟻群最佳化演算法與結果分析
6.1 蟻群最佳化演算法的流程
為了方便解釋蟻群最佳化演算法,本研究將蟻群最佳化演算法搭配 Sold命名 為 ACO_Snew;而搭配 Snew命名為 ACO_Sold。而兩種搭配其演化流程基本上都相 同。因此本研究將先介紹 ACO_Snew,然後再介紹 ACO_Sold。
6.1.1 ACO_Snew的進化流程
考慮一個有 N 個工件的排程問題。Snew是一個單一區段且代表整個工件的排 序;而經過解碼機制,此排序可以得到兩個決策:(1) 工件在工件族中的排序,
(2) 工件族之間的排序。一個好的染色體表示其結果是最小最大完工時間。而
ACO_Snew 得目的是得到一個好的染色體排序;而為了達成這樣的目的,本研究
將此排程問題看成是一個旅行者問題(TSP)。給定一個虛擬起始節點(Node_0),
此演算流程必須經過 N 個節點。演算法流程得目的是找到一個好的旅行者途徑 (也就是這 N 個節點的經過排序),而此途徑也就是一個好的染色體(工件排序)。
為了解釋一個世代的旅行途徑,本研究假設有一個 N+1 個節點的網絡(包含 了 Node_0)。在此網絡中,每兩個節點之間都有一個路徑,如此會產生總共C(𝑁, 2) 條路徑,如圖 6.1 所示。而每條路徑都有一個「總和特性」(也稱作績效指標);
其代表會選擇經過該條路徑的偏好程度。在本研究中,我們定義績效指標為𝜆𝑖𝑗來 表示從節點 i 到節點 j 路徑上的指標。如果𝜆𝑖𝑗越大,表示選擇經過此條路徑的機 率越高。而𝜆𝑖𝑗包含了兩個重要的特性指標—𝜏𝑖𝑗和𝜂𝑖𝑗;而這兩個指標將在之後做 詳細地描述。
45
圖 6.1 蟻群最佳化演算法的例子,其所有的路徑總數為C(𝑁, 2)
給定一個蟻群最佳化網絡,每一個世代產生一個旅程路徑的方式將介紹如下。
假設一個銷售員目前在節點 i,且還有 m 個節點尚未經過;也就是說此銷售員有 m 條路徑(也就是 m 個節點)可以選擇。在 ACO_Snew 中採用輪盤法(Dorigo &
Gambardella 2000) 來 選 擇 下 一 個 節 點 ; 因 此 , 選 擇 節 點 k 的 機 率 為 pik = 𝜆𝑖𝑘⁄(∑𝑗=𝑚𝑗=1 𝜆𝑖𝑗)。而每個銷售員都是從同一個虛擬起始節點開始進行旅程,不斷 重複上述的方式來選擇下一個節點,最後可以獲得一個旅行途徑。如果有 S 位不 同的銷售員進行旅程,我們經由輪盤法的機率性原因,使我們可能獲得 S 條不同 的旅行途徑。而在過去文獻中,銷售員通常又稱為螞蟻,這也是為何此種演算法 稱為蟻群最佳化演算法的原因。
在 ACO_Snew網絡中的績效指標是會不斷地更新;本研究定義被更新的網絡 狀態為 Wt,所以 W0為最初始的網絡狀態而 t 代表網絡被更新過的次數。此外,
Wt和 Wt+k的網絡組成是相同的,但其每條路徑上的績效指標(𝜆𝑖𝑗)卻不相同。而 Wt+1的產生是以每隻螞蟻在 Wt所產生的回饋為依據來產生。亦即,本研究會先 在 Wt世代送出 S 隻螞蟻(銷售員)來進行旅程,然後產生 S 條旅行途徑;而每一條 旅行途徑可能會有不同的績效(最大完工時間)。然後將這 S 條不同旅行途徑的績 效綜合起來,用來改變𝜆𝑖𝑗以獲得 Wt+1;而改變𝜆𝑖𝑗的方式介紹如下。
如前所述,𝜆𝑖𝑗包含了兩個重要的特性指標—𝜏𝑖𝑗和𝜂𝑖𝑗。其中,𝜂𝑖𝑗是一個穩態 的特性指標,其表示路徑從節點 i 到節點 j 的相對重要性,且在不同的 Wt其數值 都是相同的。在 ACO_Snew中,本研究定義𝜂𝑖𝑗 = 1 (𝑠⁄ 𝑖𝑗+ 𝑝𝑗),其中𝑝𝑗代表工件 j
Node_3
Node_4
Node_2 Node_0
Node_1
46
47 Step 3: Update ACO network Wt
48
Send S ants to travel through network Wt;
Obtain S traveling routes (chromosomes) and their makespans;
Obtain Wt+1 by using the ACO network updating method;
Record the best chromosome 𝜔𝑏𝑒𝑠𝑡(𝑡) and its makespan 𝐿𝑏𝑒𝑠𝑡(𝑡).
Step 4: Termination Check
If 𝐿𝑏𝑒𝑠𝑡(𝑡𝑛) = 𝐿𝑏𝑒𝑠𝑡(𝑡𝑛+ 1) = ⋯ = 𝐿𝑏𝑒𝑠𝑡(𝑡𝑛+ 𝑇𝑓), STOP;
49
在 ACO_Sold中,染色體是透過一隻螞蟻旅行整個組合式的蟻群最佳化演算 法網路來獲得,因此每一隻螞蟻都必須依序的旅行完每個子網絡。每當螞蟻走完 一個子網絡,它會自動的轉移到下一個子網絡的虛擬起始節點。透過螞蟻旅行完 整個組合式的蟻群最佳化演算法網路,我們就可以獲得其染色體。
而如前所述,ACO_Sold 和 ACO_S_new基本上是相同的進化流程,但是套用 不同的解表達法。所以 Procedure ACO_Sold和 Procedure ACO_Snew幾乎是一樣的,
除了 Wt在 ACO_Sold是一個組合式的蟻群最佳化演算法網路。在 ACO_Sold中,我 們也定義𝜂𝑖𝑗 = 1 (𝑠⁄ 𝑖𝑗+ 𝑝𝑗)且針對每一個子網絡都套用最短加工時間的法則來計 算𝜏𝑖𝑗(0)。比較特殊的是在第一個區段中,其加工時間是以每一個工件族的所有 工件加工時間總和為基準。