張雨金,周杭霞
(中國計量大學(xué) 信息工程學(xué)院,浙江 杭州 310018)
光伏發(fā)電是可再生能源中最普及且具有很大發(fā)展?jié)摿Φ哪茉?目前已成為電力能源的重要組成部分.光伏發(fā)電受陽光輻照度、環(huán)境溫濕度等因素影響,具有隨機(jī)性、波動性和間歇性的特點,當(dāng)大規(guī)模光伏系統(tǒng)并網(wǎng)后會對電網(wǎng)的穩(wěn)定性和安全性造成嚴(yán)重影響.為了減少光伏電站對電網(wǎng)的沖擊,就需要對電網(wǎng)進(jìn)行合理調(diào)度.短期光伏發(fā)電預(yù)測可用于光伏出力平滑控制和電網(wǎng)的調(diào)度[1-2],有利于維護(hù)電網(wǎng)安全穩(wěn)定和光伏電站經(jīng)濟(jì)運(yùn)營.
目前國內(nèi)外學(xué)界對光伏發(fā)電預(yù)測已有了一定的研究.氣象預(yù)測法以天氣預(yù)報系統(tǒng)預(yù)測的氣象參數(shù)來預(yù)測光伏發(fā)電量[3-5].相似日法通過太陽輻照度、時間、溫度、相對濕度等參數(shù),從歷史數(shù)據(jù)中選取與當(dāng)前氣象參數(shù)相似的數(shù)據(jù),以相似日數(shù)據(jù)訓(xùn)練預(yù)測模型[6-8].機(jī)器學(xué)習(xí)法為精準(zhǔn)分析光伏發(fā)電影響因素和提高光伏發(fā)電預(yù)測精度提供了有效途徑,該方法使用BP神經(jīng)網(wǎng)絡(luò)算法[9]和支持向量機(jī)(SVM)[10]居多,已有多種組合改進(jìn)模型被提出[11,12],機(jī)器學(xué)習(xí)法晴天預(yù)測誤差在8%左右[13],多云誤差約為26.20%,陰雨天誤差約為43.05%[14].
上述研究中,氣象預(yù)測法受到天氣預(yù)報系統(tǒng)精度的限制,預(yù)測的氣象參數(shù)誤差較大時,會嚴(yán)重影響預(yù)測精度.相似日法將晴轉(zhuǎn)多云、多云轉(zhuǎn)雨等復(fù)雜天氣類型歸類到晴天、雨天、多云等少數(shù)幾個簡單天氣類型中,在晴轉(zhuǎn)多云、多云轉(zhuǎn)雨等復(fù)雜氣象條件下進(jìn)行預(yù)測時誤差較大.機(jī)器學(xué)習(xí)法使用BP神經(jīng)網(wǎng)絡(luò)面臨著易于陷入局部最優(yōu)和迭代收斂慢的問題,BP、SVM及其組合改進(jìn)模型,本質(zhì)上是基于單一學(xué)習(xí)器的預(yù)測模型,其預(yù)測精度提升有限,存在較大改進(jìn)空間.
針對上述問題,本文引入集成學(xué)習(xí)的思想和方法,采用Stacking算法改進(jìn)單一的SVM預(yù)測模型:首先使用多個初級SVM對預(yù)測樣本進(jìn)行一次預(yù)測;然后使用Kmeans算法對訓(xùn)練集聚類,選擇與預(yù)測樣本同類別的訓(xùn)練樣本訓(xùn)練次級SVM;最后使用次級SVM對初級SVM預(yù)測輸出進(jìn)行結(jié)合得到最終預(yù)測結(jié)果.本文基于實測數(shù)據(jù)進(jìn)行算例分析,驗證了經(jīng)Stacking算法改進(jìn)后的SVM預(yù)測模型在穩(wěn)定氣象條件與突變氣象條件下的預(yù)測精度有了明顯提升.
Stacking算法是集成學(xué)習(xí)中一種智能化的基學(xué)習(xí)器結(jié)合算法,該算法使用一個學(xué)習(xí)器來結(jié)合基學(xué)習(xí)器預(yù)測輸出得到最終預(yù)測值.Stacking算法中將基學(xué)習(xí)器稱為初級學(xué)習(xí)器,用來結(jié)合基學(xué)習(xí)器預(yù)測結(jié)果的學(xué)習(xí)器稱為次級學(xué)習(xí)器.Stacking算法使用訓(xùn)練好的初級學(xué)習(xí)器將原始訓(xùn)練集轉(zhuǎn)化為次級訓(xùn)練集,用來訓(xùn)練次級學(xué)習(xí)器;在次級訓(xùn)練集中,初級學(xué)習(xí)器的輸出值作為樣本特征,原始樣本的目標(biāo)值仍作為訓(xùn)練目標(biāo)值,其算法描述如下:
輸入:原始訓(xùn)練集
dataset={(x1,y1),(x2,y2),...,(xn,yn)}
次級訓(xùn)練集dataset*=φ
已訓(xùn)練好的初級學(xué)習(xí)器h1,h2,...,hT
次級學(xué)習(xí)器算法A
次級學(xué)習(xí)器h*
過程:fori=1,2,...,ndo
fort=1,2,...,Tdo
fit=ht(xi);
end for
dataset*=dataset*∪((fi1,fi2,...,fiT),yi);
end for
訓(xùn)練次級學(xué)習(xí)器h*=A(dataset*);
輸出:集成模型H(x)=h*(h1(x),h2(x),...,hT(x))
其中x為樣本特征,y為樣本訓(xùn)練目標(biāo);fit為初級學(xué)習(xí)器輸出值.
SVM算法在1995年由Vapnik等人提出,該算法以統(tǒng)計學(xué)習(xí)理論為基礎(chǔ),結(jié)合結(jié)構(gòu)風(fēng)險最小化理論,可以解決小樣本、非線性、高維數(shù)等問題.該算法性能較高,穩(wěn)定性較好,本文使用SVM作為Stacking算法的初級學(xué)習(xí)器和次級學(xué)習(xí)器.支持向量機(jī)回歸算法推導(dǎo)過程為:給定樣本集dataset={(x1,y1),(x2,y2),…,(xn,yn)},其中xi∈Rd是輸入值,yi∈R是目標(biāo)值,i=1,2,…,n,通過線性回歸函數(shù):
f(x)=wTx+b.
(1)
來擬合樣本(xi,yi),采用ε不敏感損失函數(shù):
(2)
(3)
(4)
將式(4)對w求偏導(dǎo),使偏導(dǎo)為0可得到
(5)
將式(5)代入式(1)得到回歸模型
(6)
Kmeans算法是常用的一種聚類算法,該算法采用距離來衡量樣本之間的相似性,能將樣本集劃分成K個簇,簇Ci的均值向量
(7)
為該簇的質(zhì)心.Kmeans算法的目的就是尋找K個質(zhì)心來最小化平方誤差
(8)
平方誤差E越小則表明簇內(nèi)樣本的相似度越高.Kmeans算法的主要過程如下:
輸入:樣本集dataset={X1,X2,…,Xn},K值
過程:隨機(jī)初始化質(zhì)心{μ1,μ2,…,μK}
repeat
fori=1,2,...ndo
forj=1,2,...kdo
計算樣本Xi與質(zhì)心μj之間的距離
distance=‖Xi-μj‖2;
end for
將樣本Xi與它最近的質(zhì)心μ歸為一類;
end for
forj=1,2,...kdo
end for
until達(dá)到最大迭代次數(shù)或質(zhì)心更新幅度小于閾值
輸出:簇集clusterset={C1,C2,...,CK}.
選取晴天、雨天、多云三種天氣的光伏發(fā)電功率曲線如圖1,光伏發(fā)電受天氣、環(huán)境等因素影響具有隨機(jī)性波動性,尤其在多云、陰雨的氣象條件下,一天的光伏發(fā)電功率曲線劇烈波動,產(chǎn)生多個峰值.從圖1中截取短時間內(nèi)光伏發(fā)電功率曲線如圖2所示,在短時間內(nèi)天氣、環(huán)境等因素雖有變化,卻不容易引起發(fā)電功率的劇烈波動,相鄰幾個時刻的光伏發(fā)電數(shù)據(jù)具有一定的相關(guān)性,可用來預(yù)測未來一段時間的光伏發(fā)電功率.
圖1 全天光伏發(fā)電功率Figure 1 Full day PV power curve
圖2 短時光伏發(fā)電功率Figure 2 Short time PV power curve
目前光伏發(fā)電監(jiān)控系統(tǒng)主要監(jiān)測光伏組件輸出的直流電流電壓Idc、Vdc,組件溫度T,逆變器輸出的交流電流電壓Iac、Vac,當(dāng)前時刻發(fā)電功率P,當(dāng)日累計發(fā)電量E.這些參數(shù)全面的表示了光伏發(fā)電系統(tǒng)工作狀態(tài),t時刻光伏系統(tǒng)工作狀態(tài)可表示為
S(t)={Idc(t),Vdc(t),T(t),Iac(t),
Vac(t),P(t),E(t)}.
(9)
由上分析得到短時間內(nèi)光伏發(fā)電數(shù)據(jù)具有一定的相關(guān)性,本文將歷史數(shù)據(jù)中連續(xù)兩個時刻的光伏系統(tǒng)工作狀態(tài)S(t)、S(t-1)和時刻t作為樣本特征,將下一時刻發(fā)電功率P(t+1)作為訓(xùn)練目標(biāo),t時刻的訓(xùn)練樣本可表示為
sample(t)={[t,S(t),S(t-1)],P(t+1)}.
(10)
預(yù)測時以當(dāng)前時刻t、S(t)、S(t-1)為輸入來預(yù)測下一時刻的發(fā)電功率,預(yù)測模型可表示為
P(t+1)=model(t,S(t),S(t-1)).
(11)
本文將SVM作為Stacking算法的初級學(xué)習(xí)器和次級學(xué)習(xí)器.Stacking-SVM預(yù)測模型訓(xùn)練過程如圖3所示.從原始訓(xùn)練集中隨機(jī)采樣,從采樣得到的訓(xùn)練樣本中隨機(jī)選取特征得到初級訓(xùn)練集,然后訓(xùn)練初級SVM,上述過程循環(huán)n次得到n個不同的初級SVM.使用Kmeans算法對預(yù)測樣本和原始訓(xùn)練集進(jìn)行聚類分析,選取與預(yù)測樣本同類的訓(xùn)練樣本,將其輸入已訓(xùn)練的n個初級SVM轉(zhuǎn)化為次級訓(xùn)練集后進(jìn)行次級SVM的訓(xùn)練.
圖3 訓(xùn)練過程Figure 3 Training process
Stacking-SVM預(yù)測過程如圖4所示.將預(yù)測樣本輸入n個初級SVM,使用次級SVM對初級SVM的預(yù)測輸出進(jìn)行結(jié)合,得出最終預(yù)測結(jié)果.
圖4 預(yù)測過程Figure 4 Forecasting process
訓(xùn)練樣本包含時刻、直流電流電壓、交流電流電壓、溫度、發(fā)電量和發(fā)電功率八種參數(shù),這些參數(shù)單位不同,數(shù)量級也相差甚遠(yuǎn),因此需要進(jìn)行歸一化處理,本文采用以下歸一化方法
(12)
本文采用平均絕對百分比誤差MAPE和均方根誤差RMSE來評價模型的預(yù)測能力.
(13)
(14)
其中:xmodel為模型預(yù)測值,xactual為實測值.
本文數(shù)據(jù)為浙江紹興地區(qū)某20 kW光伏電站監(jiān)控數(shù)據(jù),該電站監(jiān)控系統(tǒng)每隔8分鐘記錄光伏發(fā)電系統(tǒng)的工作狀態(tài).選用2015年4—6月和2016年4—6月的數(shù)據(jù)來訓(xùn)練預(yù)測模型,考察該模型在2017年5月的晴天、雨天、多云3種氣象條件下的表現(xiàn).
晴天云量較少,光照、溫度等氣象條件相對穩(wěn)定,因此光伏發(fā)電功率波動較小.圖5給出了本文基于Stacking-SVM模型和SVM模型在晴天的預(yù)測結(jié)果對比,本文模型晴天發(fā)電功率預(yù)測曲線十分貼近實測值,與SVM相比,兩者沒有明顯差異.圖6給出了二者在晴天的預(yù)測誤差對比,本文模型在開始發(fā)電和結(jié)束發(fā)電的短時間內(nèi)預(yù)測誤差偏高,其他時段與SVM相近,綜合來看本文模型與SVM模型在晴天的預(yù)測性能差距不大.
圖5 晴天發(fā)電功率預(yù)測曲線Figure 5 Forecast curve in sun day
圖6 晴天預(yù)測誤差曲線Figure 6 Forecast error curve in sun day
雨天的光照、溫度等氣象條件頻繁劇烈變化,導(dǎo)致光伏發(fā)電功率劇烈波動產(chǎn)生多個尖峰.圖7給出了本文模型與SVM模型在雨天的預(yù)測結(jié)果對比,本文模型能有效的預(yù)測光伏發(fā)電功率的變化趨勢,部分時段預(yù)測結(jié)果優(yōu)于SVM.圖8給出了二者在雨天的預(yù)測誤差對比,SVM在上午和傍晚的預(yù)測誤差明顯高于本文模型.
圖7 雨天發(fā)電功率預(yù)測曲線Figure 7 Forecast curve in rainy day
圖8 雨天預(yù)測誤差曲線Figure 8 Forecast error curve in rainy day
多云條件下光照成為影響光伏發(fā)電的主要因素,受風(fēng)力的作用,云層的厚度及位置在不斷變動,導(dǎo)致光伏發(fā)電功率產(chǎn)生波動.圖9給出了本文模型與SVM模型在多云的預(yù)測結(jié)果對比,本文模型能夠很好的預(yù)測多云天氣的發(fā)電功率和變化趨勢,SVM在下午的預(yù)測曲線不夠貼近實測值.圖10給出了二者在多云的預(yù)測誤差對比,SVM在下午的預(yù)測誤差明顯大于本文模型.
圖9 多云發(fā)電功率預(yù)測曲線Figure 9 Forecast curve in cloudy day
圖10 多云預(yù)測誤差曲線Figure 10 Forecast error curve in cloudy day
表1給出了SVM、小波-SVM、Kmeans-SVM和本文模型在晴天、雨天、多云氣象條件下預(yù)測的平均絕對百分比誤差MAPE對比,表2給出了四個模型均方根誤差RMSE對比.
表1 四種模型MAPE值
表2 四種模型RMSE值
從表1對比可知:本文Stacking-SVM模型在多云情況下預(yù)測性能突出,其MAPE比SVM降低約9%,比小波-SVM和Kmeans-SVM降低約6%;Stacking-SVM模型在雨天的MAPE也有一定程度的降低;Stacking-SVM模型在晴天的MAPE與SVM和小波-SVM相差0.42%,晴天的預(yù)測精度較高,本文模型與其他模型的差距并不明顯.從表1四個模型的MAPE平均值對比和表2四個模型的RMSE平均值對比可看出,本文Stacking-SVM模型優(yōu)于其他三個模型.
綜合上述對比得出,本文Stacking-SVM模型在氣象環(huán)境小幅波動的多云條件下預(yù)測性能較為突出,在氣象環(huán)境劇烈波動的雨天有明顯優(yōu)勢,在氣象環(huán)境穩(wěn)定的晴天與其他預(yù)測模型差距不大.
進(jìn)行光伏發(fā)電預(yù)測對維護(hù)電網(wǎng)安全穩(wěn)定,協(xié)調(diào)可再生能源與化石能源的使用有著重要的意義.本文借鑒集成學(xué)習(xí)的思想和方法,使用Stacking算法對單一SVM模型進(jìn)行改進(jìn).使用Kmeans算法對訓(xùn)練樣本聚類,減少其他類別樣本訓(xùn)練次級學(xué)習(xí)器對預(yù)測精度的影響.通過實際數(shù)據(jù)驗證,分別在平穩(wěn)和突變氣象條件下分析光伏發(fā)電功率預(yù)測情況,結(jié)果表明本文提出的預(yù)測方法明顯優(yōu)于傳統(tǒng)的預(yù)測方法,具有一定的工程應(yīng)用潛力.