向 軍 陳永冰 李文魁
(海軍工程大學電氣工程學院 武漢 430033)
隨著航運事業的發展,對船舶航向航跡控制的要求越來越高,而研究船舶操縱性與控制問題的基礎是建立船舶運動數學模型[1]。這些模型中含有未知參數,考慮到船舶作為一個整體系統具有典型的時變非線性,即船舶載重、吃水、航速等發生變化時,其模型參數也會隨之改變。因此采用系統辨識的方法實現對船舶航行過程中的未知模型參數的在線辨識具有重要意義。
目前,常用的辨識算法包括最小二乘法、最大似然估計、卡爾曼濾波、神經網絡[2~3]、支持向量機[4~5]等;趙大明[6]等將船舶運動模型參數當作變量,建立增廣狀態方程并結合擴展卡爾曼濾波算法進行參數辨識,取得了良好的辨識效果;秦操[7]利用無跡卡爾曼濾波在非線性系統濾波中的精確性,將其應用了到三體船的MMG運動數學模型參數辨識中;秦余鋼等[8]引入一種新的學習率對遞推最小二乘算法進行改進,提高了船舶操縱性參數辨識的精度和速度;張顯庫等[9]提出一種基于正弦函數處理非線性新息的最小二乘算法,改進了最小二乘算法的準確性;褚式新等[10]采用極大似然法辨識水面無人艇的操縱響應模型參數,利用辨識結果對無人艇的操縱性進行了精準預報;謝朔等[11]針對船舶操縱運動模型參數辨識問題,將最小二乘向量機遞推算法中的單新息擴展為多新息,提高了辨識精度;以上研究重點集中在辨識數據激勵充分的條件下,提高參數辨識的精度,而對辨識數據欠激勵的情況考慮不足。輸入激勵對于參數辨識性能有較大的影響,當前用于辨識船舶模型參數的實驗數據通常來自于船舶的回轉、Z 型試驗,這些數據滿足持續激勵的條件,使得辨識結果能很好地收斂于真值。但在實際的船舶航行控制過程中,有直航與轉彎的情況,輸入舵角在小幅度范圍內變化甚至保持不變,這就導致所得數據激勵不夠充分,大大影響了參數辨識的收斂性和準確性。
針對上述問題,包政凱等[12]利用滿秩分解思想解決了最小二乘算法中矩陣奇異不可逆的問題,成功應用到船舶航向運動模型參數辨識中,但其未能對非線性參數進行辨識,辨識結果不具備通用性。本文將奇異值分解(SVD)技術[13~15]與多新息理論[16]引入最小二乘法(Least Square Algorithm,LS)中,提出一種改進的多新息最小二乘法。該算法利用奇異值分解的數值穩定性,使其在船舶正常航行過程中小幅度短暫打舵的情況下仍能具有較好的收斂性與辨識精度,將辨識所得船舶模型用于操縱運動預報,并與實際試驗數據進行對比,驗證了該算法在線辨識船舶操縱響應模型參數的有效性。
水動力模型與響應型模型是船舶運動模型的兩大類別[17],水動力模型對船舶自身運動特性和所受外力影響進行了詳細描述,能夠對船舶運動進行較為準確的預報,但該模型中含有大量未知水動力參數,計算復雜且不易獲取。響應型模型參數較少,其主要描述了艏向角速度與舵角之間的變化關系,在船舶的運動控制器設計和操縱運動特性預報中應用最為廣泛,其表達式為
式(1)中:r為船舶艏向角速度;δ為舵角;K、T為回轉性指數和應舵指數,它們近似體現了船舶在某種速度下,船舶角速度與舵角之間的關系,受到船舶的航速與載荷條件的影響;
該模型為船舶一階響應線性模型,考慮到船舶具有非線性特性,故增加一個非線性項αr3,其中α為非線性項系數,則得到的船舶操縱響應一階非線性模型為
為了便于模型參數辨識,將式(2)進行前向差分離散化可得:
式(3)中,Δt為采樣間隔。令1-Δt/T=a,-αΔt/T=b,KΔt/T=c,可得:
式(4)中,a、b、c即為待辨識參數。
令y(t)=r(t+1),h(t)=[r(t),r3(t),δ(t)],θ(t)=[a,b,c]T,則式(4)可化為
該式即為船舶操縱響應模型的最小二乘回歸形式,后續的辨識算法表達式也是基于此式展開。
遞推最小二乘算法具有結構簡單、計算快捷的特點,是應用最為廣泛的系統辨識算法。它的標準表現形式為
式(6)中:P(t)為協方差陣;K(t)為增益向量;e(t)為每次遞推時的新息標量,即單新息;為t時刻θ的估計值。為使算法啟動,需要確定協方差陣和待辨識參數向量的初始值,一般人為給定經驗值如下:
式(7)中:α2很大,一般取106~1010;I為單位陣。
多新息最小二乘辨識算法是遞推最小二乘法與多新息理論結合形成的新算法,該算法可以不斷重復使用歷史數據,收斂速度和辨識精度都得到了改善。其原理是將單新息標量e(t)拓展為多新息矩陣E(p,t),即
考慮到矩陣維數的兼容性,信息向量和輸出向量拓展為
由此,該算法表達式由式(6)變為
式(10)中:p為新息長度,根據該長度取初始的一小段試驗數據,進行單新息最小二乘估計,將得到的協方差陣和參數向量的值作為初始值。
在辨識數據欠激勵的情況下,隨著計算誤差的傳遞和累積,辨識精度將越來越低,從而導致辨識算法難以收斂于真值。從式(10)中可以看出,協方差陣P(t)的計算是該算法的核心,為改善該矩陣的數值計算性質,本文利用SVD技術對其進行奇異值分解。具體推導如下:
先引入矩陣反演式:
利用矩陣反演式對式(10)中的協方差陣更新式進行變換可得:
由協方差陣的對稱正定性,對其進行奇異值分解,則式(12)可表示為
構造矩陣Ω,其具體形式為
對該矩陣進行奇異值分解可得:
則
將式(16)代入式(13)中,根據正交矩陣的性質可化為
對比等式兩端,則有:
通過上述推導,得到了協方差陣P(t)的奇異值分解矩陣U和D的遞推公式,從而取代了P(t)的更新計算。
則增益矩陣K(t)的遞推式變為
根據以上推導,改進多新息最小二乘算法的實現步驟可總結如下:
1)初始化協方差陣P、辨識參數向量θ;初始化奇異值分解后的矩陣U(0)=I、D(0)=
2)按照式(14)構造矩陣Ω。
3)按照式(15)對矩陣Ω 進行奇異值分解,得到其右奇異矩陣和奇異值。
4)按照式(18)更新U(t),D(t)。
5)按照式(19)對增益矩陣K(t)進行更新。
6)按照式(10)中的參數向量遞推式對參數進行更新。
本文以文獻[18]中的某型船舶為研究對象,建立式(1)的一階非線性響應模型,其模型參數如表1所示。

表1 某型船舶模型參數
為獲取參數辨識所需的試驗數據,驗證辨識算法在數據欠激勵情況下的辨識效果,利用已知的模型和參數在仿真軟件Simulink 中做船舶自由航行的仿真實驗,包括船舶直線航行與轉向,仿真采樣間隔為0.01s,采樣時間為400s,得到的辨識數據如圖1所示。

圖1 辨識數據曲線
為證明舵角數據的真實性,通過單位實驗室中的NP5400型自動舵與綜合模擬平臺進行了多次航向控制的模擬實驗,采用自主設計的操舵儀綜合訓練與檢測系統接收航向與舵角數據,如圖2 和圖3所示。其中圖3 為某次常規的船舶航向控制實驗中接收的實驗數據。

圖3 某次常規船舶航向控制實驗中接收的實驗數據
從圖中可以看出,當船舶航向變化15°時,打右舵17°,回舵后打左舵5°,從而實現航向的控制,故符合0s~50s 仿真數據中的打舵情況;同理,仿真數據中的右舵8°和左舵6°也符合實際情況,因此圖1中的仿真數據可以作為船舶實際航行過程中接收的辨識數據。
根據數據激勵程度差異,取采集的試驗數據中0s~50s 和300s~350s 兩段,先后選取這兩段數據采用MILS 和改進MILS 對式(2)中的模型參數進行辨識,對比實驗結果,分析在辨識數據欠激勵的情況下,辨識算法的精確性和收斂性。
兩種算法的新息數均設置為10,參數辨識結果對比曲線如圖4~5所示。

圖4 各參數辨識結果曲線(0s~50s)
由圖4和圖5可以看出,在0s~50s辨識區間,船舶航向處于不斷變化階段,打舵時間長且范圍在左舵6°和右舵15°之間,故辨識數據激勵較充分,兩種辨識算法的辨識結果均能快速收斂于真值;而在300s~350s 辨識區間,船舶打一次左舵6°且迅速回舵,右舵不到1°,辨識數據不滿足持續充分激勵的條件,此時MILS算法辨識的參數有偏,尤其是高次項系數α對激勵的要求更高,辨識結果偏差嚴重,而改進MILS 算法在辨識數據欠激勵的情況下,辨識精度明顯高于MILS 算法且收斂較快。因此,引入奇異值分解提高了多新息最小二乘算法的辨識精度。欠激勵情況下的參數辨識結果見表2。

圖5 各參數辨識結果曲線(300s~350s)

表2 參數辨識結果
由表2可知,MILS算法的辨識結果中,T、K、α的辨識誤差分別為7.57%、28.89%、88.59%;而改進MILS 算法的辨識結果中T、K、α的辨識誤差分別為1.65%、1.85%、82.58%。前者的平均誤差達到了41.68%,后者平均誤差為28.69%,降低了12.99%。
為了檢驗算法精度對船舶運動的影響程度,驗證辨識算法的有效性。將參數辨識結果代入式(2)中,以船舶航行仿真試驗中的舵角數據為輸入,利用龍格-庫塔法求解式(2)船舶響應模型,從而對船舶艏向角進行預報,預報時間為2000s。求解公式如下:
式中,yt=[r,ψ]T,f(t,yn)=[Kδ/T-r/T-αr3/T,r]T,th為采樣周期,取th=0.01s;k1、k2、k3和k4為各時間段的斜率。將預報結果與實際仿真試驗數據比較如圖6所示。

圖6 艏向角預報曲線
從圖6 可以看出,MILS 算法的航向預報值誤差隨時間不斷疊加,而改進MILS 算法對船舶艏向角的預報值更接近真值,滿足船舶航行的誤差要求。
本文將多新息理論與奇異值分解技術相結合,提出了一種改進MILS的模型參數辨識算法。通過仿真驗證與對比分析,得到以下結論:
1)基于奇異值分解對MILS 算法進行改進,改善了數據欠激勵情況下參數辨識不準的問題,辨識精度得到了有效提高,適用于船舶正常航行過程中小幅度短暫打舵情況下的參數辨識。
2)通過辨識得到的模型進行船舶航向的預報對比,該算法的航向預報滿足誤差要求,驗證了算法的有效性。
本文辨識所使用的數據來自于仿真試驗,不能完全保證算法的泛化性,后續可以使用實船試驗數據來進一步驗證。此外,還可以與自適應控制器設計相結合,進行船舶航向控制的研究。