孔紅山,李小鵬,郁 濱
(信息工程大學 密碼工程學院,河南 鄭州 450001)
粒子濾波(particle filter,PF)不僅能處理噪聲服從高斯分布的線性系統(tǒng),而且可以處理非高斯噪聲的非線性系統(tǒng)[1-3]。序貫重要性重采樣(sequential importance resampling,SIR)粒子濾波算法,通過在粒子濾波算法中加入重采樣環(huán)節(jié)解決粒子退化問題,但也帶來了粒子貧化問題。
為了解決SIR-PF算法的粒子貧化問題,很多學者進行了改進重采樣環(huán)節(jié)的相關研究。文獻[4]提出了一種基于分類重采樣的改進粒子濾波算法;文獻[5]提出了利用鄰域搜索重采樣改進粒子濾波算法,提高了粒子多樣性,但并沒有解決粒子貧化的問題。在基于重采樣的粒子濾波框架下進行算法改進,不能從本質上解決粒子貧化問題,很多學者從交叉學科與粒子濾波相融合的角度進行了研究。文獻[6-8]分別提出了基于遺傳算法、鴿群算法和螢火蟲算法的粒子重采樣算法,大大提高了粒子有效性和多樣性。通過引入人工智能優(yōu)化算法與粒子濾波相結合,是一種更加有效解決粒子貧化問題的思路。
粒子群優(yōu)化算法是一種有效的全局尋優(yōu)算法,文獻[9]提出基于高斯粒子群優(yōu)化算法的粒子濾波改進方法,高斯粒子群優(yōu)化算法沒有慣性項,簡化了優(yōu)化計算過程,但也降低了全局搜索能力;文獻[10]提出基于標準粒子群優(yōu)化算法的粒子濾波改進算法,但標準粒子群優(yōu)化算法容易陷入局部收斂。本文引入動態(tài)調整慣性系數和變異算子對粒子群優(yōu)化算法進行改進搜索過程,提高算法的全局收斂速度、粒子多樣性,且避免陷入局部收斂,并在SIR-PF算法框架的基礎上,利用改進的粒子群優(yōu)化算法對序貫重要性采樣后的粒子集進行優(yōu)化,采用優(yōu)化后的粒子集進行狀態(tài)變量估計,本文所提算法稱為基于改進粒子群優(yōu)化的粒子濾波算法(IPSO-PF)。
SIR-PF算法存在粒子貧化問題的根源是重采樣環(huán)節(jié)。重采樣使得高權重粒子被多次復制,低權重粒子被直接舍棄,造成重采樣后的粒子由大量重復的點構成,帶來粒子貧化問題。為了解決粒子退化問題加入了粒子重采樣環(huán)節(jié),取消重采樣環(huán)節(jié)就會導致計算資源的浪費和估計結果的偏差。重采樣實際上是為了解決粒子的低效問題,而粒子數量又不能無限制的增加。引入粒子群優(yōu)化算法對序貫重要性采樣后的粒子分布進行優(yōu)化,使得粒子集更加趨于向高似然區(qū)域移動,提高粒子集中每個粒子的效用,又無需增加粒子數量,解決了粒子退化問題。同時,在粒子群優(yōu)化過程中,一是只存在粒子位置的變化,并且每個粒子位置變化是隨機的,二是每個粒子均得到了保留,有效解決了粒子貧化問題。總結起來,通過粒子群對粒子分布的優(yōu)化既可以替代重采樣環(huán)節(jié)的作用,解決粒子退化問題,也可以解決粒子的貧化問題。IPSO-PF算法包括序貫重要性采樣、粒子群優(yōu)化過程和狀態(tài)估計3個環(huán)節(jié)。
假設在D空間中,隨機初始化一個粒子數為N的粒子種群N={p1,p2,…,pN}, 設第i個粒子的位置和速度分別為pxi=(xi1,xi2,…,xiD)T和pvi=(vi1,vi2,…,viD)T。 種群的個體極值表示為pbi=(pbi1,pbi2,…,pbiD)T, 全局極值表示為gb=(gb1,gb2,…,gbD)T, 粒子按照下式更新速度與位置
(1)
(2)
其中,r() 為(0,1)之間的隨機數;c1和c2為加速常數,分別代表粒子向個體極值和全局極值移動的權重;w為慣性系數,w較大表示全局搜索能力強,w較小表示局部搜索能力強。
為了改進搜索過程,提出一種動態(tài)調整慣性系數的方法,使得搜索過程中慣性系數線性遞減。假設搜索的迭代次數為Maxgen,w的最大值為w_max,w的最小值為w_min, 那么迭代第ii次的慣性系數為
(3)
為了提高粒子多樣性和搜索速度,借鑒遺傳算法的變異思想,引入變異算子,每隔一定的周期L, 粒子狀態(tài)和速度按下式進行一次更新
(4)
(5)
其中,randperm(n) 為產生一個[1,n]之間的整數數列。
通過計算粒子集中每個粒子的適應度值,把適應度值最大的粒子認定為最優(yōu)粒子,粒子群優(yōu)化算法驅使粒子向最優(yōu)粒子移動。優(yōu)化過程使得那些遠離真實狀態(tài)的粒子趨向于真實狀態(tài)出現概率較大的區(qū)域,進而達到粒子分布優(yōu)化的目的。
定義粒子群優(yōu)化算法中粒子的適應度函數為
(6)
步驟2 利用式(6)計算每個粒子的適應度值,并作為粒子局部極值;計算粒子集中的最優(yōu)適應度值,作為粒子全局極值;
步驟3 判斷迭代次數是否能整除L, 若是,利用式(4)、式(5)更新粒子狀態(tài)和速度;若否,由式(3)得到慣性系數,由式(1)、式(2)得到粒子集迭代后的粒子狀態(tài)和速度。
步驟4 由式(6)計算當前粒子集的適應度值,依據適應度值更新局部極值和全局極值。
步驟5 判斷迭代次數變量是否小于等于迭代次數Maxgen, 若是,迭代次數變量加1轉至步驟3;若否,粒子分布優(yōu)化過程結束,把當前的粒子集送至算法下一環(huán)節(jié)處理。
IPSO-PF算法完整的流程見表1。
為了衡量IPSO-PF算法的濾波性能,采取典型的非線性系統(tǒng)進行數值仿真實現,并與SIR-PF、PSO-PF、GPSO-PF這3種算法從濾波精度、粒子退化、粒子貧化和運行時間4個方面進行性能比較。
表1 IPSO-PF算法
該系統(tǒng)的過程方程和觀測方程分別為
xk=1+sin(0.04*π*k)+0.5xk-1+ωk
(7)
(8)
式中:ωk、vk分別為系統(tǒng)噪聲和觀測噪聲。
假設系統(tǒng)初始狀態(tài)x0=0.1, 系統(tǒng)噪聲為服從伽馬分布Γ(3,2) 噪聲,觀測噪聲方差為1的零均值高斯噪聲,粒子個數為50,仿真時間步數為60,采用IPSO-PF、SIR-PF、PSO-PF和GPSO-PF這4種算法對非線性系統(tǒng)濾波的仿真,其中IPSO-PF、PSO-PF和GPSO-PF這3種算法的加速常數和迭代次數相同,取值分別為c1=c2=2、Maxgen=20, IPSO-PF算法中慣性系數取值為w_max=0.9、w_min=0.4、L=4, PSO-PF算法中慣性系數取值為w=1.0, 4種算法的濾波估計值和誤差如圖1所示。
圖1 濾波估計值及誤差
從圖1(a)可知,4種算法在系統(tǒng)存在較大的非高斯噪聲條件下均能達到較好的濾波效果;從圖1(b)可知,SIR-PF算法的最大誤差約為6.08,PSO-PF算法的最大誤差約為6.06,GPSO-PF算法的最大誤差約為5.53,IPSO-PF算法的最大誤差約為5.50,SIR-PF算法的平均誤差約為0.96,PSO-PF算法的平均誤差約為1.03,GPSO-PF算法的平均誤差約為0.98,IPSO-PF算法的平均誤差約為0.92,與其它3種算法相比,IPSO-PF算法濾波精度稍優(yōu)。
為了比較不同算法濾波精度,引入均方根誤差RMSE作為評價指標,其數學表達式為
(9)
圖2 均方根誤差
由圖2可知,SIR-PF算法的RMSE均值約為1.34,PSO-PF算法的RMSE均值約為1.40,GPSO-PF算法的RMSE均值約為1.34,IPSO-PF算法的RMSE均值約為1.33,4種算法濾波精度基本相同;SIR-PF算法的RMSE方差約為0.32,PSO-PF算法的RMSE方差約為0.21,GPSO-PF算法的RMSE方差約為0.19,IPSO-PF算法的RMSE方差約為0.17。與SIR-PF算法相比,3種粒子群算法穩(wěn)定性都得到大幅提高,而IPSO-PF算法穩(wěn)定性優(yōu)于另外兩種粒子群算法。
(10)
仿真參數不變,采用IPSO-PF、SIR-PF、PSO-PF和GPSO-PF這4種算法對非線性系統(tǒng)進行一次濾波仿真,有效粒子數曲線如圖3所示。
圖3 有效粒子數
由圖3可知,SIR-PF算法的有效粒子數的平均值約為14.4,PSO-PF算法的有效粒子數的平均值為35.7,GPSO-PF算法的有效粒子數的平均值為46.3,而IPSO-PF算法的有效粒子數的平均值為48.6??梢员砻?,對重要性采樣后的粒子,通過粒子群優(yōu)化算法進行粒子分布優(yōu)化來代替重采樣環(huán)節(jié),可以使濾波的有效粒子大大增加,是一種粒子解決粒子退化的有效辦法,與PSO-PF和GPSO-PF兩種算法相比,IPSO-PF算法的有效粒子數的平均值更大。
仿真參數不變,采用IPSO-PF、SIR-PF、PSO-PF和GPSO-PF這4種算法對非線性系統(tǒng)濾波進行一次仿真,取粒子在k為11和12兩個時刻的粒子真實值、IPSO-PF粒子狀態(tài)值、SIR-PF粒子狀態(tài)值、PSO-PF粒子狀態(tài)值和GPSO-PF粒子狀態(tài)值的分布情況,如圖4所示。
圖4 兩種算法的粒子狀態(tài)分布
由圖4可知,SIR-PF算法的粒子分布往往集中在少數幾個高權重狀態(tài)值上,粒子重復率高,降低了粒子的多樣性,不利于濾波的狀態(tài)估計。IPSO-PF、PSO-PF和GPSO-PF這3種算法粒子呈現出絕大部分粒子集中于真實值附近且粒子分布相對均勻,除此之外,仍然合理保留了少數低權重粒子,確保了粒子多樣性。與PSO-PF和GPSO-PF兩種算法相比,IPSO-PF算法在保證多樣性的同時,粒子更加集中于真實值附近。
在32位windows7操作系統(tǒng)、Intel酷睿i7-4500U處理器環(huán)境下,設置粒子個數分別為30、50、100、500,其它參數仿真保持不變,在MATLAB仿真運行4種算法,運行時間見表2。
表2 運行時間
由表2可知,在不同粒子數目下,IPSO-PF、PSO-PF和GPSO-PF算法的運行時間基本相同,且都大于SIR-PF算法,這是由于粒子群優(yōu)化過程代替重采樣過程,表明粒子群優(yōu)化過程的復雜度大于傳統(tǒng)的重采樣過程;IPSO-PF算法需要的粒子數量較小,這種情況下,IPSO-PF算法的運行時間與SIR-PF算法相差不大,也能很好滿足濾波的實時性要求。
為了衡量IPSO-PF算法的搜索性能,仿真參數保持不變,抽取k=1時刻的序貫重要性采樣后的粒子集,采用IPSO-PF、PSO-PF和GPSO-PF這3種算法進行粒子分布優(yōu)化的適應函數值變化曲線如圖5所示。
圖5 適應函數值變化曲線
由圖5可知,GPSO-PF算法收斂于局部最優(yōu)值0.3951,并且沒有改變,這是由于算法省略了慣性項,降低了全局搜索能力,易陷于局部最優(yōu);PSO-PF算法在經過一段時間后收斂于0.3989,算法具有較強的全局搜索能力,但收斂速度較慢,并且搜索過程后期由于粒子速度變慢也可能陷于局部最優(yōu);IPSO-PF收斂速度較快,且具有較好的全局尋優(yōu)能力,這是由于引入動態(tài)調整慣性系數和變異算子對粒子群優(yōu)化算法進行改進,提高了算法在搜索性能。
為解決SIR粒子濾波算法存在的粒子貧化問題,提出了基于粒子群優(yōu)化的SIR粒子濾波改進算法IPSO-PF。與SIR-PF、PSO-PF、GPSO-PF這3種濾波算法相比,IPSO-PF算法濾波精度稍優(yōu),且濾波穩(wěn)定度更好;在濾波過程中的有效粒子數的平均值更大,粒子退化問題也得到較好的解決;粒子大部分集中于高似然區(qū)域,但保留了少數低似然區(qū)粒子,并且粒子更加集中于真實值附近;運行時間大于SIR-PF算法,但也能滿足實時性要求;收斂速度較快,且具有較好的全局尋優(yōu)能力??傮w來講,IPSO-PF算法在增加部分運算量的前提下,取得比SIR-PF、PSO-PF、GPSO-PF這3種算法更好的綜合濾波性能。下一步的研究重點是在IPSO-PF算法的基礎上進行優(yōu)化,進一步提高濾波精度和穩(wěn)定性,并降低其運算復雜度。