楊海柱, 江昭陽, 李夢龍, 張 鵬
(1.河南理工大學(xué) 電氣工程與自動化學(xué)院, 河南 焦作 454003;2.天津大學(xué) 電氣自動化與信息工程學(xué)院,天津 300072)
短期負(fù)荷預(yù)測對電力系統(tǒng)的調(diào)度運行和市場交易都有著重要的意義,精確的負(fù)荷預(yù)測不僅幫助電力系統(tǒng)工作人員制定合理的生產(chǎn)計劃,而且減少了資源浪費和用電成本[1]。
多年來,國內(nèi)外學(xué)者對短期電力負(fù)荷預(yù)測方法進(jìn)行大量研究,這些方法主要分三大類,第一類,基于傳統(tǒng)數(shù)學(xué)統(tǒng)計模型的方法[2~4],比如線性回歸、時間序列法和指數(shù)平滑法等[2]。這些方法具有簡單、計算速度快等優(yōu)點,但對數(shù)據(jù)的平穩(wěn)性要求較高,在處理非線性數(shù)據(jù)時預(yù)測精度較低。第二類,基于機器學(xué)習(xí)的方法[5,6],包括人工神經(jīng)網(wǎng)絡(luò)[7]和支持向量回歸機[8~10]等。以人工神經(jīng)網(wǎng)絡(luò)為代表的機器學(xué)習(xí)算法由于其預(yù)測精度高、計算能力強的優(yōu)點得到了廣泛關(guān)注。第三類,組合預(yù)測方法,不少專家和學(xué)者將負(fù)荷數(shù)據(jù)進(jìn)行分解,采用不同的預(yù)測工具進(jìn)行組合預(yù)測,提高了預(yù)測精度。文獻(xiàn)[11]采用集合經(jīng)驗?zāi)B(tài)分解(ensemble empirical mode decomposition,EEMD)對電力負(fù)荷進(jìn)行分解,將分解得到的高頻分量利用門控循環(huán)單元(gated recurrent unit,GRU)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練預(yù)測,低頻分量采用多元線性回歸(multiple linear regression,MLR)進(jìn)行預(yù)測,組合形成EEMD-GRU-MLR預(yù)測方法,不僅節(jié)省了預(yù)測時間,而且提高了預(yù)測精度。文獻(xiàn)[12]在深度學(xué)習(xí)框架中構(gòu)建長短期記憶(long short-term memory,LSTM)神經(jīng)網(wǎng)絡(luò)進(jìn)行電力負(fù)荷預(yù)測。文獻(xiàn)[13]針對負(fù)荷數(shù)據(jù)的時序性和非線性特點,考慮負(fù)荷數(shù)據(jù)內(nèi)部變化規(guī)律,將輸出結(jié)果與外部影響因素融合成新的輸入特征,在深度神經(jīng)網(wǎng)絡(luò)下進(jìn)行處理,最終提出一種基于GRU-NN模型的負(fù)荷預(yù)測方法,提高了預(yù)測速度和精度。這些方法為電力系統(tǒng)短期負(fù)荷預(yù)測提供了依據(jù)。
GRU不僅保留了LSTM的性能優(yōu)勢,而且由于調(diào)整的參數(shù)較少,大大提高了訓(xùn)練速度。研究發(fā)現(xiàn),設(shè)定不同的超參數(shù)將影響GRU的預(yù)測效果,為了便于超參數(shù)的選擇,提出一種布谷鳥搜索(cuckoo search,CS)算法和GRU相結(jié)合的預(yù)測方法。通過布谷鳥搜索算法尋優(yōu)GRU的迭代次數(shù)、學(xué)習(xí)率和隱含層節(jié)點數(shù),進(jìn)一步提高GRU的預(yù)測精度。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)在處理時間序列數(shù)據(jù)時表現(xiàn)出優(yōu)越的性能,這是因為RNN的網(wǎng)格中存在循環(huán)單元結(jié)構(gòu),而且允許隱藏單元之間的內(nèi)部連接,使尋找非連續(xù)數(shù)據(jù)之間的時間關(guān)系成為可能[14]。但RNN存在梯度消失的問題,當(dāng)時間間隔值不斷增大時,RNN會失去學(xué)習(xí)過去信息的能力。為了彌補這一缺陷,專家提出LSTM神經(jīng)網(wǎng)絡(luò),LSTM在RNN的基礎(chǔ)上增加了三個門的邏輯控制單元:輸入門、遺忘門和輸出門。通過門單元的邏輯控制決定數(shù)據(jù)是否更新或是選擇丟棄,克服了RNN權(quán)重影響過大、容易產(chǎn)生梯度消失和爆炸的缺點,現(xiàn)已被廣泛用于時間序列數(shù)據(jù)預(yù)測當(dāng)中[15,16]。
GRU是一種基于LSTM的模型的變體,它保持了LSTM性能的同時優(yōu)化了LSTM的網(wǎng)絡(luò)結(jié)構(gòu)。在網(wǎng)絡(luò)結(jié)構(gòu)中,GRU網(wǎng)絡(luò)只有更新門和重置門結(jié)構(gòu),更新門用于控制將前一時刻的信息代入當(dāng)前時刻,重置門用于控制忽略前一時刻信息,相比于LSTM節(jié)省了工作內(nèi)存,訓(xùn)練速度得到提升[17]。GRU的結(jié)構(gòu)如圖1所示。
圖1 GRU的網(wǎng)絡(luò)結(jié)構(gòu)
rt=σ(Wr·[ht-1,xt])
(1)
zt=σ(Wz·[ht-1,xt])
(2)
(3)
ht=(1-zt)*ht-1+zt*t
(4)
(5)
式中rt為時間t的重置門的輸出,zt為時間t的更新門的輸出;ht和ht-1為在時間t和t-1的輸出;xt為t時刻的輸入,σ為sigmoid函數(shù),內(nèi)存單元的計算過程由式(1)~式(5)計算所得。
CS算法是楊新社教授在2009年提出的一種新興啟發(fā)算法。該算法采用萊維飛行搜索機制,具有調(diào)整參數(shù)少,易于實現(xiàn),隨機搜索路徑優(yōu)和尋優(yōu)能力強等優(yōu)點[18]。由于GRU的超參數(shù)對其訓(xùn)練速度、預(yù)測精度有一定的影響。因此,本文利用CS對GRU的超參數(shù)進(jìn)行尋優(yōu),尋優(yōu)的超參數(shù)包括迭代次數(shù)、學(xué)習(xí)率和兩個隱含層節(jié)點數(shù)。CS優(yōu)化超參數(shù)具體流程如下:
Step1 在Python的TensorFlow框架下建立CS-GRU模型。
Step2 設(shè)定鳥窩規(guī)模為Psize,最大迭代次數(shù)Miter,被宿主鳥發(fā)現(xiàn)的最大概率為Pa,選擇測試集均方誤差作為適應(yīng)度函數(shù),計算所有鳥窩適應(yīng)度值。其中,每個鳥窩位置包含迭代次數(shù)、學(xué)習(xí)率和兩個隱含層節(jié)點。
Step3 全局搜索。在進(jìn)行全局搜索時,保存上一代質(zhì)量最好的鳥窩方位,通過式(6)來調(diào)整鳥窩方位,計算鳥窩的適應(yīng)度,并將上一代劣質(zhì)的鳥窩方位替換
(6)
(7)
Step4 局部搜索。利用式(6)調(diào)整方位后,每個解產(chǎn)生一個隨機數(shù)R,表示布谷鳥鳥蛋被發(fā)覺的幾率,此時R與Pa=0.25比較,若R
(8)
Step5 輸出最優(yōu)解。判定算法是否達(dá)到最大迭代終止條件或設(shè)置的誤差,如果滿足該條件,輸出最優(yōu)解,否則返回Step3繼續(xù)迭代。
Step6 將優(yōu)化后的超參數(shù)輸入GRU進(jìn)行負(fù)荷預(yù)測。
負(fù)荷預(yù)測的精度受外界多種因素的影響,以河南省某地區(qū)90天歷史負(fù)荷數(shù)據(jù)、氣象數(shù)據(jù)為例進(jìn)行分析,每天的數(shù)據(jù)包括最高溫度、最低溫度、日平均溫度、相對濕度、星期類型和24個時刻點的負(fù)荷,一共29個數(shù)據(jù)特征。因各個外界因素特性和單位不同,為了預(yù)測更加精確,將這些因素進(jìn)行數(shù)據(jù)歸一化處理,具體操作如下:
1)負(fù)荷數(shù)據(jù)歸一化
(9)
式中xnorm為歸一化處理后的負(fù)荷數(shù)據(jù),xmin和xmax為數(shù)據(jù)的最小值和最大值。
2)日期分類和歸一化
采用不同的數(shù)字對應(yīng)不同日期類型,周一取0.7,周二~周五取0.8,周六和周日分別取0.4,0.3。
3)溫度歸一化
(10)
式中Tnorm為歸一化處理后的負(fù)荷數(shù)據(jù),Tmin和Tmax為數(shù)據(jù)的最小值和最大值。
采用評價指標(biāo)平均絕對百分誤差(mean absolute percentage error,MAPE)和均方根誤差(root mean square error,RMSE)計算如下
(11)
(12)
式中yi為真實值;yj為預(yù)測值;N為預(yù)測總數(shù)。
本文算例為河南省某地區(qū)2018年6月1日至8月29日共90天歷史負(fù)荷數(shù)據(jù),間隔時間為1 h,一共2 160個負(fù)荷數(shù)據(jù)點。以前一天的29個特征和預(yù)測當(dāng)天的5個外界因素特征作為輸入,預(yù)測當(dāng)天24 h負(fù)荷作為輸出,構(gòu)建34輸入24輸出的預(yù)測模型。將前89天作為訓(xùn)練集,最后一天為測試集。為了比較GRU的預(yù)測效果與超參數(shù)設(shè)定有關(guān),采用兩組超參數(shù)進(jìn)行實驗,兩組的批處理大小均設(shè)定為16。第一組設(shè)定GRU迭代次數(shù)為10,學(xué)習(xí)率為0.01,兩個隱含層節(jié)點數(shù)為100,預(yù)測值如圖2(a)所示。第二組設(shè)定GRU迭代次數(shù)為20,學(xué)習(xí)率為0.005,兩個隱含層節(jié)點數(shù)為50,預(yù)測值如圖2(b)所示。
圖2 GRU的預(yù)測值
由圖2可知,為了比較第一組和第二組預(yù)測性能,計算各組MAPE和RMSE。如表1所示,第二組相對于第一組MAPE下降了1.0 %,RMSE下降了6.93。第二組比第一組預(yù)測誤差低,并且誤差下降比較大,說明GRU超參數(shù)的選取對預(yù)測精度有比較大的影響。
表1 兩組預(yù)測誤差比較
因此,合適的超參數(shù)選取變得尤為重要,為了方便超參數(shù)的選取,利用CS對GRU的超參數(shù)進(jìn)行尋優(yōu)。設(shè)置鳥窩數(shù)量Psize=10,最大迭代次數(shù)Miter=10,待尋優(yōu)的迭代次數(shù)、學(xué)習(xí)率和兩個隱含層節(jié)點數(shù)邊界依次為[100,500],[0.001,0.01],[1,200]和[1,200]。以河南省某縣90天數(shù)據(jù)為例,邊訓(xùn)練邊尋優(yōu),直至CS算法達(dá)到最大迭代次數(shù),輸出最優(yōu)適應(yīng)度值。CS尋優(yōu)超參數(shù)過程如圖3所示。
圖3 CS尋優(yōu)超參數(shù)過程
CS尋優(yōu)迭代結(jié)束后,輸出迭代次數(shù)為253,學(xué)習(xí)率為0.002 948,第一隱含層節(jié)點數(shù)為13,第二隱含層節(jié)點數(shù)為89,將這些超參數(shù)輸入到GRU,得到的預(yù)測結(jié)果如圖4所示。
圖4 CS-GRU預(yù)測值
為了更好地展現(xiàn)CS-GRU模型的預(yù)測能力,將CS-GRU模型與各模型比較,如圖5所示。
圖5 CS-GRU預(yù)測值與各個模型比較
從表2可知,CS-GRU模型的MAPE和RMSE比第一組的GRU分別下降了1.4 %和8.69,比第二組的GRU分別下降了0.4 %和1.76。說明經(jīng)過CS尋優(yōu)后的GRU預(yù)測精度有所提高。對比BP,ARIMA和LSTM預(yù)測模型,CS-GRU預(yù)測效果最好。
表2 各模型預(yù)測誤差對比
為了方便超參數(shù)的選取,本文提出一種CS算法和GRU神經(jīng)網(wǎng)絡(luò)相結(jié)合的預(yù)測方法。通過CS算法尋優(yōu)GRU的迭代次數(shù)、學(xué)習(xí)率和兩個隱含層節(jié)點數(shù),提高了GRU的預(yù)測精度。通過河南某地區(qū)算例,將CS-GRU模型與BP、ARIMA、GRU、LSTM模型進(jìn)行對比。結(jié)果表明,CS-GRU的預(yù)測效果最好。