林辰儒,秦堯,姚望,李思佳
(上海船舶研究設(shè)計院,上海 201203)
隨著裝載計算機(jī)的普及, 對配載方案的強(qiáng)度、穩(wěn)性校驗已經(jīng)可以通過計算機(jī)得出結(jié)果,但是在船舶營運(yùn)過程中,依舊需要依靠大副的經(jīng)驗來決定船舶浮態(tài), 并通過人工調(diào)整計算出相應(yīng)的配載方案,選擇少,費(fèi)時費(fèi)力,精準(zhǔn)度欠缺,也沒有明確的優(yōu)化目標(biāo)。
近年來隨著智能船舶技術(shù)的快速發(fā)展,通過人工智能算法或者大數(shù)據(jù)分析等技術(shù)手段,能夠?qū)A繉嵈瑺I運(yùn)的數(shù)據(jù)進(jìn)行分析和挖掘,找到能效最佳的航行姿態(tài)并推薦給船長,即數(shù)字化營運(yùn)中的縱傾優(yōu)化服務(wù)。 與傳統(tǒng)船舶航行相比,數(shù)字化營運(yùn)會根據(jù)海況、 氣候等條件更加頻繁地改變船舶姿態(tài),以此提高船舶推進(jìn)效率,而能夠自動生成優(yōu)化配載方案的智能配載算法則可以降低船長和大副的工作強(qiáng)度,提升配載效率。
船舶的智能配載是指通過計算機(jī)手段,將目標(biāo)吃水、縱傾、橫傾等作為輸入?yún)?shù),結(jié)合船舶完整穩(wěn)性、總縱強(qiáng)度等校核要求,并滿足一定的優(yōu)化目標(biāo),自動生成配載方案的過程, 旨在減少人工介入,節(jié)省配載時間并且提升船舶航行的安全性。 楊軍[1]首先提出了一種基于專家系統(tǒng)的散貨船自動配載儀的設(shè)計,其本質(zhì)還是基于經(jīng)驗和推理的方式,考慮范圍有限,并且需要大量預(yù)先設(shè)計的規(guī)則。 同年,杜嘉立等[2]也開發(fā)了基于公用數(shù)據(jù)庫以及知識庫的自動配載程序,與專家系統(tǒng)類似。 2016 年,吳海波[3]提出了一種基于差分進(jìn)化算法的自動配載儀,通過調(diào)整首尾貨艙的裝載量調(diào)整吃水差,但是只從可行解中挑選剪力彎矩相對較優(yōu)的解,沒有有針對性的優(yōu)化。 2017 年,劉春雷[4]設(shè)計了一種通過離散差分進(jìn)化算法優(yōu)化散貨船裝卸貨過程的智能配載算法,并對剪力彎矩有相應(yīng)優(yōu)化,但是其并沒有將含有自由液面的壓載艙數(shù)量這一因素考慮在內(nèi),而自由液面會對船舶的穩(wěn)性、操縱性和安全性產(chǎn)生影響,在應(yīng)用過程中船員也會因為含有自由液面的艙室過多而對配載方案提出質(zhì)疑, 即使配載方案通過了穩(wěn)性、強(qiáng)度校核,船員依舊難以接受。 因此,基于差分進(jìn)化算法,結(jié)合已有的裝載計算機(jī)工具,實現(xiàn)自由液面艙室的數(shù)量最少和全船最大許用剪力、彎矩百分比最小為協(xié)同優(yōu)化目標(biāo)的智能配載的算法,可以根據(jù)船舶當(dāng)前的裝載狀態(tài), 結(jié)合縱傾優(yōu)化功能,在分析得到船舶營運(yùn)能效最佳的姿態(tài)后,自動生成達(dá)到最優(yōu)姿態(tài)所需的配載方案。
在靜水條件下, 不考慮船舶的中拱/中垂變形,當(dāng)需要對船舶浮態(tài)調(diào)整時, 如何通過智能算法,結(jié)合裝載計算機(jī)的輔助計算,將壓載水合理分配到指定的壓載水艙室,即指定目標(biāo)浮態(tài)(吃水,橫傾,縱傾),以及可用的壓載水艙后,針對滿足目標(biāo)浮態(tài)的壓載水配載方案進(jìn)行自由液面艙室數(shù)量和全船最大彎矩、剪力的協(xié)同優(yōu)化后,輸出各壓載水艙室的目標(biāo)裝載量。 其本質(zhì)為解決滿足一定約束條件的多目標(biāo)優(yōu)化問題。
設(shè)計約束優(yōu)化對象X=[X1,X2,…,XD]對應(yīng)各目標(biāo)艙室的壓載水量, 其維度D 為選取艙室的個數(shù)。調(diào)整裝載水量X, 使其滿足如下的約束條件來限制船舶的浮態(tài)。
在滿足完整穩(wěn)性、總縱強(qiáng)度、視線盲區(qū)、螺旋槳浸沒等由裝載計算機(jī)計算得出的穩(wěn)性及浮態(tài)校核要求前提下,對于指定艙室Ci的艙容約束如下:
式中:Ci,min為艙室容量下限,通常為0;Ci,max為艙室Ci的最大裝載量。
對目標(biāo)吃水、橫傾角θ、縱傾角φ 的浮態(tài)約束方程組如下:
式中:△target為通過靜水力表根據(jù)目標(biāo)吃水、 縱橫傾角度θ 和φ 計算得出的目標(biāo)總排水量;△current、xG、yG、zG、xB、yB、zB分別為裝載計算機(jī)根據(jù)裝載情況X 計算得出的總排水量,重心的縱向、橫向、垂向坐標(biāo),以及浮心的縱向、橫向、垂向坐標(biāo);原本通過表示裝載情況X 所對應(yīng)的縱傾角、橫傾角的正切值tanφ′,tanθ′,約束目的是使其與目標(biāo)縱傾角、橫傾角的正切值tanφ,tanθ 盡可能相等, 但是為了避免除0 情況采用相乘的運(yùn)算。
滿足上述約束條件的配載方案可能會有很多,按照以下優(yōu)化目標(biāo), 結(jié)合裝載計算機(jī)運(yùn)行數(shù)據(jù),從中尋找最優(yōu)的結(jié)果。
1)含有自由液面的艙室數(shù)量最少。設(shè)定裝載量在2%到98%之間為自由液面。 艙室的裝載容量從裝載計算機(jī)中獲取。
2)最大剪力許用百分比SFmax的值最小,SFmax為所有計算剖面實際剪力占許用剪力百分比值中的最大值,由裝載計算機(jī)計算得出。
3) 最大彎矩許用百分比BMmax的值最小,BMmax為所有計算剖面實際彎矩占許用彎矩百分比值中的最大值,由裝載計算機(jī)計算得出。
4) 考慮到穩(wěn)性最優(yōu)和強(qiáng)度最優(yōu)的矛盾點,對以上3點做加權(quán)求和后的總體協(xié)同優(yōu)化,而非單項最優(yōu)。
遺傳算法是模擬生物進(jìn)化過程,通過用數(shù)學(xué)建模的方式模擬染色體雜交、變異以及優(yōu)勝劣汰的方式,在解空間內(nèi)隨機(jī)搜索最優(yōu)解的過程,在處理復(fù)雜優(yōu)化問題或是難以直接用數(shù)學(xué)模型找到最優(yōu)解的場景有良好的表現(xiàn)[5]。 差分進(jìn)化算法(Differential Evolution,DE 算 法)是Storn 等[6]于1997 年 發(fā)表的基于遺傳算法針對非線性不可導(dǎo)的連續(xù)空間尋求整體最優(yōu)解的啟發(fā)式優(yōu)化方法。與傳統(tǒng)遺傳算法一樣,DE 算法對種群執(zhí)行初始化、變異和交叉,使種群隨著迭代次數(shù)進(jìn)化。 DE 算法與遺傳算法的主要區(qū)別在于:在進(jìn)化的每一代中,遍歷種群中每一個目標(biāo)個體,在變異步驟對隨機(jī)多個不同父代進(jìn)行矢量差分,在選擇步驟將變異結(jié)果與隨機(jī)父代進(jìn)行矢量交叉生成子代,最后在選擇步驟將子代與目標(biāo)個體進(jìn)行擇優(yōu)競爭。 與傳統(tǒng)遺傳算法相比,DE 算法在優(yōu)化后期對局部最優(yōu)陷阱有更好的回避能力,更容易找到整體最優(yōu)解。 同時,DE 算法還有變量少、魯棒性強(qiáng)、收斂速度快,并且便于實現(xiàn)和使用的優(yōu)點[7]。 DE算法在求解智能配載時的過程如下。
在問題可行解空間內(nèi),指定種群內(nèi)的個體數(shù)量NP,隨機(jī)生成初始種群P0=[X1,X2,…,Xnp],初始種群盡可能分布在整個解空間內(nèi)以降低陷入局部最優(yōu)的可能。種群中的每一個個體Xj都是一個配載方案,Xj中第i 個元素Xj,i為指定艙室列表中第i 個艙室對應(yīng)的裝載量,且每個元素Xj,i滿足等式(1):
遺傳算法中通過變異來生成新的基因信息,即生成新的備選裝載量。 差分進(jìn)化中有多種變異策略,本項目采用最常見的DE/rand/1 策略,即對于父代配載方案Xj,隨機(jī)選取一個目標(biāo)個體Xa以及一組隨機(jī)個體(Xb,Xc),對(Xb,Xc)進(jìn)行矢量差分,即將Xb和Xc兩個配載方案中各對應(yīng)艙室裝載量相減,將結(jié)果乘以縮放因子F 后加給目標(biāo)個體Xa產(chǎn)生變異個體Xm,且選取目標(biāo)滿足j≠a≠b≠c。 通過矢量差分的方式,保證變異個體在解空間內(nèi)與選取個體都保持一定的距離,以此強(qiáng)化全局搜索的能力。 其矢量公式如下:
DE 算法通過離散的交換目標(biāo)個體與變異個體的信息來得到新的個體。 常用的交叉方式有二項式交叉與指數(shù)交叉。 指數(shù)交叉通常為了應(yīng)對個體中相鄰緯度存在相關(guān)性的問題。 本項目采用二項式交叉的方式,即試驗子代(配載方案)的每個艙室的裝載量都隨機(jī)、離散地來自父代或變異個體對應(yīng)艙室的裝載量。
對于父代配載方案Xj的第i 個艙室裝載量Xj,i,比較隨機(jī)概率ri與指定的交叉率CR 的大小來決定子代配載方案Xnewj中的對應(yīng)艙室的裝載量Xnewj,i,并且為了防止交叉產(chǎn)生的子代與父代個體相同,要保證子代至少有一個緯度來自變異個體:
對每一迭代中的每個父代個體都會隨機(jī)生成整數(shù)R=rand(0,D)來指定一個隨機(jī)艙室以及一個同緯度的隨機(jī)概率向量用于產(chǎn)生新的試驗子代。
式中:D 為總艙室個數(shù),ri為該艙室對應(yīng)的隨機(jī)概率。
DE 算法采用貪婪的方式,通過比較子代Xnewj與當(dāng)前迭代的目標(biāo)父代Xj的適應(yīng)度值,擇優(yōu)選擇出下一個迭代中的父代個體X′j,在最小化問題中:
式中:G(x)為適應(yīng)值計算函數(shù),在下文中詳細(xì)介紹。
在DE 算法中, 用適應(yīng)度的值來對個體的好壞進(jìn)行評判。 適應(yīng)度值的計算方式?jīng)Q定了種群進(jìn)化的方向,本算法結(jié)合第一節(jié)中介紹的約束條件和優(yōu)化目標(biāo)設(shè)計適應(yīng)度值計算的方式。 根據(jù)適應(yīng)度值進(jìn)化的本質(zhì)是單目標(biāo)約束優(yōu)化問題,因此,通過適應(yīng)度值綜合量化描述船舶的當(dāng)前浮態(tài)與目標(biāo)浮態(tài)的差異,含有自由液面的艙室數(shù)量,穩(wěn)性、強(qiáng)度校核是否通過,以及最大剪力、最大彎矩的值。 由于量化目標(biāo)中有多個最小化問題,因此將適應(yīng)度值設(shè)計為針對約束條件和優(yōu)化目標(biāo)的懲罰函數(shù)。 進(jìn)化目標(biāo)為適應(yīng)度(總懲罰函數(shù))的值最小。
約束條件的誤差函數(shù)設(shè)計為
浮態(tài)懲罰函數(shù)為Gf(X)=af1(X)+bf2(X)+cf3(X)+f4(X),a、b、c 為懲罰系數(shù)。 為了防止問題無法收斂,采用設(shè)定寬松值的方式,即各項懲罰函數(shù)只在大于寬松值時才被計算進(jìn)浮態(tài)懲罰函數(shù),否則取0。
優(yōu)化條件的懲罰函數(shù)設(shè)計為:
f6(X)為含有自由液面的艙室個數(shù),由于艙頂空氣和底部殘液的影響,對自由液面的判斷為該艙室中壓載水量在艙室容量的2%~98%。
總懲罰函數(shù)為
只有當(dāng)約束條件滿足時才計算優(yōu)化條件,保證在進(jìn)化過程中約束條件的優(yōu)先級,同時也通過避免對無意義的結(jié)果進(jìn)行優(yōu)化來提升計算效率。 由于0<SFmax+BMmax<2,設(shè)計f4為0 或2 是為了提高狀態(tài)檢測懲罰項的優(yōu)先級,以此保證最優(yōu)解必定是優(yōu)先滿足各項檢測,再考慮全船最大剪力彎矩最小化(如果問題收斂)。
DE 算法通過循環(huán)迭代進(jìn)化, 算法在每一個迭代中都會生成新變異體并逐一評價,采用優(yōu)勝劣汰的方式選出新的個體,并判斷終止條件是否滿足,如果不滿足則進(jìn)入下一個迭代,滿足則退出循環(huán)并輸出結(jié)果。 本項目采用將適應(yīng)度值在一定連續(xù)迭代不變作為終止條件,相比固定迭代次數(shù),此方法更加靈活,針對簡單問題能更快輸出結(jié)果,針對復(fù)雜問題則可以通過增加計算時間輸出更精確的結(jié)果。
外部輸入目標(biāo)浮態(tài),可調(diào)整的壓載水艙室列表,以及種群規(guī)模和迭代數(shù)量后,算法通過裝載計算機(jī)接口獲取船舶當(dāng)前浮態(tài)和艙室信息,同時初始化差分進(jìn)化參數(shù)。 隨后以目標(biāo)浮態(tài)和營運(yùn)要求為約束條件,以含有自由液面艙室數(shù)量和剪力、彎矩許用百分比的加權(quán)求和值為協(xié)同優(yōu)化目標(biāo),執(zhí)行差分進(jìn)化算法。 當(dāng)判斷種群收斂或者達(dá)到最大迭代次數(shù)后,退出并返回結(jié)果。 具體流程圖如圖1 所示。
圖1 智能配載算法流程圖
選取某礦砂船為對象進(jìn)行驗證,輸入?yún)?shù)如表1 所示。
表1 智能配載輸入(壓載)
因艙室較多, 艙室編號均采用縮寫形式,其中,R2 表示壓載水艙,小數(shù)點后數(shù)字表示艙室號,后綴 中A 表 示AFT,F(xiàn) 表 示Fore,P 表 示Port,S 表 示Starboard。 例如R2.03AP 表示No.3 A.W.B.TK.P,即3 號后壓載水艙(左)。 R2.AF1 和R2.AF2 均為艉尖艙。 其艙室對應(yīng)位置如圖2 所示。
圖2 艙室布置圖
智能配載輸出結(jié)果如表2 所示:在不考慮自由液面優(yōu)化時, 自動配載結(jié)果是16 個艙均含有自由液面;在考慮自由液面優(yōu)化計算后,僅有3 個艙含有自由液面, 大幅度減少含有自由液面的艙室數(shù)量。 最大彎矩和剪力的許用百分比也基本持平,甚至有所降低,但是最大彎矩和剪力值的降低也可能是由于遺傳算法本身隨機(jī)性帶來的影響。
表2 某礦砂船智能配載輸出結(jié)果對比
針對船舶營運(yùn)期間縱傾優(yōu)化的應(yīng)用場景,結(jié)合已有的裝載計算機(jī)工具,基于差分進(jìn)化算法實現(xiàn)了一套智能配載算法。 該算法收斂性好,準(zhǔn)確性高,在滿足船舶穩(wěn)性、強(qiáng)度、視線盲區(qū)等要求的同時,針對含有自由液面的艙室數(shù)量和船舶總縱彎矩、剪力做多目標(biāo)協(xié)同優(yōu)化, 如果與船舶智能系統(tǒng)相結(jié)合,可以有效提高船舶的營運(yùn)能效。