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