尚前明,楊 燁,王 瀟,曹 召,鄧曉光
(武漢理工大學 能源與動力工程學院,湖北 武漢 430063)
當前船舶柴油機故障診斷面臨的一大問題是故障特征的發現,由于船舶柴油機的特定工作環境使得獲得大量有效的故障非常困難。而常規的分類算法包括神經網絡都依賴于大量的樣本統計數據,當訓練樣本數量有限時,很難保障模型有著較好的泛化性能。支持向量機算法(SVM)算法通過核函數將特征空間映射到Hilbert高維空間,有效的降低了模型的VC維,滿足了結構化風險原則,非常適合訓練樣本數量較小的學習情況[1]。
SVM是Vapnik等人基于統計學理論的結構風險最小化規則提出的,其算法本質上是凸二次規劃問題。神經網絡的算法極值解有可能是局部最優值,而SVM算法的極值解就是最優解,這就使得SVM算法有著較強的學習能力。另外SVM有著很強的推廣能力使得在訓練樣本很少的情況下依然能在測試集中得到很小的預測誤差。
由于船舶柴油機特定的工作環境使其故障數據不易獲得,而SVM算法可以從小樣本訓練集中學習,因此將SVM算法應用到只有較小訓練樣本的船舶柴油機故障診斷中非常合適。算法的實現主要分為模型訓練和故障識別2個階段,具體步驟如下。
1)模型訓練過程。主要是讓SVM算法根據兩類故障樣本的特征值和標簽值找到支持向量進而確定最優分類超平面。
(1)搜集船舶柴油機的故障數據和正常數據,根據專家知識建立起訓練樣本集和測試集[Xi,Yi],Yi∈(-1,1)。
(2)根據Mercer定理選擇合適的核函數,根據所選擇的核函數對訓練樣本進行預處理。
(3)模型訓練,根據找出的支持向量SV建立最優分類超平面,得到分類決策函數f(x)。
2)故障識別。根據訓練好的二分類SVM函數對測試數據進行分類。
(1)將測試數據輸入到訓練好的SVM模型中,得出特征數據X的輸出結果。
(2)利用指示函數將輸出結果f(x)歸在(-1,1)范圍內,做出判斷決策。
最原始SVM算法是一種二分類算法,本質上是通過兩類訓練樣本劃分出一條邊界,使兩類樣本最大程度的遠離分離邊界。因此要將SVM算法應用到多分類故障診斷中,需要在原始的算法上進行一定的改進。目前比較常用的SVM算法解決多分類問題的思路主要有以下2種。

2)OVA方法,即將訓練樣本分為一對多的類型,這種方法只需要訓練m個分類器,但是存在訓練樣本不均衡的問題。這種方法雖然簡單有效,但是可能存在有些樣本一直得不到正確分類,即存在分類陰影問題。
這里采用一種適合船舶柴油機帶故障優先級的2PTMC算法來解決多分類問題[2]。該方法屬于第二類OVA方法的思想構造分類器,根據故障本身特性將故障分為不同優先級。第一級SVM分類器輸入全部訓練樣本,把第一優先級的故障分出,然后剩下的樣本輸入第二級SVM分類器進行分類,以此類推直到最后一級分類器,完成全部k類故障樣本區分。基于SVM的2PTMC算法結構如圖1所示,下面給出2PTMC算法的具體實現步驟。

圖1 2PTMC算法結構示意圖
當需要解決的是一個m類的分類問題時,訓練數據樣本集為(x1,y1),(x2,y2),…,(xi,yi),其中x∈Rn,y∈[1,2,…,m]。這里定義一個2PTMC結構元組:(F,SVM,TS,P),具體每個元素的含義如下所示。
F=(f1,f2,…,fi,…,fm),F表示所有的二叉樹終止點集合,由f1,f2,…,fi,…,fm待識別的m個可能的故障數據集所組成,正常狀態的數據集也包括在內,與圖中的正常、故障1、故障2等所對應。
P=(p1,p2,…,pi,…,pm),P表示故障分類的優先級組合,決定了SVM的排序方式。一般情況下,優先級根據故障發生的頻率來排序,故障發生頻率比較高的優先級大,發生頻率低的優先級較小。
SVM=(svm1,svm2,…,svmi,…,svmm-1),SVM表示所有svm分類器的組合,當存在m類分類問題時,需要m-1個svm分類模型,其中第i個svm分類器處理的是故障優先級為pi的分類問題。


作為船舶核心動力裝置的船舶柴油機長期工作在高溫、高壓的惡劣環境下,并且存在運動部件結構復雜、振源多的特點。這就使得船舶柴油機一旦發生故障,不好確定故障具體位置,稍不留意還可能影響船舶正常運營,甚至造成更大的經濟損失,危機船員生命安全[3]。傳統的故障診斷方法一般有油液分析法、振動信號分析法、轉動信號法和熱工參數分析法等。船舶柴油機的熱工參數比較容易采集,并且熱工參數可直接反應出船舶柴油機的工作狀態變化,因此可以采用熱工參數對船舶柴油機進行故障診斷。本文數據集來自某船舶MAN B&W 7K98MC型船舶柴油機,該型號船舶柴油機為大型2沖程柴油機,廣泛應用于大型船舶上,主要技術參數如表1所示。
根據所采集數據的主要故障和MAN B&W 7K98MC型船舶柴油機比較容易發生的故障綜合考慮,選取壓氣機故障、中冷器效率下降、噴油器堵塞、排氣管臟堵幾種故障模式進行故障分類診斷,驗證基于SVM的2PTMC算法在船舶柴油機故障診斷上的可行性。這里根據所采集數據的不同故障發生頻率進行優先級排序(不同柴油機可能不同),具體排序方式如表2所示。

表1 MAN B&W 7K98MC型柴油機的主要技術參數

表2 故障優先級分級表
部分訓練樣本集如表3所示(這里由于頁面尺寸原因只放上前7維數據,實際上有15維)。

表3 部分訓練樣本數據集
1)模型訓練。訓練SVM分類器采用Python語言編寫程序,調用Python庫函數中的SVM函數使得編程變得簡單可行。SVM模型中核函數的應用可將有限的線性不可分的特征維度映射到更高的維度已獲得更好的分類效果。比較常用的核函數有高斯核、線性核、多項式核等。這里選用高斯核函數,作為一種經典的魯棒徑向集核,高斯核有著較好的魯棒性,抗干擾能力較強。其數學公式如下:
k(x,y)=exp(-δ‖x-y‖2),
其中超參數δ的選取極為重要,δ的大小影響SVM的分類效果,當δ的取值分別為1、10、100時分類效果如圖2所示。

圖2 δ值為1、10、100的分類效果圖
由圖2可知,隨著δ的增大,分類邊界變得越來越復雜,最后分類邊界變成一個個獨立的小區域。由此可見δ太大,容易造成過擬合問題(即模型的泛化性能變差),所以δ的選取不能太大。
按照上述的故障優先級分別訓練SVM分類器,由于實驗數據過多且步驟大多一致,這里只給出第一級和最后一級SVM分類器訓練結果。
(1)第一級SVM分類器。訓練樣本為全部樣本,其中正常數據樣本20組,其他4類故障樣本每種20組,全部訓練樣本為100組。訓練采用高斯核函數,在1~10范圍內根據試驗選取δ的取值。結果顯示,當δ=3時可以獲得比較穩定的支持向量(SV)個數,為了防止模型過擬合,這里選取δ=3。第一級SVM分類結果如表4所示。

表4 δ =3時第一級SVM訓練結果
(2)第四級SVM分類器。訓練數據為壓氣機故障、中冷器效率下降兩類故障訓練樣本集,每種故障20組,共40組訓練數據。分類結果如表5所示。

表5 δ=3時第四級SVM訓練結果
2)模型診斷。這里采用50組測試數據對模型進行驗證,訓練結果如表6所示。

表6 測試結果
由表6可知,只有在第二級分類時出現2個錯誤和第三級分類時出現1個錯誤。出現錯誤的原因可能是測試集本身含有噪聲或者數據集本身錯誤,但模型整體分類精確度很高,可以達到分類要求。另外根據測試樣本數量可以直觀看出,相比傳統的OVO和OVA多分類模式,2PTMC多分類方法的樣本重復率是最小的,隨著數據量的增加,2PTMC算法的優勢更加明顯。
船舶柴油機由于其特定的工作環境和復雜的結構組成使得其故障原因難以發現和故障數據難以獲得。船舶柴油機熱工參數的變化可以大體反映其工作過程,本文引用了一種適合小樣本決策的基于SVM的多故障診斷算法,并利用此算法根據熱工故障對船舶柴油機進行故障診斷。結果表明該方法有效可行,相比于傳統的SVM多分類算法,基于2PTMC的多故障分類方法識別精度很高,而且重復樣本訓練次數明顯減少。