李春陽, 金光燦, 劉 浩
(1.上海工程技術大學機械與汽車工程學院, 上海 201600;2.上海理想汽車科技有限公司, 上海 201800)
自20世紀80年代濾波-x最小均方(FxLMS)算法被提出以來,對于ANC算法的研究蓬勃發展[1-2]。為了獲得更好的降噪能力,新提出的有源控制算法引入了各種調節參數,這些關鍵參數對于算法降噪性能具有顯著的影響,不合適的參數會使ANC系統的降噪能力顯著下降,甚至失效。在過去的研究中,一般采用試錯法獲取合適的參數值,試錯法通過反復比較使用不同參數時算法的降噪效果,從中選取最優的參數,但是該方法費時低效[3]。MENG等[4]將PSO優化引入變步長ANC算法,用于優化該算法的步長調節因子。JIANG等[5]將改進PSO算法用于混合ANC (HANC)系統關鍵參數的獲取,并取得了降噪效果的提升。MENG和JIANG的方法是使用相同的輸入信號進行粒子群尋優,實質仍然是離線獲取最優參數值,其方法并不能直接在實時ANC系統中使用。
為了解決ANC參數難以設置的問題,本文提出了一種能用于在線更新ANC關鍵參數的改進PSO算法。該算法在ANC系統采樣噪聲信號的同時,實時優化更新參數值。仿真結果表明,提出的改進PSO算法能很好地與常見的ANC降噪算法相結合,實現在線獲取關鍵參數的最優值,保證ANC系統優秀的降噪效果。
有源噪聲控制系統是利用聲波相消干涉的原理,通過產生幅值相同、相位相反的次級聲波抵消不期望的噪聲[6]。常見的單通道前饋控制結構如圖1所示。其中,主路徑為參考傳感器到誤差傳感器之間的聲音傳播路徑,次級路徑指次級聲源到誤差傳感器之間的路徑。該系統的工作過程如下:噪聲源產生噪聲并通過主路徑傳遞;參考傳感器拾取參考信號x(n)作為控制濾波器的輸入信號,控制濾波器對信號x(n)進行濾波并輸出相應的控制信號y(n),y(n)驅動次級聲源產生抵消聲波,初級噪聲和次級抵消聲波在誤差傳感器處疊加相消形成局部靜音區,誤差傳感器拾取抵消后的殘余誤差信號e(n),x(n)和e(n)共同作用于自適應算法的更新,算法根據相應的控制準則不斷在線調整濾波器權系數。整個過程持續不斷,最終ANC系統會獲得穩定的降噪效果。

圖1 單通道前饋有源噪聲控制示意圖Fig.1 Schematic diagram of single channel feedforward active noise control
粒子群算法是受鳥群覓食規律啟發而衍生出的一種進化算法,該算法的核心思想是利用個體共享的信息,促使整個群體的運動在求解空間中從無序到有序逐漸演化,最終獲取問題的最優解[7]。假設種群有N個粒子,并在D維的搜索空間進行搜尋,則第i個粒子當前位置為Xid=(xi1,xi2,…,xiD),速度為Vid=(vi1,vi2,…,viD),目前搜索到的個體最優位置為Pid,pbest=(pi1,pi2,…,piD),群體最優位置為Pd,gbest=(p1,gbest,p2,gbest,…,pD,gbest),PSO算法根據公式(1)和公式(2)迭代更新粒子的速度和位置:
(1)
(2)
其中,i為粒子序號,i=1,2,…,N;d為粒子維度序號,d=1,2,…,D;k為當前的迭代次數;w為慣性權重;c1和c2分別為個體學習因子和群體學習因子,典型值取c1=c2=2;r1和r2為0~1的隨機數。
在標準的PSO算法中,需要輸入重復的數據進行迭代尋優,顯然這不符合ANC系統實時運行、逐點采樣噪聲的特點,因此標準的PSO算法不能直接在ANC系統中使用。本文對于標準PSO算法做了如下改進:為了與實時ANC系統相配合,在每個采樣時刻僅使用一個粒子作為關鍵參數參與ANC系統的運算,該粒子連續使用L個采樣時間后計算粒子的適應值,并隨機不重復地選擇下一個粒子作為關鍵參數。對于粒子總數為N的種群,完成一輪粒子群迭代總共需要經歷N×L個采樣輸入信號。通過以上方法,確保了ANC系統和粒子群都能在線實時更新,其中ANC系統是逐個噪聲采樣點更新,粒子群算法是逐個數據塊(N×L個采樣點)進行更新。標準的粒子群算法在每一輪迭代中需要相同的輸入數據,而提出的改進算法是伴隨噪聲采樣實時更新粒子,這是本文提出算法與標準算法最大的不同。
為了獲得更好的尋優表現,本文還對PSO算法做了以下的改動。
(1)引入線性微分遞減的慣性權重調整策略。從公式(1)中可以看出,慣性權重w代表上代粒子對當代粒子速度的影響。本文引入了以下線性微分遞減的w調整策略,保證PSO算法在迭代前期使用較大的w,充分發掘可能的最優解,而在后期使用較小的w,提高局部搜索能力,保證尋優精度[8]。
(3)
其中,wmax和wmin分別代表慣性權重的最大值和最小值,分別取0.9和0.4;tmax和t分別代表最大迭代次數和當前迭代次數。
(2)魯棒的適應度函數。脈沖噪聲是ANC系統中常見的噪聲源,由于含有較多的異常值,因此容易造成算法的發散。在使用粒子群在線估計參數時,同樣要考慮脈沖噪聲對粒子群尋優的影響。為了增強粒子群應對脈沖噪聲的能力,采用如下魯棒性更強的適應度函數:
(4)
其中,L代表連續的L個誤差信號采樣點,tanh(·)代表雙曲正切函數,e(i)為誤差信號。通過對誤差信號做非線性壓縮變換,從而消除異常值的不利影響。
為了展示改進PSO算法在ANC系統中的應用效果,將提出算法應用于FxMCC-MK算法關鍵參數的在線估計[9]。FxMCC-MK算法的ANC控制器權系數更新公式如下:
(5)
λ(n)=1-exp(-βe2(n))
(6)
w(n)為n時刻濾波器權系數,e(n)為誤差信號,xf(n)為濾波后的參考信號,λ(n)為混合參數,sign(·)為符號函數。步長μ、核寬σ及λ(n)的形狀調整參數β均屬于超參數,對于算法的降噪表現起著關鍵作用,這里使用提出的改進PSO算法將參數在線更新為“正確”值?;诟倪MPSO的FxMCC-MK算法的系統框圖如圖2所示,其中d(n)為需要抵消的噪聲信號,y(n)為ANC控制器輸出信號,yf(n)為y(n)經過次級路徑后的信號,e(n)為誤差信號。

圖2 基于改進PSO的FxMCC-MK算法系統框圖Fig.2 System block diagram of FxMCC-MK algorithm based on modified PSO
基于改進PSO的FxMCC-MK算法的主要執行流程如下。
步驟1:設置PSO算法關鍵參數,包括粒子群規模N,粒子維度D,數據塊長度L,最大迭代次數K等;并隨機初始化粒子位置和速度。初始化的粒子群如下:
(7)
步驟2:隨機不重復地從種群中選擇粒子作為FxMCC-MK算法的關鍵參數,并通過公式(5)和公式(6)更新控制器系數。每個粒子在L個采樣時刻內連續使用,所有粒子完成該步驟需要經歷N×L個采樣時間。
步驟3:完成L個采樣后,使用公式(4)計算粒子的適應值,并記錄當前粒子的位置和個體最優位置;當步驟2重復一輪后,比較所有粒子的個體最優位置獲得群體最優位置。
步驟4:根據公式(3)更新慣性權重ω,并根據公式(1)和公式(2)更新所有粒子的速度和位置。
步驟5:判斷是否滿足算法的停止條件,如果滿足則停止粒子群更新,將最終獲得的gbest作為最優的參數,供ANC系統繼續運行,如果不滿足條件,則返回步驟2繼續優化參數。
本文提出的改進PSO算法利用隨機、分塊選擇更新粒子,實現了ANC系統關鍵參數的在線匹配。但不可否認,改進PSO算法的引入增加了實時降噪系統的計算負擔,增加的計算量見表1。從表1中可以看出,額外增加的計算量不容忽視。為了降低計算負擔,種群粒子總數N和數據塊長度L都不應過大。當控制濾波器長度P和次級路徑長度M較大時,則增加的計算量可以相對忽視。除此以外,改進PSO具有在線迭代尋優的特點,相比直接使用一組較好參數,使用PSO尋優的ANC算法在收斂速度上并不具有優勢,這點能在仿真中體現。需要注意的是,為了保證算法能快速收斂到最優位置,應當通過經驗數據給出粒子位置的大致范圍。

表 1 改進PSO算法引入的計算量
在計算機仿真中,將控制濾波器的長度設置為20,ANC系統的初級路徑P(z)和次級路徑S(z)分別設置如下:
P(z)=0.05z-13-0.01z-14+0.01z-15+0.8z-16+0.6z-17-
0.2z-18-0.5z-19-0.1z-20+0.4z-21-0.05z-22
(8)
S(z)=0.05z-6-0.01z-7+0.95z-8+0.01z-9-0.9z-10
(9)
采用平均噪聲衰減量(ANR)評價算法的降噪表現,ANR按如下公式定義[9]:
(10)
(11)
其中,Ae(·)和Ad(·)的初始值均為0,η是遺忘因子,一般取0.999。
仿真中使用服從標準對稱α穩定(Symmetric α-Stable, SαS)分布的數據模擬脈沖噪聲[6],SαS分布的特征函數如下:
φ(n)=exp(-|t|α)
(12)
其中,α為特征指數,α∈(0,2],α越小,生成的數據脈沖性越強,圖3為α=1.6時的脈沖噪聲信號。仿真中粒子群的基本設定為粒子群規模N=20,數據塊長度L=20,最大迭代次數K=50,粒子維度D與ANC算法關鍵參數個數一致。

圖3 α=1.6時生成的脈沖噪聲信號Fig.3 Impulse noise signals generated at α=1.6
首先,在ANC系統中,分別使用改進PSO在線匹配參數和試錯法精確指定參數,比較不同方式下FxMCC-MK算法的降噪表現,參考噪聲采用α=1.6的脈沖噪聲信號。改進PSO算法關鍵參數的尋優范圍為μ∈[1e-4,1e-3]、σ∈[1,10]、β∈[0.1,1]。圖4為改進PSO在線匹配ANC參數的收斂曲線,從圖4中可以看出,改進PSO算法快速收斂,大約在20輪迭代后即能找到最優解,獲取到的最優參數值為μ=5.807 6e×10-4,σ=4.966 1,β=0.512 3。改進PSO和試錯法的降噪效果對比如圖5所示。case1為通過試錯法反復實驗得出的最優參數組合,case2~4在case1參數的基礎上有略微改動。從圖5中可以明顯看出,case1同時兼顧了收斂速度和穩態誤差,降噪效果可以認為是最好的。在case2~4中,參數發生改動后,算法的降噪效果也相應受到影響,如果參數改動較大,甚至可能導致算法不收斂或者失穩。相比case1,改進PSO算法收斂速度略慢,但是獲得了更低的穩態誤差值。以上結果表明,改進PSO算法能夠快速在線獲取最優參數,雖然ANC系統的收斂速度會略微降低,但是降噪效果會得到提升。

圖4 改進PSO匹配ANC關鍵參數的收斂曲線Fig.4 The convergence curve of modified PSO matching ANC key parameters

圖5 改進PSO與試錯法的ANR對比Fig.5 Comparison of ANR between modified PSO and trial and error method
其次,將使用改進PSO的FxMCC-MK算法與常見ANC算法進行降噪性能對比分析,參與對比的另外三種算法分別是濾波-x最小P范數(FxLMP)算法、基于sigmoid變換的FxsigmoidLMS算法和基于對數變換的FxlogLMS算法,新引進的三種算法的特點為參數只有步長μ,比較容易通過試錯法確定最優值[10-12]。不同算法的降噪效果如圖6所示,從中可以看出直接使用試錯法的FxMCC-MK算法在收斂速度上具有絕對優勢,使用改進PSO的FxMCC-MK算法收斂速度略慢于直接使用試錯法,但與FxsigmoidLMS算法相近,明顯優于FxLMP算法和FxlogLMS算法。此外,FxMCC-MK(改進PSO)算法的穩態誤差值是最低的,穩定值為-35.6 dB。由此可見,通過改進PSO在線匹配關鍵參數,雖然會略微降低FxMCC-MK算法本身的收斂速度,但是整體上該算法的降噪性能仍然要優于其他三種算法。

圖6 與常見ANC算法降噪效果對比Fig.6 Comparison of noise reduction effect with common ANC algorithm
本文提出了一種用于在線獲取ANC系統關鍵參數的改進PSO算法,該算法通過在降噪過程中隨機選擇粒子,并作為關鍵參數用于降噪系統的運行,算法以數據塊為單位進行粒子群的迭代更新,實現了PSO參數尋優與實時ANC系統的同步運行。此外,引入了線性微分遞減的慣性權重調整策略,保證了算法的尋優能力;使用非線性的雙曲正切函數壓縮異常的噪聲信號,增強了適應度函數的魯棒性。未來,將提出的改進PSO框架用于FxMCC-MK算法關鍵參數的在線尋優中,并分析增加的計算負擔。實驗結果表明,改進PSO算法能夠實現關鍵參數的快速尋優,并且保持了ANC系統優秀的降噪能力,在實際應用中具有潛在的價值。