王曉東, 馬旭穎
(上海船舶運(yùn)輸科學(xué)研究所 艦船自動(dòng)化系統(tǒng)事業(yè)部,上海 200135)
相比互聯(lián)網(wǎng)等新興行業(yè),船舶行業(yè)在大數(shù)據(jù)與人工智能(Artificial Intelligence,AI)的結(jié)合應(yīng)用方面起步較晚,所做的工作相對(duì)滯后。船舶行業(yè)涉及到很多業(yè)務(wù),包括船舶設(shè)計(jì)、船舶建造和貨物運(yùn)輸?shù)?,因此蘊(yùn)含有大量有價(jià)值的數(shù)據(jù)信息。將大數(shù)據(jù)分析技術(shù)應(yīng)用到船舶行業(yè)中,不僅能節(jié)省船舶運(yùn)輸成本,而且能更好地對(duì)船舶設(shè)備進(jìn)行故障診斷[1],大大提升船舶的運(yùn)行效率。
本文以船舶柴油機(jī)的故障診斷為例,研究將大數(shù)據(jù)分析方法和支持向量機(jī)(Support Vector Machine,SVM)模型算法應(yīng)用到柴油機(jī)故障診斷中的可行性,為船舶行業(yè)提供一種基于大數(shù)據(jù)分析的船舶設(shè)備故障診斷方法。
隨著社會(huì)的不斷發(fā)展、科技的不斷進(jìn)步,大數(shù)據(jù)分析技術(shù)越來(lái)越成熟,已廣泛應(yīng)用到很多行業(yè)中。在船舶行業(yè),目前已有很多船企和船舶組織將大數(shù)據(jù)分析技術(shù)應(yīng)用到其實(shí)際業(yè)務(wù)中,取得了良好的效果。
1)航行中的船舶能不間斷地采集其主要設(shè)備的運(yùn)行數(shù)據(jù),通過(guò)對(duì)這些數(shù)據(jù)進(jìn)行分析,判斷主要設(shè)備的運(yùn)行狀態(tài),在此基礎(chǔ)上,根據(jù)主要設(shè)備的運(yùn)行數(shù)據(jù)要求預(yù)測(cè)其故障發(fā)生概率,從而提前采取設(shè)備維護(hù)措施,為設(shè)備的正常運(yùn)行提供保障。
2)船企通過(guò)對(duì)船舶航行數(shù)據(jù)進(jìn)行采集、分析和預(yù)測(cè),獲得船舶的主機(jī)功率、航速、航行過(guò)程中的能耗、各船用設(shè)備的運(yùn)行狀態(tài)和航行區(qū)域的海況等數(shù)據(jù)。通過(guò)對(duì)這些數(shù)據(jù)進(jìn)行分析,了解海況對(duì)航速、航行能效、主機(jī)功率和各類(lèi)設(shè)備的運(yùn)行狀態(tài)的影響。
3)應(yīng)用大數(shù)據(jù)分析技術(shù)能得到準(zhǔn)確測(cè)量和預(yù)測(cè)清理水下船體和螺旋槳表面附著物的最佳時(shí)間,并進(jìn)一步分析出船底污物與船舶航行時(shí)間和航線之間的關(guān)系,結(jié)合進(jìn)塢維修時(shí)測(cè)算的清污成本就可預(yù)測(cè)出能使成本最低的進(jìn)塢維修、清污時(shí)間節(jié)點(diǎn)。
4)應(yīng)用大數(shù)據(jù)分析技術(shù)能大大提高船舶節(jié)能減排的效率。船企能通過(guò)基于大數(shù)據(jù)分析技術(shù)的船舶航行能源需求預(yù)測(cè)系統(tǒng)監(jiān)控船位、柴油發(fā)動(dòng)機(jī)能耗和轉(zhuǎn)速等數(shù)據(jù),實(shí)現(xiàn)對(duì)船舶燃油情況的實(shí)時(shí)遠(yuǎn)程監(jiān)測(cè)。同時(shí),能通過(guò)實(shí)時(shí)采集數(shù)據(jù)并進(jìn)行大數(shù)據(jù)分析,根據(jù)柴油機(jī)油耗量、船舶排水量和航速之間的關(guān)系,對(duì)船舶能耗策略進(jìn)行優(yōu)化,得到一個(gè)能指導(dǎo)船舶運(yùn)行在最佳工作點(diǎn)上的能耗指標(biāo),實(shí)現(xiàn)船舶能耗最少的目標(biāo)。
5)應(yīng)用大數(shù)據(jù)分析技術(shù)可對(duì)船舶設(shè)備進(jìn)行故障診斷。通過(guò)采集船舶設(shè)備的重要參數(shù),如柴油機(jī)轉(zhuǎn)速、柴油機(jī)功率和柴油機(jī)滑油壓力等,并應(yīng)用大數(shù)據(jù)分析技術(shù)分析、預(yù)測(cè)船舶設(shè)備的故障發(fā)生概率,達(dá)到及時(shí)消除故障和預(yù)測(cè)故障發(fā)生的目標(biāo),大大提高船舶航行的安全性和可靠性。
SVM屬于有監(jiān)督的機(jī)器學(xué)習(xí)算法,可用于對(duì)離散因變量進(jìn)行分類(lèi)和對(duì)連續(xù)因變量進(jìn)行預(yù)測(cè),能將低維度的線性不可分的空間轉(zhuǎn)換為高維度的線性可分的空間。該算法的核心思想是利用某些支持向量構(gòu)成的“超平面”,對(duì)不同類(lèi)別的樣本點(diǎn)進(jìn)行劃分(見(jiàn)圖1)。該模型算法的優(yōu)點(diǎn)有:
圖1 SVM算法核心思想示意
1)有很好的魯棒性,能避免“維度災(zāi)難”的發(fā)生(模型計(jì)算的復(fù)雜度不會(huì)隨數(shù)據(jù)維度的增多而提高);
2)有很好的泛化能力,能避免模型過(guò)擬合;
3)能避免模型在運(yùn)算過(guò)程中出現(xiàn)局部最優(yōu)。
SVM模型算法分為線性可分模型算法和非線性模型算法2種,其中線性可分的SVM模型示意見(jiàn)圖2。
圖2 線性可分的SVM模型示意
通過(guò)推導(dǎo)得出SVM線性可分模型算法的目標(biāo)函數(shù)[2]為
(1)
(2)
αi≥0
(3)
式(1)~式(3)中:xi為樣本點(diǎn);yi為樣本點(diǎn)所屬的類(lèi)別;αi為拉格朗日乘子;(xi·xj)為2個(gè)樣本點(diǎn)的內(nèi)積。計(jì)算分割面w′x+b=0的參數(shù)w和b[2],有
(4)
(5)
當(dāng)遇到樣本點(diǎn)線性不可分的情況(見(jiàn)圖3)時(shí),解決方法是將二維線性不可分樣本映射到高維空間中,使樣本點(diǎn)在高維空間中線性可分(見(jiàn)圖4)。
圖3 線性不可分樣本示意
圖4 二維樣本映射到高維空間示意
通過(guò)推導(dǎo)得出SVM非線性模型算法的目標(biāo)函數(shù)[2]為
(6)
(7)
0≤αi≤C
(8)
式(6)~式(8)中:內(nèi)積φ(xi)·φ(xj)可利用核函數(shù)替換,即K(xi·xj)=φ(xi)·φ(xj);C為懲罰系數(shù)值,默認(rèn)為1。推導(dǎo)出線性“超平面”參數(shù)w和b的值[2]為
(9)
(10)
核函數(shù)可選擇線性核函數(shù)、多項(xiàng)式核函數(shù)、高斯核函數(shù)和Sigmoid核函數(shù)等。以高斯核函數(shù)為例,其表達(dá)式為
(11)
故對(duì)應(yīng)的分割“超平面”為
(12)
式(11)和式(12)中:γ為高斯核函數(shù)的參數(shù)[2]。
船舶柴油機(jī)是船舶動(dòng)力裝置的核心設(shè)備,下面以該設(shè)備為例進(jìn)行船舶設(shè)備故障診斷分析。若該設(shè)備頻繁發(fā)生故障,會(huì)影響船舶的正常航行,因此保證船舶柴油機(jī)正常工作非常重要。船舶柴油機(jī)滑油系統(tǒng)是船舶柴油機(jī)中最重要的系統(tǒng),其作用是通過(guò)潤(rùn)滑油保證柴油機(jī)的零件表面潤(rùn)滑,以減小其摩擦阻力和零件間的磨損,并帶走摩擦產(chǎn)生的熱量和磨損產(chǎn)物,同時(shí)具有防腐、傳遞動(dòng)力和減輕噪聲等作用。若柴油機(jī)滑油系統(tǒng)出現(xiàn)故障,會(huì)導(dǎo)致柴油機(jī)降速運(yùn)行,甚至停止運(yùn)行,造成重大事故[3]。
船舶柴油機(jī)長(zhǎng)時(shí)間工作之后,受機(jī)器振動(dòng)和機(jī)器零件磨損、疲勞等因素的影響,其滑油系統(tǒng)可能會(huì)發(fā)生故障。例如,某油船在長(zhǎng)時(shí)間航行之后,其柴油機(jī)滑油系統(tǒng)油泵出口壓力突然從0.42 MPa降到0.23 MPa,造成柴油機(jī)主機(jī)降速,險(xiǎn)些引發(fā)重大事故。經(jīng)過(guò)排查得知,該問(wèn)題是第四缸曲柄箱內(nèi)零件斷裂導(dǎo)致的[3]。
通過(guò)分析可知,船舶柴油機(jī)各工況的運(yùn)行時(shí)間和超過(guò)主機(jī)額定功率的運(yùn)行時(shí)間等因素與柴油機(jī)零件的磨損和疲勞存在對(duì)應(yīng)關(guān)系,因此也與柴油機(jī)滑油壓力低的故障存在對(duì)應(yīng)關(guān)系[4]。由此,可采用SVM模型算法分析船舶柴油機(jī)滑油壓力低的故障與船舶柴油機(jī)各工況的運(yùn)行時(shí)間和超過(guò)主機(jī)額定功率的運(yùn)行時(shí)間等因素之間的關(guān)系。通過(guò)采集船舶航行數(shù)據(jù),采用SVM模型算法對(duì)“柴油機(jī)滑油壓力低”這個(gè)故障點(diǎn)進(jìn)行預(yù)測(cè)。
Python語(yǔ)言屬于解釋型腳本語(yǔ)言,具有簡(jiǎn)潔、易讀和可擴(kuò)展等特點(diǎn),廣泛應(yīng)用于科學(xué)計(jì)算、大數(shù)據(jù)統(tǒng)計(jì)、AI、軟件開(kāi)發(fā)和網(wǎng)絡(luò)爬蟲(chóng)等領(lǐng)域中。本文采用Python語(yǔ)言編寫(xiě)程序,結(jié)合其自帶的sklearn機(jī)器學(xué)習(xí)模塊,實(shí)現(xiàn)SVM模型算法的實(shí)際應(yīng)用。
采用某船6個(gè)月的航行數(shù)據(jù)進(jìn)行大數(shù)據(jù)分析,這些數(shù)據(jù)為船舶每天航行之后保存的數(shù)據(jù),包括各工況的運(yùn)行時(shí)間、超過(guò)主機(jī)額定功率運(yùn)行時(shí)間和柴油機(jī)滑油壓力低故障報(bào)警等。
1)采集數(shù)據(jù)之后,需對(duì)這些數(shù)據(jù)進(jìn)行清洗,包括查看數(shù)據(jù)集中是否存在數(shù)據(jù)缺失問(wèn)題、數(shù)據(jù)是否具有完整性和一致性、數(shù)據(jù)中是否存在異常值等。當(dāng)數(shù)據(jù)集中存在數(shù)據(jù)缺失問(wèn)題時(shí),采用替換法,用均值替換缺失值;當(dāng)數(shù)據(jù)集中存在異常數(shù)據(jù)(即遠(yuǎn)離正常值的數(shù)值)時(shí),采用刪除法刪除這些異常數(shù)據(jù)。
2)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)化處理,將每天各工況的運(yùn)行時(shí)間數(shù)據(jù)轉(zhuǎn)化為2次柴油機(jī)滑油壓力低故障報(bào)警之間的時(shí)間數(shù)據(jù),每當(dāng)出現(xiàn)新的報(bào)警時(shí),就將運(yùn)行時(shí)間數(shù)據(jù)從0開(kāi)始累加;對(duì)柴油機(jī)滑油壓力低故障進(jìn)行歸一化處理,報(bào)警數(shù)據(jù)轉(zhuǎn)化為1,正常數(shù)據(jù)轉(zhuǎn)化為0。數(shù)據(jù)采集點(diǎn)對(duì)應(yīng)變量見(jiàn)表1。將柴油機(jī)滑油壓力低故障作為特征值。
表1 數(shù)據(jù)采集點(diǎn)對(duì)應(yīng)變量
3)采用Python語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練集和測(cè)試集拆分,同時(shí)采用網(wǎng)格搜索法選擇最佳懲罰系數(shù)C,采用SVM模型對(duì)訓(xùn)練集數(shù)據(jù)進(jìn)行訓(xùn)練,訓(xùn)練之后在測(cè)試集中進(jìn)行測(cè)試。
4)對(duì)比SVM線性模型算法與SVM非線性模型算法的測(cè)試結(jié)果。選擇2個(gè)模型中訓(xùn)練效果更好、滿足數(shù)據(jù)擬合要求的模型作為該船的SVM模型。
采用SVM模型算法的工作流程見(jiàn)圖5。
圖5 采用SVM模型算法的工作流程
首先采用SVM線性模型算法建模,采用Python語(yǔ)言編寫(xiě)的代碼如下:
1. from sklearn import svm
2. import pandas as pd
3. from sklearn import mdel_selection
4. datas=pd.read_csv(r'C:UsersNeighborWangDesktopDatas.csv')
5. predatas=datas.columns[1:]
6. x_trainSVM,x_testSVM,y_trainSVM,y_testSVM=model_selection.train_test_split(datas[predatas],datas.柴油機(jī)滑油壓力報(bào)警,test_size=0.25,random_state=1234)
7. C=[0.05,0.1,0.5,1,2,5]
8. paramSVM={'C':C}
9. model_linear_svc=model_selection.GridSearchCV(estimator=svm.LinearSVC(),param_grid=paramSVM,scoring='accuracy',cv=5,verbose=1)
10. model_linear_svc.fit(x_trainSVM,y_trainSVM)
11. model_linear_svc.best_params_,model_linear_svc.best_score_
12. Out[11]: #輸出結(jié)果
13. ({'C': 5}, 0.9259259259259259)
14. preModel_linear_svc=model_linear_svc.predict(x_testSVM)
15. metrics.accuracy_score(y_testSVM,preModel_linear_svc)
16. Out[13]: #輸出結(jié)果
17. 0.7333333333333333
采用網(wǎng)格搜索法5重交叉驗(yàn)證之后,發(fā)現(xiàn)SVM線性模型最佳的懲罰系數(shù)C=5,雖然該模型在訓(xùn)練數(shù)據(jù)集上的平均預(yù)測(cè)準(zhǔn)確率有92.5%,但其在測(cè)試數(shù)據(jù)集上的預(yù)測(cè)準(zhǔn)確率只有73.3%,說(shuō)明存在過(guò)擬合現(xiàn)象,故SVM線性可分模型并不適合在該數(shù)據(jù)集上應(yīng)用。
隨后采用SVM非線性模型算法重新建模,采用Python語(yǔ)言編寫(xiě)的代碼如下:
1. kernelSVM=['rbf','linear','poly','sigmoid']
2. C1=[0.1,0.5,1,2,5]
3. paramSVM1={‘kernel’:kernelSVM,'C':C1}
4. model_svc=model_selection.GridSearchCV(estimator=svm.SVC(),param_grid=paramSVM1,scoring='accuracy',cv=5,verbose=1)
5. model_svc.fit(x_trainSVM,y_trainSVM)
6. model_svc.best_params_,model_svc.best_score_
7. Out[24]: #輸出結(jié)果
8. ({'C': 0.1, 'kernel': 'rbf'}, 0.9703703703703703)
9. preModel_svc=model_svc.predict(x_testSVM)
10. metrics.accuracy_score(y_testSVM,preModel_svc)
11. Out[25]: #輸出結(jié)果
12. 0.9333333333333333
采用網(wǎng)格搜索法5重交叉驗(yàn)證之后,發(fā)現(xiàn)模型最佳的懲罰系數(shù)C=0.1,最佳的核函數(shù)kernel為'rbf',即徑向基核函數(shù)。相比SVM線性可分模型,基于核技術(shù)的SVM非線性模型表現(xiàn)出了極佳的應(yīng)用效果。模型在訓(xùn)練數(shù)據(jù)集上的平均預(yù)測(cè)準(zhǔn)確率為97%,在測(cè)試數(shù)據(jù)集上的預(yù)測(cè)準(zhǔn)確率也有93.3%,說(shuō)明采用SVM非線性模型擬合和預(yù)測(cè)該樣本數(shù)據(jù)集是十分有效的,故可采用SVM非線性模型預(yù)測(cè)船舶柴油機(jī)滑油壓力低故障的發(fā)生概率。例如,將采集到的當(dāng)前變量數(shù)據(jù)輸入到SVM非線性模型預(yù)測(cè)函數(shù)中,得到預(yù)測(cè)結(jié)果。若預(yù)測(cè)結(jié)果是0,則表示大概率不會(huì)發(fā)生故障;若預(yù)測(cè)結(jié)果是1,則表示極大概率會(huì)發(fā)生故障。對(duì)該過(guò)程采用Python語(yǔ)言編寫(xiě)的代碼如下:
1. #采集到的變量X1-X6的數(shù)據(jù)為[138,174,258,618,594,54]
2. X_In=[138,174,258,618,594,54]
3. #將采集到的變量輸入預(yù)測(cè)函數(shù)中
4. pre_result=grid_svc.predict([X_In])
5. #輸出預(yù)測(cè)結(jié)果
6. print(pre_result)
7. #結(jié)果為0,即不會(huì)產(chǎn)生故障
8. [0]
當(dāng)模型提供的預(yù)測(cè)結(jié)果是會(huì)發(fā)生故障時(shí),提前對(duì)柴油機(jī)滑油系統(tǒng)進(jìn)行機(jī)械和管路檢查,避免發(fā)生滑油壓力低的故障,這樣就能大大提高船舶航行的安全性和經(jīng)濟(jì)效益。
本文采用SVM模型算法,利用大數(shù)據(jù)分析了船舶柴油機(jī)滑油壓力低故障的發(fā)生概率。模型運(yùn)算結(jié)果表明,該模型在訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集上的準(zhǔn)確率都較高,對(duì)提前預(yù)測(cè)柴油機(jī)滑油壓力低的故障有很大作用。但是,本文分析的數(shù)據(jù)集屬于小規(guī)模數(shù)據(jù)集,存在數(shù)據(jù)過(guò)擬合的可能性,故該模型只適合特定的船舶,不能直接用來(lái)對(duì)其他船舶進(jìn)行預(yù)測(cè),若要使其適用其他船舶,還需重新采集數(shù)據(jù)。
上海船舶運(yùn)輸科學(xué)研究所學(xué)報(bào)2021年1期