馬良玉 程善珍
基于支持向量數據描述和XGBoost的風電機組異常工況預警研究
馬良玉 程善珍
(華北電力大學控制與計算機工程學院 保定 071003)
該文提出一種基于支持向量數據描述(SVDD)和XGBoost模型的風電機組異常工況預警方法。從機組監(jiān)控與數據采集系統(tǒng)(SCADA)數據中選擇與轉速和發(fā)電功率密切相關的特征變量,利用SVDD算法對建模數據進行預處理,采用XGBoost建立風機正常性能預測模型。以所建預測模型為基礎,構建時間滑動窗計算性能評價指標,并根據統(tǒng)計學的區(qū)間估計理論合理確定風機性能異常預警指標閾值。采用某風電場1.5MW風電機組SCADA系統(tǒng)記錄的若干真實故障案例,開展異常工況預警仿真試驗。結果表明:基于SVDD和XGBoost的風機異常工況預警方法,可以有效地清洗數據,及時識別風電機組異常狀態(tài),對于提高風電機組運行的安全性具有較好的工程實用意義。
風電機組 支持向量數據描述 XGBoost 性能預測模型 異常工況預警
作為可再生的清潔能源,我國風力發(fā)電裝機容量不斷增加,成為繼火電、水電后的第三大能源[1]。由于長期承受惡劣多變的運行環(huán)境,風電機組故障率較高,對電力系統(tǒng)的安全穩(wěn)定運行造成很大影響,帶來巨大的經濟損失和安全隱患[2]。充分利用機組監(jiān)控與數據采集系統(tǒng)(Supervisory Control And Data Acquisition, SCADA)提供的大量運行數據,在故障早期監(jiān)測到風機狀態(tài)異常,則可為現場運維人員爭取更多的應急處理時間,有助于提高機組安全經濟性、降低運維成本[3]。
目前,許多學者開展了基于SCADA數據的風電機組故障預警與診斷研究,基本思路有兩種:一種是從SCADA歷史數據中挖掘出已經發(fā)生的故障信息,據此建立故障辨識模型;另一種是從SCADA歷史數據中提取正常工況運行數據,建立風機是否異常的判定模型。前者側重于故障類型識別,需要大量故障信息,條件較難滿足;后者則側重于故障早期的異常狀態(tài)預警,與前者相比對運維人員更有指導意義。
文獻[4-5]采用支持向量回歸(Support Vector Regression, SVR)和淺層神經網絡進行正常工況性能預測,并根據預測值與實際值之間的殘差與故障預警閾值的關系,提前進行異常預警。但受限于模型信息容量較小、泛化能力不足等原因,異常工況識別精度需要進一步提高。由于深度神經網絡對于SCADA系統(tǒng)大數據具有更強的學習能力,因此在性能預測與故障預警領域日益受到重視。其中機器學習領域的XGBoost(eXtreme gredient boosting)算法[6]因具有損失函數精確、模型準確度高、泛化能力強等優(yōu)勢,常應用于風機故障診斷[7-9]。文獻[10]通過與樸素貝葉斯、隨機森林和支持向量機等算法比較,表明XGBoost算法運行速度較快,準確度更高,能精準識別風機故障類別。文獻[11]使用XGBoost算法可以有效地診斷風機齒輪箱故障。
SCADA系統(tǒng)記錄的運行數據中既包含風機的正常運行數據也包含異常和故障發(fā)生時的數據及部分停機數據,建立正常工況風機性能預測模型時,需要將故障和停機數據加以剔除。此外,由于風速、風向、偏航角等測量信號具有時變性、隨機性和不確定性,數據中不可避免地包含噪聲和異常值、以及由于通信問題導致的空值和壞數據,為確保預測模型的精度,這些異常值需要加以清洗。因此SCADA數據預處理是風機性能預測與狀態(tài)預警中重要的基礎性工作,已有很多文獻對此進行研究,提出了諸多數據清洗方法[12-15]。這些方法有的比較繁瑣,有的對數據集特征有一定要求,各有優(yōu)缺點。
本文針對風電機組異常工況早期預警開展研究,以某1.5MW風電機組為例,提出利用支持向量數據描述(Support Vector Data Description, SVDD)算法對SCADA數據進行預處理,再采用XGBoost建立正常性能預測模型,進而采用時間滑動窗口模型計算性能評價指標,合理確定預警閾值,最終實現風電機組運行狀態(tài)預警。
在風機數據預處理中,正常數據和異常數據數量極度不均衡。風機數據預處理實際上是一個單分類問題,只需判斷數據是否是正常數據,若是則保留,否則刪除。
SVDD實際上是一種單值分類算法,能區(qū)分目標樣本和非目標樣本。首先,通過非線性映射將正常樣本映射到高維內積空間,并在特征空間中尋找一個包含全部或大部分樣本且體積最小的超球體;然后,比較測試點與最小超球體中心之間的距離,若距離小于最小超球體半徑時,為目標樣本點;超過時,表示為非目標樣本點[16],其算法原理如圖1所示。
圖1 SVDD算法原理
根據SVDD的基本思想,求解最優(yōu)分類超球面,可轉化為以下優(yōu)化問題
由拉格朗日乘子法
化簡整理后可以得到
將式(1)代入式(2)得
通常核函數使用徑向基(Radial Basis Function, RBF)函數,用表示,則決策函數表示為
對于每一個決策,函數()實際上執(zhí)行的是二分類功能,若返回值為+1認為是正常數據,若為 -1,認為是異常數據。
XGBoost算法是陳天奇博士在2016年提出的基于集成學習高效并行的機器學習算法[6],其基本思想是對目標函數做二階泰勒展開,利用函數的二階導數信息來訓練樹模型,并把樹模型復雜度作為正則項加到優(yōu)化目標中,使學習到的模型泛化能力更高。
目標函數包括兩部分:第一部分是損失函數,用于表示真實值和預測值之間的殘差;第二部分是正則項,用來防止模型輸出結果的過擬合,其表達式為
式中,為葉子節(jié)點數的正則化參數,主要是用來抑制節(jié)點的繼續(xù)分裂;為葉子節(jié)點權重的正則化參數,防止葉子節(jié)點權重過大;w為每棵樹葉子節(jié)點的分值。
式中,g、h分別為預測誤差對當前模型的一階導數、二階導數,其表達式為
其中
求上述關于葉子節(jié)點分值w的目標函數的最小值,可令目標函數式的導數為0,得到葉子節(jié)點預測分值為
將式(15)代入目標函數,可得目標函數最小值為
通常根據風速大小將風電機組運行狀態(tài)分為四個區(qū):起動區(qū)、最大風能捕獲區(qū)、恒功率運行區(qū)、停機區(qū),如圖2所示。
圖2 風速與功率的關系
當風速低于切入風速時,風電機組待啟動,不發(fā)電沒有輸出功率;當風速介于切入風速與額定風速之間時,通過控制葉片的槳距角,使發(fā)電機組捕獲最大風能;當風速介于額定風速與切出風速之間時,通過改變葉片的槳距角使風輪上的氣動轉矩基本保持不變,風電機組處于恒功率區(qū);當風速超過切出風速時,風電機組制動停機。風電機組運行中功率與轉速主要受風速、風向和機組控制系統(tǒng)調節(jié)過程的影響。由于風向變化頻繁,正常運行時偏航系統(tǒng)會維持機艙中軸線與風向夾角小于規(guī)定的允許偏差。發(fā)電機轉矩與功率和轉速密切相關,在功率、風向一定的前提下,轉速與轉矩成反比關系,轉矩越小,轉速越大。
根據上述分析,最終選擇模型的輸入、輸出變量見表1。
表1 模型變量選擇
以某風電場1.5MW風電機組四個月的SCADA系統(tǒng)數據進行建模(采樣周期為1min),原始數據為177 120組。刪除空值后的數據為170 715組,根據其繪制風速-功率曲線和風速-轉速曲線,如圖3所示。
圖3 原始數據風速與轉速和功率關系曲線
將初步處理后的數據再刪除風機起動狀態(tài)(風速≤3)和停動狀態(tài)(功率≤0)的數據后保留正常運行數據 90 384 組。本文旨在建立風機正常運行工況性能的預測模型,據此對異常工況進行預警,為此需要對上述數據進一步過濾,以去掉其中不符合機組正常出力特性的異常運行點,如各風速下發(fā)電機轉速、功率明顯偏離標準值很多的散點及限負荷工況點[17]。
本文采用SVDD方法對數據進行清洗,SVDD常用的參數有:異常點比例nu(過大會使濾波后數據過少,過小會導致濾波不干凈);核函數(一般用RBF函數)kernel,通過nu與kernel探測超球體邊界。gamma是選擇RBF函數作為kernel后,該函數自帶的一個參數,隱含地決定了數據映射到新的特征空間后的分布,gamma越大,支持向量越少,支持向量的個數影響訓練與預測的速度。
經調試,最終設置異常點比例nu為0.015,核函數kernel為RBF函數,gamma為0.01,得到用于模型訓練的正常工況數據89 030組。根據清洗后的數據風速-發(fā)電機轉速和風速-有功功率關系如圖4所示。
圖4 數據清洗后風速與轉速和功率關系曲線
由于清洗后的數據量仍較大,本文選取第30 000~80 000組數據建立模型,選取第16 000~ 26 000組測試數據對模型進行驗證。
調用XGBoost函數包中的XGBRegressor方法構建回歸器,并對模型參數進行優(yōu)化。XGBoost中常用的參數有:生成的最大樹的數目即最大迭代次數(n_estimators)、學習率(learning_rate)、樹的最大深度max_depth(可用來防止模型過擬合)。
本文采用網格搜索法對模型主要參數進行尋優(yōu)(其他參數采用缺省值),最終確立的模型最大樹的數目n_estimators=100,樹的最大深度max_depth=6。XGBoost功率和轉速模型的評價指標見表2。
表2 XGBoost功率和轉速模型評價指標
由表2可以看出,XGBoost回歸模型的擬合優(yōu)度都接近1,擬合性好;方均誤差、平均絕對誤差和平均相對誤差絕對值都較小,表明模型針對訓練集的擬合精確度高。
采用測試集對模型預測性能進行驗證,機組輸出功率及發(fā)電機轉速的預測結果與真實值比較如圖5和圖6所示??梢姽β?、轉速的預測值都可以很好地跟蹤實際值,驗證集功率的最大誤差不超過250kW,轉速的最大誤差不超過130r/min,精度較高。
圖6 驗證集轉速預測結果
風機正常運行時模型輸出的預測值與實際值的殘差很小,當故障發(fā)生時機組狀態(tài)異常殘差會大幅增加,因此可利用殘差值大小對風機進行狀態(tài)判定。但由于風速的隨機波動較大,控制系統(tǒng)隨時處于動態(tài)調節(jié)過程,利用單點殘差容易產生誤報警。因此,本文利用時間滑動窗方法,通過計算時間滑動窗口內殘差平均值作為評價指標,以避免殘差隨機波動帶來的誤報警。其原理如圖7所示。
圖7 時間滑動窗口模型
采用時間窗內各點模型預測值與實際值的絕對平均偏差作為狀態(tài)識別指標,表示風電機組相對于正常運行狀態(tài)的偏離程度。其值越小,越接近正常運行狀態(tài);值越大,出現故障的可能性越大[18]。根據滑動窗口計算第個窗口的狀態(tài)識別指標為
閾值隨著訓練樣本的選擇不同而存在差異,閾值過小會使誤報率增大,閾值過大會使漏報率增加。依據時間滑動窗算法,當滑動窗參數、取值分別為5和1時,由式(18)和模型訓練數據求得功率和轉速預警閾值分別為12.85和17.02。
查詢SCADA系統(tǒng)歷史數據,2018年5~6月有表3所示故障發(fā)生記錄。為此調用2018年同期故障前后的歷史運行數據,對本文異常狀態(tài)預警方法進行驗證。預警時使用刪除空值和風速小于3m/s的數據,再使用滑窗算法進行預警試驗。
表3 SCADA系統(tǒng)真實歷史故障記錄表
系統(tǒng)自2018年5月12日17時06分連續(xù)出現功率轉速異常預警,其預警曲線如圖8所示,對應的真實歷史故障狀態(tài)記錄見表3(實例1)。
圖8 異常狀態(tài)預警實例1
根據風機風速與功率狀態(tài)指標,本文識別出異常狀態(tài)時間在2018年5月12日17時06分,實際記錄的故障時間是2018年5月12日20時07分,預警提前了約3h。
系統(tǒng)自2018年6月16日9時46分連續(xù)出現功率轉速異常預警,其預警曲線如圖9所示,對應的真實歷史故障狀態(tài)記錄見表3(實例2)。
圖9 異常狀態(tài)預警實例2
根據風機風速與功率狀態(tài)指標,識別異常狀態(tài)時間在2018年6月16日9時46分,實際運行記錄故障時間2018年6月16日11時55分,提前了約2h。
系統(tǒng)自2018年6月29日9時09分連續(xù)出現了功率轉速異常預警,其預警曲線如圖10所示。根據風機風速與功率狀態(tài)指標,識別異常狀態(tài)時間在2018年6月29日9時09分,對照表3真實歷史故障記錄(實例3)實際記錄的故障時間是2018年6月29日9時38分,預警提前了約0.5h。
圖10 異常狀態(tài)預警實例3
上述預警實例表明,本文提出的基于SVDD和XGBoost的風機故障預警方法可以有效地識別風電機組運行異常狀態(tài),提前進行預警。從表3所記錄故障類型可見,故障2、3本身與風機轉速、功率并無直接相關,但利用預警模型也可正確給出預警。這是由于故障發(fā)生前,當某些運行參數超限或異常時,系統(tǒng)保護邏輯會自動限制機組負荷或做出響應保護性調整,從而導致實際負荷偏離模型預測的當前風況應有的正常運行值。但這種異常不一定能被運行人員立刻發(fā)現。故障預警系統(tǒng)據此及時發(fā)出預警,可及時提醒運行人員提前采取措施排除故障,防止事故擴大,有利于機組長期安全經濟運行。
本文建立了一種基于SVDD和XGBoost的風電機組異常工況預警方法。論文主要工作有:
1)利用SVDD算法對某風電場1.5MW機組SCADA數據進行預處理,剔除異常數據,以得到正常工況的建模數據,實例表明該方法具有較好的數據清洗效果。
2)采用XGBoost建立風機正常工況性能預測模型,并利用網格搜索算法對模型參數進行尋優(yōu)。
3)以預測模型為基礎,構建時間滑動窗口模型計算評價指標,利用統(tǒng)計學的區(qū)間估計理論合理確定風機出現異常的閾值,從而實現風機異常工況及故障早期預警。
以現場真實故障案例進行仿真試驗研究,表明該方法可以對風電機組運行異常狀態(tài)及時進行識別,實現故障早期預警,對于提高風電機組運行的安全性具有工程實用意義。
[1] 王麗婕, 廖曉鐘, 高陽, 等. 風電場發(fā)電功率的建模和預測研究綜述[J]. 電力系統(tǒng)保護與控制, 2009, 37(13): 118-121.
Wang Lijie, Liao Xiaozhong, Gao Yang, et al. Summarization of modeling and prediction of wind power generation[J]. Power System Protection and Control, 2009, 37(13): 118-121.
[2] 楊茂, 熊昊, 嚴干貴, 等. 基于數據挖掘和模糊聚類的風電功率實時預測研究[J]. 電力系統(tǒng)保護與控制, 2013, 41(1): 1-6.
Yang Mao, Xiong Hao, Yan Gangui, et al. Real-time prediction of wind power based on data mining and fuzzy clustering[J]. Power System Protection and Control, 2013, 41(1): 1-6.
[3] 劉軒. 風力發(fā)電機故障預警方法研究[D]. 北京: 華北電力大學, 2017.
[4] 梁穎, 方瑞明. 基于SCADA和支持向量回歸的風電機組狀態(tài)在線評估方法[J]. 電力系統(tǒng)自動化, 2013, 37(14): 7-12, 31.
Liang Ying, Fang Ruiming. An online wind turbine condition assessment method based on SCADA and support vector regression[J]. Automation of Electric Power Systems, 2013, 37(14): 7-12, 31.
[5] Bangalore P, Tjernberg L B. An artificial neural network approach for early fault detection of gearbox bearings[J]. IEEE Transactions on Smart Grid, 2015, 6(2): 980-987.
[6] Chen Tianqi, Guestrin C. XGBoost: a scalable tree boosting system[C]//KDD'16: Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 2016: 785-794.
[7] 王桂蘭, 趙洪山, 米增強. XGBoost算法在風機主軸承故障預測中的應用[J]. 電力自動化設備, 2019, 39(1): 73-77, 83.
Wang Guilan, Zhao Hongshan, Mi Zengqiang. Application of XGBoost algorithm in prediction of wind motor main bearing fault[J]. Electric Power Automation Equipment, 2019, 39(1): 73-77, 83.
[8] Chatterjee J, Dethlefs N. Deep learning with knowledge transfer for explainable anomaly prediction in wind turbines[J]. Wind Energy, 2020, 23: 1693-1710.
[9] Trizoglou P, Liu Xiaolei, Lin Zi. Fault detection by an ensemble framework of Extreme Gradient Boosting (XGBoost) in the operation of offshore wind turbines[J]. Renewable Energy, 2021, 179: 945-962.
[10] 趙洪山, 閆西慧, 王桂蘭, 等. 應用深度自編碼網絡和XGBoost的風電機組發(fā)電機故障診斷[J]. 電力系統(tǒng)自動化, 2019, 43(1): 81-86.
Zhao Hongshan, Yan Xihui, Wang Guilan, et al. Fault diagnosis of wind turbine generator based on deep autoencoder network and XGBoost[J]. Automation of Electric Power Systems, 2019, 43(1): 81-86.
[11] Udo W, Muhammad Y. Data-driven predictive maintenance of wind turbine based on SCADA data[J]. IEEE Access, 9: 162370-162388.
[12] 馬然, 栗文義, 齊詠生. 風電機組健康狀態(tài)預測中異常數據在線清洗[J]. 電工技術學報, 2021, 36(10): 2127-2139.
Ma Ran, Li Wenyi, Qi Yongsheng. Online cleaning of abnormal data for the prediction of wind turbine health condition[J]. Transactions of China Electrotechnical Society, 2021, 36(10): 2127-2139.
[13] 李航濤, 郭鵬, 楊錫運. 基于離散度分析的風電機組功率曲線繪制方法研究[J]. 太陽能學報, 2019, 40(1): 237-241.
Li Hangtao, Guo Peng, Yang Xiyun. Research on wind turbine power curve drawing method based on discrete degree analysis[J]. Acta Energiae Solaris Sinica, 2019, 40(1): 237-241.
[14] Zheng Le, Hu Wei, Min Yong. Raw wind data preprocessing: a data-mining approach[J]. IEEE Transactions on Sustainable Energy, 2015, 6(1): 11-19.
[15] 沈小軍, 付雪姣, 周沖成, 等. 風電機組風速-功率異常運行數據特征及清洗方法[J]. 電工技術學報, 2018, 33(14): 3353-3361.
Shen Xiaojun, Fu Xuejiao, Zhou Chongcheng, et al. Characteristics of outliers in wind speed-power operation data of wind turbines and its cleaning method[J]. Transactions of China Electrotechnical Society, 2018, 33(14): 3353-3361.
[16] 陳鵬, 趙小強. 基于GLNPE-SVDD的滾動軸承性能退化評估方法[J]. 華中科技大學學報(自然科學版), 2021, 49(1): 12-16.
Chen Peng, Zhao Xiaoqiang. Performance degradation evaluation method of rolling bearing based on GLNPE-SVDD[J]. Journal of Huazhong University of Science and Technology (Natural Science Edition), 2021, 49(1): 12-16.
[17] 喬福宇, 馬良玉, 馬永光. 基于功率曲線分析與神經網絡的風電機組故障預警方法[J]. 中國測試, 2020, 46(8): 44-50.
Qiao Fuyu, Ma Liangyu, Ma Yongguang. Wind turbine fault early warning method based on power curve analysis and neural network[J]. China Measurement & Test, 2020, 46(8): 44-50.
[18] 萬恒正. 基于SCADA數據關系的大型直驅式風電機組健康狀態(tài)識別與預警[D]. 湘潭: 湖南科技大學, 2018.
[19] 劉家辰, 苗啟廣, 曹瑩, 等. 基于混合多樣性生成與修剪的集成單類分類算法[J]. 電子與信息學報, 2015, 37(2): 386-393.
Liu Jiachen, Miao Qiguang, Cao Ying, et al. Ensemble one-class classifiers based on hybrid diversity generation and pruning[J]. Journal of Electronics & Information Technology, 2015, 37(2): 386-393.
[20] 張帆, 劉德順, 戴巨川, 等. 一種基于SCADA參數關系的風電機組運行狀態(tài)識別方法[J]. 機械工程學報, 2019, 55(4): 1-9.
Zhang Fan, Liu Deshun, Dai Juchuan, et al. An operating condition recognition method of wind turbine based on SCADA parameter relations[J]. Journal of Mechanical Engineering, 2019, 55(4): 1-9.
Abnormal State Early Warning of Wind Turbine Generator Based on Support Vector Data Description and XGBoost
Ma Liangyu Cheng Shanzhen
(School of Control and Computer Engineering North China Electric Power University Baoding 071003 China)
An abnormal state early warning method for wind generating units is proposed based on support vector data description(SVDD) and XGBoost(eXtreme gradient boosting)model. The feature variables closely related to the generator speed and output power are selected. Then SVDD algorithm is employed to preprocess the SCADA historical data and the XGBoost-based normal performance prediction model is set up. The time-sliding window model is constructed to calculate the performance evaluation index on the basis of the developed model, and the threshold value of which is determined in accordance with the interval estimation theory of statistics. The abnormal state warning tests are carried out using several true historical fault cases recorded in the SCADA system of a 1.5MW wind power unit. It is shown that the abnormal state warning method based on SVDD and XGBoost can clean the original data effectively, and identify the wind turbine abnormal state timely. The proposed method has practical engineering significance for improving the operation safety of wind turbine generator system.
Wind turbine generator, support vector data description, XGBoost, performance prediction model, abnormal state early warning
10.19595/j.cnki.1000-6753.tces.210625
TP277
馬良玉 男,1972年生,教授,碩士生導師,研究方向為工業(yè)過程建模與仿真,智能技術在電站建模、控制與故障診斷中的應用。E-mail:maliangyu@ncepu.edu.cn(通信作者)
程善珍 女,1996年生,碩士,研究方向為智能技術在故障診斷中的應用。E-mail:chengshanzhen123@163.com
2021-05-04
2021-12-21
(編輯 郭麗軍)