李 磊,王 云,鄧洪波,梁志明
(華南理工大學(xué)電子與信息學(xué)院,廣州 510641)
電力工業(yè)是關(guān)乎國(guó)家經(jīng)濟(jì)發(fā)展和人民生活質(zhì)量的重要基礎(chǔ),如何能合理的規(guī)劃和開展安全的電力傳輸成為提高電力服務(wù)質(zhì)量的重要因素[1]。而電力負(fù)荷預(yù)測(cè)是電力系統(tǒng)有效規(guī)劃和安遠(yuǎn)運(yùn)行決策制度的重要數(shù)據(jù)依據(jù)之一。電網(wǎng)負(fù)荷預(yù)測(cè)不僅影響電網(wǎng)電力傳輸調(diào)度的決策,使得電力供給能夠提前進(jìn)行調(diào)度,提高電力傳輸?shù)挠行院徒?jīng)濟(jì)性,同時(shí)提高了對(duì)電力系統(tǒng)的裝置的優(yōu)化利用、減少發(fā)電備用、提高經(jīng)濟(jì)調(diào)度、確保系統(tǒng)可靠性和可維護(hù)性[2-3]。目前已有很多的預(yù)測(cè)方法,如楊中華[4]提出了—元線性回歸模型在電力系統(tǒng)負(fù)荷預(yù)測(cè)中的應(yīng)用,該方法證明了線性回歸模型對(duì)于電力負(fù)載預(yù)測(cè)的有效性;張宗華等[5]提出了BP 神經(jīng)網(wǎng)絡(luò)的電力負(fù)載算法,該算法利用全連接神經(jīng)網(wǎng)絡(luò)獲得比線性回歸更加精確的預(yù)測(cè)結(jié)果;程子華[6]提出了一種基于支持向量機(jī)的電力負(fù)載預(yù)測(cè)算法,該算法利用支持向量預(yù)測(cè)方法對(duì)電力的負(fù)載數(shù)據(jù)進(jìn)行處理,獲得優(yōu)于神經(jīng)網(wǎng)絡(luò)的處理效果。然而,傳統(tǒng)的預(yù)測(cè)模型參數(shù)難以同時(shí)滿足不同情況下復(fù)雜時(shí)變的電力負(fù)載預(yù)測(cè),從而獲得更高預(yù)測(cè)精度,其電力負(fù)載數(shù)據(jù)吞吐量極大,單臺(tái)計(jì)算服務(wù)器的算力無法保證對(duì)電力負(fù)載數(shù)據(jù)的處理。因此,需要基于大數(shù)據(jù)云平臺(tái)架構(gòu)設(shè)計(jì)一種新的電力負(fù)載預(yù)測(cè)模型。
本文針對(duì)上述問題,提出了一種多模型的自適應(yīng)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)算法,可根據(jù)不同電力負(fù)載的變化將數(shù)據(jù)調(diào)度到相對(duì)應(yīng)的神經(jīng)網(wǎng)絡(luò)模型中進(jìn)行處理,從而提高對(duì)復(fù)雜多變電力負(fù)載的預(yù)測(cè)精度;同時(shí),基于Spark云計(jì)算架構(gòu)對(duì)提出的模型算法進(jìn)行實(shí)現(xiàn),以證明云平臺(tái)對(duì)電力負(fù)載處理性能的優(yōu)勢(shì)。
電力負(fù)載數(shù)據(jù)是一種典型的時(shí)序數(shù)據(jù),即按照時(shí)間先后順序記錄的數(shù)據(jù)信息,因此,對(duì)于電力負(fù)載預(yù)測(cè)模型其本質(zhì)是建立歷史的數(shù)據(jù)之間的關(guān)系,利用這種關(guān)系估計(jì)未來的輸出數(shù)值,即預(yù)測(cè)下一個(gè)時(shí)刻的數(shù)值,可表示為
式中:tn為時(shí)間t中第n個(gè)時(shí)刻,tn-m為時(shí)間t第n-m個(gè)時(shí)刻,即距第n個(gè)時(shí)刻tn過去的第m個(gè)時(shí)刻;g*(t)n+1)為時(shí)間t中第n+1 個(gè)時(shí)刻的負(fù)載預(yù)測(cè)數(shù)值;g(tn),g(tn-1),…,g(tn-m)為時(shí)間t中n到n-m個(gè)時(shí)刻的負(fù)載真實(shí)數(shù)值;f(·)為預(yù)測(cè)數(shù)值與歷史數(shù)值之間的關(guān)系函數(shù)。
人工神經(jīng)網(wǎng)絡(luò)也已經(jīng)被成功用于處理各類的數(shù)據(jù)處理。本文采用人工神經(jīng)網(wǎng)絡(luò)作為電力負(fù)荷的預(yù)測(cè)模型,其用于數(shù)據(jù)預(yù)測(cè)的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型(回歸神經(jīng)網(wǎng)絡(luò))如圖1 所示。該神經(jīng)網(wǎng)絡(luò)分為3 層結(jié)構(gòu),輸入層由歸一化后前幾個(gè)時(shí)刻的電力負(fù)荷數(shù)據(jù)構(gòu)成;隱藏層由多個(gè)神經(jīng)元通過權(quán)重值與輸入層進(jìn)行全連接,每個(gè)神經(jīng)元的輸出可表達(dá)為
圖1 回歸神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意
式中:j為輸入層神經(jīng)元總的個(gè)數(shù);k代表隱藏層中第k個(gè)神經(jīng)元為輸入層神經(jīng)元與隱藏層神經(jīng)元對(duì)應(yīng)的連接權(quán)重值;xi為輸入層第i個(gè)神經(jīng)元輸入的數(shù)值;σ(·)為對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò)的激活函數(shù),一般為Sigmoid或者ReLU函數(shù)。輸出層為線性輸出,可表示為
如圖1 所示,本文采用的神經(jīng)網(wǎng)絡(luò)模型j=5,l=8。此外,輸出層需進(jìn)行輸入反歸一化運(yùn)算后可得到實(shí)際電力負(fù)載預(yù)測(cè)數(shù)值。
電力負(fù)荷數(shù)據(jù)的變化的規(guī)律受多種因素影響,如作息時(shí)間、節(jié)假日、社會(huì)活動(dòng)等,因此,電力負(fù)荷并不是恒定不變的,會(huì)呈現(xiàn)周期性,甚至是突變性的,如圖2所示為0.5 h采集一次的電力負(fù)載變化示意圖。
從圖2 中可知,電力負(fù)荷數(shù)據(jù)具有明顯周期性和突變型,而單一的人工神經(jīng)網(wǎng)絡(luò)難以處理如此復(fù)雜的數(shù)據(jù)。因此,為了提高電力負(fù)荷的預(yù)測(cè)精度,本文分析了電力負(fù)荷變化的特點(diǎn),將電力負(fù)荷分為上升和下降2 種類型分別進(jìn)行處理,如圖3 所示。
圖3 電力負(fù)荷變化分類示意
基于上述思路,本文提出了一種自適應(yīng)分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)(Adaptive Classification Neural Network for Power Workload,ACNN-PW),其結(jié)構(gòu)如圖4所示,自適應(yīng)的分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)工作流程:①電力負(fù)荷數(shù)據(jù)輸入到分類神經(jīng)網(wǎng)絡(luò)中,由分類神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)的數(shù)據(jù)進(jìn)行分類,判斷該數(shù)據(jù)是爬升還是下降類型;②根據(jù)分類神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果觸發(fā)對(duì)應(yīng)類型的預(yù)測(cè)神經(jīng)網(wǎng)絡(luò);③將電力負(fù)荷數(shù)據(jù)調(diào)度輸入到觸發(fā)的預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)中進(jìn)行預(yù)測(cè)處理。
圖4 自適應(yīng)的分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意
在訓(xùn)練分類神經(jīng)網(wǎng)絡(luò)和預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)時(shí),電力負(fù)荷數(shù)據(jù)采集時(shí)間點(diǎn)和其自身的電力負(fù)荷值難以將電力負(fù)荷數(shù)據(jù)有效地分為爬升和下降2 種類型。為避免分類數(shù)據(jù)產(chǎn)生的人工成本問題,本文使用非監(jiān)督機(jī)器學(xué)習(xí)算法(即K-Means算法[7]),并結(jié)合電力負(fù)荷變化特征,將電力負(fù)荷自適應(yīng)劃分至對(duì)應(yīng)的類別中。其中一階梯度特征能有效地表征電力負(fù)荷變化,如圖5 所示其可表示電力如何變化趨勢(shì),其表達(dá)式為
圖5 一階梯度特征電力負(fù)荷變化表征示意
式中:?為一階梯度值;y(ti)為第ti時(shí)刻電力負(fù)載值。
圖6 所示為基于一階梯度特征的自適應(yīng)分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程。
圖6 自適應(yīng)的分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程
由圖6 可知,自適應(yīng)的分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程:①?gòu)碾娏ω?fù)荷訓(xùn)練數(shù)據(jù)集提取一階梯度特征;②根據(jù)一階梯度特征,K-Means 算法將電力負(fù)荷數(shù)據(jù)集分為爬升和下降訓(xùn)練數(shù)據(jù)集;③將爬升和下降數(shù)據(jù)集以及K-Means算法對(duì)2 個(gè)數(shù)據(jù)集進(jìn)行標(biāo)簽訓(xùn)練分類神經(jīng)網(wǎng)絡(luò)以及爬升和下降預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)模型。預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)采用平方差損失函數(shù),即:
式中,N為模型訓(xùn)練中采集數(shù)據(jù)時(shí)刻的總數(shù)。
如圖7 所示Sprak RDD 結(jié)構(gòu)示意圖,核心是建立在統(tǒng)一的抽象彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets,RDD)之上,是基于RDD 進(jìn)行內(nèi)存算法的分布式和迭代實(shí)現(xiàn)[8]。其中,RDD包括了基本的數(shù)據(jù)分發(fā)和數(shù)據(jù)匯聚,其中每次運(yùn)算都會(huì)轉(zhuǎn)換為一個(gè)新的RDD對(duì)象,其速度明顯快于傳統(tǒng)的Hadoop 框架[9-10]。該結(jié)構(gòu)可以同時(shí)啟動(dòng)多個(gè)RDD 對(duì)象對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行并行化訓(xùn)練,利用Spark 的Manager Node 結(jié)構(gòu)實(shí)現(xiàn)類似Boosting 并行化訓(xùn)練方式,可加速神經(jīng)網(wǎng)絡(luò)的迭代訓(xùn)練速度,將每個(gè)Work Node 都運(yùn)行一個(gè)獨(dú)立ACCNPW,然后將數(shù)據(jù)分配到各個(gè)Work Node 進(jìn)行獨(dú)立訓(xùn)練,Manager Node負(fù)責(zé)將梯度進(jìn)行收集并收集然后進(jìn)行分發(fā),以更新各個(gè)Work Node 節(jié)點(diǎn)模型的梯度。同時(shí)。在完成模型的訓(xùn)練后,可以利用Spark 的Streaming框架,即Spark的實(shí)時(shí)數(shù)據(jù)流處理模式,實(shí)現(xiàn)高吞吐量的電力負(fù)荷處理處理。
圖7 Spark RDD結(jié)構(gòu)示意
本文采用6 臺(tái)配置為2 個(gè)E5-2630CPU、96GB 內(nèi)存的服務(wù)器進(jìn)行Spark 集群的搭建,其中1 臺(tái)作為Spark的管理節(jié)點(diǎn)Manager Node,5 臺(tái)作為計(jì)算節(jié)點(diǎn)服務(wù),每臺(tái)服務(wù)器采用Docker 進(jìn)行資源的整合和管理,Spark架構(gòu)如圖8 所示。
圖8 Spark集群架構(gòu)示意
測(cè)試采用1997、1998 年度的電力負(fù)載測(cè)試數(shù)據(jù),數(shù)據(jù)記錄了0.5 h為周期的電力負(fù)荷數(shù)值。本文將該數(shù)據(jù)集70%用作訓(xùn)練,30%用作測(cè)試,同時(shí)與線性回歸(Linear Regression,LR)、支持向量(Support Vector Regression,SVR)、人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)進(jìn)行比較。采用方均根偏移(Root-Mean-Squra Deviation,RMSD)[11]、平均絕對(duì)百分比誤差(Mean-Absolute-Percentage-Error,MAPE)[12]、R2[13]評(píng)測(cè)指標(biāo)對(duì)預(yù)測(cè)模型的精度評(píng)價(jià):
(1)RMSD指標(biāo)
(2)MAPE指標(biāo)
該指標(biāo)數(shù)值越低,說明預(yù)測(cè)精度越高。
(3)R2指標(biāo)
(1)預(yù)測(cè)分析。本文隨機(jī)選取了150 個(gè)電力負(fù)荷數(shù)據(jù)在不同模型下的預(yù)測(cè)結(jié)果和真實(shí)數(shù)據(jù)進(jìn)行對(duì)比,結(jié)果如圖9 所示,各模型的預(yù)測(cè)指標(biāo)見表1 所列。
表1 不同預(yù)測(cè)模型的測(cè)評(píng)指標(biāo)對(duì)比
圖9 不同模型的電力負(fù)荷預(yù)測(cè)結(jié)果對(duì)比
由圖9 可知,各模型均能對(duì)電力負(fù)荷變化進(jìn)行有效的預(yù)測(cè);由表1可見,所提出的ACNN-PW預(yù)測(cè)模型在RMSD和MAPE指標(biāo)上均低于其他模型的值,并且其R2=0.9582,相比與其他模型的指標(biāo)值更加接近于1,說明本文提出的ACNN-PW 模型相比于ANN、SVR和LR 預(yù)測(cè)模型能獲得更高的預(yù)測(cè)精度。本文將ACNN-PW模型自適應(yīng)分類的數(shù)據(jù)進(jìn)行可視化,如圖10 所示。圖中,ACNN-PW 模型對(duì)爬升和下降類型數(shù)據(jù)分類準(zhǔn)確。因此模型在預(yù)測(cè)時(shí)能很好地將2 類數(shù)據(jù)調(diào)度到對(duì)應(yīng)的預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)中進(jìn)行處理。
圖10 ACNN-PW模型自適應(yīng)分類的數(shù)據(jù)可視化示意
(2)有效性分析。為進(jìn)一步驗(yàn)證一階梯度特征的有效性,本文隨機(jī)提取了ACNN-PW 模型在預(yù)測(cè)過程中分類神經(jīng)網(wǎng)絡(luò)的分類結(jié)果(見圖10),Spark 并行處理(10 000 個(gè)數(shù)據(jù)點(diǎn))的指標(biāo)對(duì)比結(jié)果見表2 所列。由圖10 可知,一階梯度可以有效利用一階梯度特征引導(dǎo)基于Spark的無監(jiān)督機(jī)器學(xué)習(xí)K-Means算法[14]對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行分類學(xué)和標(biāo)注,表明對(duì)分類神經(jīng)網(wǎng)絡(luò)和預(yù)測(cè)神經(jīng)進(jìn)行訓(xùn)練的有效,因此,分類神經(jīng)網(wǎng)絡(luò)對(duì)輸入的電力負(fù)荷數(shù)據(jù)能有效進(jìn)行分類,驗(yàn)證了本文的理論的設(shè)計(jì)部分;由表2 可見,采用單一服務(wù)算力對(duì)于海量電力負(fù)載數(shù)據(jù)進(jìn)行預(yù)測(cè),處理時(shí)間為2 s,而采用Spark云平臺(tái)進(jìn)行處理,處理時(shí)間隨著計(jì)算節(jié)點(diǎn)的增多而減少,即提高了數(shù)據(jù)數(shù)據(jù)處理的吞吐量。由此,當(dāng)電力負(fù)載數(shù)據(jù)進(jìn)一步增加時(shí),單計(jì)算服務(wù)器難以保證對(duì)電力負(fù)載預(yù)測(cè)處理的算力要求,而Spark 云平臺(tái)可靈活更加電力負(fù)載數(shù)據(jù)的容量進(jìn)行彈性伸縮,從而保證算力的需求。
表2 Spark并行處理的指標(biāo)對(duì)比(10 000 個(gè)數(shù)據(jù)點(diǎn))
本文針對(duì)電力負(fù)荷,在Spark 云平臺(tái)上提出了一種自適應(yīng)分類電力負(fù)荷分類預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)模型,該模型可以自適應(yīng)的將電力負(fù)荷分為爬升和下降2 種類型,并將對(duì)應(yīng)的類型的電力負(fù)荷數(shù)據(jù)送入到相應(yīng)的人工神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型進(jìn)行預(yù)測(cè)以提高預(yù)測(cè)精度。同時(shí),為了避免訓(xùn)練過程中對(duì)于訓(xùn)練數(shù)據(jù)人工按照爬升和下降類型分類造成成本問題,本文采用一階梯度特征和無監(jiān)督K-Means機(jī)器學(xué)習(xí)算法能自動(dòng)地完成對(duì)訓(xùn)練數(shù)據(jù)的分類和標(biāo)注。最后,實(shí)驗(yàn)結(jié)果表明,本文提出的電力負(fù)荷預(yù)測(cè)模型能相比于其他的預(yù)測(cè),能進(jìn)一步提高預(yù)測(cè)精度。