李志農(nóng),唐高松,肖堯先,鄔冠華
(1.南昌航空大學(xué) 無損檢測技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,南昌 330063;2.鄭州大學(xué) 機(jī)械工程學(xué)院,鄭州 450001)
蟻群優(yōu)化(Ant Colony Optimization,ACO)算法是20世紀(jì)90年代意大利學(xué)者Dorigo[1]提出的一種新型模擬進(jìn)化算法。它具有較強(qiáng)的魯棒性、良好的搜索性能和并行運(yùn)算能力。其研究已經(jīng)滲透到許多應(yīng)用領(lǐng)域,為多維動態(tài)優(yōu)化問題提供了一種新的智能方法?;赩olterra級數(shù)模型的非線性系統(tǒng)辨識已經(jīng)成為當(dāng)前非線性研究領(lǐng)域的一個熱點(diǎn),該模型的辨識實(shí)質(zhì)上是一個優(yōu)化問題,基于此,我們把蟻群優(yōu)化引入到非線性Volterra級數(shù)模型辨識中,提出了一種基于蟻群優(yōu)化的Volterra核辨識方法[2],該方法與傳統(tǒng)的基于最小二乘算法的Volterra級數(shù)模型辨識方法相比,它克服了傳統(tǒng)方法要求目標(biāo)函數(shù)連續(xù)可導(dǎo),對測量噪聲很敏感,且需要利用梯度信息等缺陷。
然而,隨著研究不斷深入,我們發(fā)現(xiàn),基于蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法存在一些不足,如在算法,蟻群中多個個體的運(yùn)動是隨機(jī)的,當(dāng)群體規(guī)模較大時,要找出一條較好的路徑需要較長的搜索時間,另外,在算法中采用了正反饋機(jī)理,正反饋過強(qiáng),很容易使優(yōu)化過程陷于局部極小,正反饋強(qiáng)度過小,則使運(yùn)行速度過慢,要得到最優(yōu)解,往往需要很長的尋優(yōu)時間。
針對基于蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法存在的以上不足,本文將自適應(yīng)的蟻群算法引入到非線性系統(tǒng)的Volterra時域核辨識中,提出了一種基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法。通過自適應(yīng)地改變記憶因子、揮發(fā)因子以及狀態(tài)轉(zhuǎn)移概率,使得本算法在搜索前期具有較大的隨機(jī)性,提高全局搜索能力,在搜索后期,降低隨機(jī)性,使算法能快速收斂。仿真結(jié)果表明,與傳統(tǒng)蟻群優(yōu)化Volterra核辨識算法對比,本文提出的算法的收斂速度與魯棒抗噪性能有了明顯提高,并具有同樣好的收斂精度。
Volterra級數(shù)模型已成為研究非線性系統(tǒng)的強(qiáng)有力的模型之一,它是線性系統(tǒng)脈沖響應(yīng)函數(shù)模型對非線性系統(tǒng)的直接擴(kuò)展,能夠描述一大類非線性系統(tǒng)。非線性系統(tǒng)的Volterra時域、頻域核屬于非參數(shù)模型,它不依賴于系統(tǒng)的輸入,因而完全反映了系統(tǒng)的本質(zhì)特性。
設(shè)非線性系統(tǒng)可用記憶長度為M的N階Volterra級數(shù)模型近似描述,其離散截斷形式的Volterra級數(shù)模型可以描述為[3,4]:
其中,hn(m1,…,mn)稱為非線性系統(tǒng)的 n階 Volterra時域核,又稱為廣義脈沖響應(yīng)函數(shù)。hn(m1,…,mn)具有對稱性,且對稱性是唯一的,利用Volterra核的對稱性,可大大減小用Volterra級數(shù)模型描述非線性系統(tǒng)所需的參數(shù)數(shù)目,從而可大大減小計算量。
式(1)可以寫成以下形式:
式中,Y為輸出觀測向量,U為輸入矩陣,H為非線性系統(tǒng)Volterra核向量。Y,U,H的表達(dá)式如下;
由式(2)可知,Volterra核向量的辨識實(shí)質(zhì)是一個最優(yōu)參數(shù)估計問題,利用系統(tǒng)的輸入輸出數(shù)據(jù)可以辨識Volterra核向量。在此,我們采用自適應(yīng)蟻群優(yōu)化算法來求解Volterra核向量。
普通蟻群算法是通過增加行經(jīng)路徑上的信息素的辦法來強(qiáng)化較好的解。搜索開始時,信息素的分布是分散的,在算法進(jìn)化一定的迭代步數(shù)后,信息素會集中到少數(shù)邊上,搜索方向也隨之基本上確定下來。當(dāng)某些邊上的信息素強(qiáng)度明顯高于其余邊時,導(dǎo)致在搜索時,總是在少數(shù)幾條邊上進(jìn)行,這樣就會使解的結(jié)構(gòu)過于相似,搜索過程也會停頓下來,算法容易陷入局部最優(yōu)解而無法跳出。
為了解決這個問題,提出了自適應(yīng)蟻群算法(Adapt ant colony optimization,簡稱 AACO),根據(jù)解的搜索情況,動態(tài)地自適應(yīng)調(diào)整信息素以及狀態(tài)轉(zhuǎn)移因子。
在進(jìn)化前期,設(shè)定較大的信息素?fù)]發(fā)因子及較小的狀態(tài)轉(zhuǎn)移因子,使蟻群搜索的隨機(jī)性增加,使其可以充分搜索到全局最優(yōu)解的方向。進(jìn)化一定代數(shù)后,蟻群得到最優(yōu)解的大致方向,此時自適應(yīng)調(diào)整揮發(fā)因子及轉(zhuǎn)移因子,減少搜索的隨機(jī)性,蟻群就可以充分地展開局部搜索,得到最優(yōu)解。
假設(shè)要求Volterra核的有效位為a位,第i個核向量hi可以用a個十進(jìn)制數(shù)來近似表示,就可以構(gòu)造如下a×i×10+2個“城市”。城市一共有a×i+2層。第一層和最后一層分別僅含一個城市。中間a×i層,從上往下分別表示核向量hi的第一位有效數(shù)字、第二位有效數(shù)字,…,這些城市中,只有n-1與n層(n∈[2,a+2] )之間的各個城市有連接通路。設(shè)n-1層中代表十進(jìn)制數(shù)p的城市與n層代表十進(jìn)制數(shù)q的城市之間的連接上殘留的信息量為螞蟻k在一次循環(huán)中的第n層所在的城市用E(k,n)表示。當(dāng)螞蟻k由當(dāng)前所在城市E(k,n-1)=p移動到下一步到達(dá)的城市時,根據(jù)如下公式選擇[5]:
其中,f是[0,1] 區(qū)間內(nèi)的隨機(jī)數(shù),F(xiàn)0(t)稱為為狀態(tài)轉(zhuǎn)移因子,Srand表示用隨機(jī)選擇來確定下一步要移動到的城市,即根據(jù)式(7)計算第n層中每個城市的概率,然后用輪盤賭選擇法確定要移動到的城市:
其中,v(p,q)表示從當(dāng)前層的城市p轉(zhuǎn)移到下一層的城市q的概率。
在式(6)中,狀態(tài)轉(zhuǎn)移因子F0(t)是一個非常重要的參數(shù)。在基于蟻群優(yōu)化的Volterra核向量辨識方法中,F(xiàn)0(t)是一個[0,1] 上的常數(shù),缺乏自適應(yīng)。在本文的算法中,F(xiàn)0(t)的選擇如下:
其中,ε是正參數(shù),控制F0(t)的上升速度。F0(t)從0逐漸升高到Fmax。
算法初期,F(xiàn)0(t)較小,f有較大概率大于F0(t)。有很大概率選取式(6)的下半部分,即計算轉(zhuǎn)移到每個城市的概率,然后用輪盤賭選擇法確定要移動到的城市,體現(xiàn)了隨機(jī)性。算法后期,F(xiàn)0(t)較大,f有較大概率會小于F0(t)。因此有很大概率選取式(6)的上半部分,即哪條路徑上的信息素最大,就選擇哪條路徑,體現(xiàn)了確定性。
在螞蟻經(jīng)過的路徑上,按下式進(jìn)行信息素的更新。
其中,τ0為信息素的初始化值,ρ為信息素的揮發(fā)因子。
信息素?fù)]發(fā)因子ρ也是一個非常重要的參數(shù),在基于蟻群優(yōu)化的Volterra核向量辨識方法中,ρ是一個為[0,1] 上的常數(shù),缺乏自適應(yīng)性。而在本文的自適應(yīng)算法中,ρ的自適應(yīng)調(diào)整如下[6]:
其中:ρmin是預(yù)設(shè)的ρ的最小值,以防ρ太小導(dǎo)致信息素過度堆積;λ是預(yù)設(shè)的衰減常數(shù).通過式(10),信息素?fù)]發(fā)因子ρ從最大值隨著進(jìn)化代數(shù)的增加,慢慢變小,但又不會低于ρmin,導(dǎo)致信息素過度堆積。與基本蟻群優(yōu)化算法中的揮發(fā)因子選擇方法對比可以發(fā)現(xiàn),ρ在進(jìn)化初期取較大值,增加了搜索的隨機(jī)性,利于找到全局最優(yōu)解的大致方向,ρ在進(jìn)化后期逐漸變小,降低算法隨機(jī)性,利于局部搜索。顯示了本文算法的獨(dú)特優(yōu)勢。
當(dāng)所有螞蟻都走完一遍時,就開始信息素的全局更新。首先根據(jù)螞蟻的行經(jīng)路徑,以及式(5),計算出螞蟻k得到的核向量:
根據(jù)目標(biāo)函數(shù),找出對應(yīng)函數(shù)值最小的最優(yōu)螞蟻:
其中,H(k)為第k只螞蟻的行經(jīng)路徑解碼得到的核向量;D[H(k)] 為所求解問題的目標(biāo)函數(shù)。
然后對最優(yōu)路徑上的信息素按式(12)進(jìn)行全局更新:
其中 g=E(kmin,n -1),h=E(kmin,n),n∈[2,a+2] ,α為信息素的累積速度。它為[0,1] 上的常數(shù)。
重復(fù)以上步驟直到設(shè)定的循環(huán)次數(shù)或得到的解在一定的循環(huán)次數(shù)后沒有得到進(jìn)一步的改善為止。
由式(2)可以看出,利用式(2)求解Volterra級數(shù)核,實(shí)際上就是尋求一組n維的核向量使得y-最小。構(gòu)造如下目標(biāo)函數(shù):
其中,L表示系統(tǒng)的輸入輸出的數(shù)據(jù)長度。當(dāng)目標(biāo)函數(shù)D[H(k)] 取得最小時,即為最優(yōu)螞蟻。算法具體步驟如下:
(1)初始化:用一個較小的值τ0初始化所有的
(2)將所有螞蟻置于第一層唯一的一個城市。即令E(k,1)=0(k=1,2,…,K0),其中,K0為螞蟻總數(shù)。
圖1 基于AACO的Volterra核辨識算法Fig.1 Volterra kernel identification method based on the AACO
(3)根據(jù)式(6)和式(7)得到螞蟻k在第n層到達(dá)的城市E(k,N)。
(5)對每只螞蟻執(zhí)行步驟3和步驟4,直到每只螞蟻都到達(dá)最后一層。
(6)根據(jù)式(12)找出最優(yōu)螞蟻kmin,并用式(13)進(jìn)行最優(yōu)路徑的信息素濃度更新。
(7)根據(jù)式(8),式(10)自適應(yīng)調(diào)整信息素?fù)]發(fā)因子ρ(t)和狀態(tài)轉(zhuǎn)移因子F0(t)。
(8)判斷是否達(dá)到設(shè)定的迭代次數(shù),達(dá)到則輸出結(jié)果,否則轉(zhuǎn)向步驟2。
考慮如下的二階非線性模型:
由Volterra理論得,該非線性系統(tǒng)的核矢量H=[3,4,2.7,6.9,6.4,0,0,5.7,2.8,0]
在本文的算法中,選取的參數(shù)為 α=0.8,λ=0.95,ε =0.5,a=3,F(xiàn)max=0.9,τ0=0.01,K0=40,循環(huán)次數(shù)為200次。
輸入信號為方差為1的白噪聲信號。輸入、輸出疊加不同程度的噪聲干擾,采用二階Volterra級數(shù)模型對該非線性系統(tǒng)進(jìn)行建模。
首先,我們來考察本文算法的辨識精度和抗噪性能,表1給出了無噪聲情況下,本文提出的辨識方法得到的Volterra核參數(shù)的估計值,為了比較,也給出了基于傳統(tǒng)蟻群算法所得到的Volterra核參數(shù)的估計值。
表1 無噪聲情況下Volterra核參數(shù)的估計值Tab.1 The Volterra kernel estimation under the free-noise environment
由表1可知,在無噪聲的干擾下,不論是本文的辨識方法,還是基本蟻群辨識算法,Volterra核參數(shù)的估計值和實(shí)際真值都完全一致,自適應(yīng)蟻群辨識算法與基本蟻群辨識算法一樣,都得到了非常高的辨識精度。
同時,我們也考察了輸入輸出端加入不同程度干擾下的Volterra核參數(shù)的辨識精度和該算法的抗噪能力,表2給出了信噪比20 dB下,自適應(yīng)蟻群優(yōu)化辨識方法和基本蟻群優(yōu)化辨識方法得到的Volterra核參數(shù)的估計值。
由表2可知,在輸入、輸出端加入20 dB噪聲干擾下,Volterra核參數(shù)的估計值與真值之間的誤差非常小,并沒有因?yàn)樵肼暤母蓴_而對辨識精度產(chǎn)生影響,不論是自適應(yīng)蟻群辨識算法,還是基本蟻群辨識方法,Volterra核參數(shù)的辨識結(jié)果還是非常滿意的。體現(xiàn)了本文提出的算法具有較強(qiáng)的魯棒抗噪性。
表2 SNR=20 d B時Volterra核參數(shù)的估計值Tab.2 The Volterra kernel estimation(SNR=20 dB)
接下來,討論本文提出的方法的收斂的穩(wěn)定性和快速性。圖2給出了無噪聲的情況下,基本蟻群辨識算法和自適應(yīng)蟻群辨識算法分別得到的一階核參數(shù)h1(0),二階核參數(shù)h2(1,2)的收斂曲線。這兩個參數(shù)的真值分別為 h1(0)=3.4,h2(1,2)=2.8。
圖3給出了信噪比20 dB的情況下,基本蟻群算法和自適應(yīng)蟻群算法分別得到的一階核參數(shù)h1(0)和二階核參數(shù)h2(1,2)的收斂曲線。
從Volterra核的收斂曲線來看,不論是在無噪聲環(huán)境下,還是在有噪聲干擾下,本文算法和基本蟻群算法都具有很好的收斂性和穩(wěn)定性。而本文方法的收斂速度明顯快于基本蟻群算法。其他參數(shù)的收斂曲線,同樣能反映出AACO算法的優(yōu)勢。這是因?yàn)榛谙伻簝?yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法中,蟻群中多個個體的運(yùn)動是隨機(jī)的,當(dāng)群體規(guī)模較大時,要找出一條較好的路徑需要較長的搜索時間,另外,在算法中采用了正反饋機(jī)理,正反饋過強(qiáng),容易使優(yōu)化過程陷于局部極小,正反饋強(qiáng)度過小,則使運(yùn)行速度過慢,要得到最優(yōu)解,往往需要很長的的尋優(yōu)時間。
圖2 無噪聲時h1(0),h2(1,2)的收斂曲線Fig.2 The convergence curves of the volterra kernel vectorh1(0),h2(1,2)under the free-noise environment
圖3 SNR=20dB時h1(0),h2(1,2)的收斂曲線Fig.3 The convergence curves of the volterra kernel vector h1(0),h2(1,2)(SNR=20dB)
而基于自適應(yīng)蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法能動態(tài)地自適應(yīng)調(diào)整信息素以及狀態(tài)轉(zhuǎn)移因子,減少搜索的隨機(jī)性,從而,很好地克服了基本蟻群優(yōu)化的Volterra核向量辨識方法的不足。
本文將自適應(yīng)蟻群算法引入到非線性系統(tǒng)的Volterra核辨識中,提出了一種基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法,并與基于蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法進(jìn)行了對比分析,仿真研究表明,不論是在無噪聲的干擾下,還是在有噪聲的干擾下,基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法與基于蟻群優(yōu)化的Volterra核辨識算法都能得到非常好的辨識精度和魯棒抗噪性能,從收斂曲線來看,即使在噪聲的干擾下,兩種辨識方法的收斂過程平穩(wěn),然而,相對來說,本文提出的基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法的收斂速度快于基于蟻群優(yōu)化的Volterra核辨識算法,這是因?yàn)楸疚奶岢龅姆椒軇討B(tài)地自適應(yīng)調(diào)整信息素以及狀態(tài)轉(zhuǎn)移因子,減少搜索的隨機(jī)性,很好地克服了基本蟻群優(yōu)化的Volterra核向量辨識方法中因群體規(guī)模較大而運(yùn)行速度過慢的不足。本文的研究為非線性系統(tǒng)辨識提供了一種新的有效方法,具有重要的理論價值和實(shí)際應(yīng)用價值。
[1] Dorigo M,Caro G D,Gambardella L M.Ant algorithms for discrete optimization[J] .Artificial Life,1999,5(3):137 -172.
[2] 唐高松.基于蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識及在故障診斷中應(yīng)用[D] .鄭州:鄭州大學(xué),2010.
[3] 魏瑞軒.基于Volterra級數(shù)模型的非線性系統(tǒng)辨識及故障診斷方法研究[D] .西安:西安交通大學(xué),2001.
[4] 李 湧.非線性頻譜分析理論及其在故障診斷中的應(yīng)用研究[D] .西安交通大學(xué),1999.
[5] 陳 燁.用于連續(xù)函數(shù)優(yōu)化的蟻群算法[J] .四川大學(xué)學(xué)報,2004,36(6):117-120.
[6] 王 穎,謝劍英.一種自適應(yīng)蟻群算法及其仿真研究[J] .系統(tǒng)仿真學(xué)報,2002,14(1):31- 33.