唐為東
(江蘇瑞中數(shù)據(jù)股份有限公司,南京210000)
大數(shù)據(jù)分析技術(shù)在諸多領(lǐng)域得到了應(yīng)用,其能夠通過數(shù)據(jù)規(guī)律對未來情況做出預(yù)測,分析現(xiàn)有數(shù)據(jù)是否存在異常,幫助進行決策,滿足管理及控制需求。在電力監(jiān)控系統(tǒng)中,數(shù)據(jù)具有明顯的時序特征,使用LSTM網(wǎng)絡(luò)進行大數(shù)據(jù)分析能夠?qū)?shù)據(jù)異常情況做出預(yù)測和判斷,為電力系統(tǒng)運行提供數(shù)據(jù)及信息支持,確保電力系統(tǒng)的安全性,滿足智慧電網(wǎng)的建設(shè)要求。本研究對智能電力監(jiān)控平臺進行設(shè)計,使用LSTM網(wǎng)絡(luò)實現(xiàn)對電網(wǎng)運行數(shù)據(jù)的智能化分析,構(gòu)建智能化電力監(jiān)控平臺,提升電力監(jiān)控水平及效率。
系統(tǒng)用戶有3種角色,包括電力運維人員、公司管理者及系統(tǒng)管理員。電力運維人員負責(zé)監(jiān)控電力系統(tǒng)運行狀況,處理系統(tǒng)報告;公司管理人員制定用電計劃、核算用電;系統(tǒng)管理人員是系統(tǒng)的運維人員,負責(zé)各個賬戶管理權(quán)限的控制。系統(tǒng)用例如圖1所示。
圖1 系統(tǒng)用例Fig.1 System example
系統(tǒng)的核心功能是對電路進行實時監(jiān)控,滿足智慧電網(wǎng)的建設(shè)要求,將電路轉(zhuǎn)化為電網(wǎng)拓撲結(jié)構(gòu),將系統(tǒng)圖展示出來。安卓App可以提供系統(tǒng)圖的顯示,使用者可根據(jù)需要進行系統(tǒng)圖片的縮放、點擊、儲存、刷新等,滿足對電力系統(tǒng)監(jiān)測和控制的要求。應(yīng)用在運行過程中能夠自動接收有關(guān)數(shù)據(jù)信息,刷新顯示的圖像,滿足實時提供數(shù)據(jù)的要求。
數(shù)據(jù)采集系統(tǒng)需判斷監(jiān)控數(shù)值是否超出范圍,針對超出安全范圍的數(shù)據(jù)進行提示。因此需使用智能技術(shù)進行數(shù)據(jù)判斷,完成對異常的分析,提供必要的警報。由于電力監(jiān)控系統(tǒng)對安全有較高的要求,因此對不同級別的用戶會賦予相應(yīng)的角色,用戶只有擁有相關(guān)角色才能訪問有關(guān)功能,完成對數(shù)據(jù)的分析及修改。
性能要求。系統(tǒng)需要保持足夠的穩(wěn)定性和時效性,因此要滿足并發(fā)需求,能夠?qū)?00個左右的用戶同時進行數(shù)據(jù)處理并應(yīng)對突發(fā)請求。電力系統(tǒng)的監(jiān)控及警告系統(tǒng)的刷新時間間隔為5 s,手機應(yīng)用需接收和處理數(shù)據(jù),因此系統(tǒng)對用戶數(shù)據(jù)、監(jiān)控請求的時間應(yīng)控制在2.5 s以內(nèi),查詢歷史數(shù)據(jù)時,響應(yīng)時間需控制在3 s以下。
易用性需求。系統(tǒng)需提供清晰的界面,讓用戶經(jīng)過簡單操作獲得想要的功能。系統(tǒng)也能為用戶提供明確的目標(biāo)指引,所有功能模塊都要具備所見即所得的特性,方便用戶直接上手操作。
系統(tǒng)包括展示層、接口層、業(yè)務(wù)層和數(shù)據(jù)層4層架構(gòu)(如圖2所示),每一層都有獨立的功能,并實現(xiàn)對下一層的調(diào)用。展示層為應(yīng)用的客戶端和Web端,Web端包括后臺管理和電力監(jiān)控兩部分,應(yīng)用端基于安卓系統(tǒng)開發(fā)展示電力系統(tǒng)的實時數(shù)據(jù),發(fā)出警告信息。接口層負責(zé)處理和接收用戶請求,實現(xiàn)用戶和后臺間的交互,系統(tǒng)采用模塊化設(shè)計,接收業(yè)務(wù)處理模塊獲得業(yè)務(wù)需求。業(yè)務(wù)層是系統(tǒng)的核心層,位于接口層和數(shù)據(jù)層之間,避免接口層無法直接訪問數(shù)據(jù)層。數(shù)據(jù)層完成對數(shù)據(jù)的采集和儲存,從電力系統(tǒng)中源源不斷地獲得最新數(shù)據(jù)。
圖2 系統(tǒng)邏輯框架Fig.2 System logicframework
系統(tǒng)的功能模塊包括實時監(jiān)控、數(shù)據(jù)儲存分析、歷史數(shù)據(jù)統(tǒng)計、電路警告監(jiān)控、系統(tǒng)配置管理等。不同的客戶端可訪問不同的功能模塊,不同的用戶模塊使用權(quán)限有所不同。
數(shù)據(jù)采集模塊。電路數(shù)據(jù)采集功能在后臺自動執(zhí)行,每隔5 s進行采集模塊請求發(fā)送,獲得數(shù)據(jù)后將數(shù)據(jù)存入到數(shù)據(jù)庫中,計算企業(yè)消耗的電力并統(tǒng)計消耗電力的累加值。
實時監(jiān)控功能。電路實時監(jiān)控功能包括兩部分,即安卓APP圖元庫的設(shè)計和后端數(shù)據(jù)獲取。圖元庫根據(jù)后臺數(shù)據(jù)更新XML文件,實現(xiàn)對圖元的更新。在后端數(shù)據(jù)獲取中將前端請求發(fā)送給Web服務(wù)器,根據(jù)服務(wù)器需求調(diào)用數(shù)據(jù)。
警告功能設(shè)計。警告功能通過智能分析模塊判斷是否需要警告,在數(shù)據(jù)獲取過程中主動判斷是否需要發(fā)布警告信息,通過用戶主動查詢選定時間內(nèi)的自動記錄告警信息。
系統(tǒng)使用關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫主要儲存權(quán)限管理和配置管理所需的信息,非關(guān)系型數(shù)據(jù)庫針對具有時序特征的電力數(shù)據(jù)進行儲存,結(jié)合應(yīng)用分析選擇具有高效讀寫能力的InfluxDB數(shù)據(jù)庫,滿足性能要求,使用SQL語言進行數(shù)據(jù)查詢。
LSTM全稱長短記憶網(wǎng)絡(luò),是循環(huán)神經(jīng)網(wǎng)絡(luò)的變體,能解決RNN無法對長記憶進行處理的缺陷,使用LSTM可以完成對不同長度時序信息的處理,實現(xiàn)更為精確的時序數(shù)據(jù)預(yù)測。電力系統(tǒng)的時序特征明顯,受到工廠生產(chǎn)、生活、季節(jié)變化等方面的影響,電流、電壓、電路負荷呈現(xiàn)出明顯的規(guī)律性,因此使用LSTM進行電力數(shù)據(jù)分析和預(yù)測,以預(yù)測值作為預(yù)測警告的依據(jù),可獲得較好的應(yīng)用效果。
LTSM模型的t時刻的cell如圖3所示,每個cell中,使用當(dāng)前時間輸入值xt和上一個狀態(tài)儲存的ht-1拼接,再通過傳遞狀態(tài)激活函數(shù),位置激活函數(shù)為sigmaod。
圖3 LSTM模型的cellFig.3 Cell of LSTM model
通過激活函數(shù)sigmoid后,分別產(chǎn)生ft、it、ot三個值,計算公式為:
ft=σ[Wf·(ht-1,xt)+bf]
當(dāng)前的cell輸出ht,公式為:
ht=ot×tanh(Ct)
電力運行數(shù)據(jù)的時序性隨時間變化的特征很強,為了能夠更有效學(xué)習(xí)電力數(shù)據(jù)的變化規(guī)律,建立了兩層LSTM網(wǎng)絡(luò),與Dropout層連接,通過兩層LSTM網(wǎng)絡(luò)可以較好地學(xué)習(xí)電力數(shù)據(jù)的周期性和規(guī)律。之后,數(shù)據(jù)進入全連接層完成降維,通過Dropout層避免網(wǎng)絡(luò)出現(xiàn)過擬合問題,再通過一層全連接層獲得預(yù)測結(jié)果。
為了確保電力系統(tǒng)的安全,需要網(wǎng)絡(luò)提前發(fā)現(xiàn)電力系統(tǒng)的異常情況并判斷異常數(shù)據(jù),給電力系統(tǒng)運維人員發(fā)出警報或提供相關(guān)信息,方便制定電網(wǎng)的控制策略。需使用具有真實性的數(shù)據(jù)開展網(wǎng)絡(luò)訓(xùn)練,選擇某電網(wǎng)6個月內(nèi)每隔10 min收集1次的數(shù)據(jù),共520 000條真實環(huán)境下的數(shù)據(jù),對于缺失的數(shù)據(jù),計算收集數(shù)據(jù)的平均值進行補充。采用8∶1∶1的比例進行數(shù)據(jù)分組,分別為訓(xùn)練集、驗證集、模型運行效果評估集合。
經(jīng)過訓(xùn)練后,使用測試集進行測試,以某站點出線A相電進行預(yù)測,獲得平均絕對誤差為0.257,預(yù)測結(jié)果和真實情況的對比如圖4所示。該模型的預(yù)測結(jié)果比較準(zhǔn)確,能夠較好地滿足電力系統(tǒng)監(jiān)控及預(yù)測需求。
圖4 預(yù)測和真實情況對比Fig.4 Comparison of predicted and actual situation
電力監(jiān)控系統(tǒng)中最關(guān)鍵的是數(shù)據(jù),需確保系統(tǒng)能夠與數(shù)據(jù)模塊之間保持實時通信,確保最新獲得的數(shù)據(jù)都被儲存在時序數(shù)據(jù)中。涉及的類包括SocketConnect、HistoryDataDao、EventInfoDao、UnitCfgDao、ACValue等。SocketConnect負責(zé)數(shù)據(jù)接口通信,系統(tǒng)運行過程中每隔5 s獲取一次數(shù)據(jù),通過HistoryDataDao存入數(shù)據(jù)庫,UnitCfgDao進行監(jiān)控點信息查詢,根據(jù)SocketConnect類獲取的數(shù)值查詢對應(yīng)的遙測數(shù)值。采集數(shù)據(jù)時,getData方法是獲取數(shù)據(jù)的核心,使用JavaNIO提供API,利用SocketChannel類和硬件數(shù)據(jù)結(jié)構(gòu)實現(xiàn)Socket通信,將數(shù)據(jù)包發(fā)送到確定的通道,結(jié)合需求對數(shù)據(jù)進行求解及解析。
通過PicController接收App的請求,將請求附帶查看的圖片交給MonitorService處理,MonitorService獲取要查詢的點名,將數(shù)據(jù)發(fā)給RealDataDao,查詢到相關(guān)大數(shù)據(jù)后將數(shù)據(jù)轉(zhuǎn)化成電度、遙測等信息,返回給用戶。遙測和遙信數(shù)據(jù)的獲取邏輯類似,通過MySQL查詢數(shù)據(jù)庫中的監(jiān)測點ID,通過時序數(shù)據(jù)庫查找對應(yīng)數(shù)據(jù)。實時監(jiān)控過程中需結(jié)合用戶發(fā)送的一次圖查詢點名,使用getRealData方法獲得要查詢點名的ID,將其作為參數(shù),使用UnitCfgDao從MySQL中根據(jù)點的名字查詢及配置監(jiān)控點的ID,將ID作為參數(shù),通過RealDataDao得到時序數(shù)據(jù)庫中最新的數(shù)據(jù),如果沒有得到相應(yīng)數(shù)據(jù),數(shù)據(jù)設(shè)置為0。
對歷史數(shù)據(jù)的統(tǒng)計是實現(xiàn)電網(wǎng)智能預(yù)測的基礎(chǔ)。歷史數(shù)據(jù)包括多個子模塊,可使用歷史數(shù)據(jù)輸出曲線圖、累加統(tǒng)計、企業(yè)能耗統(tǒng)計、子公司數(shù)據(jù)等。歷史數(shù)據(jù)統(tǒng)計功能中,類的功能包括三層,分別為Controller、Service、Dao,分別負責(zé)用戶請求處理、計算業(yè)務(wù)邏輯、獲取有關(guān)數(shù)據(jù)。在類中,LinController是曲線圖的接口,使用CumulantStatisController能夠查詢歷史數(shù)據(jù)、企業(yè)能耗統(tǒng)計,利用EventInfoController可以進行歷史數(shù)據(jù)查詢。在運行中會將Controller的數(shù)據(jù)處理任務(wù)分配到Service類,調(diào)用UnitCfgDao獲取用戶的點名信息,以相關(guān)數(shù)據(jù)為參數(shù)發(fā)送到HistoryDataDao接口,再從數(shù)據(jù)庫中查詢歷史數(shù)據(jù),將用戶請求返回給前端。數(shù)據(jù)的統(tǒng)計功能利用對應(yīng)的Service實現(xiàn),通過調(diào)用系統(tǒng)接口獲取對應(yīng)的統(tǒng)計數(shù)據(jù)。
系統(tǒng)運行過程中需及時完成對異常情況的警告,電路監(jiān)控功能結(jié)合實時數(shù)據(jù)進行警告監(jiān)測或查詢歷史數(shù)據(jù)。實時警告發(fā)現(xiàn)監(jiān)測數(shù)據(jù)異常后向手機應(yīng)用發(fā)送相關(guān)的警告信息,方便工作人員及時采取措施應(yīng)對。在運行過程中EventInfoController負責(zé)接收用戶請求,通過調(diào)用EventInfoService查詢過去的電路警告事件,通過查詢UnitDao獲取點名,再從數(shù)據(jù)庫查詢相關(guān)事件發(fā)生時的數(shù)據(jù),封裝為ApiResult發(fā)送給前端。使用EventInfoSender實現(xiàn)推送功能,監(jiān)控模塊會監(jiān)控電路的運行數(shù)據(jù),如果發(fā)現(xiàn)數(shù)據(jù)超出預(yù)警值就會通過EventInfoSender將信息發(fā)送給用戶手機。EventInfoSender通過激光推送框架為手機APP發(fā)送信息。運行時會生成一個JPushClient對象,根據(jù)實時數(shù)據(jù)通過獲取模塊傳入公司名,通過警告點名創(chuàng)建PushPayLoad對象,調(diào)用JPushClient實現(xiàn)推送功能。
系統(tǒng)配置管理功能為管理人員提供配置文件,方便進行配置文件的上傳和刪除,給手機應(yīng)用提供一次圖和圖元配置,管理人員可通過手機下載相關(guān)圖片。系統(tǒng)要能夠上傳和下載配置文件,進行配置文件的解析并儲存配置文件中的數(shù)據(jù)。使用的類為FileController類,提供所需要的連接口進行上傳、下載、列表查詢、比對信息等,還可進行文件解析,實現(xiàn)文件的實時刪除,調(diào)用UnitCfgDao在數(shù)據(jù)庫中刪除相應(yīng)的數(shù)據(jù),利用MD5Util作為輔助工具進行文件的MD5碼計算。在上傳配置時,用戶需要將文件發(fā)送給FileController的upload接口,通過該接口將文件在本地保存。FileService將繼續(xù)進行文件解析。文件被保存后,需從FileService中調(diào)用parseCfg方法,利用ConfigReader類完成對配置文件的解析,對電度、遙信、遙測3種數(shù)據(jù)使用不同的解析方式。
為了滿足系統(tǒng)軟件的運行要求需開展系統(tǒng)測試?;陔娏ΡO(jiān)控平臺各個模塊的實現(xiàn)情況對功能進行分析,使用云端服務(wù)器建立測試環(huán)境,應(yīng)用MySQL數(shù)據(jù)庫將測試環(huán)境和服務(wù)器布置在同一個服務(wù)器中,使用Springboot框架建立Tomcat服務(wù)器。前端使用安卓設(shè)備和瀏覽器進行系統(tǒng)訪問,使用JMeter作為測試工具。
功能測試內(nèi)容包括數(shù)據(jù)的采集和儲存、一次圖的展示、電力運行數(shù)據(jù)查詢、歷史統(tǒng)計數(shù)據(jù)查詢、一次圖配置查詢等。以電力運行數(shù)據(jù)查詢?yōu)槔?測試內(nèi)容為查詢電力運行過程中的數(shù)據(jù)變化,根據(jù)用戶選擇的時間范圍進行圖形數(shù)據(jù)的重放或生成分析結(jié)果。測試時啟動應(yīng)用并選擇數(shù)據(jù)查詢功能,選擇一次圖顯示,選擇表格形式、查詢時間和范圍。需保證應(yīng)用能夠顯示一次圖,提供有關(guān)歷史數(shù)據(jù)完成更新,提供查詢到的點數(shù)據(jù)并進行顯示,通過對不同功能的測試滿足功能要求,根據(jù)用戶需求更改配置、顯示數(shù)據(jù)及時間等信息。
針對系統(tǒng)性能進行測試,利用JMeter測試系統(tǒng)對Web應(yīng)用進行不同強度的測試,模擬企業(yè)電力運維人員、企業(yè)管理人員的要求。系統(tǒng)需維持100的并發(fā)量,將響應(yīng)時間控制在2500 ms以內(nèi),通過性能測試分析系統(tǒng)的平均響應(yīng)時間,將其控制在1000 ms左右,最大響應(yīng)時間不超過1500 ms,可快速完成響應(yīng),滿足系統(tǒng)效率需求。
智能電力監(jiān)控平臺能夠?qū)崿F(xiàn)對電力系統(tǒng)的智能化監(jiān)控,滿足系統(tǒng)運行管理要求。LSTM網(wǎng)絡(luò)能夠較好地適應(yīng)電力系統(tǒng)數(shù)據(jù)的時序特征,完成對系統(tǒng)數(shù)據(jù)的分析及預(yù)測,預(yù)測精確性良好,平均絕對誤差為0.257,平均響應(yīng)時間控制在1000 ms左右,最大響應(yīng)時間不超過1500 ms,滿足電網(wǎng)運行要求。基于安卓平臺進行應(yīng)用開發(fā),實現(xiàn)了系統(tǒng)在不同場景下的應(yīng)用,提升了系統(tǒng)運行效果,根據(jù)要求可進一步拓展應(yīng)用,豐富功能,保證顯示數(shù)據(jù)的全面性。