陳 雷,劉林虎,閆川川,孫艷鐲,于 凱,周 超
(1.東北石油大學(xué)秦皇島校區(qū)電信系,河北秦皇島 066004;2.首鋼京唐鋼鐵聯(lián)合有限責任公司,河北唐山 063205)
電力系統(tǒng)的主要任務(wù)是給廣大用戶不間斷地提供優(yōu)質(zhì)電能,滿足各種類型負荷的需求[1]。目前,我國各地的電力需求巨大且具有隨機變化等特點,發(fā)電廠提供的電能和用戶負荷需求之間需要進行一定程度上的協(xié)調(diào),而良好的電力負荷預(yù)測能夠?qū)⒍哌_到一種動態(tài)平衡的關(guān)系[2]。因此,做好電力負荷預(yù)測尤為重要。
電力負荷預(yù)測按時間大致可以分為四類:長期負荷預(yù)測、中期負荷預(yù)測、短期負荷預(yù)測和超短期負荷預(yù)測[3]。其中,超短期負荷預(yù)測的目的是在當日之內(nèi)制訂出一套合理的發(fā)電計劃,精確預(yù)測未來幾小時甚至幾分鐘的負荷值,從而保障整個電網(wǎng)的安全運行,保證較高的電能質(zhì)量[4]。
近幾年來,中外學(xué)者采用神經(jīng)網(wǎng)絡(luò)的方法進行超短期電力負荷預(yù)測,取得了不錯的效果。M.A.Hossain 等人提出了一種基于CNN-GRU 的風(fēng)電超短期預(yù)測方法,該方法的預(yù)測精度達到了98.4%以上[5];莊家懿等人提出一種基于CNN 和GRU 并行的超短期負荷預(yù)測方法,該方法與GRU 神經(jīng)網(wǎng)絡(luò)、CNNGRU 神經(jīng)網(wǎng)絡(luò)超短期負荷預(yù)測法相比,有更高的預(yù)測精度[6]。但上述方法在面對大容量負荷數(shù)據(jù)時的精度較低。
為了彌補和完善上述負荷預(yù)測方法帶來的不足,文中擬構(gòu)建基于GRU、CNN 和Attention 相結(jié)合的神經(jīng)網(wǎng)絡(luò),該方法首先利用GRU 能夠處理時間序列的特點,初步提取較長時間的負荷序列的特征,然后利用CNN 能夠?qū)ω摵尚蛄羞M行分批次提取特征的特點,即按照每天負荷數(shù)據(jù)的規(guī)律,將GRU 提取的特征進行分類處理,最后加入Attention 提高預(yù)測精度。
電力負荷的量測裝置有時會受到諸多不利因素的影響而發(fā)生故障,因此所測得的初始電力負荷數(shù)據(jù)中會偶爾存在一些異常值,如負荷零值或短時恒定的負荷值等,這些異常值會對負荷預(yù)測結(jié)果產(chǎn)生較大的影響[7]。采用孤立森林算法,可以很好地檢測出這些異常值的存在。孤立森林算法利用了一種“隔離”的思想,利用超平面對各負荷點進行隨機特征分割,其中異常值較正常值更易被分割并篩選出來,更易被“隔離”。該算法具有實現(xiàn)簡單、適用性強、識別準確率高等特點[8]。
文中擬采用該算法篩選出異常的負荷值,然后對異常值采用拉格朗日插值法進行修正處理,計算公式如下:
其中,t為負荷值異常的時刻;a、b分別為t時刻前、后一小段時間的負荷點數(shù);Lt-n和Lt+n分別為初始負荷序列中t-n和t+n時刻的負荷值;Lt為修正后的t時刻的負荷值。
2014 年Kyunghyun Cho 等人提出了門控循環(huán)單元(Gated Recurrent Unit,GRU)網(wǎng)絡(luò),相較于長短期記憶網(wǎng)絡(luò)(Long-Short Term Memory,LSTM),GRU 網(wǎng)絡(luò)的結(jié)構(gòu)更為簡單,運行速度更快[9]。GRU 網(wǎng)絡(luò)只有兩個門,分別為更新門zt和重置門rt。其中,更新門控制前一時刻隱藏層ht-1的輸出對該時刻隱藏層輸出ht的影響,其值越大,影響程度就越大;重置門表示前一時刻隱藏層輸出到該時刻所刪除的信息量,其值越小,刪除的信息就越多[10]。GRU 網(wǎng)絡(luò)的結(jié)構(gòu)如圖1 所示。
圖1 GRU網(wǎng)絡(luò)結(jié)構(gòu)
相關(guān)計算公式如下:
其中,Wr、Wz、WH、Wo為需要訓(xùn)練的權(quán)值參數(shù),Ht為xt和ht組合得到的候選信息,σ為sigmoid 激活函數(shù),×為矩陣的哈達瑪積(Hadamard product)。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是近幾年深度學(xué)習(xí)領(lǐng)域最熱門的模型之一,在圖像處理方面有著廣泛的應(yīng)用,可以用來提取數(shù)據(jù)樣本的特征[11]。CNN 采用神經(jīng)元之間的局部連接和卷積核之間權(quán)值共享的方式,可以減少參數(shù)的數(shù)量,從而大幅降低訓(xùn)練時間[12]。CNN 由輸入層、卷積層、池化層、全連接層和輸出層組成,其中卷積層可以提取樣本中的局部特征;池化層可以降低特征的維度,在保留主要特征的情況下減少特征參數(shù);全連接層可以將提取的特征進行整合[13]。其中一維CNN(Conv1D)結(jié)構(gòu)圖如圖2 所示。
圖2 Conv1D結(jié)構(gòu)
在超短期負荷預(yù)測中,往往需要模型能夠短時處理大量的負荷數(shù)據(jù),而某一時刻的負荷值與接近該時刻時間點的負荷值聯(lián)系更為密切,與距離該時刻較遠時間點的負荷值之間的關(guān)系則不大,因此,希望模型在預(yù)測的過程中只需關(guān)注最近一小段時間的負荷值即可,就需用到注意力機制[14]。注意力機制能夠為每個時間點的負荷值添加不同的權(quán)值,距離當前時間越近的負荷值權(quán)重越大,而越久遠的負荷值的權(quán)重就越小,從而模型在短時內(nèi)可以更好地獲得有價值的信息,提高了預(yù)測精度[15]。注意力機制的結(jié)構(gòu)如圖3 所示,其中,α=[α1,α2,…,αt]為注意力分布向量。
圖3 Attention結(jié)構(gòu)
注意力機制的相關(guān)公式如下:
其中,et為隱藏層ht的注意力打分函數(shù),v、W為注意力權(quán)重,b為偏置,m為輸入向量的維度。
文中所采用的數(shù)據(jù)集為印度德里地區(qū)國家電力負荷調(diào)度中心2020 年6 月21 日至30 日共10 天的負荷數(shù)據(jù),每5 分鐘取一個負荷數(shù)據(jù)點,共計2 880 個數(shù)據(jù)點,并按照9∶1 的比例劃分訓(xùn)練集和測試集,即前9 天用來訓(xùn)練,最后一天用來測試模型的預(yù)測效果。采用孤立森林算法將異常數(shù)據(jù)進行修正,修正前和修正后的結(jié)果分別如圖4 和圖5 所示。
圖4 修正前的負荷數(shù)據(jù)
圖5 修正后的負荷數(shù)據(jù)
為了使數(shù)據(jù)更易進行處理,提高模型訓(xùn)練速度,文中擬采用數(shù)據(jù)歸一化(MinMaxScaler)函數(shù)對數(shù)據(jù)進行歸一化處理,將所有樣本數(shù)據(jù)壓縮到[0,1]范圍內(nèi),其公式如下:
其中,xt為原始數(shù)據(jù),為歸一化處理后的數(shù)據(jù),xmax和xmin分別為原始數(shù)據(jù)的最大值和最小值。
文中提出的基于孤立森林和GRU-CNN-Attention 模型的基本結(jié)構(gòu)如圖6 所示。
圖6 基于孤立森林和GRU-CNN-Attention模型的基本結(jié)構(gòu)
由于訓(xùn)練集中各天的負荷特征不完全相同,所以將訓(xùn)練集按天數(shù)劃分成九部分學(xué)習(xí)。各層結(jié)構(gòu)說明如下:
1)孤立森林異常數(shù)據(jù)處理、數(shù)據(jù)歸一化:修正異常初始數(shù)據(jù),減小模型訓(xùn)練和預(yù)測誤差,其中式(1)的a、b均取5;
2)GRU 網(wǎng)絡(luò):為了較好地提取負荷數(shù)據(jù)的時序特征,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),又不影響模型的預(yù)測速度,文中設(shè)置兩層GRU 網(wǎng)絡(luò),神經(jīng)元數(shù)目分別為32 和16;
3)Dropout 層:防止模型在訓(xùn)練的過程中出現(xiàn)過擬合現(xiàn)象,文中設(shè)置Dropout 的值為0.3;
4)一維CNN(Conv1D)和一維最大池化(Maxpooling1D):為了精確地提取數(shù)據(jù)之間的局部特征,文中按照卷積層—池化層的順序設(shè)置兩組層結(jié)構(gòu)。其中卷積層的卷積核數(shù)為16,卷積步長為3,池化層的池化步長為1;
5)Attention 層:賦予各負荷值不同的權(quán)重,提高預(yù)測精度,其中式(8)和式(9)中的m值取9;
6)Dense 層:綜合上述各層的信息,匯總輸出。
文中擬采用均方誤差(Mean Square Error,MSE)函數(shù)作為負荷預(yù)測的損失函數(shù),其計算公式如下:
其中,yi為i時刻負荷的實際值,為i時刻負荷的預(yù)測值,n為測試集負荷數(shù)據(jù)的個數(shù)。
由于Relu 函數(shù)能夠提高神經(jīng)網(wǎng)絡(luò)各層之間的非線性關(guān)系,且具有良好的防梯度消失和梯度爆炸的功能[16],因此選擇Relu 函數(shù)作為激活函數(shù)。
優(yōu)化器的功能是基于訓(xùn)練模型的數(shù)據(jù)來調(diào)整模型的參數(shù),從而使所得的預(yù)測數(shù)據(jù)逐漸逼近最優(yōu),其本質(zhì)是一個函數(shù)尋找最優(yōu)解的過程[17]。文中擬采用Adam(Adaptive Moment Estimation)優(yōu)化器,能夠為不同參數(shù)設(shè)置不同的學(xué)習(xí)率,具有一定的自適應(yīng)性。
文中采用式(12)計算各點的誤差:
因均方根誤差(Root Mean Square Error,RMSE)和平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)更能體現(xiàn)預(yù)測值和真實值之間的誤差水平,文中擬選取上述兩種方法進行平均誤差分析,其公式如下:
其中,式(12)和式(13)的yi為i時刻負荷的實際值,為i時刻負荷的預(yù)測值,n為測試集樣本數(shù)。
文中的實驗設(shè)備采用Intel Core i7-7500U 處理器和AMD Radeon R7 M340 顯卡。文中采用Python作為編程語言,利用Tensorflow 框架和Keras 庫進行模型搭建。文中還用到的模塊為Numpy、Pandas、Matplotlib 和Scikit-learn。
為了檢驗文中所述模型的效果,需進行預(yù)測實驗。該實驗采用RMSE 和MAPE 誤差函數(shù),與GRU網(wǎng)絡(luò)模型和GRU-CNN 網(wǎng)絡(luò)模型進行比較,驗證該模型的預(yù)測效果[18]。
首先驗證該模型的收斂性。如圖7 所示,模型在迭代200~300 次的損失值已經(jīng)很小,且不再下降,因此模型具有較好的收斂性。文中設(shè)置模型迭代次數(shù)為300。
圖7 模型的收斂曲線
預(yù)測結(jié)果和各點的預(yù)測誤差曲線分別如圖8 和圖9 所示。從預(yù)測結(jié)果來看,文中所提出模型的預(yù)測負荷曲線更接近于實際值,各點預(yù)測誤差相對更小。
圖8 預(yù)測結(jié)果
圖9 各點的預(yù)測誤差曲線
預(yù)測的ERMSE和EMAPE如表1 所示。文中所提出模型的ERMSE與GRU 和GRU-CNN 模型的ERMSE相比分別下降了40.278 MW、18.969 MW,EMAPE分別下降了0.28%、0.272%。由此可以說明,文中所述模型的預(yù)測性能更好。
表1 不同模型ERMSE和EMAPE的對比
文中系統(tǒng)地介紹了基于孤立森林和GRU-CNNAttention 的超短期負荷預(yù)測模型,利用印度德里地區(qū)超短期負荷數(shù)據(jù)集,修正其中的異常負荷值和歸一化處理后進行預(yù)測,并與GRU、GRU-CNN 網(wǎng)絡(luò)模型的預(yù)測精度進行對比,通過一系列圖表展示了預(yù)測結(jié)果。分析表明,文中所提出模型的預(yù)測結(jié)果更接近于實際值,具有更高的預(yù)測精度。在后續(xù)研究中,擬加入天氣、工作日及節(jié)假日等影響負荷值大小的因素,并與其他超短期負荷預(yù)測方法進行比較,提升該模型的實際應(yīng)用價值。