李光磊 臧濤 范鄒 韓冰
(1. 海軍駐九江地區(qū)軍事代表室,江西九江 332007; 2. 海軍蚌埠士官學(xué)校,安徽蚌埠 233012)
船舵無疑是艦船各個部件中最主要部件之一,隨著艦船控制舵的發(fā)展,船舵已經(jīng)由手動操舵向自動舵方向發(fā)展,自動舵以其方便和實用越來越受到部隊的重視和應(yīng)用。理論上,只有預(yù)先掌握船舶運動規(guī)律的先驗知識,如船舶參數(shù)、噪聲參數(shù)等,才能設(shè)計出較理想的控制算法。
本文分別采用最小二乘法和遺傳算法對船舶運動參數(shù)進(jìn)行辨識,針對對比仿真存在的問題,根據(jù)最小二乘法和間接模型參考自適應(yīng)法的特點提出一種基于兩種方法的混合算法[1]。實驗表明混合算法克服了原有單一算法針對非線性系統(tǒng)參數(shù)辨識的固有缺陷,辨識效果大大改進(jìn),因此對船舶參數(shù)辨識具有重要意義。
要進(jìn)行船舶的辨識和控制算法的研究,首先都必須建立船舶操縱運動的數(shù)學(xué)模型??紤]到船舶運動控制參數(shù)應(yīng)盡可能少,同時兼顧船舶航行狀態(tài)的可觀測性,我們采用經(jīng)典的非線性KT方程作為出船舶數(shù)學(xué)模型。
船舶運動KT方程是連續(xù)的微分方程。為辨識該連續(xù)方程,要求提供角速度乃至航向角加速度的輸出值。但在工程實踐中,很難正確測定上述運動參數(shù),而且即使測定了航向角速度,它與航向測定值往往也不太匹配,同時航向的測定精度一般要求較高,故可用對航向角輸出值進(jìn)行數(shù)值微分的方法以提供上述運動參數(shù)[2]。
考慮一階非線性船舶運動方程:
將其離散化為:
考慮二階非線性船舶運動方程:
將其離散化為:
應(yīng)用最小二乘法辨識原理對非線性模型的參數(shù)辨識需要對非線性模型進(jìn)行一定的處理?,F(xiàn)以二階非線性方程為例來說明其應(yīng)用原理[3]。
式(4)是經(jīng)過處理過的非線性離散方程。
取Y=Φθ
以上是基本最小二乘法在船舶運動方程中的應(yīng)用,因為基本最小二乘法具有估計的有偏性,故可利用廣義最小二乘法對參數(shù)進(jìn)行估計。
遺傳算法來源于生物進(jìn)化中“適者生存”的思想。通過模擬自然界進(jìn)化中的自然選擇,基因重組以及基因突變來進(jìn)行自學(xué)習(xí)和尋優(yōu)?;具z傳算法有選擇、交叉和變異三個基本算子組成。具體過程如下:
(1)編碼并生成初始種群。遺傳算法不能直接處理解域中的數(shù)據(jù),因此需通過編碼將它們表示成遺傳空間的基因型數(shù)據(jù)串,本文采用串聯(lián)二進(jìn)制編碼。對于初始種群的個體,則是通過隨機方法產(chǎn)生。
(2)計算適應(yīng)度。適應(yīng)度是遺傳算法中的核心部分,它決定了種群中個體對所求解的問題的適合程度,在船舶運動方程中就是判定種群中變量即K、T是否符合方程。因此對適應(yīng)度的設(shè)計就至關(guān)重要。
在這里我們根據(jù)船舶運動方程的特點,運用殘差平方和對個體的適應(yīng)度進(jìn)行判定。下面以二階方程進(jìn)行說明。
對(4)進(jìn)行變形得:
(3)選擇、交叉和變異。采用基于線性排序的適應(yīng)度分配的方法來進(jìn)行選擇操作。
交叉是提高遺傳算法搜索能力的一個重要操作,在此我們采用離散重組的方法。由于自適應(yīng)遺傳算法在保持群體多樣性的同時,也保證了算法的收斂性。
對交叉進(jìn)行自適應(yīng)的調(diào)整公式如下[4]:
其中:Pc1,Pc2分別為交叉概率的上限、下限;f1為要交叉的兩個個體中較大的適應(yīng)度;favg為每代群體的平均適應(yīng)度;fmax為群體中最大適應(yīng)度值。在此,我們選取Pc1=0.9,Pc2=0.6。
相應(yīng)地,我們對變異操作也進(jìn)行自適應(yīng)操作。
對變異進(jìn)行自適應(yīng)的調(diào)整公式如下[4]:
其中:Pm1,Pm2分別為變異概率的上限、下限;f2為要變異的兩個個體中較大的適應(yīng)度;favg為每代群體的平均適應(yīng)度;fmax為群體中最大適應(yīng)度值。在此,我們選取Pm1=0.1,Pm2=0.001。
(4)噪聲處理
眾所周知,在實際的船舶航行時采集的數(shù)據(jù)中噪聲是不能不考慮的一個重要因素,因此在實際數(shù)據(jù)運算中就必須考慮對噪聲進(jìn)行處理。
在遺傳算法的適應(yīng)度函數(shù)中,我們選取(4)式的殘差平方和作為適應(yīng)度函數(shù),其矩陣表達(dá)形式為Y=Φθ。
其中:
殘差e(k)=Y-Φθ,但這一判定標(biāo)準(zhǔn)沒有考慮噪聲。然而實際中噪聲是不可避免的。為此我們需要對噪聲進(jìn)行處理。
遺傳算法是一種隨機搜索法。它無需求導(dǎo)、理論上能全局收斂的解非線性模型參數(shù)估計的方法。遺傳算法因其自身獨有的優(yōu)點,因而在解決非線性模型參數(shù)估計方面有著很大的優(yōu)勢。最小二乘法在辨識的參數(shù)比較多時,可能存在“參數(shù)相消”效應(yīng),即辨識所得的各參數(shù)同時偏離各自的真值,但只要它們和參數(shù)真值保持相同比值,同樣可以是誤差函數(shù)為最小。下面對非線性方程在數(shù)據(jù)無干擾情況下,應(yīng)用遺傳算法和最小二乘法進(jìn)行仿真對比,其中遺傳算法采用自適應(yīng)遺傳算法,即在基本遺傳算法基礎(chǔ)上加入交叉概率和變異概率自適應(yīng)機制。
本實驗使用的數(shù)據(jù)是根據(jù)大連海事大學(xué)的試驗船“育龍”號的仿真結(jié)果進(jìn)行的數(shù)據(jù)模擬[5]。K=0.478,T=216,α=30;除此之外,還對參數(shù)進(jìn)行另外設(shè)定以檢驗辨識方法的優(yōu)劣。對比實驗數(shù)據(jù)見表1、2。
表1 最小二乘法實驗數(shù)據(jù)記錄表
表2 遺傳算法實驗數(shù)據(jù)記錄表
對比試驗數(shù)據(jù)見表3、4。
表3 最小二乘法實驗數(shù)據(jù)記錄表
表4 遺傳算法實驗數(shù)據(jù)記錄表
在K=0.07,T=25,α=3這一組數(shù)據(jù)中出現(xiàn)可參數(shù)相消現(xiàn)象。以上說明最小二乘法與遺傳算法在辨識非線性系統(tǒng)且參數(shù)較多時,均存在著參數(shù)相消現(xiàn)象。最小二乘法仿真圖見圖 1,遺傳算法K值進(jìn)化過程見圖 2。因此用這兩種方法不能可靠辨識出二階非線性方程的參數(shù)值。
圖1 廣義最小二乘法仿真圖
圖2 遺傳算法K值進(jìn)化過程
二階非線性方程的Simlink仿真圖如3所示。
我們知道間接模型參考自適應(yīng)法具有很強的局部搜索能力,但它易于陷入局部最優(yōu)解,且對初值的設(shè)定要求比較高,因此本文將介紹一種混合算法。由上面結(jié)果表明,最小二乘法與遺傳算法在辨識低階非線性模型能夠大體辨識出參數(shù)的值,我們將根據(jù)其中一種算法辨識的參數(shù)作為初值,然后根據(jù)間接模型參考自適應(yīng)法進(jìn)行局部搜索。最小二乘法與遺傳算法辨識的參數(shù)區(qū)別不大,但考慮到運算速度,我們將采用最小二乘法辨識參數(shù)的初值。
考慮野本一階方程:
圖3 二階非線性方程的Simlink仿真
其中:r為航向變化率,δ為舵角,a=-1/T'<0,b=K'/T'>0,由間接模型參考自適應(yīng)法的數(shù)學(xué)原理,設(shè)定P=1,自適應(yīng)參數(shù)為:
其中:e=rm-r,r為采集的實際數(shù)據(jù);rm是推算的航向變化率,其表達(dá)式為:
其中h為采樣時間。由于所要求取的參數(shù)a,b都很重要,因此權(quán)重系數(shù)設(shè)定為γ1=γ2=100。
用以上方法不斷修改am,bm使其接近于真實值a,b。
下面編程實現(xiàn)船舶在無干擾下的數(shù)據(jù)生成,其中船長L=150 m,船速U=8 m/s,a=-0.6,b=0.2,K=0.01778,T=31.25,舵角信號為 3×sin(0.05×t)。試驗是在采樣時間為0.5 s、1 s、2 s三種情況下對參數(shù)進(jìn)行辨識。實驗數(shù)據(jù)記錄見表 5。其中最小二乘法采用廣義最小二乘法。
表5 實驗數(shù)據(jù)記錄表
圖4是混合算法仿真示意圖。
圖4 混合算法仿真示意圖
由于在無干擾情況下混合算法辨識結(jié)果較好,故表6將考慮有噪聲干擾情況下混合算法的辨識結(jié)果。其余數(shù)據(jù)與無干擾情況下的相同,當(dāng)在圖3的干擾模型中的白噪聲能量設(shè)為0.01時。
表6 實驗數(shù)據(jù)記錄表
當(dāng)在圖3的干擾模型中的白噪聲能量設(shè)為1時的實驗數(shù)據(jù)記錄見表7。
表7 實驗數(shù)據(jù)記錄表
由以上實驗結(jié)果表明改進(jìn)后的混合算法在船舶運行良好狀態(tài)下對采樣時間的要求不是很高,而對一般辨識參數(shù)要求對不同船型進(jìn)行合適的采樣時間的設(shè)定。由于我們常常無法準(zhǔn)確地合理劃分船型大小,因此,本方法對實際參數(shù)辨識意義重大。
本文首先根據(jù)最小二乘法和遺傳算法的基本原理對船舶運動方程的參數(shù)辨識進(jìn)行了仿真實驗,通過對比試驗結(jié)果可知,遺傳算法能夠較準(zhǔn)確地辨識參數(shù)較少的低階非線性方程,而在辨識參數(shù)較多的二階非線性方程時出現(xiàn)了辨識參數(shù)相消的現(xiàn)象,不能夠準(zhǔn)確辨識出參數(shù)的真實值。結(jié)合上述現(xiàn)象,設(shè)計出一種基于最小二乘法和間接模型參考自適應(yīng)法的混合算法,該算法對原有的單一算法進(jìn)行了優(yōu)化,仿真結(jié)果令人滿意,為較好地解決非線性系統(tǒng)的辨識問題提供了一條有效途徑。
[1] 韓冰. 艦船航行參數(shù)辨識的方法研究與實現(xiàn)[D]. 武漢:海軍工程大學(xué), 2008.
[2] 辛元歐, 俞勝芬. 關(guān)于K—T方程類的辨識方法研究——自回歸模型的辨識[J]. 中國航海,1983,13(2):28-43.
[3] 李言俊, 張科. 系統(tǒng)辨識理論及應(yīng)用[M]. 北京: 國防工業(yè)出版社, 2003,50-76.
[4] 王小平, 曹立明. 遺傳算法-理論、應(yīng)用與軟件實現(xiàn)[M]. 西安: 西安交通大學(xué)出版社, 2002: 73-74.
[5] 李鐵三, 楊鹽生, 鄭云峰. 不完全驅(qū)動船舶非線性控制[J]. 交通運輸工程學(xué)報, 2003, 3(4):39-43.