ACO演化樹建構演算法
2. 樹型建構
d :兩資料物種 i, j 之間的歐基里德距離。 ij
4.2 演算法運算流程
本節會詳細的介紹論文演算法的程序,並且一一的將程序列出,運算的流程圖:
圖4.1 ACO演化樹建構演算法流程圖
輸入相關參數
隨機放置螞蟻
螞蟻搜尋外部節點順序
更新費洛蒙濃度
所有螞蟻搜尋結束
更新費洛蒙濃度
符合螞蟻終止條件
是
是 否
否
選取節點 更新距離矩陣
符合樹型建構終止條件
否
是 完成演化樹建構
外 部 節 點 順 序 最 佳 化
樹 型 建 構
演化樹建構流程圖內容如下:
步驟一:輸入相關參數–包含螞蟻數目m、費洛蒙蒸發比率ρ、α與β值。
步驟二:隨機放置螞蟻–將m隻螞蟻隨機放置在節點上。
步驟三:螞蟻搜尋外部節點順序–每隻螞蟻隨即依據當時的資料節點蒐集狀況,計 算轉換機率,以便選擇下一個所蒐集的資料節點,逐步完成路徑選擇動作。依據ACO 中轉換規則來計算螞蟻移動分群的機率,計算公式如下:
( ) ( ) ( ) ( )
( )
( )
0
k
r s r s
k
k r u r u
r s u J r
if s J r
p
o th e r w is e
α β
α β
τ η τ η
∈
⎧ ∈
= ⎨ ⎪⎪
⎪ ⎪⎩
∑
g
g
公式4.1[4][5]( )
{ }
m ax
k
k s J r rs
k k rs rs
m p if q m
S p if p q
⎧ = ∈ >
⎪⎨ ≥
⎪⎩ 公式4.2
0< < q 1
第k隻螞蟻在位置r選取下一個位置 s 的公式。
步驟四:區域更新費洛蒙濃度–當螞蟻 k 完成路徑時,更新它遺留在路徑上的費洛 蒙量。計算公式如下:
( ) ( ) ( )
( ) ( ) ( )
1
1
, tour done by ant k 0
m k
rs rs rs
k
k rs k
t t t
if r s L t
where t
otherwise
τ ρ τ τ
ω τ
=
+ ← +
⎧ ∈
= ⎨ ⎪
⎪ ⎩
∑
g V
V
公式4.3[4][5]步驟五:所有螞蟻搜尋結束–判斷所有螞蟻是否在這一回合都完成路徑,如果沒有
就換下一隻螞蟻執行第二步驟,如果所有螞蟻都結束就換下一步驟。
步驟六:全域更新費洛蒙濃度–當所有螞蟻完成路徑時,依照螞蟻所行走的路徑長 度比例更新它遺留在路徑上的費洛蒙量。計算公式如下:
( ) ( ) ( ) ( ) ( ) ( )
1
1
, tour done by ant k 0
m k
rs rs rs k
k
k rs k
k
t t t
if r s L t
where t
otherwise currentpathlength worstpathlength
bestpathlength worstpathlength
τ ρ τ τ ξ
ω τ
ξ
=
+ ← +
⎧ ∈
= ⎨⎪
⎪⎩
= −
−
∑
g V g
V
公式4.4
步驟七:符合螞蟻終止條件、修正路徑–螞蟻終止的條件是所有的螞蟻都完成指定 的回合數,如果沒有完成所指定的回合數就執行第二步驟,如果完成就換下一步驟。
在每一隻螞蟻和所有螞蟻都完成路徑時,修正路徑。更新的方式用2-opt。方式如下:
圖4.2 2-opt例子,d(a,b) + d(c,d) < d(a,d) + d(b,c)。
步驟八:選取節點–在這一個步驟就已經完成外部節點順序最佳化,接下來就是演 化樹樹型建構部分。依照ACO得到最佳外部節點順序選取距離最短兩個節點。
步驟九:更新距離矩陣–節點選擇後,選取兩個節點更新成一個新的節點。計算新 的節點與其他節點之間的距離。首先,假設有π 節點,π =M。所有的節點依照ACO 演算法排列順序。我們依照節點選擇選取節點i和節點j,之後會產生一個新的節點 k。更新新節點和剩下的節點之間的距離,新節點k和節點i、j的距離更新公式如下︰
( ) ( )
0 .5 , , , ,
k m m i m j ij
d = d + d − d w h e r e m ∈ π m ≠ k i j
( ) ( )
/ 2 / 2 2
1 1
2 , 2
ik ij i j
jk ij ik
i im j jm
m m
d d r r
d d d
where r d r d
π π
π
π
∈π
∈= + − −
= −
= =
− ∑ − ∑
公式4.5以上為ACO建構演化樹的運算流程,接下來章節將對於演算法的可靠性,透過 小規模問題採用窮舉法找出最佳分群結果,進而驗證ACO建構演化樹演算法的可靠 性;再透過不同資料規模與不同節點分布與其他演化樹建構演算法的比較分析,來 驗證演算法的適用性。