国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法研究

2011-09-17 10:04:12李志農(nóng)唐高松肖堯先鄔冠華
振動與沖擊 2011年10期
關(guān)鍵詞:級數(shù)螞蟻向量

李志農(nóng),唐高松,肖堯先,鄔冠華

(1.南昌航空大學 無損檢測技術(shù)教育部重點實驗室,南昌 330063;2.鄭州大學 機械工程學院,鄭州 450001)

蟻群優(yōu)化(Ant Colony Optimization,ACO)算法是20世紀90年代意大利學者Dorigo[1]提出的一種新型模擬進化算法。它具有較強的魯棒性、良好的搜索性能和并行運算能力。其研究已經(jīng)滲透到許多應(yīng)用領(lǐng)域,為多維動態(tài)優(yōu)化問題提供了一種新的智能方法?;赩olterra級數(shù)模型的非線性系統(tǒng)辨識已經(jīng)成為當前非線性研究領(lǐng)域的一個熱點,該模型的辨識實質(zhì)上是一個優(yōu)化問題,基于此,我們把蟻群優(yōu)化引入到非線性Volterra級數(shù)模型辨識中,提出了一種基于蟻群優(yōu)化的Volterra核辨識方法[2],該方法與傳統(tǒng)的基于最小二乘算法的Volterra級數(shù)模型辨識方法相比,它克服了傳統(tǒng)方法要求目標函數(shù)連續(xù)可導,對測量噪聲很敏感,且需要利用梯度信息等缺陷。

然而,隨著研究不斷深入,我們發(fā)現(xiàn),基于蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法存在一些不足,如在算法,蟻群中多個個體的運動是隨機的,當群體規(guī)模較大時,要找出一條較好的路徑需要較長的搜索時間,另外,在算法中采用了正反饋機理,正反饋過強,很容易使優(yōu)化過程陷于局部極小,正反饋強度過小,則使運行速度過慢,要得到最優(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)移概率,使得本算法在搜索前期具有較大的隨機性,提高全局搜索能力,在搜索后期,降低隨機性,使算法能快速收斂。仿真結(jié)果表明,與傳統(tǒng)蟻群優(yōu)化Volterra核辨識算法對比,本文提出的算法的收斂速度與魯棒抗噪性能有了明顯提高,并具有同樣好的收斂精度。

1 非線性系統(tǒng)Volterra級數(shù)模型的建立

Volterra級數(shù)模型已成為研究非線性系統(tǒng)的強有力的模型之一,它是線性系統(tǒng)脈沖響應(yīng)函數(shù)模型對非線性系統(tǒng)的直接擴展,能夠描述一大類非線性系統(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的表達式如下;

由式(2)可知,Volterra核向量的辨識實質(zhì)是一個最優(yōu)參數(shù)估計問題,利用系統(tǒng)的輸入輸出數(shù)據(jù)可以辨識Volterra核向量。在此,我們采用自適應(yīng)蟻群優(yōu)化算法來求解Volterra核向量。

2 自適應(yīng)蟻群優(yōu)化算法

普通蟻群算法是通過增加行經(jīng)路徑上的信息素的辦法來強化較好的解。搜索開始時,信息素的分布是分散的,在算法進化一定的迭代步數(shù)后,信息素會集中到少數(shù)邊上,搜索方向也隨之基本上確定下來。當某些邊上的信息素強度明顯高于其余邊時,導致在搜索時,總是在少數(shù)幾條邊上進行,這樣就會使解的結(jié)構(gòu)過于相似,搜索過程也會停頓下來,算法容易陷入局部最優(yōu)解而無法跳出。

為了解決這個問題,提出了自適應(yīng)蟻群算法(Adapt ant colony optimization,簡稱 AACO),根據(jù)解的搜索情況,動態(tài)地自適應(yīng)調(diào)整信息素以及狀態(tài)轉(zhuǎn)移因子。

在進化前期,設(shè)定較大的信息素揮發(fā)因子及較小的狀態(tài)轉(zhuǎn)移因子,使蟻群搜索的隨機性增加,使其可以充分搜索到全局最優(yōu)解的方向。進化一定代數(shù)后,蟻群得到最優(yōu)解的大致方向,此時自適應(yīng)調(diào)整揮發(fā)因子及轉(zhuǎn)移因子,減少搜索的隨機性,蟻群就可以充分地展開局部搜索,得到最優(yōu)解。

假設(shè)要求Volterra核的有效位為a位,第i個核向量hi可以用a個十進制數(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層中代表十進制數(shù)p的城市與n層代表十進制數(shù)q的城市之間的連接上殘留的信息量為螞蟻k在一次循環(huán)中的第n層所在的城市用E(k,n)表示。當螞蟻k由當前所在城市E(k,n-1)=p移動到下一步到達的城市時,根據(jù)如下公式選擇[5]:

其中,f是[0,1] 區(qū)間內(nèi)的隨機數(shù),F(xiàn)0(t)稱為為狀態(tài)轉(zhuǎn)移因子,Srand表示用隨機選擇來確定下一步要移動到的城市,即根據(jù)式(7)計算第n層中每個城市的概率,然后用輪盤賭選擇法確定要移動到的城市:

其中,v(p,q)表示從當前層的城市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)了隨機性。算法后期,F(xiàn)0(t)較大,f有較大概率會小于F0(t)。因此有很大概率選取式(6)的上半部分,即哪條路徑上的信息素最大,就選擇哪條路徑,體現(xiàn)了確定性。

在螞蟻經(jīng)過的路徑上,按下式進行信息素的更新。

其中,τ0為信息素的初始化值,ρ為信息素的揮發(fā)因子。

信息素揮發(fā)因子ρ也是一個非常重要的參數(shù),在基于蟻群優(yōu)化的Volterra核向量辨識方法中,ρ是一個為[0,1] 上的常數(shù),缺乏自適應(yīng)性。而在本文的自適應(yīng)算法中,ρ的自適應(yīng)調(diào)整如下[6]:

其中:ρmin是預設(shè)的ρ的最小值,以防ρ太小導致信息素過度堆積;λ是預設(shè)的衰減常數(shù).通過式(10),信息素揮發(fā)因子ρ從最大值隨著進化代數(shù)的增加,慢慢變小,但又不會低于ρmin,導致信息素過度堆積。與基本蟻群優(yōu)化算法中的揮發(fā)因子選擇方法對比可以發(fā)現(xiàn),ρ在進化初期取較大值,增加了搜索的隨機性,利于找到全局最優(yōu)解的大致方向,ρ在進化后期逐漸變小,降低算法隨機性,利于局部搜索。顯示了本文算法的獨特優(yōu)勢。

當所有螞蟻都走完一遍時,就開始信息素的全局更新。首先根據(jù)螞蟻的行經(jīng)路徑,以及式(5),計算出螞蟻k得到的核向量:

根據(jù)目標函數(shù),找出對應(yīng)函數(shù)值最小的最優(yōu)螞蟻:

其中,H(k)為第k只螞蟻的行經(jīng)路徑解碼得到的核向量;D[H(k)] 為所求解問題的目標函數(shù)。

然后對最優(yōu)路徑上的信息素按式(12)進行全局更新:

其中 g=E(kmin,n -1),h=E(kmin,n),n∈[2,a+2] ,α為信息素的累積速度。它為[0,1] 上的常數(shù)。

重復以上步驟直到設(shè)定的循環(huán)次數(shù)或得到的解在一定的循環(huán)次數(shù)后沒有得到進一步的改善為止。

3 基于AACO的Volterra核辨識步驟

由式(2)可以看出,利用式(2)求解Volterra級數(shù)核,實際上就是尋求一組n維的核向量使得y-最小。構(gòu)造如下目標函數(shù):

其中,L表示系統(tǒng)的輸入輸出的數(shù)據(jù)長度。當目標函數(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層到達的城市E(k,N)。

(5)對每只螞蟻執(zhí)行步驟3和步驟4,直到每只螞蟻都到達最后一層。

(6)根據(jù)式(12)找出最優(yōu)螞蟻kmin,并用式(13)進行最優(yōu)路徑的信息素濃度更新。

(7)根據(jù)式(8),式(10)自適應(yīng)調(diào)整信息素揮發(fā)因子ρ(t)和狀態(tài)轉(zhuǎn)移因子F0(t)。

(8)判斷是否達到設(shè)定的迭代次數(shù),達到則輸出結(jié)果,否則轉(zhuǎn)向步驟2。

4 仿真研究

考慮如下的二階非線性模型:

由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)進行建模。

首先,我們來考察本文算法的辨識精度和抗噪性能,表1給出了無噪聲情況下,本文提出的辨識方法得到的Volterra核參數(shù)的估計值,為了比較,也給出了基于傳統(tǒng)蟻群算法所得到的Volterra核參數(shù)的估計值。

表1 無噪聲情況下Volterra核參數(shù)的估計值Tab.1 The Volterra kernel estimation under the free-noise environment

由表1可知,在無噪聲的干擾下,不論是本文的辨識方法,還是基本蟻群辨識算法,Volterra核參數(shù)的估計值和實際真值都完全一致,自適應(yīng)蟻群辨識算法與基本蟻群辨識算法一樣,都得到了非常高的辨識精度。

同時,我們也考察了輸入輸出端加入不同程度干擾下的Volterra核參數(shù)的辨識精度和該算法的抗噪能力,表2給出了信噪比20 dB下,自適應(yīng)蟻群優(yōu)化辨識方法和基本蟻群優(yōu)化辨識方法得到的Volterra核參數(shù)的估計值。

由表2可知,在輸入、輸出端加入20 dB噪聲干擾下,Volterra核參數(shù)的估計值與真值之間的誤差非常小,并沒有因為噪聲的干擾而對辨識精度產(chǎn)生影響,不論是自適應(yīng)蟻群辨識算法,還是基本蟻群辨識方法,Volterra核參數(shù)的辨識結(jié)果還是非常滿意的。體現(xiàn)了本文提出的算法具有較強的魯棒抗噪性。

表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ōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法中,蟻群中多個個體的運動是隨機的,當群體規(guī)模較大時,要找出一條較好的路徑需要較長的搜索時間,另外,在算法中采用了正反饋機理,正反饋過強,容易使優(yōu)化過程陷于局部極小,正反饋強度過小,則使運行速度過慢,要得到最優(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)移因子,減少搜索的隨機性,從而,很好地克服了基本蟻群優(yōu)化的Volterra核向量辨識方法的不足。

5 結(jié)論

本文將自適應(yīng)蟻群算法引入到非線性系統(tǒng)的Volterra核辨識中,提出了一種基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法,并與基于蟻群優(yōu)化的Volterra級數(shù)模型的非線性系統(tǒng)辨識方法進行了對比分析,仿真研究表明,不論是在無噪聲的干擾下,還是在有噪聲的干擾下,基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法與基于蟻群優(yōu)化的Volterra核辨識算法都能得到非常好的辨識精度和魯棒抗噪性能,從收斂曲線來看,即使在噪聲的干擾下,兩種辨識方法的收斂過程平穩(wěn),然而,相對來說,本文提出的基于自適應(yīng)蟻群優(yōu)化的Volterra核辨識算法的收斂速度快于基于蟻群優(yōu)化的Volterra核辨識算法,這是因為本文提出的方法能動態(tài)地自適應(yīng)調(diào)整信息素以及狀態(tài)轉(zhuǎn)移因子,減少搜索的隨機性,很好地克服了基本蟻群優(yōu)化的Volterra核向量辨識方法中因群體規(guī)模較大而運行速度過慢的不足。本文的研究為非線性系統(tǒng)辨識提供了一種新的有效方法,具有重要的理論價值和實際應(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] .鄭州:鄭州大學,2010.

[3] 魏瑞軒.基于Volterra級數(shù)模型的非線性系統(tǒng)辨識及故障診斷方法研究[D] .西安:西安交通大學,2001.

[4] 李 湧.非線性頻譜分析理論及其在故障診斷中的應(yīng)用研究[D] .西安交通大學,1999.

[5] 陳 燁.用于連續(xù)函數(shù)優(yōu)化的蟻群算法[J] .四川大學學報,2004,36(6):117-120.

[6] 王 穎,謝劍英.一種自適應(yīng)蟻群算法及其仿真研究[J] .系統(tǒng)仿真學報,2002,14(1):31- 33.

猜你喜歡
級數(shù)螞蟻向量
向量的分解
聚焦“向量與三角”創(chuàng)新題
Dirichlet級數(shù)及其Dirichlet-Hadamard乘積的增長性
我們會“隱身”讓螞蟻來保護自己
螞蟻
幾個常數(shù)項級數(shù)的和
向量垂直在解析幾何中的應(yīng)用
p級數(shù)求和的兩種方法
向量五種“變身” 玩轉(zhuǎn)圓錐曲線
Dirichlet級數(shù)的Dirichlet-Hadamard乘積
攀枝花市| 睢宁县| 公安县| 冀州市| 五原县| 庆安县| 尼勒克县| 高雄市| 开远市| 蚌埠市| 平山县| 苍溪县| 吉林市| 崇左市| 砀山县| 万盛区| 靖远县| 枣庄市| 岳普湖县| 嵊州市| 江津市| 当雄县| 永顺县| 济源市| 克山县| 寻乌县| 周宁县| 阿勒泰市| 安多县| 三门峡市| 高青县| 宁晋县| 江津市| 河西区| 修武县| 庄浪县| 沈阳市| 南城县| 新郑市| 南澳县| 托克托县|