胡立凱, 潘三博
(上海電機學(xué)院 電氣學(xué)院, 上海 201306)
數(shù)字濾波器在信號采集中十分重要,由于噪聲干擾無處不在,因此在采集信號時,為了保證原始信號的準確性,往往要對原始數(shù)據(jù)進行處理[1-2]。在工業(yè)控制等相關(guān)領(lǐng)域中,數(shù)字濾波器得到了廣泛應(yīng)用。數(shù)字濾波器可以通過靈活便捷的參數(shù)調(diào)整,消除某些特定頻率的干擾。此外,數(shù)字濾波器不需要額外的外部元器件,只需通過在數(shù)字信號處理器(Digital Signal Processing,DSP)或其他單片微型計算機(Single Chip Microcomputer,MCU)上編寫程序,即可達到濾波的目的,比模擬濾波器更穩(wěn)定。在實時操作系統(tǒng)中,由于有限沖激響應(yīng)(Finite Impulse Response,FIR)濾波器相比無限沖激響應(yīng)(Infinite Impulse Response,IIR)數(shù)字濾波器需要更多的單元來計算,為了保證系統(tǒng)數(shù)據(jù)的實時性,通常采用IIR數(shù)字濾波器進行設(shè)計[3-8]。
IIR數(shù)字濾波器的設(shè)計實質(zhì)上是一個全局最優(yōu)解(系數(shù))搜索問題。近年來,IIR數(shù)字濾波器通過與很多智能算法相結(jié)合,如基于遺傳算法(Genetic Algorithm,GA)、差分進化算法(Differential Evolution Algorithm,DE)、粒子群算法(Particle Swarm Optimization,PSO)、人工蜂群算法(Artificial Bee Colony Algorithm,ABC)的IIR數(shù)字濾波器設(shè)計方法,在一定程度上提高了IIR數(shù)字濾波器的性能[9-10]。但與智能算法結(jié)合的IIR數(shù)字濾波器同樣面臨早熟和收斂速度不足等問題。
貓群算法(Cat Swarm Optimization,CSO)是通過觀察研究貓群的日常行為習慣提出的一種全局優(yōu)化算法。該算法將貓群的習慣分為兩個模式,即搜尋模式和跟蹤模式。在貓群算法中,一部分貓執(zhí)行搜尋模式,剩下的貓執(zhí)行跟蹤模式。搜尋模式下的貓通過對周圍物體變化的觀察,從而確定目標的位置。在跟蹤模式下的貓,會以一定的速度跟蹤已經(jīng)確定的目標。通過這兩種行為的交替迭代,從而更好的鎖定目標,達到優(yōu)化的目的[11-13]。為了設(shè)計性能更優(yōu)的IIR數(shù)字濾波器,本文提出了一種改進貓群優(yōu)化算法的IIR數(shù)字濾波器設(shè)計方法。首先對貓群算法的行為模式進行設(shè)計優(yōu)化,提高該算法的尋優(yōu)能力,然后將改進后的貓群算法應(yīng)用于IIR數(shù)字濾波器設(shè)計,最后通過實驗對比驗證本文算法的優(yōu)越性。
貓群算法實質(zhì)上是將貓群的行為和尋找目標的最優(yōu)解相結(jié)合。貓群的行為分為兩種模式,即搜尋模式和跟蹤模式,兩種模式下的貓群通過一定的配比(Mixture Ratio,MR)來分配貓的行為方式,從而保證一部分貓群處于搜尋模式,剩下的貓群處于跟蹤模式[14-15]。
1.1.1 搜尋模式 在搜尋模式下,定義了3個重要參數(shù):記憶池(Seeking Memory Pool,SMP)、變化域以及變異率。記憶池用來存儲每只貓搜尋到的位置點;變化域確定了擾動的范圍,該范圍在算法開始之前設(shè)定;變異率確定了擾動的數(shù)量。搜尋模式的工作可以分為如下4步:
(1) 復(fù)制貓的自身位置,一共k份,放在記憶池中,記憶池的容量為k。
(2) 根據(jù)設(shè)定的變化域和變異率,對記憶池中的個體加上一個隨機擾動,用加過擾動的新位置,來代替舊位置。
(3) 根據(jù)代替后新位置的個體,來計算其適應(yīng)度值。
(4) 從新位置的記憶池中,選擇適應(yīng)度最高的個體代替當前貓的位置,從而完成貓位置的更新。
1.1.2 跟蹤模式 在跟蹤模式下,發(fā)現(xiàn)獵物的貓會以某個速度來追蹤目標。搜尋模式的目的,是為了得到單位個體的局部最優(yōu)解。而跟蹤模式的目的,是為了讓個體往全局最優(yōu)靠近。在跟蹤模式下,通過調(diào)整每只貓的速度來更新其位置,跟蹤模式可以通過如下2步來闡述。
(1) 速度更新
每只貓當前的速度記作vi={vi1,vi2,…,vik},Xbest為貓群里的最優(yōu)解,即適應(yīng)度最好的貓。每只貓根據(jù)下式更新速度
d=1,2,…,m
(1)
(2) 位置更新
每只貓根據(jù)下式更新位置
(2)
對于標準的貓群算法而言,雖然是以搜尋模式和跟蹤模式結(jié)合的方式進行尋優(yōu),但如果不注重貓群模式的分配,則無法平衡算法的搜索能力,從而浪費資源。本文在標準貓群算法的基礎(chǔ)上做了如下改進[16-17]。
在式(1)的基礎(chǔ)上,加入線性遞減的慣性權(quán)重因子w(k),慣性權(quán)重因子能夠影響CSO的全局搜索能力,在算法的后期迭代時收斂效果較差,使得CSO的尋優(yōu)精度不高。考慮到隨著迭代次數(shù)的增加,對貓群的搜索精度要求越來越高,提出了一種線性遞減的慣性權(quán)重因子,即
(3)
式中:wmax為慣性權(quán)重的最大值;wmin為慣性權(quán)重的最小值;k為當前迭代次數(shù);kmax為最大迭代次數(shù)[18]。
改進后的速度公式為
(4)
改進貓群算法的步驟如下:
(1) 初始化貓群,設(shè)置N個初始解;
(2) 計算貓群中所有貓的適應(yīng)度值,選取貓群中適應(yīng)度值最大的貓;
(3) 貓群中所有個體根據(jù)MR隨機分配搜尋模式或跟蹤模式;
(4) 判斷所有貓的行為模式,對搜尋模式和改進速度模式下的貓執(zhí)行模式算子,計算每只貓的適應(yīng)度,并更新當前最優(yōu)解;
(5) 判斷是否達到最大迭代次數(shù),若達到則結(jié)束進程,輸出最優(yōu)解,否則回到第3步重新計算。
改進貓群算法可以有效協(xié)調(diào)貓群的分工合作,避免了資源浪費,使得性能得到提升。
IIR數(shù)字濾波器的一般形式為
(5)
式中:x(p)和y(p)分別為IIR數(shù)字濾波器的輸入和輸出;s為IIR數(shù)字濾波器的階數(shù),s≥t。
在式(5)中設(shè)系數(shù)a0=1,則IIR數(shù)字濾波器的傳遞函數(shù)可表示為
(6)
IIR數(shù)字濾波器的設(shè)計實際上是獲得最合適的濾波器系數(shù),均方誤差為[19]
(7)
式中:d(p)和y(p)分別為理想輸出和實際輸出;N為頻率采樣的點數(shù);e(p)為誤差信號。
MSE也可以表示為dB形式
MSE=10lg(J)
(8)
濾波器系數(shù)向量為
ω=[a0a1…atb0b1…bs]
(9)
改進貓群算法的IIR數(shù)字濾波器工作原理圖如圖1所示。采集信號x(p)通過IIR濾波器后產(chǎn)生輸出信號y(p),然后輸出信號y(p)與理想信號d(p)進行比較,得到誤差信號e(p),誤差信號e(p)經(jīng)過改進貓群算法對IIR數(shù)字濾波器的相關(guān)參數(shù)進行調(diào)節(jié),使IIR數(shù)字濾波器的輸出效果達到最好。重復(fù)以上過程,IIR數(shù)字濾波器逐漸熟悉規(guī)律,并以此為依據(jù)動態(tài)調(diào)整相關(guān)參數(shù),從而達到最佳的濾波效果。
圖1 IIR數(shù)字濾波器工作原理圖
為了驗證改進貓群算法在IIR數(shù)字濾波器設(shè)計中的性能,在CPU為i5-2450M-2.50 GHz,內(nèi)存6GB,操作系統(tǒng)64 bit的筆記本電腦上進行仿真驗證[20]。選取兩個典型的IIR數(shù)字濾波器進行設(shè)計,同時與PSO和自由搜索算法進行對比實驗。編程工具采用Matlab2016,每組實驗獨立運行50次,取最優(yōu)結(jié)果作為仿真結(jié)果[21]。
在算法對比實驗中,改進貓群算法的參數(shù)設(shè)置為:種群大小25,最大迭代次數(shù)300,慣性權(quán)重因子的最大值wmax為0.8,慣性權(quán)重因子的最小值wmin為0.2,濾波器系數(shù)的取值限定在[-2,2]。對于PSO和自由搜索算法,其參數(shù)設(shè)置除最大迭代次數(shù)為600外,其他與改進貓群算法的相同。
3.2.1 3階數(shù)字濾波器優(yōu)化結(jié)果對比分析
3階濾波器的傳遞函數(shù)為
(10)
假設(shè)3階系統(tǒng)的傳遞函數(shù)形式為
(11)
采用改進貓群算法、PSO和自由搜索算法設(shè)計3階IIR數(shù)字濾波器,它們的優(yōu)化結(jié)果如表1所示。從表1可以看出:相對于PSO和自由搜索算法,改進貓群算法的尋優(yōu)效果得到提升,在一定程度上優(yōu)化了其他智能算法設(shè)計時存在的全局尋優(yōu)能力不強、收斂速度偏慢等問題。
表1 3階濾波器設(shè)計時的優(yōu)化結(jié)果對比
從圖2可以看出,PSO很快陷入到停止狀態(tài),達到了局部最優(yōu),收斂于局部最優(yōu)解。
圖2 3階IIR數(shù)字濾波器設(shè)計的收斂曲線
自由搜索算法和改進CSO都能找到全局最優(yōu)解,但自由搜索算法的收斂速度和尋優(yōu)精度明顯低于改進CSO,改進CSO可以快速準確找到全局最優(yōu)解,通過實驗數(shù)據(jù)的驗證,證明了本文算法的可行性和優(yōu)越性。
3.2.2 4階數(shù)字濾波器優(yōu)化結(jié)果對比分析
4階濾波器的傳遞函數(shù)為
H(z)=(1-0.8z-1+0.83z-2-0.730z-3)·
(1+0.06z-1+0.267 5z-2-
0.220 3z-3+0.16z-4)-1
(12)
假設(shè)4階系統(tǒng)的傳遞函數(shù)形式為
H(z)=(a0+a1z-1+a2z-2+a3z-3)·(1-b1z-1-b2z-2-b3z-3-b4z-4)-1
(13)
由表2和圖3可以看出PSO的收斂速度較快,但比較容易陷入局部極小,自由搜索算法的收斂速度較慢,改進貓群算法,不僅收斂速度快,而且可以找到更好的IIR數(shù)字濾波器設(shè)計方案。
表2 4階濾波器設(shè)計時的優(yōu)化結(jié)果對比
圖3 4階IIR數(shù)字濾波器設(shè)計的收斂曲線
針對傳統(tǒng)智能算法在IIR數(shù)字濾波器設(shè)計收斂速度較慢和容易陷入局部極值等問題,提出了一種基于貓群優(yōu)化算法的IIR數(shù)字濾波器設(shè)計方法。改進貓群算法在速度公式上加入線性遞減的慣性權(quán)重因子w(k),慣性權(quán)重因子能夠影響貓群算法的全局搜索能力,有效協(xié)調(diào)貓群的分工合作,避免了資源浪費,使性能得到了提升。將改進CSO、PSO和自由搜索算法應(yīng)用于IIR數(shù)字濾波器設(shè)計,實驗結(jié)果表明,改進的貓群算法能夠取得更好的性能。將改進貓群算法與其他算法相結(jié)合來設(shè)計效果更好的IIR數(shù)字濾波器,是將來需要研究的內(nèi)容。