方 璐,范東亮,張光宇,陳漢新
武漢工程大學(xué)機(jī)電工程學(xué)院,湖北 武漢 430205
去噪是信號(hào)處理的重要內(nèi)容,去噪的好壞對(duì)后續(xù)診斷結(jié)果的分析有著重要影響,研究非線性信號(hào)的去噪方法是近年來(lái)關(guān)注的重點(diǎn)[1]。黃名鈿等[2]使用基于粒子群優(yōu)化(particle swarm optimization,PSO)算法的參數(shù)小波閾值處理方法實(shí)現(xiàn)了對(duì)非線性信號(hào)的降噪處理。Ananth 等[3]使用基于粒子群優(yōu)化的模糊濾波器,以除去信號(hào)中的高密度圖像脈沖噪聲。這些算法都能實(shí)現(xiàn)對(duì)非線性信號(hào)的去噪,然而使用PSO 算法結(jié)構(gòu),有易陷入局部最優(yōu)解的缺陷,特別是處理多局部極值的信號(hào),收斂速度和精度不高。為改善粒子群算法的缺陷,張榮光等[4]將粗糙集理論引入粒子群算法中,構(gòu)建了離散粒子群優(yōu)化方法,加強(qiáng)了搜索能力。Kar 等[5]提出了一種基于引力搜索算法(gravitational search algorithm,GSA)的粒子群優(yōu)化算法(GSA-PSO),用于2 種常用模擬電路的優(yōu)化設(shè)計(jì),取得了不錯(cuò)的效果。
粒子濾波(particle filter,PF)算法在處理非線性問(wèn)題上具有的獨(dú)特優(yōu)勢(shì),使得粒子濾波方法成為近年來(lái)國(guó)內(nèi)外關(guān)注的重點(diǎn)[6]。已被廣泛應(yīng)用于故障診斷、導(dǎo)航定位、無(wú)線通訊、機(jī)器人定位、視覺(jué)跟蹤等諸多領(lǐng)域[7]。然而常規(guī)粒子濾波采樣過(guò)程中采用的采樣策略和選擇的次優(yōu)重要性函數(shù),使得其存在粒子貧乏和計(jì)算效率低等問(wèn)題。用智能優(yōu)化算法來(lái)優(yōu)化PF 算法的采樣結(jié)構(gòu),是現(xiàn)階段PF研究的熱點(diǎn),其中基于PSO 算法的PF 算法是智能優(yōu)化粒子濾波算法的代表之一。王爾申等[8]提出了一種基于邊緣粒子濾波和粒子群優(yōu)化的聯(lián)合參數(shù)和狀態(tài)估計(jì)的雙估計(jì)方法,提高了PF 算法的性能。然而沒(méi)有解決PSO 算法易陷入局部最優(yōu)的問(wèn)題,使得運(yùn)算結(jié)果不穩(wěn)定,去噪效果較差。為了改善PSO-PF 算法的性能,王爾申等[9]將混沌序列引入PSO-PF 算法中,還有學(xué)者將遺傳重采樣方法和PSO-PF 算法相結(jié)合[10-11],這些措施都提高了PSO-PF 算法的濾波性能,然而隨著算法的結(jié)構(gòu)變得復(fù)雜,計(jì)算量也會(huì)加大,并不適合實(shí)時(shí)的去噪處理。
本文提出一種適用于濾波降噪的新型粒子群優(yōu)化粒子濾波(novel particle swarm optimization particle filter,NPSO-PF)算法。該算法在采樣過(guò)程中通過(guò)遺傳變異控制函數(shù),使粒子優(yōu)化過(guò)程分為前后期,加快了粒子集的收斂,提高了運(yùn)算速度。同時(shí)通過(guò)變異操作,控制粒子的多樣性,避免了粒子貧乏,利用率不高的問(wèn)題。將算法用于非線性信號(hào)的降噪具有穩(wěn)定,快速,有效的優(yōu)點(diǎn)。本文首先介紹PF、PSO 和PSO-PF 算法原理并分析其缺陷,然后構(gòu)造出NPSO-PF 算法。為驗(yàn)證變異算子的性能,先進(jìn)行迭代仿真實(shí)驗(yàn),為驗(yàn)證NPSO-PF 算法的濾波性能,進(jìn)行了狀態(tài)估計(jì)實(shí)驗(yàn),為驗(yàn)證NPSO-PF 算法的濾波降噪,進(jìn)行了去噪仿真實(shí)驗(yàn)。
PF 算法的本質(zhì)是基于蒙特卡洛法的最優(yōu)貝葉斯估計(jì)。主要根據(jù)系統(tǒng)狀態(tài)向量的經(jīng)驗(yàn)條件分布產(chǎn)生的粒子樣本來(lái)模擬給定系統(tǒng)的當(dāng)前狀態(tài),然后根據(jù)各個(gè)時(shí)刻的測(cè)量值不斷修正和調(diào)整粒子的權(quán)值及位置,最后通過(guò)調(diào)整后的粒子信息修正最初的經(jīng)驗(yàn)條件分布以獲得最精確的估計(jì)值[12]。
選取非線性動(dòng)態(tài)系統(tǒng)狀態(tài)方程和觀測(cè)方程模型如下:
其中xk為k時(shí)刻的系統(tǒng)狀態(tài),yk為觀測(cè)輸出,別為非線性函數(shù)。
PF 的具體實(shí)現(xiàn)步驟如下:
步驟1:初始化。在k=0 時(shí)刻,根據(jù)P(x0)分布采樣得到{即。
歸一化重要性權(quán)值
步驟3:重采樣。根據(jù)重要性權(quán)值ω~i
k從集合中重新采樣得到k 時(shí)刻的新粒子集合,根據(jù)得到新的粒子權(quán)值。
步驟4:輸出。狀態(tài)估計(jì)為:
常規(guī)PF 算法的核心算法的主要缺陷是會(huì)出現(xiàn)樣本貧化的問(wèn)題。位于先驗(yàn)概率分布尾部的觀測(cè)概率或似然函數(shù),使權(quán)值更新后的粒子權(quán)值會(huì)很小。差異很小的粒子表示的后驗(yàn)概率,重采樣后,粒子樣本集的多樣性會(huì)很小甚至只剩單一樣本[13],從而產(chǎn)生粒子貧乏的問(wèn)題。
當(dāng)系統(tǒng)初始狀態(tài)未知時(shí),需要采集大量粒子樣本才能實(shí)現(xiàn)系統(tǒng)的狀態(tài)估計(jì)是常規(guī)粒子濾波的另一個(gè)缺陷。采集的粒子數(shù)目很小,粒子很難收斂到真實(shí)狀態(tài)附近,實(shí)現(xiàn)準(zhǔn)確的估計(jì);增大粒子集的數(shù)目,計(jì)算量增大,計(jì)算效率低下,不適合實(shí)時(shí)監(jiān)測(cè)的問(wèn)題。
PSO 算 法 是Kennedy 和Eberhart 等 于1995 年最先提出的,它通過(guò)群體中粒子個(gè)體間的協(xié)作和競(jìng)爭(zhēng)來(lái)有效的實(shí)現(xiàn)復(fù)雜空間全局最優(yōu)解的搜索,是一類模擬群體智能行為的優(yōu)化算法[14]。具體可表述為:隨機(jī)初始化一個(gè)N 維空間數(shù)量為m 的粒子 群 。 其 中 第 i 個(gè) 粒 子 位 置 為,其速度它的個(gè)體極值為,種群的全局極值為。確定上述兩個(gè)極值后,就可以根據(jù)下述公式來(lái)不斷更新粒子的速度和位置:式(5)中:r 是介于( 0,1) 區(qū)間的隨機(jī)數(shù),c1和c2統(tǒng)稱為學(xué)習(xí)因子或加速度因子,一般c1=c2=1.469 2。ω 為慣性系數(shù)。
將PSO 算法融合到PF 算法中,將最新的觀測(cè)值引入到粒子樣本的采樣過(guò)程中,并定義粒子群優(yōu)化算法中的適應(yīng)度函數(shù)為:
其中,Rt是觀測(cè)噪聲方差,Ynew是最新的觀測(cè)值,Ypred是預(yù)測(cè)觀測(cè)值。
在采樣過(guò)程中,如果粒子集分布在真實(shí)狀態(tài)附近,根據(jù)式(6)可知,粒子的適應(yīng)度值會(huì)很大。而不在真實(shí)狀態(tài)附近的粒子其適應(yīng)度值就會(huì)很小。此時(shí)利用PSO 尋優(yōu)算法,根據(jù)當(dāng)前最優(yōu)值和公式(5)不斷地更新每個(gè)粒子的速度與位置,使得粒子不斷地向真實(shí)狀態(tài)附近移動(dòng)。從而避免遺漏重要粒子,既保證了粒子的多樣性,又提高了有效粒子的使用率。
PSO-PF 算法的實(shí)質(zhì)是在PF 算法的采樣過(guò)程中先利用PSO 算法將粒子集向真實(shí)狀態(tài)附近集中,在重采樣過(guò)程中能有效的采集對(duì)估計(jì)真正起作用的粒子,從而提高PF 的效率和精度。然而傳統(tǒng)的PSO 算法在迭代后期,粒子的速度越來(lái)越小使粒子在局部空間范圍內(nèi)反復(fù)搜索,容易出現(xiàn)局部最優(yōu)現(xiàn)象。而隨著所有粒子都隨公式(5)不斷向局部最優(yōu)值移動(dòng),使粒子喪失了多樣性,從而降低了PF 的精度和效率。
為了改善常規(guī)PSO 優(yōu)化算法易陷入局部最優(yōu)解的問(wèn)題,鑒于遺傳變異算法的變異思想,將遺傳算法的操作算子引入到PSO 算法中[15]。其具體做法是引入一個(gè)變異控制函數(shù),用來(lái)控制變異的粒子數(shù)目,以保持種群內(nèi)部的多樣性,進(jìn)而避免過(guò)早的在局部最優(yōu)處收斂。
引入的變異控制函數(shù)為:
其中h 表示當(dāng)前迭代次數(shù),hmax表示最大迭代次數(shù),α、β 表示控制系數(shù)。
根據(jù)式(7),計(jì)算變異算子的控制率:
其中u 是變異率,m 是預(yù)設(shè)變異率,設(shè)定后不變。
根據(jù)式(8),計(jì)算變異操作的粒子數(shù)目:
根據(jù)式(9),隨機(jī)從粒子群中選取要進(jìn)行變異操作的粒子,用實(shí)數(shù)編碼。假設(shè)第k 個(gè)粒子被選中進(jìn)行變異操作,如其中第j 個(gè)元素進(jìn)行變異,則操作策略為:
其中r ∈( )-a,a 是隨機(jī)數(shù)。
動(dòng)態(tài)慣性系數(shù)的計(jì)算為:
其中,wmax表示最大慣性系數(shù),wmin表示最小慣性系數(shù)。
變異算子控制PSO 算法的運(yùn)行是通過(guò)粒子的變異率,動(dòng)態(tài)慣性系數(shù)和變異操作來(lái)實(shí)現(xiàn)的。而變異率是由式(7)確定,動(dòng)態(tài)慣性系數(shù)是由式(11)確定,變異操作是由式(8)~式(10)來(lái)完成的,其都與算法的迭代次數(shù)相關(guān)的。在算法迭代的前期,控制函數(shù)和動(dòng)態(tài)慣性系數(shù)取較大的值,進(jìn)行變異操作的粒子數(shù)目和變異尺度都比較大,既保證了種群內(nèi)部粒子的多樣性,又使得PSO 算法大范圍的在解空間內(nèi)進(jìn)行搜索。在算法的后期,控制函數(shù)和動(dòng)態(tài)慣性系數(shù)取較小的值,進(jìn)行變異操作的粒子數(shù)目和變異尺度都很小,甚至不進(jìn)行變異操作,既使種群內(nèi)部的粒子能很快進(jìn)行收斂,又使PSO 算法小范圍的在解空間內(nèi)進(jìn)行搜索。因此,算法的收斂速度和收斂精度都得到了提高。NPSO 算法具體步驟為:
步驟1:初始化群體數(shù)目N,學(xué)習(xí)因子C1和C2,慣性系數(shù)w,初始粒子的位置Xi和速度Vi,最大迭代次數(shù)hmax,預(yù)設(shè)變異率m。
步驟2:按式(7)計(jì)算控制函數(shù)y()h ,按式(11)計(jì)算慣性系數(shù)w。
步驟3:根據(jù)式(8)計(jì)算變異率u,根據(jù)式(9)計(jì)算變異粒子數(shù)M,按式(10)進(jìn)行變異操作。
步驟4:對(duì)于每個(gè)粒子,按式(6)適應(yīng)度值fit[i] ,并與其個(gè)體最優(yōu)值Pi進(jìn)行比較如果fit[i ]>Pi那么令。
步驟5:求解全局最優(yōu)值Gi,即如果Pi>Gi那么令Gi=Pi。
步驟6:根據(jù)式(5)更新粒子的速度Vi和位置Xi;
步驟7:當(dāng)達(dá)到最大迭代次數(shù)或者粒子群的最優(yōu)值符合某閥值ε 時(shí),則輸出結(jié)果,否則返回第二步。
NPSO-PF 算法的原理是利用帶變異算子的PSO 算法快速準(zhǔn)確的收斂性能來(lái)優(yōu)化PF 的采樣過(guò)程。通過(guò)適應(yīng)度值使所有粒子向最優(yōu)粒子移動(dòng),以改善粒子集的分布情況,使粒子集都集中在真實(shí)狀態(tài)附近,從而提高了濾波的精度和效率,具體的步驟為:
步驟1:初始化。在k=0時(shí)刻,根據(jù)P(x0)分布采樣得到即。步驟2:NPSO-PF 優(yōu)化粒子集分布。結(jié)合利用3.1 節(jié)講述的NPSO-PF 實(shí)施步驟對(duì)粒子群進(jìn)行尋優(yōu),當(dāng)達(dá)到迭代次數(shù)或者粒子群的最優(yōu)值符合某閥值ε時(shí),輸出粒子,即可得到新的粒子樣本x^ik。
步驟5:輸出。根據(jù)式(4)得到更新后的狀態(tài)估計(jì)。
為了驗(yàn)證加入變異算子的粒子群優(yōu)化算法具有不陷入局部最優(yōu)值的性能以及其準(zhǔn)確性和收斂精度,給定非線性函數(shù)為:
取c1=20,n=2,δ=2.71282 時(shí),該函數(shù)為有很多局部極小值的Ackley 函數(shù)。用此時(shí)的f()
x 為目標(biāo)函數(shù),可以有效的測(cè)試算法的收斂性能。分別用引入變異算子的PSO 算法和標(biāo)準(zhǔn)PSO 算法對(duì)函數(shù)進(jìn)行尋優(yōu)。根據(jù)相關(guān)參考文獻(xiàn)和經(jīng)驗(yàn)以及多次試驗(yàn),其中仿真參數(shù)分別為:粒子個(gè)數(shù)N=30,適應(yīng)度閾值ε=0.001,最大迭代數(shù)hmax=100,變異控制系數(shù)α,β 分別為1.7 和10,慣性權(quán)重ω 最大和最小值分別為0.729 8 和0.1,加速度常數(shù)c1和c2分別為1.469 2。計(jì)算機(jī)的處理器是Inter(R)Core(TM)i7-4970 CPU@3.60 GHz 3.60 GHz。隨機(jī)取某次仿真結(jié)果如圖1 所示。
圖1 兩種算法的迭代曲線Fig.1 Iteration curves of two algorithms
從圖1 可以看出,帶變異算子的PSO 算法在早期和后期的收斂速度快于標(biāo)準(zhǔn)PSO 算法,中期略低于標(biāo)準(zhǔn)PSO 算法。為了比較2 種算法的整體收斂性能,在上述實(shí)驗(yàn)函數(shù)和參數(shù)不變的情況下,分別進(jìn)行了20 次實(shí)驗(yàn),得到了2 種算法的迭代次數(shù)和收斂函數(shù)值的平均值。MATLAB 運(yùn)算結(jié)果表明,標(biāo)準(zhǔn)PSO 算法的平均收斂迭代次數(shù)為60 次,引入變異算子的PSO 算法為40 次。收斂時(shí)的適應(yīng)度函數(shù)平均值分別為0.010 和0.001。結(jié)果表明,帶變異算子的PSO 算法在函數(shù)優(yōu)化中的應(yīng)用優(yōu)于標(biāo)準(zhǔn)的PSO 算法。
為驗(yàn)證3 種算法的濾波和估計(jì)性能,試驗(yàn)選取的動(dòng)態(tài)非線系統(tǒng)的狀態(tài)方程和觀測(cè)方程。
狀態(tài)方程:
觀測(cè)方程:
其中vk-1和nk為零均值高斯噪聲。xk為狀態(tài)變量,yk為觀測(cè)變量。k 為模擬步長(zhǎng)。利用PF算法、PSO-PF 算法、NPSO-PF 算法分別對(duì)該非線性系統(tǒng)進(jìn)行狀態(tài)估計(jì)和跟蹤,為比較3 種算法的性能,粒子數(shù)分別取n=50,500,1 000,取初始狀態(tài)概率密度函數(shù)為N(0,2),測(cè)量噪聲方差和過(guò)程噪聲方差分別為Rt=1×10-3和Q=1×10-2,模擬步長(zhǎng)為k=50,粒子群優(yōu)化算法相關(guān)參數(shù)同上,估計(jì)值和真實(shí)值之間差值的絕對(duì)值用σ 表示。隨機(jī)選取不同粒子數(shù)目下某次仿真結(jié)果如圖2 所示。其中均方根誤差R 的計(jì)算公式為:
為了比較3 種算法的整體性能,將仿真實(shí)驗(yàn)進(jìn)行30 次,測(cè)得在3 種不同粒子數(shù)目下3 種算法的30 次運(yùn)算的均方根誤差和程序運(yùn)行時(shí)間的平均值,如表1 和表2 所示。
從圖2 可知,NPSO-PF 算法估計(jì)出的粒子狀態(tài)更接近粒子的真實(shí)狀態(tài),估計(jì)誤差也更小,隨著估計(jì)的粒子數(shù)目的增加效果越來(lái)越明顯。而PSO-PF算法的估計(jì)性能略好于PSO 算法,并隨著粒子數(shù)目的增加效果差異越來(lái)越小。從表1 和表2 的結(jié)果來(lái)看,NSPO-PF 算法的平均估計(jì)誤差和運(yùn)行時(shí)間要低于另外兩者,隨著粒子數(shù)目的增加,效果更明顯。而PSO-PF 算法只是略好于PF 算法,隨著粒子數(shù)目的增加兩者性能基本相同。綜上可知,NPSO-PF 算法比PSO-PF 和PF 算法具有更好的、更穩(wěn)定的估計(jì)性能。
圖2(a)n=100,(c)n=500,(e)n=1 000 狀態(tài)估計(jì)曲線;(b)n=100,(d)n=500,(f)n=1 000 誤差曲線Fig.2(a)n=100,(c)n=500,(e)n=1 000 state estimation curves;(b)n=100,(d)n=500,(f)n=1 000 error curves
表1 三種算法的RTab.1 R of three algorithms
表2 三種算法的運(yùn)行時(shí)間Tab.2 Running times of three algorithms
表3 三種算法的仿真降噪結(jié)果對(duì)比Tab.3 Comparisons of simulated noise reduction results from three algorithms
利用上述3 種方法對(duì)下列信號(hào)進(jìn)行降噪仿真實(shí)驗(yàn),選取的原始信號(hào)方程如下:
加入大小和原始信號(hào)一樣的隨機(jī)噪音信號(hào)后得:
用原始信號(hào)方程(16),加噪信號(hào)方程(17)分別代替4.2 節(jié)中狀態(tài)方程(13)和觀測(cè)方程(14),從而構(gòu)成3 種算法中的空間模型,其中Y(t)為原始信號(hào)峰值變量,Z(t)為加噪信號(hào)峰值變量,t 為模擬時(shí)間步長(zhǎng)。其中取初始概率密度函數(shù)為N(0,2),狀態(tài)初始值為1,測(cè)量噪聲方差Rt=1×10-4,過(guò)程噪聲方差Q=1×10-5,模擬時(shí)間步長(zhǎng)為t=204 8,PSO 算法相關(guān)參數(shù)同上,分別對(duì)4.2 節(jié)中3 種粒子數(shù)目進(jìn)行實(shí)驗(yàn)仿真,現(xiàn)將粒子數(shù)n=100 時(shí)分別用PF 算法,PSO-PF 算法和NPSO-PF 降噪后的結(jié)果展示如圖3 所示。
圖3 降噪仿真實(shí)驗(yàn)結(jié)果:(a)原始信號(hào),(b)原始信號(hào)加噪,(c)PF 算法降噪,(d)PSO-PF 算法降噪,(e)NPSO-PF 算法降噪Fig.3 Simulation experiment results of noise reduction:(a)original signal,(b)original signal plus noise,(c)noise reduction by PF algorithm,(d)noise reduction by PSO-PF algorithm,(e)noise reduction by NPSO-PF algorithm
從圖3 可以看出,3 種算法都具有相當(dāng)不錯(cuò)的降噪效果,用NPSO-PF 算法降噪后的信號(hào)峰值更清晰。信噪比是指原始信號(hào)與純?cè)胍粜盘?hào)的比值,信噪比數(shù)值越大表示噪音越小,因此信噪比是衡量降噪效果好壞的重要指標(biāo)。為了更好比較3種算法的降噪性能,對(duì)上述實(shí)驗(yàn)結(jié)果進(jìn)行信噪比S分析。取50 次降噪實(shí)驗(yàn)3 種算法在3 種粒子數(shù)目下的信噪比均值進(jìn)行分析,其結(jié)果如表3 所示,信噪比計(jì)算公式為:
從表3 可以看出經(jīng)NPSO-PF 算法濾波后的信噪比在3 種粒子數(shù)目的試驗(yàn)下都要比其他2 種算法高,而經(jīng)PSO-PF 和PF 算法濾波后的信噪比基本一樣。說(shuō)明NPSO-PF 算法的降噪性能要優(yōu)于其他2 種算法,而PSO-PF 和PF 算法的降噪性能基本一樣。NPSO-PF 算法的信噪比提高值普遍大于其他兩種算法,并且隨著粒子數(shù)目的增加有持續(xù)上升的趨勢(shì),而PSO-PF 和PSO 算法基本達(dá)到飽和。綜上所述,NPSO-PF 算法具有更好更穩(wěn)定的濾波降噪性能。
本文將變異算子帶入PSO 算法中,構(gòu)成新型NPSO 算法,改善了PSO 算法的結(jié)構(gòu),優(yōu)化了傳統(tǒng)PSO 算法易于陷入局部最優(yōu)解的問(wèn)題,提高了PSO算法的性能。將其與粒子濾波算法相結(jié)合構(gòu)成NPSO-PF 算法,該算法不僅具有更好的估計(jì)性能,而且在濾波降噪方面也有更好的效果。仿真實(shí)驗(yàn)結(jié)果證明NPSO-PF算法適用于信號(hào)的濾波降噪處理。