目錄
- 1.摘要
- 2.分數階微積分基礎知識
- 3.分數階蟻群算法FACA
- 4.分數階蟻群算法FACA數學證明與分析
- 5.結果展示
- 6.參考文獻
- 7.代碼獲取
- 8.算法輔導·應用定制·讀者交流
1.摘要
本文提出了一種新穎分數階蟻群算法(Fractional-Order Ant Colony Algorithm, FACA),這是一種基于分數階長期記憶的協同學習方法。整數階蟻群算法每只螞蟻根據由信息素值以及其當前位置鄰接邊上的附加信息計算出的轉移概率來選擇下一條路徑,FACA引入了分數階微積分中的長期記憶機制,通過更復雜的轉移表達式模擬具有前瞻性的決策行為,從而增強搜索能力。
2.分數階微積分基礎知識
幾種典型分數階微積分定義
3.分數階蟻群算法FACA
在傳統蟻群算法中,螞蟻在節點 i i i處計算轉移概率 p i j p_{ij} pij?,并據此按照一定規則選擇下一個節點 j j j。此過程螞蟻本身并不具備記憶能力,我們希望對該機制加以改進:即在獲取 p i j p_{ij} pij? 并轉移到節點 j j j后,繼續計算 p j k p_{jk} pjk?,選擇節點 k k k,再計算 p k l p_{kl} pkl?,依此類推,從而獲得一條未來的轉移概率序列。利用該序列,螞蟻便可在初始節點 i i i做出比傳統算法更優的選擇。
這里引入了分數階微積分中的長期記憶思想,并通過重寫轉移概率表達式來獲取前瞻性轉移序列。這種表達式的數學動因源于分數階導數理論,其用更復雜的函數替代了傳統的簡單差分表達方式。
m p i j v ( t ) = 1 f { p i j ( t ) + ∑ k = 1 N 1 ? 1 ∣ Γ ( k ? v ) Γ ( ? v ) Γ ( k + 1 ) ∣ p ( j + k ? 1 ) ( j + k ) ( t ) i f j ∈ C i m ( t ) a n d ( j + k ) ∈ C i m ( t ) 0 i f j ? C i m ( t ) ^mp_{ij}^v(t)=\frac{1}{f} \begin{cases} p_{ij}(t)+\sum_{k=1}^{N_1-1}\left|\frac{\Gamma(k-v)}{\Gamma(-v)\Gamma(k+1)}\right|p_{(j+k-1)(j+k)}(t) & ifj\in C_i^m(t) \\ & and(j+k)\in C_i^m(t) \\ 0 & ifj\notin C_i^m(t) & \end{cases} mpijv?(t)=f1?? ? ??pij?(t)+∑k=1N1??1? ?Γ(?v)Γ(k+1)Γ(k?v)? ?p(j+k?1)(j+k)?(t)0?ifj∈Cim?(t)and(j+k)∈Cim?(t)ifj∈/Cim?(t)??
其中, f = ∑ k = 0 N 1 ? 1 ∣ Γ ( k ? v ) Γ ( ? v ) Γ ( k + 1 ) ∣ f=\sum_{k=0}^{N_1-1}\left|\frac{\Gamma(k-v)}{\Gamma(-v)\Gamma(k+1)}\right| f=∑k=0N1??1? ?Γ(?v)Γ(k+1)Γ(k?v)? ?是歸一化因子, C i m ( t ) C_{i}^{m}(t) Cim?(t)表示從第 i i i 個節點到第 j j j 個節點的 v v v 階轉移概率,其中第 i i i 個節點與其相鄰節點構成了一組下一步可選節點。 m p i j v ( t ) ^{m}p_{ij}^v(t) mpijv?(t)是鄰邊 ( i , j ) (i,j) (i,j)上關于 p i j ( t ) p_{ij}(t) pij?(t)和
p ( j + k ? 1 ) ( j + k ) ( t ) p_{(j+k-1)(j+k)}(t) p(j+k?1)(j+k)?(t)的 v v v階絕對分數階差分:
p i j ( t ) = { [ τ i j ( t ) ] α [ η i j ( t ) ] β ∑ c ∈ C i m ( t ) [ τ i c ( t ) ] α [ η i c ( t ) ] β i f j ∈ C i m ( t ) 0 i f j ? C i m ( t ) p_{ij}(t)= \begin{cases} \frac{\left[\tau_{ij}(t)\right]^{\alpha}\left[\eta_{ij}(t)\right]^{\beta}}{\sum_{c\in C_{i}^{m}(t)}\left[\tau_{ic}(t)\right]^{\alpha}\left[\eta_{ic}(t)\right]^{\beta}} & ifj\in C_{i}^{m}(t) \\ 0 & ifj\notin C_{i}^{m}(t) & \end{cases} pij?(t)=? ? ??∑c∈Cim?(t)?[τic?(t)]α[ηic?(t)]β[τij?(t)]α[ηij?(t)]β?0?ifj∈Cim?(t)ifj∈/Cim?(t)??
p ( j + k ? 1 ) ( j + k ) ( t ) = { [ τ ( j + k ? 1 ) ( j + k ) ( t ) ] α [ η ( j + k ? 1 ) ( j + k ) ( t ) ] β ∑ c ∈ C ( j + k ? 1 ) m ( t ) [ τ ( j + k ? 1 ) c ( t ) ] α [ η ( j + k ? 1 ) c ( t ) ] β i f ( j + k ) ∈ C ( j + k ? 1 ) m ( t ) 0 i f ( j + k ) ? C ( j + k ? 1 ) m ( t ) p_{(j+k-1)(j+k)}(t)= \begin{cases} \frac{\left[\tau_{(j+k-1)(j+k)}(t)\right]^\alpha\left[\eta_{(j+k-1)(j+k)}(t)\right]^\beta}{\sum_{c\in C_{(j+k-1)}^m(t)}\left[\tau_{(j+k-1)c}(t)\right]^\alpha\left[\eta_{(j+k-1)c}(t)\right]^\beta} & if(j+k)\in C_{(j+k-1)}^m(t) \\ 0 & if(j+k)\notin C_{(j+k-1)}^m(t) & \end{cases} p(j+k?1)(j+k)?(t)=? ? ??∑c∈C(j+k?1)m?(t)?[τ(j+k?1)c?(t)]α[η(j+k?1)c?(t)]β[τ(j+k?1)(j+k)?(t)]α[η(j+k?1)(j+k)?(t)]β?0?if(j+k)∈C(j+k?1)m?(t)if(j+k)∈/C(j+k?1)m?(t)??
對于FACA,當 k ≥ 1 k\geq1 k≥1時,所有候選的 ( j + k ) (j+k) (j+k)節點必須為當前第 i i i個節點的鄰居節點。除了第 i i i個節點的鄰接節點外,FACA 還包括連續多個步驟中的前瞻性節點,以構造具有更強前瞻性的轉移概率。FACA 的分數階轉移概率 m p i j v ( t ) ^mp_{ij}^v(t) mpijv?(t) 利用了當前位置鄰域內的最大信息,包括 p i j ( t ) p_{ij}(t) pij?(t)和 p ( j + k ? 1 ) ( j + k ) ( t ) p_{(j+k-1)(j+k)}(t) p(j+k?1)(j+k)?(t),以提升路徑選擇的合理性,這有助于 FACA 在搜索能力與利用能力之間實現更優的分數階非線性平衡。
為了在第 t t t次迭代中盡可能避免第 m m m只螞蟻陷入局部最優,系統將候選集合中已選定的節點集記作 S i m ( t ) ? C i m ( t ) S_i^m(t)\subset C_i^m(t) Sim?(t)?Cim?(t),表示如下:
S i m ( t ) = { j if? p i j m ( t ) = max ? [ p i c v m ( t ) ] , j , c ∈ C i m ( t ) l if? d i l ( t ) ≤ ξ d i j ( t ) , l , j ∈ C i m ( t ) ? otherwise S_i^m(t) = \begin{cases} j & \text{if } p_{ij}^{m}(t) = \max\left[p_{ic}^{v\,m}(t)\right],\ j, c \in C_i^m(t) \\ l & \text{if } d_{il}(t) \leq \xi d_{ij}(t),\ l, j \in C_i^m(t) \\ \varnothing & \text{otherwise} \end{cases} Sim?(t)=? ? ??jl??if?pijm?(t)=max[picvm?(t)],?j,c∈Cim?(t)if?dil?(t)≤ξdij?(t),?l,j∈Cim?(t)otherwise?
此外,在第 t t t次迭代完成后,我們將所有螞蟻的已訪問路徑長度按從短到長進行排序( L 1 ( t ) ≤ ? ≤ L m ( t ) ≤ ? ≤ L N 3 ( t ) ≤ ? ≤ L Q a ( t ) L^1(t)\leq\cdots\leq L^m(t)\leq\cdots\leq L^{N_3}(t)\leq\cdots\leq L^{Q_a}(t) L1(t)≤?≤Lm(t)≤?≤LN3?(t)≤?≤LQa?(t)),其中 Q a Q_a Qa? 表示蟻群中螞蟻的初始總數量, L m ( t ) L^m(t) Lm(t)是第 t t t次迭代中第 m m m只螞蟻所訪問路徑的總長度。
為了充分利用第 t t t次迭代中表現優異的精英螞蟻所獲得的有價值信息,我們選擇路徑較短
的前 1 ≤ N 3 ≤ Q a 1\leq N_3\leq Q_a 1≤N3?≤Qa?只螞蟻作為精英螞蟻,并增強其已訪問路徑上的信息素濃度。
在下一次迭代FACA 的分數階信息素更新:
τ i j ( t + 1 ) = ( 1 ? ρ ) τ i j ( t ) + ∑ m = 1 N 3 ∣ Γ ( m ? v ? 1 ) Γ ( ? v ) Γ ( m ) ∣ Δ τ i j m ( t ) \tau_{ij}(\mathrm{t}+1)=(1-\rho)\tau_{ij}(\mathrm{t})+\sum_{m=1}^{N_{3}}\left|\frac{\Gamma(m-v-1)}{\Gamma(-v)\Gamma(m)}\right|\Delta\tau_{ij}^{\mathrm{m}}(t) τij?(t+1)=(1?ρ)τij?(t)+m=1∑N3?? ?Γ(?v)Γ(m)Γ(m?v?1)? ?Δτijm?(t)
第 m m m 個被選中的精英螞蟻的信息素增量 Δ τ i j m ( t ) \Delta \tau_{ij}^{m}(t) Δτijm?(t):
Δ τ i j m ( t ) = { 1 L m ( t ) if?the? m th?elitist?ant?visited?edge? ( i , j ) 0 if?the? m th?elitist?ant?doesn’t?visit?edge? ( i , j ) \Delta \tau_{ij}^{m}(t) = \begin{cases} \frac{1}{L^m(t)} & \text{if the $m$th elitist ant visited edge } (i,j) \\ 0 & \text{if the $m$th elitist ant doesn't visit edge } (i,j) \end{cases} Δτijm?(t)={Lm(t)1?0?if?the?mth?elitist?ant?visited?edge?(i,j)if?the?mth?elitist?ant?doesn’t?visit?edge?(i,j)?
4.分數階蟻群算法FACA數學證明與分析
作者給出了詳細分析,挺數學 贊~
5.結果展示
6.參考文獻
[1] Yi-Fei P U, Siarry P, Wu-Yang Z H U, et al. Fractional-order ant colony algorithm: a fractional long term memory based cooperative learning approach[J]. Swarm and Evolutionary Computation, 2022, 69: 101014.
7.代碼獲取
xx