劉云久,徐 丹,孫 超,陳 州
(南京南瑞繼保電氣有限公司,江蘇 南京 211100)
隨著我國工業(yè)的不斷發(fā)展,對于傳統(tǒng)煤炭資源的消耗逐漸增多,水力資源作為一種清潔高效的能源受到越來越多的重視。利用水利發(fā)電不僅可以一定程度上緩解我國不可再生資源的快速消耗,同時(shí)還能提高地區(qū)電網(wǎng)的調(diào)峰能力[1,2]。目前,水力發(fā)電已經(jīng)成為我國發(fā)電的重要組成[3]。但是水電機(jī)組在運(yùn)行過程中,常常因?yàn)槌霈F(xiàn)故障導(dǎo)致機(jī)組停機(jī),對于地區(qū)電網(wǎng)的供電可靠性造成嚴(yán)重影響。根據(jù)相關(guān)統(tǒng)計(jì),在水電機(jī)組故障[4]中,溫度異常往往又是發(fā)生最為頻繁[5]。為此,需要設(shè)計(jì)相應(yīng)的趨勢預(yù)警系統(tǒng),通過對相關(guān)采集點(diǎn)溫度的實(shí)時(shí)監(jiān)測,在故障發(fā)生之前及時(shí)預(yù)警,從而減少水電機(jī)組停機(jī)。
目前,我國水電廠的運(yùn)行方式正處于“無人值班,少人值守”的發(fā)展時(shí)期,隨著物聯(lián)網(wǎng)和信息技術(shù)的發(fā)展,越來越多的大型水電廠建立自己的水電數(shù)據(jù)中心,匯集全站運(yùn)行相關(guān)監(jiān)測數(shù)據(jù)。為了保證水電機(jī)組能夠安全、可靠、經(jīng)濟(jì)的運(yùn)行,對于水電機(jī)組的故障預(yù)警愈加受到重視[6]。目前,針對水電機(jī)組的溫度告警往往采用簡單限值比較等方式進(jìn)行監(jiān)測預(yù)警。這種方法雖然能夠?qū)C(jī)組的某些異常運(yùn)行起到告警的作用,但是當(dāng)設(shè)備溫度超過告警閾值時(shí),可能設(shè)備已經(jīng)帶缺陷運(yùn)行,無法實(shí)現(xiàn)對設(shè)備可能出現(xiàn)的缺陷進(jìn)行及早預(yù)警。再加上水電機(jī)組運(yùn)行工況復(fù)雜,受水力干擾明顯,簡單的限值比較越來越無法滿足現(xiàn)場的需求。因此,將人工智能[7,8]、大數(shù)據(jù)[9]等新興技術(shù)運(yùn)用于預(yù)警系統(tǒng)成為目前的主流趨勢[10-14]。
本文在水電機(jī)組溫度預(yù)警系統(tǒng)設(shè)計(jì)中,提出基于機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)算法的趨勢預(yù)警系統(tǒng)。以水電數(shù)據(jù)中心中的海量歷史數(shù)據(jù)為依據(jù)對神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行訓(xùn)練,最終獲得機(jī)組溫度運(yùn)行狀態(tài)的等效擬合。預(yù)測時(shí)利用該模型的輸出結(jié)果與采樣溫度進(jìn)行比較,判斷是否預(yù)警。
水電機(jī)組運(yùn)行過程中的相關(guān)數(shù)據(jù)大都通過前置采集至水電數(shù)據(jù)中心,對于被采集的原始數(shù)據(jù),可能外在條件的變化,如電源電流變化、氣壓變化、電磁干擾、儀器故障等偶發(fā)性變化,出現(xiàn)與其他檢測值相差較遠(yuǎn)且不符合統(tǒng)計(jì)規(guī)律的個(gè)別值,也稱之為“粗大誤差”。而神經(jīng)網(wǎng)絡(luò)訓(xùn)練效果受訓(xùn)練樣本的影響較大,所以構(gòu)造訓(xùn)練樣本之前,需要剔除原始數(shù)據(jù)中“粗大誤差”[15]。
判別異常值的方法一般分為物理判別法和統(tǒng)計(jì)判別法。本文采用統(tǒng)計(jì)方法中的拉依達(dá)準(zhǔn)則(也稱3σ 準(zhǔn)則)來剔除異常數(shù)據(jù)。具體方法為:
(1)將單一變量同一時(shí)刻的采集數(shù)據(jù)構(gòu)造數(shù)組X,分別計(jì)算其偏差I(lǐng)d 和標(biāo)準(zhǔn)偏差σ。
(2)取其中最大偏差值與3σ 進(jìn)行比較,若最大偏差大于3σ,則對應(yīng)的測量值即為“粗大誤差”,需要被剔除。
(3)剔除該數(shù)據(jù)之后,重復(fù)上述過程,直到新數(shù)組中各個(gè)偏差均小于3σ。
(4)對得到的新數(shù)組求取平均值作為當(dāng)前變量該時(shí)刻的特征值。
采用同樣的方法,獲取其余變量的特征值,最終選取一段時(shí)間內(nèi)輸入輸出變量的特征值構(gòu)成后續(xù)神經(jīng)網(wǎng)絡(luò)模型需要的訓(xùn)練樣本。
人工神經(jīng)網(wǎng)絡(luò)是基于數(shù)學(xué)模型對人腦思維的一種簡單模擬。對于溫度故障預(yù)警問題,多層感知器(Multilayer Perceptron, MLP)是一類較好的解決方案。BP(Back-Propagation)算法是其中最為成熟的一種算法,一般分為:輸入層、隱層以及輸出層,在這三層中,每一層的神經(jīng)元并未直接相連,但是上一層和下一層之間全部相連。
基于萬能逼近定理:含一個(gè)隱層的三層BP 網(wǎng)絡(luò),只要隱節(jié)點(diǎn)數(shù)足夠多,能以任意精度逼近有界區(qū)域上的任意函數(shù)。本文設(shè)計(jì)單個(gè)隱層的BP 網(wǎng)絡(luò)來進(jìn)行瓦溫預(yù)測,如圖1 所示。其中隱節(jié)個(gè)數(shù)可通過經(jīng)驗(yàn)設(shè)定,也可通過不斷觀察訓(xùn)練效果進(jìn)行調(diào)整來建立最優(yōu)模型。
圖1 三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
假定輸入層定義為X,共有n 個(gè)單元,下標(biāo)用i索引。隱藏層定義為B,共有p 個(gè)單元,偏置為α,下標(biāo)用j 索引。輸出層定義為Y,偏置為β,單輸出定義為y1。輸入層到隱藏層的權(quán)值矩陣為W,隱藏層到輸出層的權(quán)值矩陣為V。從而各層的神經(jīng)元值如下:
BP 算法訓(xùn)練過程中,采用平方和誤差來衡量期望輸出與實(shí)際輸出的差別,選擇adam 優(yōu)化器進(jìn)行參數(shù)更新,隱藏層激活函數(shù)選擇ReLU 函數(shù),輸出層的激活函數(shù)選擇線性函數(shù)。訓(xùn)練的過程中,采用交叉驗(yàn)證(Cross validation),設(shè)定歷史數(shù)據(jù)集的80%作為訓(xùn)練數(shù)據(jù)集,剩余20%作為驗(yàn)證數(shù)據(jù)集,并設(shè)置BP 算法最多迭代次數(shù)為1 000 次。
BP 算法訓(xùn)練的過程,就是從歷史數(shù)據(jù)中學(xué)習(xí),找出數(shù)據(jù)變化的趨勢關(guān)系,進(jìn)而將其存入網(wǎng)絡(luò)的權(quán)值和閾值中,為后續(xù)的預(yù)測過程提供基礎(chǔ)。BP 網(wǎng)絡(luò)預(yù)測的時(shí)候,只需要將輸入量的實(shí)時(shí)采集數(shù)據(jù)送入BP 網(wǎng)絡(luò),經(jīng)前向傳播,輸出的結(jié)果即為預(yù)測數(shù)據(jù)。
選取1 號機(jī)組上導(dǎo)瓦在一段時(shí)間內(nèi)的溫度數(shù)據(jù),預(yù)測效果如表1 所示。
表1 上導(dǎo)瓦溫神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果
從表1 可以看出,基于BP 神經(jīng)網(wǎng)絡(luò)預(yù)測的上導(dǎo)瓦溫度和相應(yīng)的實(shí)際采樣值誤差較小,整體預(yù)測效果較好。
為了方便用戶查看當(dāng)前訓(xùn)練模型的數(shù)量以及每個(gè)模型訓(xùn)練的結(jié)果,本文基于MLflow 框架來實(shí)現(xiàn)趨勢預(yù)警的模型管理與展示。MLflow 主要包括跟蹤記錄、項(xiàng)目管理、模型管理等三大功能模塊。在以往的機(jī)器學(xué)習(xí)訓(xùn)練過程中,往往難以追蹤試驗(yàn)過程,而基于MLflow 框架不需要修改相應(yīng)機(jī)器學(xué)習(xí)算法,只需調(diào)用相關(guān)API 接口就可以將參數(shù)內(nèi)容記錄到本地文件,具體函數(shù)見表2。
表2 訓(xùn)練跟蹤函數(shù)
針對前面的神經(jīng)網(wǎng)絡(luò)模型,采用均方根誤差(RMSE)、平均絕對誤差(MAE)和R2 決定系數(shù)來進(jìn)行評價(jià),并調(diào)用log_metric 進(jìn)行記錄。
模型的展示,提供Web UI 界面,方便查看多個(gè)模型的多次訓(xùn)練的參數(shù)與指標(biāo),如圖2 所示。
圖2 模型web 展示
每一項(xiàng)訓(xùn)練記錄除了包含該次訓(xùn)練記錄的參數(shù)以及相關(guān)指標(biāo)外,還可以查看模型存儲的結(jié)果。模型存儲中包含三類文件,其中Mlmodel 為元數(shù)據(jù)文件,記錄如何加載模型;conda.yaml 文件即conda 環(huán)境配置;model.pkl 文件是訓(xùn)練好的模型。
本次系統(tǒng)設(shè)計(jì)中,通過將訓(xùn)練好的模型部署成本地REST API 服務(wù),實(shí)現(xiàn)在線預(yù)測。同時(shí)通過配置相關(guān)任務(wù)調(diào)度,設(shè)定訓(xùn)練間隔,只有模型訓(xùn)練成功之后,才發(fā)布新的模型,替代前一次的模型對外提供服務(wù)。整體發(fā)布流程如圖3 所示:
圖3 神經(jīng)網(wǎng)絡(luò)模型發(fā)布流程
客戶端應(yīng)用可以認(rèn)為預(yù)測服務(wù)始終在線,只需要按照設(shè)定的時(shí)間周期,定時(shí)發(fā)送POST 請求到服務(wù)端的/invocations 路徑,就能獲取當(dāng)前最新模型的預(yù)測結(jié)果。
為了方便數(shù)據(jù)的對比展示,按照原始采樣數(shù)據(jù)表的定義創(chuàng)建預(yù)測結(jié)果表,客戶端應(yīng)用將當(dāng)前預(yù)測的結(jié)果存儲于該預(yù)測結(jié)果表中。
基于機(jī)器學(xué)習(xí)的趨勢預(yù)警系統(tǒng)應(yīng)用后,根據(jù)上導(dǎo)瓦等設(shè)備歷史溫度訓(xùn)練的模型進(jìn)行自動(dòng)判斷,系統(tǒng)可以按照預(yù)先設(shè)定的預(yù)警策略發(fā)出實(shí)時(shí)告警,能夠讓現(xiàn)場監(jiān)控值班人員及時(shí)發(fā)現(xiàn)問題,并盡早加以處理,確保水電機(jī)組運(yùn)行的安全,提高運(yùn)行人員對設(shè)備缺陷的預(yù)見性和識別能力。
在實(shí)時(shí)告警功能之外,預(yù)測數(shù)據(jù)實(shí)時(shí)存儲于時(shí)序數(shù)據(jù)庫中,可以提供相應(yīng)的曲線圖表,方便運(yùn)行人員實(shí)時(shí)觀察相關(guān)設(shè)備溫度的采樣值與預(yù)測值之間的差距。當(dāng)然,為了保證水電機(jī)組的安全運(yùn)行,在溫度異常預(yù)警之外,往往還需結(jié)合其他在線監(jiān)測系統(tǒng),綜合相關(guān)數(shù)據(jù)得出準(zhǔn)確的判斷。
相比于傳統(tǒng)的限值預(yù)警,基于機(jī)器學(xué)習(xí)的水電機(jī)組趨勢預(yù)警系統(tǒng)在對歷史數(shù)據(jù)充分學(xué)習(xí)的基礎(chǔ)上,預(yù)警結(jié)果更能反映機(jī)組設(shè)備的實(shí)際運(yùn)行狀態(tài)。在保障水電機(jī)組安全運(yùn)行的同時(shí),也為機(jī)組的檢修重點(diǎn)提供了科學(xué)依據(jù)。系統(tǒng)在一定程度上增加了機(jī)組設(shè)備的使用率,提高了工作效率,減輕了運(yùn)行人員的工作負(fù)擔(dān),實(shí)現(xiàn)了管理的信息化和智能化,為大型水電站的“無人值班,少人值守”提供了技術(shù)保障。