哈爾濱工程大學機電工程學院 富 威 劉 琪 許 凱 徐蕓潔 馬佳瑞
隨著計算機技術的迅猛發展,在電力設備運行狀態監測領域,基于人工智能及其相關技術的設備健康監測系統研究和應用已成為工程技術人員的研究熱點[1]。傅雷[2]提出一種基于VMD-Ren yi熵多信息融合的支持向量機(SVM)分類方法;韓中合、劉明浩[3]構建了一套以支持向量機算法為核心的汽輪機振動故障診斷系統;石志標、宋全剛[4]等人利用一種改進的粒子群算法(MPSO)對支持向量機進行參數優化,并利用故障數據進行模式識別。本文將支持向量機應用于汽輪機狀態監測系統中,基于支持向量機構建健康率預測模型,實現對汽輪機組部件的狀態監測。
支持向量機預測模型建立流程如圖1所示。對原始樣本集進行預處理,將樣本集分為訓練集、驗證集和測試集三個部分。針對訓練集中的特征數據選取適當的單一模型進行訓練,在訓練的過程中調整參數,得到相關支持向量機模型;再利用驗證集中的特征數據對模型進行驗證;若不滿足需求,則繼續調整模型的參數,直至模型滿足要求;模型構建完成后,利用測試集數據進行測試,進而得到預測結果。支持向量機模型建立的大致過程可以歸納為三個步驟:獲取原始樣本集、數據預處理和構建支持向量機模型。

圖 1 支持向量機模型建立流程圖
本文所使用的數據集來自核電廠核電凝汽式1000MW汽輪機(HN1000-6.43)日常運行監測數據,利用pandas實現對數據的讀取,pandas在代碼中用pd表示。實現讀取數據的代碼形式如下:dataset1=pd.read_csv('G:/3dOSG/osg18.6.8 final/data/7_train_data1.csv')
在數據分析與建模的過程中,數據預處理是一個非常重要的環節,主要包括數據去重、數據歸約、數據降維、數據拆分。數據去重是將數據中重復的部分進行刪除,完成數據去重的代碼為:dataset1.drop_duplicates(inplace=True)
數據歸約的目的是在保持數據原貌的前提下,對數據進行壓縮、精簡,降低數據集的規模。其代碼為:trains.drop(delete_columns,axis=1,inplace=True),online_test.drop(delete_columns,axis=1,inplace=True)
數據降維是將高維度數據中較為重要的特征保留下來,去除次要特征,提高數據處理速度,本文中數據降維選用主成分分析方法(PCA)。其代碼如下:
from sklearn.decomposition import PCA
train_pca=PCA(n_components='mle')
train_pca.fit(trains) #訓 練;n_compoe nts='mle' #表示自動確定需要保留的特征數
train_pca.transform(trains) #降維
train_pca.inverse_transform(trains) #反轉
數據拆分是將數據集劃分成訓練集、驗證集和測試集的過程,隨機將數據集的60%劃為訓練集,剩余的數據等分為驗證集和測試集。其代碼為:
print("數據拆分")
train_xy,offline_test=train_test_split(trains,test_size=0.2,random_state=21)
train,val=train_test_split(train_xy,test_size=0.2,random_state=21)
print("訓練集")
y=train.is_trade #訓練集標簽
X=train.drop(['instance_id','is_trade'], axis=1) #訓練集特征矩陣
print("驗證集")
val_y=val.is_trade #驗證集標簽
val_X=val.drop(['instance_id','is_trade'], axis=1) #驗證集特征矩陣
print("測試集")
offline_test_X=offline_test.drop(['instance_id','is_trade'],axis=1) #線下測試特征矩陣
online_test_X=online_test.drop(['instance_id'],axis=1) #線上測試特征矩陣
支持向量機的預測性能與模型構建過程中核函數的選擇及相關參數的選取有著直接關系[5]。本文從sklearn中導入支持向量機模型,選取高斯徑向基核函數,構建模型過程的代碼如下。
from sklearn.svm import SVC;global model
model=SVC(kernel="rbf",probability=True,verbose=False).fit(x_train,y_train) #創建模型
def validate_model():
print("模型驗證")
score=model.score(x_valid,y_valid)
print(score);return score #模型驗證
def predict_model(datapath):
create_model(datapath)
print("模型預測");global list
list=model.predict_proba(x_test)
list=list[:,0];list=list.tolist()
model_score=validate_model()
list.insert(0,model_score);return list #模型預測
為滿足狀態監測系統的基本要求,對系統的功能模塊進行設計。所設計搭建的汽輪機狀態監測系統主要功能有文件功能、編輯功能、構建功能、模型訓練、模型監測、視圖、設置和指標等。
本系統使用c++語言作為編寫語言,在c++中調用python來實現支持向量機,完成模型訓練和模型預測;利用Qt進行界面設計,通過OSG(Open Scene Gragh)完成三維模型在系統界面中的渲染。本文系統所使用的三維模型,對汽輪機的控制設備和凝汽部分進行了省略,高壓缸和低壓缸部分都實現了較好的三維復現。本系統的操作是在汽輪機三維模型的基礎上進行的,主要采用結構樹的方式表達汽輪機三維模型當前狀態,通過選擇結構樹中相應的子模型,進而實現對三維模型的相關操作。
將數據導入到系統后,系統利用數據開始訓練模型,進行支持向量機模型的構建。模型構建完成后,對模型的正確率進行驗證,得到當前模型的正確率為94.6027%,滿足模型準確率的需要。在模型構建完成且其正確率滿足要求后,系統就可對設備部件進行健康率監測,監測結果以百分比的形式滾動顯示在健康率監測模塊中。由監測結果可以得出1#徑向軸承的健康率為90.1067%,可推斷出1#徑向軸承的健康程度很高,與從核電廠工作人員了解到的情況相符。

圖2 三維模型結構樹
本文所設計的汽輪機狀態監測系統對汽輪機組軸系部件進行健康率監測,得到的健康率結果,能較為直觀的體現設備的健康程度,有效指導設備的運行維護。本文主要對基于支持向量機的汽輪機狀態監測系統相關內容進行闡述,重點介紹了支持向量機模型的構建流程及關鍵代碼,對系統的實現進行具體說明。對后續的汽輪機運行狀態監測系統設計具有一定的參考價值。