劉子祥,楊 磊,趙 峰
(中國船舶科學研究中心,江蘇無錫 214028)
快速性評估和預報是船舶設計的重要組成部分。在初步設計階段,需要通過初步確定的船型主參數估算設計船型的阻力性能,以支持下一步設計工作的開展。此時,船舶線型尚未確定,所以無法進行模型試驗或者數值模擬;而基于試驗數據的預報方法可以利用初步確定的主參數進行預報,其預報精度一般也可以滿足初步設計階段的需求。
基于數據的預報方法多利用統計回歸形成圖譜、公式及方程等。在上個世紀,世界各大水池和相關研究機構推出了多種基于系列或非系列船型的估算方法,如泰勒系列、BSRA、S60、SSPA系列及Holtrop系列公式等。中國船舶科學研究中心于20世紀90年代至本世紀初在積累的大量試驗數據的基礎上建立了CSSRC系列快速性多元回歸預報方法,并實現了程序化應用,該系列方法也是本文工作的重要參考。
這類方法得到了廣泛應用,同時也存在一些固有的問題。首先,回歸方法本身存在諸多問題和不便,而傳統的樣本分類處理方式也存在不合理之處。當前,對物理實驗數據的利用有著信息化、知識化、自動化和智能化的趨勢。對于傳統方法存在的問題,可以引入屬性細分的思想和數據挖掘的方法加以解決。本文嘗試在一個擁有超過400艘(次)船型的數據庫基礎上,利用動態樣本和支持向量機建立一種動態的有效功率預報方法。
統計回歸方法存在的問題主要有:回歸公式的形式取決于研究者的經驗,難有統一的標準,不便于比較;變量的選取受人為因素影響很大;在方法上,線性回歸難以準確表述客觀規律,信息丟失嚴重,而非線性回歸難度太大[1]。這些問題可以通過采用機器學習算法加以解決,本文采用的是支持向量機回歸方法。
支持向量機(support vector machine,SVM)由Corinna Cortes和Vapnik等于1995年提出,它在解決小樣本、非線性及高維模式識別問題中表現出許多特有的優勢。它具有堅實的理論基礎、簡單明了的數學模型[2]。在機器學習中,SVM是與相關的學習算法有關的監督學習模型,像多層網絡和徑向基函數網絡一樣,可以分析數據、模式識別、用于分類和回歸分析。
與傳統統計學的大樣本學習不同,SVM研究有限樣本的學習規律。其引入奧卡姆剃刀原則,即用最簡單的方法解決問題,尋找使經驗風險最小的最簡單函數,以獲得學習器的良好泛化性能[3]。SVM的主要思想是建立一個分類超平面作為決策曲面,使正例與反例之間的隔離邊緣最大化;SVM的理論基礎是統計學習理論,是結構風險最小化的近似實現。
支持向量機有以下優點[4]:1)通用性,能夠在分布廣泛的各類數據集中構建函數;2)魯棒性,不需要微調;3)有效性,在實際問題中總是最好的方法之一;4)理論完善,基于VC(Vapnik-Chervonenkis)推廣性理論。
在“支持向量”x(i)和輸入空間抽取的向量x之間的內積核這一概念是SVM學習算法的關鍵。其體系結構如圖 1,其中K(x,xi)為核函數,其種類主要如下。
線性(linear)核函數:K(x,xi)=xTxi;
多項式(polynomial)核函數:

徑向基(RBF)核函數:


圖1 支持向量機的體系結構
針對不同的研究問題,SVM模型一般可分為2類:1)分類模型SVC(support vector classification);2)回歸模型SVR(support vector regression)。本文利用MATLAB的SVM工具箱建立回歸模型,對船舶的有效功率進行預報。
中國船舶科學研究中心擁有國內規模最大的深水拖曳水池,多年來積累了大量快速性試驗數據,并建立過一些性能數據庫,筆者以此為基礎進行了添加和整理。原計劃參考CSSRC系列回歸公式建立四參數和七參數模型,但在整理中發現數據中有部分參數記錄不完整。為了充分利用數據,最終決定采用3參數和6參數的預報模型,對此分別整理建立了3參數和6參數的數據庫,具體見表1。其中每個艘(次)為一艘船的一次實驗記錄;每個艘(次)中的每個有記錄的傅氏數對應的功率為一個數據點。

表1 數據庫總體情況
數據庫內各無量綱參數的范圍如表2所示。

表2 全體樣本無量綱參數范圍
以上數據庫中的船型均為單槳海船(包括少數江海聯運貨船),包括散貨船、油船、集裝箱船和少數客滾船,原始數據庫中的雙槳海船、內河船、高速船(艇)及多體船等特殊船型數據未引入。這些數據產生的年代涵蓋1968年-----2017年,由于種種原因,較新的數據比較少,2007年之后的船型數據不超過50艘次。
傳統的回歸方法一般將全體樣本按照某一參數的范圍進行分組后分別進行處理,如CSSRC系列多元回歸預報方法。按照方形系數小于或大于0.78,將船型分為中等方形系數船和大方形系數船兩類,然后分別給出不同的回歸公式;Holtrop方法則是給出公式中一些可變參量的不同取值[5-6]。這類方法在實際操作中易于實現,但固定的分組也會帶來問題。
首先,由于樣本并非均勻分布,無論是采用回歸方法或是學習型方法,得到的模型在理論上總是針對樣本整體最優,而對某一樣本點或細分區間并非最優,如圖2和圖3中所示的情況。

圖2 全體樣本回歸情況

圖3 分區域樣本回歸情況
其次,是根據某一參數特定值進行劃分是否合理的問題。業內多采用CB=0.78作為劃分標準,但CB略小于0.78設計航速卻接近肥大型船以及CB大于0.78卻有著較高設計航速的船型也不鮮見,采用這種分組方法時就顯得十分尷尬。
對這類問題,應引入“屬性細分”的思想,對數據進行精細化研究。在數據量比較豐富的情況下,有條件也有必要這樣處理。屬性細分不應只是簡單地細化分組,這無法根本解決前述問題;而本文采用的動態樣本方法,指的是根據預報對象的特征(主參數等),按照特定規則從全體數據中選出一組與預報對象相似的樣本,以用于建立預報模型。這樣一來,預報系統將針對每一條不同的船型建立單獨的預報模型,而不再是建立某一參數區間內的泛用模型,這就實現了精確到每一個對象的精細化研究。
對于一般貨船,無量綱船型參數中CB對阻力特征的影響最大,所以進行樣本選擇時,應首先考慮CB。以預報對象船型的CB為基準,給出一個較小的離散區間(如 0.83±0.002),在數據庫中搜索CB滿足這一區間的樣本。如果搜得樣本數量不滿足最低限度,就按照一定步長加大離散區間再次搜索直到滿足最低數量要求為止。樣本選擇過程大致如圖4所示。

圖4 樣本選擇流程
在選擇過程結束后,得到的樣本可以直接用于建模,也可以其他參數(如L/B或L3/?)為標準進行第二輪選擇。經過幾個算例的測試對比,增加L/B為標準的二級選擇確實可以進一步提高精度,但效果有限。下文中的測試算例均只以CB為標準進行了一級選擇。
本文在建模參數選擇上參考了中國船舶科學研究中心的CSSRC系列回歸公式,結合數據庫內參數記錄的實際情況,最終采用了3參數和6參數(均不包括傅氏數)2種模型,參數和樣本數量的具體情況參見表1。
本文原計劃采用常規的二因次或三因次換算方法[7],即用預報模型預報剩余阻力CR或興波阻力CW及形狀因子1+k,最終換算到實船有效功率。實際操作中發現,數據庫中1+k、CR及CW均有不同程度缺失,只有實船有效功率數據是完整的。鑒于此,本文仿照海軍部系數定義了一個無量綱快速性系數PC。

式中:Δ為排水量,t;V為航速,kn;PE為有效功率,kW。可以看出其與海軍部系數的區別在于將主機功率換成了有效功率,其余一致。預報模型給出預報對象各傅氏數對應的PC后,便可以根據其尺度換算出實船各航速對應的有效功率。整體的預報流程大致如圖5所示。

圖5 預報整體流程
本文從數據庫中隨機抽取了25艘(次)樣本作為測試算例。為了能夠對3參數和6參數兩種模型的預報效果進行比較,這25艘(次)算例均包含了完整的6個船型參數。在進行預報時,將測試對象從數據庫中剔除。25艘(次)樣本的基本情況見表3和表4。其中LCB為浮心縱向位置,單位為%LPP,舯前為正;其中有2個算例為同一艘船的不同載重狀態,其余樣本皆為不同船型,所有樣本均無縱傾。

表3 算例基本信息

表4 算例無量綱參數范圍
首先將25艘(次)樣本按照其全部原始航速記錄點進行預報測試,共有305個數據點。其總體結果見表 5。通過對預報結果的觀察可以發現,較大的誤差值多出現在航速段的兩端,即傅氏數較高與較低的時候,如圖6~圖9所示的樣本5和樣本12的預報結果和誤差情況(均采用3參數法)。

圖6 樣本5預報結果對比

圖7 樣本12預報結果對比

圖8 樣本5預報誤差

圖9 樣本12預報誤差

表5 原始航速數據點預報測試結果
出現這種誤差分布特征的主要原因是航速偏高或過低時的數據相對較少,導致預報模型對這些部分的訓練效果不如服務航速段;同時,這些情況下試驗測量數據自身也難以保證精確。而服務航速附近的數據量充實,且實驗測量結果也更準確。
考慮到實際應用,功率或阻力預報應該更多地針對服務航速區段。去掉一些偏離服務航速較遠(即傅氏數偏高或偏低)的數據點后,剩余240個數據點的統計結果見表6。誤差分布情況見圖10和圖11。

表6 服務航速段數據點預報測試結果

圖10 六參數法誤差分布情況

圖11 三參數法誤差分布情況
造成預報誤差的原因有很多,除了原始試驗數據記錄可能有誤,以及數據庫整理過程中可能出錯外,主要有以下因素。一般來說,誤差的產生都是多種因素共同作用的結果。
本文采用的無量綱系數PC,應用上與海軍部系數相同,要求預報對象與樣本的水下形狀相近[8]。某些船型的水下形狀可能相對比較獨特,而其特點又無法在主參數上體現出來(尤其是本文未采用球首參數),在只采用主參數進行預報時可能會產生較大誤差。
對于中低速船而言,船體摩擦阻力占了總阻力的大部分。在常規的預報和換算方法中,摩擦阻力系數由1957ITTC等固定公式求得,真正需要數學模型預報的只有剩余阻力或興波阻力及船體形狀因子。而本文因相關數據不完整,采用了整體預報方式,預報結果包括了全部阻力成分的影響,實際上放大了預報誤差的影響范圍。
某些船型可能有一個或幾個主參數位于建模樣本對應參數范圍的邊緣(圖 12),或超出了這一范圍,導致出現較大誤差。例如CB太大,使系統選擇建模樣本時只能向CB更小的方向搜索,使建模樣本CB范圍整體嚴重偏移,將導致較大的預報誤差。這一問題也是導致六參數法預報精度整體低于三參數法的原因之一,位于范圍邊緣或超出范圍的參數成了干擾項,更多的輸入參數會導致這種情況更多地出現。
本文所建立的數據庫內數據年代整體偏早,近10年內的樣本很少。隨著船型設計的不斷發展和優化,在主參數相同的情況下,新設計船型的阻力性能比起舊船型會有所變化,這也導致了算例中較新船型的預報誤差整體大于舊船型。算例船型的預報誤差與年代關系的大致規律可參考圖13。

圖12 參數范圍邊緣處的樣本選擇情況

圖13 算例誤差與年代關系
需要注意的是,本文中無論是數據庫還是算例中的樣本,大多是相互沒有關系的各類船型(數據庫包含有少數幾個系列船型,數量很少)。這比采用系列船型更有實用價值,但也更加考驗算法的泛化能力。顯然,支持向量機的泛化能力是很不錯的。就算例測試結果來看,本文提出的這套預報方法的效果還算令人滿意。本方法可服務于初步設計階段,對設計船型的有效功率進行快速近似預報,以支撐下一步設計工作的開展。
本方法仍有很大的改進空間。通過對誤差產生原因的分析,可以在今后的工作中有針對性地加以改進。首先,在盡量補全缺失參數,尤其是形狀因子1+k的基礎上,改用常規的二因次或三因次換算方法,可以與本文中采用的PC系數換算法進行比較,以確定兩者預報效果的差異;其次,增加參數范圍判斷功能,當預報對象的某參數超出建模樣本對應參數范圍時,給用戶相應的提示;最后,盡可能繼續擴充數據庫,尤其是增加新船型樣本,這將有力地提高本方法對新設計船型的預報精度。除此之外,還可以嘗試采用神經網絡等其他學習型算法來構建預報模型。