曹 潔, 胡文東, 王進(jìn)花, 余 萍, 趙偉吉
(1.蘭州理工大學(xué) 計(jì)算機(jī)與通信學(xué)院, 甘肅 蘭州 730050;2.蘭州理工大學(xué) 電氣工程與信息工程學(xué)院, 甘肅 蘭州 730050;3.甘肅省制造業(yè)信息化工程研究中心,甘肅 蘭州 730050)
變速恒頻的雙饋發(fā)電機(jī)主要包含了空氣動(dòng)力系統(tǒng)、變槳距系統(tǒng)、傳動(dòng)系統(tǒng)、控制器和功率轉(zhuǎn)換系統(tǒng)等[1],變槳距系統(tǒng)主要用于槳距角的控制,以適應(yīng)多變的風(fēng)速,由于該系統(tǒng)頻繁地在停止與啟動(dòng)狀態(tài)間跳變,導(dǎo)致發(fā)生故障的概率較高,因而提高該系統(tǒng)故障診斷的準(zhǔn)確度和實(shí)時(shí)性具有重要的意義。
粒子濾波(particle filtering, PF)算法是一種基于蒙特卡洛與遞推貝葉斯估計(jì)的概率統(tǒng)計(jì)算法[2],可以有效地處理非線性、非高斯噪聲環(huán)境下的狀態(tài)估計(jì)問(wèn)題,被廣泛用于目標(biāo)跟蹤[3,4]、故障診斷[5,6]、機(jī)器人定位[7]、人臉跟蹤[8]等領(lǐng)域。而變槳距系統(tǒng)是一個(gè)典型的非線性、強(qiáng)耦合系統(tǒng),故PF算法適合于該系統(tǒng)的故障診斷。PF算法具有多種重采樣方法,經(jīng)典方法包括有多項(xiàng)式重采樣(multinomial resampling,MR)、系統(tǒng)重采樣(systematic resampling,SR)、殘差重采樣(resi-dual resampling,RR)和隨機(jī)重采樣(random resampling,RAR)。在狀態(tài)估計(jì)中,當(dāng)粒子數(shù)足夠多時(shí),一定程度上提高了狀態(tài)估計(jì)精度,但在粒子數(shù)較少的情況下,存在粒子退化和樣本貧化等現(xiàn)象?;诖?,國(guó)內(nèi)外許多學(xué)者對(duì)PF算法進(jìn)行了改進(jìn),主要分兩種: 一是引入遺傳算法(GA)思想改進(jìn)的PF算法(GA-PF)[9];另一種是引入粒子群優(yōu)化(PSO)思想改進(jìn)的PF算法(PSO-PF)[10,11]。
在對(duì)PF算法進(jìn)行改進(jìn)的現(xiàn)有研究中,雖然提高了算法的精度,但同時(shí)增加了算法復(fù)雜度,難以將其應(yīng)用到實(shí)時(shí)性要求較高的領(lǐng)域中。為了解決這一問(wèn)題,研究學(xué)者利用圖形處理單元(graphic processing unit,GPU)的多線程優(yōu)勢(shì),提出以并行計(jì)算的方式提高算法實(shí)時(shí)性。文獻(xiàn)[12]提出了一種并行規(guī)約的差分進(jìn)化粒子濾波方法,解決粒子濾波計(jì)算速度問(wèn)題。文獻(xiàn)[13]提出了利用GPU平臺(tái)并行實(shí)現(xiàn)粒子濾波算法,提高計(jì)算速度。通過(guò)GPU并行實(shí)現(xiàn)粒子濾波算法雖然能夠提高算法實(shí)時(shí)性,但粒子濾波算法在重采樣環(huán)節(jié)中粒子之間交互頻繁,不能充分發(fā)揮出GPU的并行優(yōu)勢(shì)。
本文提出一種基于GPU的骨干粒子群優(yōu)化PF故障檢測(cè)方法,該方法利用骨干粒子群算法優(yōu)化PF算法重采樣環(huán)節(jié),提高算法精確度,同時(shí)利用骨干粒子群算法所具有的并行結(jié)構(gòu)特點(diǎn),將結(jié)合后的算法并行化,提高算法實(shí)時(shí)性。最后將其應(yīng)用到故障檢測(cè)中,提高故障檢測(cè)的精確度和實(shí)時(shí)性。
PF算法可以有效地處理非線性、非高斯噪聲環(huán)境下的狀態(tài)估計(jì)問(wèn)題,基本思想是利用隨機(jī)樣本集合對(duì)條件后驗(yàn)概率密度函數(shù)進(jìn)行近似估計(jì),從而計(jì)算樣本均值得到狀態(tài)估計(jì)結(jié)果。
從先驗(yàn)概率密度p(xk-1|y1︰k-1)中采樣N個(gè)樣本點(diǎn),得到后驗(yàn)概率密度為
(1)
通過(guò)多次迭代,根據(jù)粒子權(quán)重對(duì)粒子進(jìn)行更新,最后對(duì)粒子權(quán)重進(jìn)行歸一化,對(duì)例子加權(quán)求和,得到狀態(tài)估計(jì)結(jié)果。
骨干粒子群優(yōu)化(bare bones particle swarm optimization,BBPSO)算法利用全局最優(yōu)值和局部最優(yōu)值進(jìn)行高斯采樣來(lái)完成粒子位置的更新,無(wú)需粒子交互。與經(jīng)典的粒子群算法相比,BBPSO算法消除了慣性系數(shù)、數(shù)度閾值、加速系數(shù)等控制參數(shù),使得算法結(jié)構(gòu)更為簡(jiǎn)潔且易于操作。粒子的位置更新方程為
Xij(t+1)=N(uij,σij)
(2)
uij(t)=0.5(pij(t)+Gij(t))
(3)
σij(t)=|pij(t)-Gj(t)|
(4)
在式(2)~式(4)中,Xij(t+1)為t+1時(shí)刻粒子i位置的第j維分量i=1,2,…,I;j=1,2,…,D;其中,I為種群規(guī)模;D為帶求解問(wèn)題的維數(shù);pi為粒子i自身的最優(yōu)位置(即pbest);G為群體最優(yōu)位置(即gbest);符號(hào)N(uij,σij)為高斯分布。
由以上公式可知,粒子的位置更新是通過(guò)以pbest與gbest的算術(shù)平均值uij,pbest與gbest的距離為標(biāo)準(zhǔn)差σij的高斯采樣得到的。該算法也需要局部最優(yōu)值(即pbest)和群體最優(yōu)值(gbest)的更新,更新方程如下
(5)
(6)
式(5),式(6)中,pi(t)為第i個(gè)粒子自身最優(yōu)位置(即pbest),G(t)為群體最優(yōu)位置(即gbest),f(t)為算法中的適應(yīng)度函數(shù)。
在狀態(tài)估計(jì)中,PF算法經(jīng)過(guò)數(shù)次迭代之后會(huì)出現(xiàn)粒子貧化現(xiàn)象。利用BBPSO算法優(yōu)化PF算法(BBPSO-PF),通過(guò)BBPSO算法的局部最優(yōu)解和全局最優(yōu)解兩個(gè)參數(shù)構(gòu)造高斯函數(shù)進(jìn)行高斯采樣。而B(niǎo)BPSO算法結(jié)構(gòu)簡(jiǎn)單,每個(gè)粒子種群分別利用自己的局部最優(yōu)解與全局最優(yōu)解聯(lián)合進(jìn)行粒子更新。粒子種群相互獨(dú)立運(yùn)行,適合并行實(shí)現(xiàn)。可以利用該算法取代PF算法重采樣環(huán)節(jié),克服PF算法重采樣環(huán)節(jié)不能充分并行的缺點(diǎn)。
首先設(shè)置初始狀態(tài),通過(guò)PF算法的狀態(tài)方程進(jìn)行狀態(tài)更新,利用測(cè)量方程初始化該時(shí)刻的狀態(tài)估計(jì)粒子,并將初始化的粒子傳遞給BBPSO算法進(jìn)行處理,根據(jù)提前設(shè)置好的迭代結(jié)束條件結(jié)束重采樣,BBPSO算法將得到的狀態(tài)估計(jì)結(jié)果傳送到PF算法中進(jìn)行狀態(tài)的更新。算法流程如下:
步驟2 重要性采樣階段,k=k+1,采樣ik~q(Xk|Xi0︰k-1,Z1︰k)。計(jì)算適應(yīng)度值。利用適應(yīng)度值尋找個(gè)體最優(yōu)值(pbest)和全局最優(yōu)值(gbest)。
步驟3 選擇階段(重采樣)根據(jù)式(2)~式(4)更新粒子。根據(jù)式(5)和式(6)更新pbest和gbest。判斷是否達(dá)到迭代終止條件,若達(dá)到終止條件,則執(zhí)行步驟2,若否則執(zhí)行步驟3。
并行的BBPSO-PF算法結(jié)構(gòu)流程圖如圖1所示,可以看出,BBPSO算法在求粒子適應(yīng)度、個(gè)體最優(yōu)值、粒子更新時(shí)都是以粒子群為單位,相互獨(dú)立運(yùn)行,這種結(jié)構(gòu)適合利用多線程并行實(shí)現(xiàn),將其應(yīng)用到PF算法的重采樣環(huán)節(jié)能夠解決PF算法重采樣環(huán)節(jié)不能充分并行的問(wèn)題。
圖1 并行的BBPSO-PF流程框圖
在相同條件下對(duì)BBPSO-PF算法和4種不同重采樣方法的PF算法從精確度和實(shí)時(shí)性兩個(gè)方面進(jìn)行分析和比較,觀察5種算法的性能。本文采用一個(gè)廣泛應(yīng)用的標(biāo)量模型,其狀態(tài)模型和觀測(cè)模型為
(7)
(8)
實(shí)驗(yàn)參數(shù)的設(shè)置:初始狀態(tài)設(shè)置為x0=0.1;狀態(tài)噪聲wk~N(0,0.1);觀測(cè)噪聲Vk~N(0,0.1);仿真周期T=50。
圖2給出了粒子數(shù)N=6 000時(shí),不同重采樣方法的PF算法狀態(tài)估計(jì)結(jié)果。由圖可見(jiàn),BBPSO-PF粒子濾波算法狀態(tài)估計(jì)結(jié)果更接近真實(shí)狀態(tài)值。
圖2 狀態(tài)估計(jì)結(jié)果
在Window7系統(tǒng)下采用 VisualStudio2013(CUDA7.5)開(kāi)發(fā)環(huán)境進(jìn)行實(shí)驗(yàn), CPU為Intel?CoreTMi3—4150,GPU為NVIDA GeForce GTX 950。在CUDA架構(gòu)上并行實(shí)現(xiàn)BBPSO-PF算法和4種不同重采樣方法的PF算法,對(duì)比運(yùn)行時(shí)間。為了排除實(shí)驗(yàn)的偶然性,本次實(shí)驗(yàn)采用多種粒子數(shù)進(jìn)行分析對(duì)比,每組粒子數(shù)均重復(fù)運(yùn)行10次,求取平均運(yùn)行時(shí)間,實(shí)驗(yàn)結(jié)果如圖3所示??梢钥闯鯞BPSO-PF算法的實(shí)時(shí)性優(yōu)于其它重采樣方法的PF算法,表明了基于GPU的BBPSO-PF算法可以有效地提高算法實(shí)時(shí)性。
圖3 算法并行執(zhí)行時(shí)間
選擇文獻(xiàn)[14]中提供的風(fēng)力機(jī)槳距系統(tǒng)的數(shù)學(xué)模型,根據(jù)該數(shù)學(xué)模型建立的二維狀態(tài)空間模型如式(9)所示
(9)
將固定閾值設(shè)置為0.1,若系統(tǒng)狀態(tài)估計(jì)測(cè)量值與真實(shí)測(cè)量值的殘差超過(guò)固定閾值,則認(rèn)為系統(tǒng)出現(xiàn)故障。
利用BBPSO-PF算法進(jìn)行狀態(tài)估計(jì),圖4分別為突變故障、緩變故障和混合故障的故障檢測(cè)結(jié)果。可以看出,PF算法和BBPSO-PF算法在對(duì)應(yīng)的時(shí)間點(diǎn)都能檢測(cè)出相應(yīng)的故障。但在正常狀態(tài)的時(shí)間段里,PF算法多次將正常狀態(tài)檢測(cè)成故障狀態(tài),而B(niǎo)BPSO-PF算法出現(xiàn)該情況較少。從而驗(yàn)證了BBPSO-PF算法能很好地提高算法精度。
圖4 三種故障檢測(cè)結(jié)果
表1記錄了5次隨機(jī)重采樣方法和BBPSO-PF算法故障檢測(cè)時(shí)間及均值。由表1可見(jiàn),在GPU上利用BBPSO-PF算法進(jìn)行故障檢測(cè)相較與串行PF實(shí)時(shí)性提高了94.7 %,相較于并行的PF算法實(shí)時(shí)性提高了89.8 %。
表1 故障檢測(cè)時(shí)間 ms
針對(duì)PF算法在精確度和實(shí)時(shí)性兩個(gè)方面存在的問(wèn)題。本文提出面向GPU的BBPSO-PF的故障檢測(cè)方法,該方法提高故障檢測(cè)的精確度和實(shí)時(shí)性。本文的主要內(nèi)容和結(jié)論:1)利用BBPSO算法以全局最優(yōu)值和局部最優(yōu)值聯(lián)合進(jìn)行高斯采樣的特點(diǎn),將其與PF算法相結(jié)合,提高PF算法的精度。2)利用BBPSO算法具有并行結(jié)構(gòu)的特點(diǎn),取代PF算法重采樣環(huán)節(jié),解決其不能充分并行的問(wèn)題。3)將面向GPU的BBPSO-PF的故障檢測(cè)方法應(yīng)用到變槳距系統(tǒng)的故障診斷中。實(shí)驗(yàn)結(jié)果表明,該方法對(duì)故障檢測(cè)的精度和實(shí)時(shí)性皆有很大的提高。