李冬琴,陳文文
(江蘇科技大學 船舶與海洋工程學院,江蘇 鎮(zhèn)江 212000)
動力定位系統(tǒng)是利用船舶自身搭載的推進器產生推力來抵御環(huán)境外力[1],從而可以到達指定位置或實現定點定位。動力定位系統(tǒng)主要由三部分系統(tǒng)組成,分別為測量系統(tǒng)、控制系統(tǒng)和推進系統(tǒng),各系統(tǒng)在控制流程中的簡要作用如圖1 所示。其中,推進系統(tǒng)根據控制器發(fā)出的控制指令,同時考慮了推力分配目標的力和力矩、推力限制、偏轉角限制等約束條件,從而得到各個推進器的推力及方位角,進而能夠將所需要的期望推力指令合理分配給各個推進裝置,從而使船舶能夠保持在固定位置或者設定航線上。
圖1 動力定位系統(tǒng)控制流程總框圖Fig.1 General block diagram of dynamic positioning system
推力分配優(yōu)化是一個多約束的優(yōu)化求解過程,目標是在多個推進器共同作用下得到一個控制力和力矩來滿足控制器所需要的期望控制力和力矩。在20 世紀90 年代,Sordalen[2]研究了矩陣奇異值在動力定位技術中的應用,采用矩陣分解的方法避免發(fā)生奇異性,這有利于降低推進裝置的磨損程度,從而有效保護了推進器。Johansen 等[3–4]將序列二次規(guī)劃方法應用到推力優(yōu)化分配問題上,該方法不會在分配過程中出現奇異值的情況,并通過實驗證明方法的可靠性。在傳統(tǒng)的序列二次規(guī)劃中增加了多啟動的計算機制,具有更好的全局搜索能力。尚留賓等[5]提出了一種改進的粒子群算法,討論了不同粒子決策變量對優(yōu)化結果的影響,最終找到最優(yōu)的決策變量來達到快速收斂和高實時性的目的。雖然提出的改進算法有一定效果,但未考慮約束條件所帶來的影響,而約束條件會降低算法的全局搜索能力。
推力分配優(yōu)化方法的好壞決定了船舶動力定位系統(tǒng)種推力分配模塊性能的高低,近些年來許多學者采用了大量的優(yōu)化方法來解決推力分配問題。這些方法主要是針對以下幾點進行優(yōu)化:一是算法能夠具有較強的收斂性;二是算法能夠在全局范圍找到最優(yōu)解。針對推力分配優(yōu)化算法中存在常陷入局部最優(yōu)且計算時限太長等問題,本文將粒子群算法和細菌覓食算法結合起來,提出一種粒子群-細菌覓食混合優(yōu)化算法來解決推力分配優(yōu)化問題,該算法具有尋優(yōu)精確、容易實現和收斂快等優(yōu)點。
選用一艘挪威科技大學實驗室的縮尺模型船(CS3)并對其進行仿真,此模型船在船尾裝有2 臺全回轉推進器,船首裝有1 臺槽道式推進器,模型船的配置參數見表1,各推進器的布置如圖2 所示。
表1 模型船的配置參數Tab.1 Configuration parameters of the model ship
圖2 模型船的推進器位置示意圖Fig.2 Schematic diagram of propeller position of model ship
該船的慣性矩陣M和阻尼矩陣D如下:
為了簡化計算過程并能夠準確描述船舶運動時的狀態(tài),只在縱蕩、橫蕩和首搖三自由度運動上建立船舶的數學模型。針對只有這3 個自由度運動的船舶,其運動學方程如下式[6]:
也可改寫為:
其中:η=[x yψ]T為船舶在大地坐標系上縱蕩和橫蕩的位置以及首搖的首向角大小;ν=[u v r]T為船舶在船體坐標系上縱蕩和橫蕩的速度大小以及首向角速度大??;R(ψ) 為轉換矩陣,即滿足R(ψ)=RT(ψ)。
在研究船舶的三自由度運動規(guī)律時,一般不考慮船舶的高頻運動部分。建立動力學模型時,可把目標船舶當成是一個質量均勻的剛體,那么船舶的運動就可認定是在船舶重心處的質點運動情況,且設船舶所處的海域中水域的水流速度為0。因此船舶動力學的三自由度數學模型如下式[7]:
其中:τT為控制系統(tǒng)期望輸入控制力的合力和合力矩的大小,即 τT=[XT,YT,NT]T;d為船舶在海洋中受到環(huán)境干擾力的大小,即
推力分配問題是一個非線性數學優(yōu)化問題,如何正確建立一個目標函數并且設置約束條件對問題的求解起著至關重要的作用。
推力分配優(yōu)化是一個多約束的優(yōu)化求解過程,通過建立合理的目標函數,從而在多個推進器共同作用下得到一個控制力和力矩來滿足控制器所需要的目標控制力和力矩??紤]到各推進器實際輸出的推力指令和目標指令之間的誤差、船舶推進裝置的能量消耗、推力約束、偏轉角度的約束和函數解的奇異性,構建的目標函數如下式:
式中:α為方位角;T為推進裝置的推力;W為權值矩陣,該矩陣能夠對功率損耗在總損耗中所占的比重進行調節(jié);Ptotal為總功率消耗。
s為松弛變量,其表達式為s=τ-B(α)f,是期望值和實際輸出值的誤差。為控制系統(tǒng)輸出的推力指令,f=為船舶每個]推進裝置能夠產生的推力值;α=表示各個推進裝置產生的方位角大小;B(α) 是一個3×n的推力分配矩陣,其表達式為:
Q為正定對角陣,該矩陣的對角元素值一般取值足夠大來保證誤差對計算結果的影響較小或是忽略不計;α0為每一個推進器在當前取樣時刻的前一次方位角大小,其表達式為α0=[α10,α20,...,αn0]T;α為每一個推進器在當前取樣時刻的方位角大小,其表達式為α=[α1,α2,...,αn]T;?為正定權值矩陣,該矩陣可以對推進裝置的方位角幅值變化值在目標優(yōu)化函數中所占比重進行調節(jié)。目標函數公式的第4 項是解決數學模型中存在奇異結構的現象,其中,ε>0,ρ≥0為權值參數。
通常來說,約束條件分為不等式和等式兩種,在建立推力分配目標函數時,本文考慮了以下幾種約束:即推進器推力是否符合期望值、推力和偏轉角限制及推力和偏轉角變化率限制,則得到如下約束表達式:
式中:?Tmin和 ?Tmax為推力變化幅值的最小值和最大值;xi為第i個推進器的推力大小,xi,0為前一時刻推力;αi為第i個推進器的偏轉角,αi,0為前一時刻偏轉角;?αmin和? αmax為偏轉角變化幅值的最小值和最大值。
推力分配優(yōu)化算法的好壞決定了船舶動力定位系統(tǒng)中推力分配模塊性能的高低。將粒子群算法和細菌覓食算法結合,提出一種改進的粒子群-細菌覓食混合優(yōu)化算法來解決推力分配優(yōu)化問題。
細菌覓食優(yōu)化算法(BFO)主要研究了大腸桿菌覓食行為中的4 個主要過程,分別是趨化行為、復制行為、遷徙行為和聚集行為[8]。BFO 算法在模擬細菌運動時為了便于描述覓食行為設置了以下參數:趨化操作記為j;細菌種群的規(guī)模大小記為S;細菌搜索空間的維度大小記為P;趨化操作的最大步數記為Nc;細菌在趨向性行為中在一個方向上最大的移動步數記為Nc;復制操作記為k;細菌覓食過程中復制操作的總次數記為Nc;遷徙操作為l;細菌覓食過程中遷徙操作的總次數記為Nc;遷徙操作中遷徙概率記為Nc。
細菌在趨向性操作過程中,其位置更新公式如下式:
式中:xi(j,k,l) 為細菌i在經歷了第j次趨向、第k次復制和第l次遷徙后所到達的位置;xi(j+1,k,l)為細菌i在相同的復制和遷徙次數時,經歷下一次趨向所到達的位置;C(i)為細菌i的移動步長;Φ(j) 為細菌i在翻轉過程中所需翻轉方向的單位向量。
細菌經歷過次數為Nc的趨化操作后,會進行復制操作,會將種群中所有細菌的健康度以降序的方式排列,并淘汰數量為一半種群且健康度較低的細菌個體,復制剩余細菌,
在大腸桿菌的遷徙過程中會設定一個遷徙概率Nc遷徙到空間中的任意位置,滿足遷徙概率Nc的大腸桿菌會在搜索空間內生成一個位置隨機的全新細菌個體,原有剩余的細菌個體就會被丟棄。
細菌的聚集操作是個體之間相互作用和影響的行為,細菌個體通過釋放信號來引誘或是排斥其他個體,其聚集操作的具體行為如下式:
式中:P(j,k,l)為細菌個體經過第j次趨向、第k次復制和第l次遷徙后所達到的位置坐標;dattract和warrract分別為引誘信號的引力深度和寬度;hrepellant和wrepellant分別為排斥信號的斥力高度和寬度。
細菌覓食算法存在一些缺陷,較大的步長雖然能夠加快算法的收斂速度,但會導致無法找到最優(yōu)解或是陷入早熟的情況,而步長較小會影響算法的計算效率和收斂速度。隨著時間的推移,細菌的游動范圍會縮小,固定的步長會影響算法的收斂速度,因此本文提出一種自適應游動步長的方法來解決這些問題。該方法在保證算法求解精度的同時也加快了收斂速度,其游動步長更新公式如下式:
式中,n為BFO 算法中細菌驅散、復制和遷徙的總迭代次數。
粒子群優(yōu)化算法(PSO)的基本單位是粒子。假定粒子是處在一個d維空間,粒子的數量為N個,則第i個粒子的位置為Xi=(xi1,xi2,...,xid)T,i=1,2,...,N;而第i個粒子的速度為Vi=(vi1,vi1,...,vid)T,i=1,2,...,N;第i個粒子的個體極值,可表示為pbest=(pi1,pi2,...,pid),i=(1,2,...,N);第i個粒子的全局極值,可表示為gbest=(g1,g2,...,gd)。在已知2 個極值后,空間內的粒子依據式(10)和式(11)來更新自己的速度和位置,其更新方程為:
將PSO 算法中的記憶步驟加入到BFO 算法中的聚集操作中,使得細菌也具備較強的全局搜索能力,其基本思想為:首先PSO 算法在搜索空間內進行全局尋優(yōu),在搜索的過程中記錄下個體的最優(yōu)信息,然后將每個粒子假設為細菌,并用BFO 算法進行局部搜索,即把式(10)中的社會認知部分加入到BFO 算法的位置更新公式(9)中,那么式(10)中社會認知部分用式(14)表示,并使用自適應游動步長來替代原固定步長游動,最終得到細菌的位置更新方程,如下式:
針對提出的改進策略,混合算法的主要實施步驟如流程圖3 所示。
圖3 改進優(yōu)化算法的流程圖Fig.3 Flow chart of improved optimization algorithm
為了對比優(yōu)化算法的優(yōu)劣,將提出的改進算法與常規(guī)的粒子群和細菌覓食算法進行對比研究分析,分別開展推進器實際輸出的合力及力矩與期望合力及力矩變化,以及各推進器的推力幅值、方位角變化、期望合力及力矩和實際輸出之間的誤差變化研究。
仿真中,推力參數設置如下:
W=diag([32.4,1.4,1.4]),?=10 ×d iag([1,1,1]),ε=1×10-5,Tmax=-?Tmin=0.1Tmax,?αmax=pi/180×[90,1,1]T,? αmin=-?αmax,ρ=10。
設置的仿真條件為:船舶的初始位置為[0,0,0?],期望位置為[10,10,0?],海況條件為3 級海況。算法的參數設置如下:慣性權重w=0.8,s=50,Nc=20,Ns=20,Nre=20,Ned=100,Ped=0.25,c1=1,c2=1,粒子種群規(guī)模大小為100。
從圖4~圖7 仿真結果來看,由于對推力幅值和方位角設置了約束條件,3 種算法對應的推力幅值和方位角都能夠在約束范圍內。但是,采用PSO-BFO 混合算法進行推力分配時,推力幅值和方位角的變化更平緩,沒有明顯的突變,能更有效地減少推進設備的磨損,同時還能降低不必要的功率消耗。在降低船舶能量消耗方面,PSO-BFO 混合算法具有較明顯的優(yōu)勢。
圖4 不同算法優(yōu)化下期望合力及力矩和實際輸出的合力及力矩變化曲線Fig.4 Variation curve of expected resultant force and torque and actual output resultant force and torque under different algorithm optimization
圖5 不同算法優(yōu)化下各推進器的推力幅值變化曲線Fig.5 Thrust amplitude variation curve of each propeller under different algorithm optimization
從圖6 可看出,槽道推進器的角度一直保持在90°,符合船舶推進器的實際工作情況。利用混合算法優(yōu)化的推力分配優(yōu)化中全回轉推進器角度變化更為緩慢,不會出現急劇變化加深推進器的磨損程度。
根據圖4 和圖7 可知,在3 種算法下推力器產生的實際推力及力矩基本和期望推力及力矩保持一致,但改進算法相比于另兩種基本算法推力分配優(yōu)化效果更好,實際產生的推力及力矩和期望推力及力矩的誤差更小。誤差變化最大下降20%左右,輸出穩(wěn)定后平均誤差變化下降6%~10%,改進算法能夠減少推進器功率的消耗,同時能夠更加準確地輸出船舶動力定位推力分配所需要的期望推力及力矩。
圖7 不同算法優(yōu)化下期望合力及力矩和實際輸出之間的誤差變化曲線Fig.7 Error curve between expected resultant force and torque and actual output under different algorithm optimization
針對粒子群優(yōu)化算法易出現早熟和細菌覓食算法全局優(yōu)化能力差的問題,提出了一種粒子群-細菌覓食混合優(yōu)化算法,混合算法中在BFO 算法的位置更新公式加入PSO 的社會認知部分,從而改變了細菌位置更新方程,同時提出了自適應步長的思想來改變BFO 算法中細菌的游動步長,從而提高了算法的求解精度;利用改進的混合算法對目標函數進行優(yōu)化,并利用Matlab 軟件對3 種優(yōu)化算法進行仿真,通過分析和比較3 種算法下推力分配的效果,結果顯示改進的算法在求解精度和收斂速度上都比未改進的算法更優(yōu)秀,表明混合算法具有更好的優(yōu)化效果,驗證了所提出算法的有效性。