唐孝舟,孫長蘭,張玉彬,朱錦干,張軍華
(南京南瑞繼保電氣有限公司,江蘇南京 211102)
集水井是水電廠滲漏水、檢修水和部分生產(chǎn)用水的排泄系統(tǒng)。電廠滲漏水和檢修水通過管道或排水溝收集到集水井,待積累到一定數(shù)量后用水泵抽至下游[1-2]。若集水井排水不暢,輕則會水淹水泵,重則將可能導(dǎo)致水淹廠房。因此,集水井排水泵對于水電廠安全運行十分重要。隨著運行時間的增長,加上長期泥水的沖擊,排水泵可能會出現(xiàn)軸承磨損、性能下降的問題[3-4]。如何及時對排水泵故障進行預(yù)警,在故障發(fā)生之前就搶先發(fā)現(xiàn)并消除故障有著重要意義。隨著技術(shù)的進步,當(dāng)前水電廠集水井排水泵一般采用可編程邏輯控制器(Programmable Logic Controller,PLC)來實現(xiàn)自動控制,當(dāng)水位超過設(shè)定值時自動啟動,當(dāng)水位下降至設(shè)定值時自動停止[5-6]。同時,集水井排水泵的運行數(shù)據(jù)也會通過PLC上送給電廠計算機監(jiān)控系統(tǒng)。排水泵的啟停時刻、排水時長也可以被計算機監(jiān)控系統(tǒng)詳細(xì)記錄,為排水泵故障預(yù)警研究創(chuàng)造了有利條件。另一方面,機器學(xué)習(xí)算法日益普及,其中的BP神經(jīng)網(wǎng)絡(luò)被廣泛用于各種科學(xué)研究和工程應(yīng)用。本文通過構(gòu)建一個BP神經(jīng)網(wǎng)絡(luò)來實現(xiàn)水電廠排水泵故障預(yù)警功能。
水電廠集水井排水泵一般采用PLC自動控制,當(dāng)水位超過設(shè)定值時自動啟動,當(dāng)水位下降至設(shè)定值時自動停止。如圖1所示:H1是排水泵啟動水位;H2是排水泵停止水位;橫軸方向T1和T3是水泵啟動時刻;T2和T4是水泵停止時刻。則排水泵在當(dāng)前水位、當(dāng)前時間范圍內(nèi)運行時間為T2-T1+T4-T3。顯然,這個時長取決于集水井水位以及排水泵的排水能力,并且水位是具體的已知的變量,排水能力是抽象的未知的變量。
水電廠計算機監(jiān)控系統(tǒng)一般每個小時統(tǒng)計一次排水泵的運行時長(單位為s),以分鐘為單位來采集集水井的水位(單位是m)。因此,上述問題轉(zhuǎn)化為:在第i個小時內(nèi),輸入是一個水位序列,從第0 min到第59 min共計60個數(shù)據(jù)組成的數(shù)組Hi=[h0,h1,…,h59],輸出是排水泵運行時長,記為Ti,其單位是s,取值范圍在0~3 600之間。如果通過m條歷史數(shù)據(jù)來分析集水井水位與排水泵運行時長的關(guān)系,則此時輸入為Tm×60,輸出為Tm×1。
排水泵啟停次數(shù)、排水時長除了受集水井水位的直接影響以外,還會受來水量的間接影響。水電廠集水井一般分為滲漏集水井、防洪集水井、檢修集水井,不同類型集水井來水量又受到不同因素的影響。滲漏集水井與水輪機閥門、主軸密封密切相關(guān),防洪集水井來水量主要受到降雨量影響和水庫水位的影響,檢修集水井來水量則與檢修工作密切相關(guān)。用type表示集水井類型,定義type=0時表示滲漏集水井,type=1時表示防洪集水井,type=2時表示檢修集水井。用ωi(type)來表示時段i的來水量影響因子,則其表達式為
式中:αi是一個水輪機閥門、主軸密封表征參數(shù),因機組壽命、運行狀況而異,根據(jù)水電廠運行經(jīng)驗取值,其取值區(qū)間為[0,1];βi、γi分別為時段i的水庫水位、降雨量,取實際測量值;δi在檢修時取1,非檢修時取0。
綜合考慮集水井水位、來水量后,排水泵運行時長的自變量為[H60,ωi(type)]m×1,因變量為Tm×1。
BP神經(jīng)網(wǎng)絡(luò)是一種最有效的多層神經(jīng)網(wǎng)絡(luò),它包含輸入層、隱含層、輸出層[7-8]。其主要特點是信號前向傳遞,而誤差后向傳播,通過不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)重值,使得網(wǎng)絡(luò)的最終輸出與期望輸出盡可能接近,以達到訓(xùn)練的目的[9-10]。圖2為典型BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖,其中:第1層稱為輸入層,最后一層(第L層)被稱為輸出層,其他各層均被稱為隱含層(第2層到第L-1層)。
令輸入向量為X=[x1,x2,…,xm],輸出向量為Y=[y1,y2,…,yn],隱含層神經(jīng)元輸出為hl=[,,…,],設(shè)為從l-1層第j個神經(jīng)元與l層第i個神經(jīng)元之間的連接權(quán)重;為第l層第i個神經(jīng)元的偏置,那么權(quán)重和偏導(dǎo)的計算公式為
BP網(wǎng)絡(luò)模型訓(xùn)練完畢之后,在進行預(yù)測的時候,只需要將輸入量的實時采集數(shù)據(jù)送入BP網(wǎng)絡(luò),經(jīng)前向傳播,輸出的結(jié)果即為預(yù)測數(shù)據(jù)。
BP神經(jīng)網(wǎng)絡(luò)的隱含層一般采用一層即可,層數(shù)過多反而不利于模型的訓(xùn)練和收斂。本文采用的即是這種結(jié)構(gòu),整個BP神經(jīng)網(wǎng)絡(luò)就由輸入層、隱含層、輸出層三層來構(gòu)成,輸入層為集水井水位和來水量矩陣X=[H60,Wi(type)],輸出層為1 h內(nèi)水泵的運行時長Y=Ti(單位是s)。這種結(jié)構(gòu)的BP模型具有訓(xùn)練簡單、效率高的優(yōu)點,便于現(xiàn)場應(yīng)用。
神經(jīng)網(wǎng)絡(luò)是以樣本在事件中的統(tǒng)計分布機率來進行訓(xùn)練和預(yù)測的,并且激活函數(shù)sigmoid的取值是0到1之間的[11-12],網(wǎng)絡(luò)最后一個節(jié)點的輸出也是如此,所以經(jīng)常要對樣本的輸入、輸出做歸一化處理。歸一化是統(tǒng)一在[0,1]之間的統(tǒng)計概率分布,當(dāng)所有樣本的輸入信號都為正值時,與第一隱含層神經(jīng)元相連的權(quán)值只能同時增加或減小,從而導(dǎo)致學(xué)習(xí)速度很慢。另外在數(shù)據(jù)中常存在奇異樣本數(shù)據(jù),奇異樣本數(shù)據(jù)存在所引起的網(wǎng)絡(luò)訓(xùn)練時間增加,并可能引起網(wǎng)絡(luò)無法收斂。為了避免出現(xiàn)這種情況及后面數(shù)據(jù)處理的方便,加快網(wǎng)絡(luò)學(xué)習(xí)速度,可以對輸入信號進行歸一化,使得所有樣本的輸入信號其均值接近于0或與其均方差相比很小。歸一化可以通過MinMaxScaler函數(shù)來實現(xiàn),其公式為
式中:x為需要歸一化的特征向量;xmax和xmin分別表示x中最大值和最小值;ymax和ymin分別表示對應(yīng)數(shù)據(jù)歸一化后,區(qū)間范圍中的最大與最小數(shù)值。此時所有輸入數(shù)據(jù)都被歸一化到[0,1]區(qū)間。將Hm×60和Tm×1都按照此方法歸一化,歸一化之后的數(shù)組分別記為Xm×60和Ym×1。
為了增強模型適應(yīng)度、提高訓(xùn)練準(zhǔn)確性,將m組數(shù)據(jù)集按照8∶2比例隨機劃分為訓(xùn)練集和測試集。具體方法是使用python程序中的scikit-learn模塊自帶的train_test_split函數(shù)。該函數(shù)在劃分訓(xùn)練集和測試集時完全是隨機的,可以減少偶然性誤差。同時,由大數(shù)定理可知,試驗次數(shù)越多,事件發(fā)生概率越趨于穩(wěn)定。因此,將劃分過程重復(fù)10次,形成10個數(shù)據(jù)集記錄為DataSeti(i=1,2,…,10),第i個數(shù)據(jù)集中的訓(xùn)練集記錄為TrainDataSeti,測試集記錄為TestDataSeti。
針對BP神經(jīng)網(wǎng)絡(luò)模型,一般采用均方根誤差(RMSE)、平均絕對誤差(MAE)和決定系數(shù)R2來評價模型的好壞。其公式如下:
式中:m表示輸出向量個數(shù);yi表示實際值;y′i表示預(yù)測值。
為了獲得準(zhǔn)確的模型評估,運用循環(huán)算法對上面劃分好的10組數(shù)據(jù)展開訓(xùn)練,訓(xùn)練的目的是確定激活函數(shù)和中間層網(wǎng)絡(luò)的節(jié)點個數(shù),同時獲得不同條件下的評估指標(biāo)。最后根據(jù)各項評估指標(biāo)確定最好的BP神經(jīng)網(wǎng)絡(luò)模型。
按照1.1、1.2節(jié)建模方法,從南方某省份一大型水電廠獲取了防洪集水井6個月共4 320 h的水位、來水量數(shù)據(jù),按照1.4節(jié)所講方法進行數(shù)據(jù)預(yù)處理之后,共形成10個DataSet數(shù)據(jù)集,每個數(shù)據(jù)集包含數(shù)據(jù)4 320條,其中又進一步劃分為訓(xùn)練集數(shù)據(jù)3 456條,測試集數(shù)據(jù)864條。接下來對10組不同的DataSeti數(shù)據(jù)集,按照不同條件展開實驗分析。
當(dāng)神經(jīng)網(wǎng)絡(luò)激活函數(shù)分別設(shè)定為sigmoid和ReLU時,BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果如表1所示??梢钥吹皆谙嗤闆r下,sigmoid作為激活函數(shù)時,其均方根誤差RMSE、平均絕對誤差MAE大幅小于ReLU激活函數(shù),而決定系數(shù)R2則遠(yuǎn)高于后者。因此激活函數(shù)設(shè)定為sigmoid能獲得到較好的預(yù)測模型。
表1 不同激活函數(shù)預(yù)測結(jié)果對比
當(dāng)激活函數(shù)設(shè)定為sigmoid后,改變隱含層節(jié)點數(shù),重新進行模型訓(xùn)練,結(jié)果如表2所示??梢钥闯霎?dāng)隱含層節(jié)點數(shù)為60時,其均方根誤差RMSE和MAE大于節(jié)點數(shù)為100的情況,但是其決定系數(shù)優(yōu)于后者,當(dāng)隱含層節(jié)點數(shù)為150時其各項指標(biāo)都不如節(jié)點數(shù)為100,因此設(shè)定神經(jīng)網(wǎng)絡(luò)的隱含層節(jié)點數(shù)為100。
表2 不同隱含層節(jié)點預(yù)測結(jié)果對比
根據(jù)前面的對比結(jié)果,BP神經(jīng)網(wǎng)絡(luò)隱含層節(jié)點數(shù)設(shè)置為100,激活函數(shù)設(shè)置為sigmoid能取得最好的模型,并且模型的均方根誤差平均值RMSE=75.99。模型訓(xùn)練好之后就可以按照小時為單位對排水泵的排水能力進行預(yù)測,然后跟實測值進行比較,觀察預(yù)測效果。表3展示了連續(xù)12 h的排水泵運行時長預(yù)測結(jié)果。
統(tǒng)計學(xué)中經(jīng)常使用拉依達準(zhǔn)則(也稱準(zhǔn)則)用于剔除異常數(shù)據(jù)[13],具體方法是將單一變量同一時刻的采集數(shù)據(jù)構(gòu)造數(shù)組X,計算其標(biāo)準(zhǔn)偏差σ。取其中最大偏差值與3σ進行比較,若最大偏差大于3σ,則對應(yīng)的測量值即為“粗大誤差”,需要被剔除。而BP神經(jīng)網(wǎng)絡(luò)其本質(zhì)也是用統(tǒng)計學(xué)方法進行訓(xùn)練和預(yù)測,因此3σ可以用于效果評估。BP神經(jīng)網(wǎng)絡(luò)模型的均方根誤差RMSE就是標(biāo)準(zhǔn)偏差σ,3σ可以用3RMSE來代替。從表3數(shù)據(jù)可以看到,連續(xù)預(yù)測誤差最大值剛剛接近RMSE,所有預(yù)測誤差都沒有超過3RMSE,不存在預(yù)測上的“粗大誤差”,預(yù)測效果良好。
表3 水泵連續(xù)12 h運行時長預(yù)測結(jié)果對比s
首先對排水泵的排水能力進行預(yù)測,然后跟實測值進行比較,采用某種判據(jù)就可以產(chǎn)生預(yù)警[14-15]。本文借鑒統(tǒng)計學(xué)中的3σ準(zhǔn)則作為故障預(yù)警的判據(jù)。由前面的描述可知3σ可以用3RMSE來代替,因此預(yù)警策略可以設(shè)定為|y-y′|>3RMSE,其中y是排水泵1 h內(nèi)的實測運行時間,y′是通過BP神經(jīng)網(wǎng)絡(luò)預(yù)測的水泵運行時間。
根據(jù)前面的模型訓(xùn)練結(jié)果可知,本文選用的BP神經(jīng)網(wǎng)絡(luò)模型均方根誤差RMSE=75.99 s。預(yù)警策略可以簡化為|y-y′|>3×75.99≈228。即某個小時內(nèi)排水泵實測排水時間與預(yù)測運行時間誤差超過228 s時,即認(rèn)為水泵存在排水異常的可能。實際現(xiàn)場應(yīng)用時為了減少誤報警的可能可以進一步增加裕度,即當(dāng)誤差超過了3RMSE,也可以暫時不給運行人員推送告警,而是認(rèn)為此時剛剛達到預(yù)警啟動條件,是否發(fā)出故障預(yù)警由下1 h的結(jié)果來決定。如果下1 h誤差未超過3RMSE,則認(rèn)為上一次啟動為誤報,將啟動狀態(tài)復(fù)歸,否則立即向運行人員發(fā)送故障預(yù)警信號,提示運行人員對排水泵運行狀態(tài)進行巡檢。整個過程實現(xiàn)的偽碼如下:
本文所提基于BP神經(jīng)網(wǎng)絡(luò)的水電廠排水泵故障預(yù)警方法,通過分析排水系統(tǒng)的歷史運行數(shù)據(jù),先后確立了激活函數(shù)、隱含層節(jié)點數(shù)等重要參數(shù),從而建立了BP神經(jīng)網(wǎng)絡(luò)模型,再根據(jù)集水井水位、來水量情況預(yù)測排水泵的理論運行時間,將該數(shù)據(jù)與實測數(shù)據(jù)做比對,發(fā)現(xiàn)異常時及時給運行人員推送告警,從而安排檢修。相比于傳統(tǒng)的限值預(yù)警,本文采用基于機器學(xué)習(xí)的方法,在對歷史數(shù)據(jù)充分學(xué)習(xí)的基礎(chǔ)上,預(yù)警結(jié)果更能反映設(shè)備的實際運行狀態(tài)。該系統(tǒng)目前已經(jīng)在某大型水電廠計算機監(jiān)控系統(tǒng)內(nèi)試運行。從現(xiàn)場運行的情況來看,預(yù)測精度良好,為排水泵及早發(fā)現(xiàn)故障提供了一種新手段。由于本文故障判定采用的是固定閾值的方法,實際在現(xiàn)場運行過程中,隨著排水泵老化,其排水能力會越來越差,如何動態(tài)的確定故障閾值將是一個值得研究的問題。