劉玢岑,季陳林,彭鈺祥,蔣萬梟
(1. 四川大學電力工程學院,四川 成都 610041;2. 國網(wǎng)江蘇無錫供電公司,江蘇 無錫 214000;3. 國網(wǎng)浙江嘉興供電公司,浙江 嘉興 314033;4. 中船重工集團公司第705研究所昆明分部,云南 昆明 650118)
光伏發(fā)電是一種可再生、清潔、靈活的分布式能源,可在滿足全球?qū)η鍧嵞茉慈找嬖鲩L的需求方面發(fā)揮重要作用[1]。光伏發(fā)電在過去幾十年中受到越來越多的關(guān)注;光伏發(fā)電的集成帶來了顯著的經(jīng)濟和環(huán)境效益。然而,由于光伏發(fā)電的不確定性和間歇性特征,其高滲透率也給現(xiàn)有電網(wǎng)系統(tǒng)的運行帶來了許多新的挑戰(zhàn)[2]。這些挑戰(zhàn)包括光伏電源對氣象條件的敏感性、高安裝成本和間歇性發(fā)電。光伏功率預(yù)測是克服這些挑戰(zhàn)的有效解決方案。
光伏發(fā)電量的準確預(yù)測被認為是大規(guī)模光伏滲透到主電網(wǎng)的先決條件。然而,光伏發(fā)電時間序列通常表現(xiàn)出非線性和不穩(wěn)定的特征。光伏發(fā)電依賴于不可預(yù)測的氣象條件,這使得準確的光伏發(fā)電預(yù)測變得困難。
目前,有研究工作集中在光伏功率輸出預(yù)測。已經(jīng)提出了許多預(yù)測方法。根據(jù)預(yù)測范圍,這些方法可分為三種類型:長期、中期和短期光伏功率預(yù)測[3]。長期預(yù)測著眼于一個月到一年。中期預(yù)測考慮一周到一個月的范圍,短期預(yù)測是指一周或更短的時間范圍。長期光伏功率預(yù)測有助于光伏發(fā)電、輸電和配電的長期規(guī)劃和決策,并確保電力系統(tǒng)的可靠運行。中期光伏功率預(yù)測為電力系統(tǒng)中期調(diào)度提供決策支持。短期光伏功率預(yù)測可以支持電力系統(tǒng)運行,從而提高電力系統(tǒng)的可靠性[4]。
光伏功率預(yù)測模型可進一步分為物理方法、持續(xù)方法和統(tǒng)計方法[5]。物理方法利用數(shù)學方程來描述氣象條件的物理狀態(tài)和動態(tài)運動。當天氣條件穩(wěn)定時,基于物理方法的預(yù)測模型表現(xiàn)最佳。持續(xù)性方法通常假設(shè)現(xiàn)在和未來的價值之間有很強的相關(guān)性。假設(shè)條件從時間t到時間+tδ保持不變,則計算時間序列的未來值?;诔掷m(xù)性方法的模型的預(yù)測精度主要取決于歷史平均值。相比之下,基于統(tǒng)計方法的模型旨在測量歷史光伏功率輸出和天氣參數(shù)之間的關(guān)系。統(tǒng)計方法通?;陬A(yù)測模型和歷史變量的學習過程。統(tǒng)計方法的性能對時間范圍和輸入數(shù)據(jù)的質(zhì)量高度敏感。光伏功率預(yù)測中常用的統(tǒng)計方法包括自回歸集成移動平均(ARIMA)模型[6],自回歸和移動平均(ARMA)模型[7],回歸方法[8],極限學習機[9],和支持向量機(SVM)[10]。統(tǒng)計模型通??梢援a(chǎn)生更準確的短期光伏功率預(yù)測結(jié)果,因為考慮了歷史光伏發(fā)電值,并且模型參數(shù)不斷優(yōu)化。然而,仍然存在一些明顯的缺點。例如,ARMA模型中使用的時間序列數(shù)據(jù)必須是平穩(wěn)的[11];當開發(fā)基于回歸的預(yù)測模型時,由于需要解釋變量,所以很難開發(fā)數(shù)學模型。
隨著人工智能方法的快速發(fā)展,基于深度學習的模型已經(jīng)在許多領(lǐng)域得到了發(fā)展和應(yīng)用[12]。它是機器學習方法的一個新分支。一些基于深度學習的模型,如卷積神經(jīng)網(wǎng)絡(luò)[13]和遞歸神經(jīng)網(wǎng)絡(luò)[14]已經(jīng)在光伏發(fā)電預(yù)測中產(chǎn)生了有希望的結(jié)果。與傳統(tǒng)的物理、持續(xù)和統(tǒng)計方法相比,深度學習模型能夠從光伏功率序列中挖掘深層特征,并獲得更準確的預(yù)測結(jié)果。
當前雖已經(jīng)有上述諸多預(yù)測方法對光伏發(fā)電量數(shù)據(jù)序列實施建模,但其針對變化多端、包含多個變量的具備動態(tài)演化行為的非線性時間序列,不能很好的表現(xiàn)非線性,序列中的很多數(shù)據(jù)沒有辦法被充分展示,而這也會直接影響最終的預(yù)測結(jié)果,極有可能出現(xiàn)預(yù)報誤差超限問題。因此,論文利用蟻群算法優(yōu)化的GRU神經(jīng)網(wǎng)絡(luò)進行光伏發(fā)電量數(shù)據(jù)序列非線性特征預(yù)測,利用Kalman濾波進行線性部分的預(yù)測,利用誤差補償機制進行預(yù)測誤差的二次提取,構(gòu)建了基于GRU神經(jīng)網(wǎng)絡(luò)((Gated Recurrent Unit,GRU)、kalman濾波(Kalman Filtering,KF)和誤差補償機制Error Compensation,EC)的光伏發(fā)電量組合預(yù)測模型(ACO-KF-GRU-EC)。本文將ACO-KF-GRU-EC模型與GRU、ACO-GRU模型的預(yù)測結(jié)果進行了比較分析。仿真結(jié)果表明該方法具有較明顯的優(yōu)勢,不僅降低了建模預(yù)報的難度,同時也提高了預(yù)報精度和效率。
蟻群優(yōu)化(ACO)算法本質(zhì)為仿生優(yōu)化[15],另外也可以被當做概率性算法,于1990年被意大利研究學者馬可·多里戈提出,它比之其它的算法更具優(yōu)勢,當前已經(jīng)被多次用于優(yōu)化問題的求解中,比如說:路徑規(guī)劃、路由分配、神經(jīng)網(wǎng)絡(luò)參數(shù)優(yōu)化等,并且經(jīng)過實驗驗證具有很好的效果。ACO由于其具有其它諸多算法不具備的正反饋機制的優(yōu)點,因此具有比較獨特的優(yōu)勢。
GRU屬于LSTM神經(jīng)網(wǎng)絡(luò)的變種,由Chung等首次提出的[16]。它較之LSTM[17],升級了門控制結(jié)構(gòu),同時把LSTM里的輸入門、遺忘門整合成了zt門(Update Gate),此外,還用rt門將LSTM的輸出門進行了替換。其中,zt主要作用是幫助模型進行新輸入信息的過往數(shù)據(jù)歸納,而rt主要影響前一步驟中狀態(tài)信息輸入模型的概率。因為神經(jīng)網(wǎng)絡(luò)中門的數(shù)量從3個變成了2個,具體參數(shù)被有效降低了,所以無形中節(jié)省了訓(xùn)練時間。
GRU神經(jīng)網(wǎng)絡(luò)的訓(xùn)練公式如下
(1)
(2)
zt=σsig(Wzst-1+UZxt+bz)
(3)
rt=σsig(Wrst-1+Urxt+br)
(4)
(5)
tanh(x)=2×sig(x)+1
(6)
從式(1)~(4)能夠獲知:如果rt恒等于1同時zt等于0的話,GRU將直接演變成簡潔的RNN模型[18]了。
GRU神經(jīng)網(wǎng)絡(luò)基于本身的特點,能夠較好的適用于時間序列數(shù)據(jù)預(yù)測,但是因為其本身對于權(quán)值、閾值等表現(xiàn)敏感,而易于出現(xiàn)預(yù)測結(jié)果誤差大、序列最大值對應(yīng)的預(yù)測結(jié)果準確性低的問題。本文利用蟻群算法(ACO)來進行GRU神經(jīng)網(wǎng)絡(luò)初始參數(shù)尋優(yōu),然后把所獲取的權(quán)值、閾值重新帶入到GRU神經(jīng)網(wǎng)絡(luò)。下面以光伏發(fā)電量數(shù)據(jù)預(yù)測為例,對利用ACO優(yōu)化GRU神經(jīng)網(wǎng)絡(luò)的具體流程進行說明。具體步驟如下:
1)初始化處理所獲得的光伏發(fā)電量信息,主要的操作為異常信息的修正、降噪處理以及相空間重構(gòu)等,使其更加適用于進行光伏發(fā)電量的預(yù)測;
2)對于GRU神經(jīng)網(wǎng)絡(luò)的一系列參數(shù)實施前期處理;
3)借助于改進之后的蟻群算法尋找GRU神經(jīng)網(wǎng)絡(luò)權(quán)值、閾值最優(yōu)值;
4)進行訓(xùn)練樣本數(shù)據(jù)的訓(xùn)練,輸出對應(yīng)的預(yù)測值及誤差值;
5)調(diào)整GRU神經(jīng)網(wǎng)絡(luò)里的權(quán)值、閾值;
6)看預(yù)測結(jié)果是否滿足結(jié)束條件,若不滿足跳回到第4)步,不然繼續(xù)執(zhí)行步驟7);
7)保存當前GRU神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值;
8)進行測試數(shù)據(jù)樣本的預(yù)測。
卡爾曼濾波(Kalman Filtering,KF)[19]的本質(zhì)是一種遞推濾波方法,它的主要特點在于具有很強的抗隨機干擾性以及準確檢測性等。使用這一方法可以通過前期狀態(tài)的預(yù)測數(shù)值與當下狀態(tài)的觀測數(shù)值來預(yù)測出當下序列狀態(tài)。
1)狀態(tài)空間描述
狀態(tài)空間由序列里和以往狀態(tài)有關(guān)系的同時處于核心位置的部分數(shù)據(jù)組成,通過這一部分數(shù)據(jù)可以展現(xiàn)序列本身的連續(xù)性。如果某個時間序列既具有線性相關(guān)同時又是離散的,那么其就可以會使用觀測方程表示出來。
2)卡爾曼濾波線性連續(xù)模型
在這一模型中,可以通過某個時間段序列的觀測數(shù)值利用微分方程來求解序列狀態(tài)的連續(xù)值。具體的狀態(tài)函數(shù)如式7所示,觀測方程如式(8)所示
(t)=A(t)X(t)+F(t)W(t)
(7)
其中,X(t)為n維狀態(tài)向量;W(t)表示p維零均值白噪聲向量;A(t)為n×n維序列矩陣;F(t)為n×p維干擾輸入矩陣。
Z(t)=H(t)X(t)+V(t)
(8)
其中,Z(t)為m維狀態(tài)向量;V(t)表示m維零均值白噪聲向量;H(t)為m×n維觀測矩陣。
在以上兩個公式里,W(t)及V(t)兩者并沒有關(guān)聯(lián)性,具體的協(xié)方差陣如下:
(9)
式中,δ(t-τ)代表的是狄拉克δ函數(shù);Q(t)代表的是一個非負定對稱陣;R(t)代表的是一個正定矩陣;E代表的是數(shù)學期望。
3)卡爾曼濾波線性離散模型
借助于此模型,利用序列里前期狀態(tài)的預(yù)測數(shù)及當下狀態(tài)的觀測數(shù),可以計算出目前序列的狀態(tài)。其離散方程如式(10)所示
Xk=φ(k|k-1)Xk-1+Γ(k|k-1)Wk-1
Zk=HkXk+Vk
(10)
其中,Xk為n維狀態(tài)向量;Zk為m維觀測值;Wk為p維序列過程噪聲值;Vk為m維觀測噪聲值;φ(k|k-1)為n×m維狀態(tài)轉(zhuǎn)移矩陣;Γ(k|k-1)為n×p維噪聲輸入矩陣;Hk為m×n維觀測矩陣。
上面的公式中,Wk及Vk的統(tǒng)計特征公式如下
(11)
序列狀態(tài)預(yù)測值的計算公式如下
(k|k-1)=φ(k|k-1)(k-1)
(12)
通過卡爾曼增益來修正序列狀態(tài)預(yù)測數(shù)值,具體的公式如下,而卡爾曼增益的公式見式(14)。
k=(k|k-1)+Kk[Zk-Hk(k|k-1)]
(13)
(14)
式子里,k-1時刻與k時刻預(yù)測誤差的協(xié)方差的計算公式見式(15)和(16)。
從以上式子來看,僅需確定初始值0及P0,再獲得對應(yīng)時間點的觀測值Zk,由此得到此刻的狀態(tài)預(yù)測值k(k=1,2,…)。
(15)
(16)
對于光伏發(fā)電量數(shù)據(jù)來說既包含非線性相關(guān)部分,也包含線性相關(guān)部分,但如果只是針對非線性部分進行預(yù)測的結(jié)果難免存在誤差。而為了進一步提高預(yù)測精度,將整個光伏發(fā)電量數(shù)據(jù)分解為線性相關(guān)部分和非線性部分,并分別進行預(yù)測。具體分解步驟如下:
1)將序列yt劃分成線性Lt及非線性Nt,具體的公式如下
yt=Lt+Nt+εt
(17)
其中εt代表的是序列的隨機誤差。
2)利用GRU神經(jīng)網(wǎng)絡(luò)預(yù)測模型預(yù)測Lt,獲取預(yù)測數(shù)值t,然后利用yt及t測算出殘差et,計算公式如下
yt=yt-t
(18)
{et}=f(e1,e2,…,et-n)+εet
(19)
其中εet表示隨機誤差。
(20)
通過上面的步驟實現(xiàn)了序列中線性及非線性部分的劃分。
從相關(guān)研究資料以及仿真結(jié)果來看,進行光伏發(fā)電量預(yù)測的時候會存在一定程度的誤差,但這些誤差是有規(guī)律可循的,這就表示誤差數(shù)據(jù)里包含了一定的信息[20]。為了更好的進行研究,論文特別采用了誤差補償方法(Error Compensation,EC),來實現(xiàn)對預(yù)測誤差的再次提取。該方法的本質(zhì)在于對模型的預(yù)測誤差進行抽取,然后對其重新進行訓(xùn)練和預(yù)測,得到新的預(yù)測值,把其與原始的預(yù)測值相加后就可以得到最后的結(jié)果。對光伏發(fā)電量數(shù)據(jù)進行預(yù)測誤差二次提取的具體操作步驟如下:
1)對原始光伏發(fā)電量數(shù)據(jù)進行預(yù)處理,將數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)集及測試數(shù)據(jù)集;
2)初始化模型參數(shù);
3)對訓(xùn)練數(shù)據(jù)集中的數(shù)據(jù)進行訓(xùn)練,獲得對應(yīng)的輸出值,將其與原始數(shù)據(jù)進行對比得到誤差;
4)對模型的權(quán)值和閾值參數(shù)進行修整;
5)看預(yù)測結(jié)果是否滿足結(jié)束條件,若不滿足跳回到第3)步,不然繼續(xù)執(zhí)行步驟6);
6)模型訓(xùn)練終止,保存權(quán)值和閾值;
7)輸入測試樣本數(shù)據(jù),獲得預(yù)測序列X;
8)將所有數(shù)據(jù)輸入進行預(yù)測,獲取預(yù)測序列Y;
9)將序列Y與實際數(shù)據(jù)進行比較,獲得誤差序列E;
10)對E進行歸一化處理,同時將其劃分為兩個部分:訓(xùn)練部分和預(yù)測部分;
11)初始化模型參數(shù),對步驟10)中得到的訓(xùn)練部分數(shù)據(jù)進行訓(xùn)練;
12)循環(huán)執(zhí)行步驟4)到步驟7);
13)將E的預(yù)測樣本輸入模型,獲取全新的誤差預(yù)測序列E1;
14)將序列X和E1疊加得到預(yù)測結(jié)果序列Z。
以上就是針對于預(yù)測誤差所進行的二次提取的過程,這可以很好的提升預(yù)測結(jié)果的精準度。
上述內(nèi)容為利用蟻群算法(ACO)進行GRU神經(jīng)網(wǎng)絡(luò)進行權(quán)值、閾值尋優(yōu)的步驟,在此基礎(chǔ)上,融合前文提及的誤差二次提取機制、卡爾曼濾波模型,從而構(gòu)建了光伏發(fā)電量預(yù)測模型——ACO-KF-GRU-EC。圖1為模型的流程圖,模型的具體步驟如下。
圖1 ACO-KF-GRU-EC模型的預(yù)測流程
1)對光伏發(fā)電量數(shù)據(jù)預(yù)處理;
2)把1)中得到的光伏發(fā)電量數(shù)據(jù)分解為線性、非線性兩部分;
3)其中非線性部分利用基于ACO優(yōu)化的GRU神經(jīng)網(wǎng)絡(luò)模型進行預(yù)測,X和E1分別為對應(yīng)的預(yù)測結(jié)果序列及誤差序列;
4)對E1進行二次提取,將提取結(jié)果E11與X進行疊加,得到X1;
5)利用Kalman濾波模型預(yù)測進行線性部分序列的預(yù)測,得到序列Y及誤差E2;
6)對E2進行二次提取,得到序列E22,然后疊加預(yù)測序列Y,獲取預(yù)測序列Y2;
7)繼續(xù)疊加XI、Y2,獲取光伏發(fā)電量數(shù)據(jù)的最后預(yù)測序列Z。
本文使用的光伏發(fā)電量數(shù)據(jù)來自澳大利亞布里斯班昆士蘭大學(UQ)安裝的1.22MW光伏系統(tǒng)。這是澳大利亞最大的平板屋頂光伏系統(tǒng),共有4座建筑的5000多塊太陽能電池板。從2015年1月7日至2015年1月10日,以15分鐘的間隔收集并匯總了所有四座建筑物的太陽能輸出數(shù)據(jù),每天獲得的數(shù)據(jù)總數(shù)為96個。為測試所使用的模型算法是否合理,擇取了前3天的288個數(shù)據(jù)來實施具體的訓(xùn)練,同時擇取第4天的96個數(shù)據(jù)來實施驗證。
具體情況見圖2,光伏發(fā)電量信息一般呈現(xiàn)變化多變的狀態(tài),只有在不間斷的時間序列上才能呈現(xiàn)些許的規(guī)律。
圖2 光伏發(fā)電量數(shù)據(jù)變化曲線
在實驗之前,需要對數(shù)據(jù)進行歸一化處理,目的是為了將原始數(shù)據(jù)轉(zhuǎn)換為一種更方便模型處理數(shù)據(jù)的方法,其主要是將數(shù)據(jù)轉(zhuǎn)換成0-1之間對應(yīng)的數(shù)字。這種方法不單單能夠在一定程度上將算法模型的運行時間大大縮減,還能夠使模型實現(xiàn)快速的收斂。計算公式如下所示
(21)
式(21)中的y代表歸一化處理后的值;x代表正常值。
對算法模型的性能進行評估的過程中,需要篩選了幾個具體的性能指標來反應(yīng)最終結(jié)果的正確與否。具體的評價指標包括:平均絕對百分比誤差、平均絕對誤差、均方根誤差、均等系數(shù)、算法運行時間。其中,平均絕對百分比誤差主要反映預(yù)測效果的好壞;均方根誤差反映了預(yù)測誤差值的大??;均等系數(shù)代表的是評估擬合度,相當于準確性;RT數(shù)值反映了預(yù)測所用的時間。全部性能評價指標相關(guān)的公式如下。
平均絕對百分比誤差(MAPE):
(22)
均方根誤差(RMSE)
(23)
均等系數(shù)(EC):
(24)
公式里,Yp(t)代表t時刻評估模型的預(yù)測輸出值;Yr(t)代表t時刻的實際值,N則是預(yù)測樣本的數(shù)目。
從以上分析可以看出,MAPE與最終的評估效果成反比,前者越小則效果越好;而EC則與其成正比,數(shù)越大則其與現(xiàn)實數(shù)據(jù)的差距越小。
為充分驗證ACO-KF-GRU-EC模型的預(yù)測效果,本文還引入了GRU、ACO-GRU模型進行對比仿真。為增加預(yù)測效果的說服力,預(yù)測結(jié)果評價指標取四種模型30次實驗的平均值。圖3展示的是三種模型的預(yù)測結(jié)果,表1給出了四種模型預(yù)測性能評價指標的計算結(jié)果,圖4-圖7則展示的是三種模型的預(yù)測性能評價指標的對比結(jié)果。
圖3 三種模型預(yù)測誤差對比圖
表1 評價指標對比
從圖3-圖6及表1可以看出,比之其余三種方法,ACO-KF-GRU-EC模型的精準性更佳,在具有線性特性和非線性特性的光伏發(fā)電量數(shù)據(jù)上是非常適用的。從不斷上升的EC數(shù)值來看,每個模型對應(yīng)的擬合度也是不斷提升的。從圖7可知,隨著預(yù)測模型的不斷改進,使得對應(yīng)的預(yù)測復(fù)雜度不斷增加,ACO-GRU、ACO-KF-GRU-EC兩種模型比GRU神經(jīng)網(wǎng)絡(luò)模型所花費的實驗時間有了一定的延遲,但增加的時間均在2秒的范圍內(nèi)。
圖4 MAPE數(shù)值對比圖5 RMSE數(shù)值對比
圖6 EC數(shù)值對比圖7 RT數(shù)值對比
本文針對光伏發(fā)電量數(shù)據(jù)具有的線性特征和非線性特征,構(gòu)建了基于ACO-KF-GRU-EC的光伏發(fā)電量組合預(yù)測模型。該模型首先將光伏發(fā)電量數(shù)據(jù)分解為線性相關(guān)部分和非線性部分,利用蟻群算法優(yōu)化的GRU神經(jīng)網(wǎng)絡(luò)進行光伏發(fā)電量數(shù)據(jù)序列非線性部分的預(yù)測,使用Kalman濾波進行線性部分的預(yù)測;利用誤差補償機制來實現(xiàn)對于預(yù)測誤差的二次提取。在實驗中,將該模型與GRU、ACO-GRU模型分別對光伏發(fā)電量數(shù)據(jù)進行預(yù)測對比,結(jié)果表明:ACO-KF-GRU-EC模型不但有效改善了預(yù)測的精準性,同時還極大地縮小了預(yù)測點和真實數(shù)據(jù)之間的差距,而這也為精準度的提升奠定了基礎(chǔ)。而分析其主要原因是得益于對于復(fù)雜預(yù)測問題的有效分解,借助于諸多的、有序可循的分量預(yù)測來進行了簡化,另外又借助于對預(yù)測結(jié)果的整合提升了最終數(shù)據(jù)的精準性。
目前有關(guān)光伏發(fā)電量數(shù)據(jù)的預(yù)測,借助于GRU等的相關(guān)模型不多,而在未來的實驗里,一是要針對LSTM、GRU神經(jīng)網(wǎng)絡(luò)等深度學習模型在光伏發(fā)電量數(shù)據(jù)的預(yù)測實施中進行更進一步的分析,二是要關(guān)注GRU與PSO、GA等算法的結(jié)合,促進深度學習模型更高效能的發(fā)揮。