吳爽,焦淑紅,任慧龍
1. 哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001 2. 哈爾濱工程大學(xué) 船舶工程學(xué)院,黑龍江 哈爾濱 150001
艦船在航行過程中,因受到外加作用會(huì)產(chǎn)生晃動(dòng),在海浪較大情況下,表現(xiàn)更加明顯。艦船的晃動(dòng)會(huì)對(duì)需要在艦船進(jìn)行一系列特殊作業(yè)(如:艦載機(jī)起降作業(yè)中指導(dǎo)艦載機(jī)安全起降、導(dǎo)彈發(fā)射、風(fēng)浪中航行的控制等[1])產(chǎn)生巨大影響,甚至危害生命財(cái)產(chǎn)安全。若提前對(duì)艦船運(yùn)動(dòng)姿態(tài)進(jìn)行預(yù)測(cè),可以為決策者提供決策依據(jù),減少安全事故的發(fā)生,對(duì)航海事業(yè)具有重要意義。
目前,國(guó)內(nèi)外對(duì)艦船運(yùn)動(dòng)姿態(tài)極短期預(yù)報(bào)非常重視并進(jìn)行了許多研究。近年來,隨著混沌系統(tǒng)理論的快速發(fā)展,混沌預(yù)報(bào)方法被引入到船舶運(yùn)動(dòng)姿態(tài)的預(yù)報(bào)中來。文獻(xiàn)[2]對(duì)于艦船運(yùn)動(dòng)姿態(tài)序列的混沌特性進(jìn)行了分析,說明艦船運(yùn)動(dòng)姿態(tài)序列屬于低維混沌序列。
已有研究表明,很多低維混沌時(shí)間序列可用二階 Volterra 自適應(yīng)濾波器進(jìn)行較為精確的自適應(yīng)預(yù)報(bào)[3,4]。文獻(xiàn)[5]利用最大 Lyapunov 指數(shù)法對(duì)船舶運(yùn)動(dòng)姿態(tài)時(shí)間序列樣本進(jìn)行了混沌性判別,針對(duì)船舶運(yùn)動(dòng)姿態(tài)的非線性和不確定性與混沌特性的緊密關(guān)系,給出了船舶運(yùn)動(dòng)姿態(tài)混沌時(shí)間序列的二階 Volterra 自適應(yīng)預(yù)報(bào)模型。文獻(xiàn)[6]提出基于Volterra級(jí)數(shù)的RLS[7-10]自適應(yīng)算法,驗(yàn)證其有較好的收斂性并在預(yù)測(cè)低維混沌系統(tǒng)取得很好的效果。但是,該方法只是對(duì)數(shù)據(jù)進(jìn)行一次性處理,沒有討論其對(duì)于數(shù)據(jù)流的預(yù)測(cè)效果如何。本文在Volterra 濾波器與 RLS 自適應(yīng)算法的基礎(chǔ)上,提出一種基于小波變換的RLS的Volterra級(jí)數(shù)核估計(jì)自適應(yīng)算法,應(yīng)用于艦船運(yùn)動(dòng)姿態(tài)數(shù)據(jù)流的極短期實(shí)時(shí)預(yù)報(bào)研究中。
RLS算法全稱是遞推最小二乘算法,它是一種最小二乘自適應(yīng)橫向?yàn)V波器的遞推算法,它是由n-1時(shí)刻濾波器抽頭權(quán)向量的最小二乘軌跡來遞推n時(shí)刻權(quán)向量的最新估計(jì)。
(1)
式中:
φ(t)=[φ1(t),φ2(t),…,φn(t)]T
X(i)=[x(i),x(i-1),…,x(i-n+1)]T
估計(jì)誤差為:
設(shè)i<0數(shù)據(jù)為零, 則有:
最小二乘的性能指標(biāo)是使ξ(t)最小,式中β(t,i)代表遺忘因子,0<β(t,i)<1,i=1,2,…,t,遺忘因子使建模過程對(duì)非平穩(wěn)情況下數(shù)據(jù)統(tǒng)計(jì)特性的變動(dòng)更具有適應(yīng)性。通常取指數(shù)式因子作為遺忘因子,即
β(t,i)=λt-i(i=1,2,…,t)
式中λ為趨近于1的正常數(shù),在取指數(shù)式因子為遺忘因子時(shí)有:
(2)
式中:n×n相關(guān)陣N(t)和n×1互相關(guān)M(t)分別為:
(3)
將式(3)中i=t的項(xiàng)單獨(dú)分開,則有:
λN(t-1)+X(t)XT(t)
同理有:
M(t)=λM(t-1)+X(t)XT(t)
引理若A、B為兩個(gè)n×n維正定陣,且滿足:
A=B-1+CD-1CT
式中:D為另一個(gè)m×m正定陣;C為n×m陣,則有:
A-1=B-BC(D+CTBC)-1CTB
令N(t)=A,λN(t-1)=B-1,X(t)=C,1=D,經(jīng)推導(dǎo)可得:
其中a(t)稱作新息,定義為
RLS算法如下:
設(shè)定初始值為
計(jì)算t=1,2,…時(shí)
Z(t)=λ-1P(t-1)X(t)
K(t)=[1+XT(t)Z(t)]-1Z(t)
P(t)=λ-1P(t-1)-K(t)ZT(t)
(4)
定義Fn(t)=λFn(t-1)+ηn(t)fn(t),后驗(yàn)估計(jì)誤差定義為ε(t)=y(t)-φT(t)X(t),則最小二乘估計(jì)的加權(quán)誤差平方和為:
(5)
由式(4)以及式(5)可得:
λξmin(t-1)+a(t)ε(t)
根據(jù)RLS算法的收斂性可知,當(dāng)輸入向量相關(guān)矩陣的特征值擴(kuò)展很大, RLS算法使得收斂速度也得以保證,并且RLS算法通過選取合適的自適應(yīng)濾波器的系數(shù),來保證輸出信號(hào)y(t)與期望信號(hào)盡可能地匹配。
RLS算法中確定目標(biāo)函數(shù)為
(6)
式中:e(i)表示i時(shí)刻的輸出誤差,d(t)表示輸入信號(hào)為U(i)向量時(shí)的期望輸出;并且H(t)、U(t)分別表示輸入向量及自適應(yīng)濾波器的系數(shù)向量;λ為指數(shù)加權(quán)因子,應(yīng)該在0<λ<1范圍內(nèi)進(jìn)行選擇。
定義系統(tǒng)的輸入矩陣為
P(t)=[U(m),U(m+1),…,U(t-1)]T
式中,U(t)與式(6)中的U(t)相同,m代表二階Volterra濾波器的輸入項(xiàng)數(shù)。則輸出為
Y(t)=[y(m),y(m+1),…,y(t-1)]T
式中y(i)(i=m,m+1,…,t-1)代表系統(tǒng)的實(shí)際輸出,且滿足y(i)=HT(i)U(i)。
利用傳統(tǒng)最小二乘法求解Volterra級(jí)數(shù)核可得
直接利用Volterra 濾波器對(duì)艦船運(yùn)動(dòng)姿態(tài)進(jìn)行實(shí)時(shí)在線預(yù)報(bào)時(shí),隨著新數(shù)據(jù)的不斷獲取,P(t)、Y(t)維數(shù)將不斷增大,勢(shì)必會(huì)耗費(fèi)大量存儲(chǔ)空間,為此,使用遞推最小二乘法對(duì)Volterra級(jí)數(shù)核進(jìn)行估計(jì)。這樣在預(yù)報(bào)過程中P(t)維數(shù)是確定的,可以減少了數(shù)據(jù)對(duì)存儲(chǔ)空間的占用,其具體步驟總結(jié)如下:
設(shè)t+1時(shí)刻系統(tǒng)的輸入矩陣為P(t+1),對(duì)應(yīng)輸出向量為Y(t+1),輸入輸出滿足:
P(t+1)=[U(m),U(m+1),…,U(t+1)]T
Y(t+1)=[y(m),y(m+1),…,y(t+1)]T
記:
φt=[PT(t)P(t)]-1
若增加輸入數(shù)據(jù)x(t+1)后可得:
φt+1=[PT(t+1)P(t+1)]-1=
[P-1(t+1)+U(t+1)UT(t+1)]-1
令
可得:
φt+1=[P-1(t+1)+U(t+1)UT(t+1)]-1
綜上,可對(duì)Volterra RLS濾波器的核估計(jì)算法總結(jié)如下:
依次令t=m+1,m+2,…,m+N,N為樣本數(shù)據(jù)個(gè)數(shù)。則有:
K(t+1)=φtU(t+1)/[1+UT(t+1)φtU(t+1)]
φt+1=φt-K(t+1)UT(t+1)φt
φm=[PT(m)P(m)]-1
文獻(xiàn)[11]中對(duì)小波的定義及小波降噪過程已進(jìn)行較詳細(xì)的闡述,本文不再贅述。小波降噪中母小波的選擇較為重要。而母小波的選擇需要考慮到母小波的數(shù)學(xué)特性及實(shí)際應(yīng)用情景,以保證精度需求。
其中,母小波的數(shù)學(xué)特性主要包括正交性、正則性、對(duì)稱性、高階消失矩、緊支性[12]??紤]姿態(tài)預(yù)測(cè)需要母小波具備上述數(shù)學(xué)特性,故最終選擇可以很好滿足這些數(shù)學(xué)特性的Daubechies小波函數(shù),即dbN系列小波,經(jīng)試驗(yàn)驗(yàn)證,該系列中db6小波在分解層數(shù)為6時(shí)降噪效果最優(yōu)。
對(duì)于Volterra +RLS自適應(yīng)預(yù)報(bào)模型,其預(yù)報(bào)函數(shù)是在擬合混沌序列的基礎(chǔ)上獲得的,其中,運(yùn)動(dòng)姿態(tài)序列本身就不可避免的噪聲,故經(jīng)過一系列變換之后,使其得到的預(yù)報(bào)值包含更多的噪聲,使得預(yù)報(bào)精度不僅要受到模型的影響,還受到噪聲影響。同時(shí),Volterra +RLS算法只能對(duì)”靜”的姿態(tài)序列進(jìn)行單次預(yù)報(bào),還不具備對(duì)運(yùn)動(dòng)姿態(tài)數(shù)據(jù)流進(jìn)行實(shí)時(shí)預(yù)報(bào)的能力。
運(yùn)動(dòng)姿態(tài)時(shí)間序列屬于非平穩(wěn)時(shí)間序列,對(duì)于分平穩(wěn)時(shí)間序列的降噪方法有很多,但是較為常用的經(jīng)驗(yàn)?zāi)B(tài)分解(empirical mode decomposition,EMD)、EMD的優(yōu)化方法集合經(jīng)驗(yàn)?zāi)B(tài)分解(ensemble empirical mode decomposition,EEMD)及小波變換。由于EEMD是對(duì)EMD的優(yōu)化形式,故本文這里主要討論EEMD和小波降噪方法。EEMD是對(duì)序列添加白噪聲并且進(jìn)行多次EMD分解,所以其降噪需要時(shí)間較多,本文需要進(jìn)行實(shí)時(shí)預(yù)測(cè),對(duì)于算法的效率要求較高,故對(duì)于降噪本文最終選取小波閾值降噪方法。
同時(shí)考慮Volterra +RLS自適應(yīng)預(yù)報(bào)模型存在的問題,本文最終采用的運(yùn)動(dòng)姿態(tài)時(shí)間序列數(shù)據(jù)流預(yù)測(cè)的整體框架如圖1所示。傳感器采集到的運(yùn)動(dòng)姿態(tài)數(shù)據(jù)數(shù)據(jù)流進(jìn)入工作站,首先利用滑動(dòng)窗口技術(shù)進(jìn)行處理,生成概要數(shù)據(jù)結(jié)構(gòu),然后概要數(shù)據(jù)結(jié)構(gòu)經(jīng)小波分解分解獲得各尺度系數(shù),經(jīng)閾值處理去除噪聲,再經(jīng)Volterra+RLS算法進(jìn)行預(yù)報(bào),得到最終預(yù)報(bào)值。
圖1 運(yùn)動(dòng)姿態(tài)時(shí)間序列數(shù)據(jù)流預(yù)測(cè)框架
對(duì)于概要數(shù)據(jù)結(jié)構(gòu)通過滑動(dòng)窗口獲得,對(duì)于窗口長(zhǎng)度的選擇,綜合考慮算法時(shí)間復(fù)雜度、預(yù)報(bào)精度及計(jì)算機(jī)資源占用等問題后,選用窗口長(zhǎng)度為400,預(yù)報(bào)時(shí)長(zhǎng)為15 s。
對(duì)于艦船運(yùn)動(dòng)來說,橫搖,又稱側(cè)滾角,指浸于水中的物體繞最長(zhǎng)延伸方向或波浪入射方向的水平軸的旋轉(zhuǎn)振蕩運(yùn)動(dòng),即以船舶重心所在的前后軸線(縱軸線)為中心的回轉(zhuǎn)搖晃。船舶在海上最容易發(fā)生橫搖且搖擺幅度最大,故本文主要研究橫搖運(yùn)動(dòng)姿態(tài)。
本文將某船??傞L(zhǎng)12.48 m、船寬1.568 m、設(shè)計(jì)吃水0.404 m、排水量4.672 t、航速6 kn,在浪向45°、浪向90°工況中20 min橫搖運(yùn)動(dòng)姿態(tài)作為試驗(yàn)數(shù)據(jù)。
每次選用400個(gè)數(shù)據(jù)作為建模樣本,對(duì)Volterra+RLS、EEMD+Volterra+RLS及小波+Volterra+RLS等3種預(yù)報(bào)模型進(jìn)行預(yù)報(bào)仿真分析。時(shí)序序列實(shí)時(shí)預(yù)報(bào)中常用均方根誤差RMSE對(duì)預(yù)報(bào)結(jié)果進(jìn)行分析,故本文也以均方根誤差RMSE對(duì)精度進(jìn)行評(píng)估。
1)預(yù)報(bào)精度
先以浪向45°橫搖為例,利用3種預(yù)報(bào)模型進(jìn)行預(yù)報(bào)起始點(diǎn)為2 182 s,建模數(shù)據(jù)長(zhǎng)度為400,預(yù)報(bào)時(shí)長(zhǎng)為15 s的姿態(tài)運(yùn)動(dòng)預(yù)報(bào),預(yù)報(bào)結(jié)果如圖2。從圖2中可以看出在使用Volterra+RLS對(duì)運(yùn)動(dòng)姿態(tài)序列預(yù)報(bào)前使用EEMD、小波閾值降噪使得預(yù)報(bào)精度較Volterra+RLS模型預(yù)報(bào)精度均有所提高,并且小波閾值降噪效果更好。
為了驗(yàn)證在不同工況下,小波閾值+Volterra+RLS的適用性,再選用90°工況下部分橫搖試驗(yàn)數(shù)據(jù)進(jìn)行預(yù)報(bào)仿真,對(duì)預(yù)報(bào)誤差記錄如表1所示。
圖2 3種模型預(yù)報(bào)15 s預(yù)報(bào)結(jié)果
預(yù)報(bào)模型預(yù)報(bào)起始點(diǎn)/sRMSE耗時(shí)/sVolterra+RLSEEMD+Volterra+RLS小波+Volterra+RLS6970.0690.0238970.2310.0241 2970.4220.0241 4240.1270.02321820.2940.0246970.00911.4468970.22111.4781 2970.19911.3811 4240.03611.5072 1820.16611.2106970.0030.1518970.0630.1601 2970.1590.1551 4240.0170.1522 1820.1540.149
從表1中可以看出,EEMD+Volterra+RLS和小波+Volterra+RLS對(duì)于Volterra+RLS來說預(yù)報(bào)精度都有所提高,但小波+Volterra+RLS的預(yù)報(bào)精度更高,這樣再次對(duì)圖2進(jìn)行驗(yàn)證。
2)時(shí)間復(fù)雜度
根據(jù)表1所示,可以分析得出:
a)對(duì)于相同的橫搖運(yùn)動(dòng)姿態(tài)序列,預(yù)報(bào)時(shí)長(zhǎng)相同時(shí)Volterra+RLS算法多次進(jìn)行預(yù)報(bào)耗時(shí)基本穩(wěn)定,而后兩種預(yù)報(bào)方法耗時(shí)會(huì)產(chǎn)生一定范圍的波動(dòng)。
b)由于EEMD需要進(jìn)行多次EMD分解,并尋找符合條件的IMF分量,所以利用EEMD進(jìn)行降噪的Volterra+RLS預(yù)報(bào)算法耗時(shí)最長(zhǎng)。
c)通過小波降噪優(yōu)化的Volterra+RLS預(yù)報(bào)算法耗時(shí)可以發(fā)現(xiàn),小波分解需要的時(shí)間遠(yuǎn)小于EEMD分解所需要的時(shí)間,盡管小波降噪耗時(shí)比Volterra+RLS要長(zhǎng),但預(yù)報(bào)15 s需要時(shí)間穩(wěn)定在0.2 s,還是完全可以滿足預(yù)報(bào)需求的。
本文提出一種基于小波去噪的Volterra+RLS實(shí)時(shí)預(yù)報(bào)方法應(yīng)用到數(shù)據(jù)量大、流速快的運(yùn)動(dòng)姿態(tài)數(shù)據(jù)流 的極短期實(shí)時(shí)預(yù)報(bào)中。首先對(duì)模型中涉及到的基本理論進(jìn)行介紹,考慮到噪聲對(duì)精度影響及基于RLS的Volterra核估計(jì)算法只能對(duì)橫搖運(yùn)動(dòng)姿態(tài)進(jìn)行單次預(yù)報(bào),不能很好地處理動(dòng)態(tài)的橫搖運(yùn)動(dòng)姿態(tài)數(shù)據(jù)流等問題,提出使用對(duì)于時(shí)序數(shù)據(jù)流常用的滑動(dòng)窗口方法,對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行概要數(shù)據(jù)結(jié)構(gòu)的獲取,然后在概要數(shù)據(jù)結(jié)構(gòu)上進(jìn)行小波閾值處理及結(jié)合Volterra+RLS方法進(jìn)行預(yù)測(cè)。對(duì)于算法驗(yàn)證工作,則采用不同工況下橫搖運(yùn)動(dòng)姿態(tài)試驗(yàn)數(shù)據(jù)對(duì)本文提出的模型與EEMD+Volterra+RLS及Volterra+RLS模型進(jìn)行仿真,并從預(yù)報(bào)精度和時(shí)間復(fù)雜度兩個(gè)方面進(jìn)行分析討論,經(jīng)討論得出,本文提出的基于小波去噪的Volterra+RLS實(shí)時(shí)預(yù)報(bào)方法在預(yù)測(cè)精度和耗時(shí)方面較其他兩種方法都具有明顯優(yōu)勢(shì)。