基于ACO-BP的省級(jí)月售電量預(yù)測(cè)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
電量因不能大量?jī)?chǔ)存,生產(chǎn)和消耗幾乎同時(shí)進(jìn)行的特殊性,其消耗量常被視為表征社會(huì)經(jīng)濟(jì)生產(chǎn)穩(wěn)定的指標(biāo)。同時(shí),為貫徹落實(shí)可持續(xù)發(fā)展戰(zhàn)略,順利開展售電規(guī)劃和發(fā)電計(jì)劃的合理設(shè)計(jì)等社會(huì)經(jīng)濟(jì)工作,提高售電量預(yù)測(cè)的準(zhǔn)確度成為電網(wǎng)企業(yè)長(zhǎng)期面臨的重要課題之一。
國(guó)內(nèi)外對(duì)售電量的預(yù)測(cè)常采用與負(fù)荷預(yù)測(cè)相似的方法,因?yàn)閮烧叩牟▌?dòng)特性相似。對(duì)于中長(zhǎng)期的售電量預(yù)測(cè),通常會(huì)建立灰色預(yù)測(cè)模型、ARIMA預(yù)測(cè)模型。灰色預(yù)測(cè)模型可以在數(shù)據(jù)量較小的情況下對(duì)呈指數(shù)增長(zhǎng)的序列進(jìn)行較好的預(yù)測(cè),ARIMA序列通過(guò)分析序列的非線性波動(dòng)建立合適的預(yù)測(cè)模型,但對(duì)波動(dòng)性較大、非線性較強(qiáng)的序列預(yù)測(cè)效果不佳。隨著機(jī)器學(xué)習(xí)的興起,越來(lái)越多的學(xué)者通過(guò)機(jī)器學(xué)習(xí)方法進(jìn)行建模預(yù)測(cè),BP網(wǎng)絡(luò)因其優(yōu)越的性能,廣泛應(yīng)用于預(yù)測(cè)領(lǐng)域。宋建等人將BP網(wǎng)絡(luò)用于GM(1,1)預(yù)測(cè)優(yōu)化上,通過(guò)對(duì)GM(1,1)的預(yù)測(cè)誤差進(jìn)行修正,充分發(fā)揮BP和GM(1,1)的優(yōu)勢(shì),提升預(yù)測(cè)精度。徐揚(yáng)等人用遺傳模擬退火算法對(duì)BP網(wǎng)絡(luò)的權(quán)重進(jìn)行修正,提升BP網(wǎng)絡(luò)的預(yù)測(cè)效果,改善網(wǎng)絡(luò)陷入局部最小值的問(wèn)題。陳先飛等人通過(guò)構(gòu)建多變量灰色遺傳的中長(zhǎng)期預(yù)測(cè)模型,顯著提升了預(yù)測(cè)準(zhǔn)確度。徐源等人基于數(shù)據(jù)的聚類法進(jìn)行預(yù)測(cè),避免了復(fù)雜的調(diào)參過(guò)程,提升了預(yù)測(cè)的效率。吳耀武等人采用Dempster合成法與yager組合規(guī)則,提出了基于改進(jìn)證據(jù)理論的預(yù)測(cè)模型。
為了改進(jìn)BP網(wǎng)絡(luò)初始權(quán)重和閾值難以確定導(dǎo)致的模型預(yù)測(cè)精度較低的問(wèn)題,可以采用蟻群算法(ACO)進(jìn)行尋優(yōu),但蟻群算法同樣可能由于信息素更新問(wèn)題陷入局部最優(yōu)或訓(xùn)練時(shí)間過(guò)長(zhǎng)。因此,本文將對(duì)ACO進(jìn)行信息素更新的改進(jìn),并利用改進(jìn)的ACO算法對(duì)BP網(wǎng)絡(luò)的權(quán)重和閾值進(jìn)行尋優(yōu),以提升BP網(wǎng)絡(luò)的預(yù)測(cè)精度和速度。
1預(yù)測(cè)模型
機(jī)器學(xué)習(xí)算法對(duì)訓(xùn)練樣本的依賴度高,數(shù)據(jù)樣本中所包含的信息量的多少將直接影響算法的訓(xùn)練效果。月售電量是非線性、非平穩(wěn)的時(shí)間序列,在對(duì)月度售電量進(jìn)行預(yù)測(cè)時(shí),春節(jié)效應(yīng)對(duì)神經(jīng)網(wǎng)絡(luò)訓(xùn)練效果的影響不可忽視。春節(jié)假期售電量較少,若預(yù)測(cè)春節(jié)假期在2月的某年各月的售電量,訓(xùn)練過(guò)程中采用的數(shù)據(jù)既有春節(jié)假期在1月的又有春節(jié)假期在2月的,月售電量預(yù)測(cè)結(jié)果將會(huì)偏大。
為了解決這一問(wèn)題,本文利用EMD(EmpiricalModeDecomposition)分解法將月度售電量的殘余分量分離出來(lái),并剔除春節(jié)假期與預(yù)測(cè)年春節(jié)假期不在同月的數(shù)據(jù),然后提取本征模態(tài)分量,對(duì)各個(gè)分量建立預(yù)測(cè)模型,將各個(gè)分量的預(yù)測(cè)結(jié)果相疊加得到月售電量。
1.1EMD分解
EMD分解,是一種能將時(shí)間序列x(t)分解為若干個(gè)本征模態(tài)函數(shù)(imfk)和一個(gè)殘余分量(rk)的函數(shù)。每個(gè)本征模態(tài)函數(shù)都將同時(shí)滿足以下兩個(gè)基本條件:
(1)整個(gè)時(shí)間范圍內(nèi)的函數(shù)極值點(diǎn)個(gè)數(shù)和過(guò)零點(diǎn)個(gè)數(shù)要求一致,最多不得大于一個(gè):
(2)任意時(shí)間點(diǎn)上的局部最大、最小的包絡(luò)線均值必須是零。
給定一個(gè)信號(hào)x(t),對(duì)其進(jìn)行EMD分解,具體步驟如下:
(1)找出x(t)所有的極值點(diǎn)。
(2)通常采用三次樣條函數(shù)擬合出所有極小值點(diǎn)形成下包絡(luò)emin(t)和所有極大值點(diǎn)形成上包絡(luò)emax(t)。
(3)計(jì)算兩條包絡(luò)線的均值m(t):
(4)對(duì)原信號(hào)進(jìn)行分離得到新的信息序列xk(t),若能夠滿足判斷條件,則稱xk(t)為該信號(hào)的本征模態(tài)分量imfk。
其中:
判斷條件為
其中e為篩選閾值,一般取402.40+。
(5)分離出模態(tài)分量后,將原始信號(hào)x(t)減去本征模態(tài)分量imfk后得到殘余分量,記為ri(t)。
(6)對(duì)殘余分量重復(fù)步驟(1)~(5),直到殘余分量為常數(shù)或者單調(diào)信號(hào)。
綜上可知,原始信號(hào)可以表示為:
通過(guò)對(duì)時(shí)間序列進(jìn)行EMD分解,能夠得到時(shí)間序列的特征變化量,降低原始序列的波動(dòng)性和復(fù)雜性。
1.2 ACO優(yōu)化BP算法
1.2.1 BP網(wǎng)絡(luò)
BP神經(jīng)網(wǎng)絡(luò)是多層感知器的一種,其加入了誤差逆向傳播環(huán)節(jié)的反饋機(jī)制,廣泛應(yīng)用于研究領(lǐng)域。BP神經(jīng)網(wǎng)絡(luò)的運(yùn)作核心是輸入量經(jīng)過(guò)隱藏層的正向傳播得到輸出量后,通過(guò)計(jì)算輸出量與期望輸出量之間的誤差,將該誤差反向傳播,并在反向傳播的過(guò)程中不斷修正連接權(quán)重和閾值,不斷減小網(wǎng)絡(luò)的誤差,直到誤差趨近于零。
BP算法有下列優(yōu)點(diǎn):(1)當(dāng)BP神經(jīng)網(wǎng)絡(luò)具有足夠多的隱藏層神經(jīng)元時(shí),可以擬合任意非線性函數(shù):(2)BP神經(jīng)網(wǎng)絡(luò)是一種全局?jǐn)M合算法,具有較強(qiáng)的泛化能力。
BP網(wǎng)絡(luò)基本結(jié)構(gòu)如圖1所示,由i維的輸入層x、中間的j個(gè)神經(jīng)單元的單隱藏層J和m維的輸出層Y構(gòu)成。
隱藏層的神經(jīng)元個(gè)數(shù)常使用如下經(jīng)驗(yàn)公式來(lái)確定,其中y為[l,l4]的常數(shù)。
隱藏神經(jīng)元的輸出為:
輸出層的輸出為:
其中f為激活函數(shù),常用的激活函數(shù)為sigmoid函數(shù)。
誤差函數(shù)可以表示如下,用于判斷網(wǎng)絡(luò)和修正網(wǎng)絡(luò)參數(shù)。
初始權(quán)重和閾值的選擇不當(dāng)將直接影響B(tài)P算法的效果,本文采用ACO算法先對(duì)初始權(quán)重和閾值進(jìn)行尋優(yōu)以改善陷入局部最優(yōu)、收斂速度慢的問(wèn)題。
1.2.2 ACO-BP網(wǎng)絡(luò)
ACO優(yōu)化BP網(wǎng)絡(luò)的基本思路是用螞蟻尋找出BP所有的權(quán)重和閾值解空間,因信息素的揮發(fā)性,最短的路徑上將留下最高的信息素濃度。一段時(shí)間后,選擇最短路徑的螞蟻逐漸增多,最終將集中在最短路徑上,該路徑所確定的解就是最優(yōu)權(quán)重和閾值。流程圖如圖2所示。
具體步驟如下:
(1)初始化。首先判斷待優(yōu)化權(quán)重和閾值的維度i、權(quán)重和閾值的取值區(qū)間,將每個(gè)區(qū)間N等分,在各個(gè)子區(qū)間內(nèi)確定一個(gè)候選值,該區(qū)間內(nèi)的所有候選值構(gòu)成一個(gè)集合c,共有i個(gè)。N的個(gè)數(shù)不是越多越好,過(guò)多將會(huì)延長(zhǎng)蟻群尋優(yōu)的過(guò)程,而且不能有效改善BP網(wǎng)絡(luò)局部最優(yōu)的問(wèn)題。設(shè)置螞蟻的個(gè)數(shù)、網(wǎng)絡(luò)的預(yù)期誤差e*、最大迭代次數(shù)tmax、信息素常數(shù)O。
(2)各個(gè)螞蟻初始在候選值上,按照一定的概率進(jìn)行移動(dòng),選擇下一個(gè)集合的某個(gè)候選值,直到所有的螞蟻在i個(gè)集合中均完成候選值的選擇。選擇集合c中元素j的概率可以表示為:
式中:Tj為元素j上的信息素含量。
(3)在所有螞蟻都在集合c中根據(jù)上述公式選擇到候選值后,即可得到該迭代次數(shù)下的權(quán)重和閾值組合,將其賦予BP網(wǎng)絡(luò)計(jì)算BP誤差,將誤差從大到小排列,記錄本次的最優(yōu)解。
(4)判斷最小誤差與期望誤差e*,若最小誤差小于期望誤差,則轉(zhuǎn)至步驟(6),否則更新信息素。
式中:p為信息素留存系數(shù),取值區(qū)間為[0,1]。
為避免ACO過(guò)早陷入局部最優(yōu),可對(duì)p進(jìn)行改進(jìn),將其根據(jù)迭代次數(shù)的增加自適應(yīng)改變:
AT為上期循環(huán)后信息素的變化量,本次迭代中每只選擇j元素的螞蟻均會(huì)對(duì)j的信息素進(jìn)行更新,它是由信息素常數(shù)O和上期迭代的網(wǎng)絡(luò)誤差ek決定的。為了使蟻群的收斂速度加快,在更短的時(shí)間內(nèi)通過(guò)信息素的更新,更快地判斷候選值的優(yōu)劣,引入信息素增強(qiáng)調(diào)節(jié)因子入對(duì)信息素進(jìn)行更新,具體公式表示如下:
(5)迭代次數(shù)加1,判斷是否達(dá)到最大迭代次數(shù)1max,若達(dá)到則轉(zhuǎn)至步驟(6),否則轉(zhuǎn)至步驟(2)。
(6)跳出ACO循環(huán),將尋找到的權(quán)重和閾值賦予BP網(wǎng)絡(luò),進(jìn)行BP網(wǎng)絡(luò)的迭代。
采用均方根誤差RMsE(RootMeansquareError)、平均絕對(duì)誤差MAE(MeanAbsoluteError)和決定系數(shù)R2對(duì)擬合結(jié)果進(jìn)行評(píng)價(jià),用相對(duì)誤差對(duì)預(yù)測(cè)結(jié)果進(jìn)行
對(duì)比。
式中:Yi為真實(shí)值:Yi'為預(yù)測(cè)值:為真實(shí)值的平均值。
RMSE和MAE的數(shù)值越小越好:R2的數(shù)值越大越好,取值范圍為[5,1]。
2實(shí)證分析
本文采用來(lái)自某省電網(wǎng)公司的歷年的月售電量數(shù)據(jù)進(jìn)行實(shí)例分析。首先,對(duì)月售電量的基本特性進(jìn)行分析。圖3(B)展示了2515、2510、251a年的月售電量,這三年的春節(jié)假期均在2月,且整體趨勢(shì)相差不大,2月的售電量最低:圖3(b)中2514年的春節(jié)假期位于1月,相較于其他兩年,售電低谷在1月。
利用已獲得的某省2515一2525年月售電量數(shù)據(jù),除去春節(jié)假期在1月的2512、2514、2517、2525年月售電量數(shù)據(jù),將剩下的月售電量數(shù)據(jù)進(jìn)行EMD分解,獲取到4個(gè)本征模態(tài)分量和1個(gè)表示整體趨勢(shì)的殘余分量,可以發(fā)現(xiàn)月售電量的整體趨勢(shì)是逐年增長(zhǎng)的。EMD分量如圖4所示,其中(a)~(d)為高頻分量,最能表現(xiàn)出月售電量的波動(dòng)趨勢(shì)。
利用這7年的EMD分解量分別用神經(jīng)網(wǎng)絡(luò)進(jìn)行81個(gè)周期的訓(xùn)練,然后對(duì)2021年的月售電量進(jìn)行預(yù)測(cè)。預(yù)測(cè)流程如圖5所示。
對(duì)于每個(gè)EMD分量,其輸入層的節(jié)點(diǎn)數(shù)為3,即每次預(yù)測(cè)需要讀取前3個(gè)時(shí)間點(diǎn)的數(shù)據(jù),最大訓(xùn)練次數(shù)為500,學(xué)習(xí)率為0.001,輸出層的節(jié)點(diǎn)數(shù)為1,對(duì)應(yīng)預(yù)測(cè)的EMD分量數(shù)值,可判斷出隱藏層的節(jié)點(diǎn)個(gè)數(shù)的取值范圍為[3,13]。對(duì)每個(gè)節(jié)點(diǎn)取值進(jìn)行10次BP神經(jīng)網(wǎng)絡(luò)試驗(yàn),用MsE衡量預(yù)測(cè)的優(yōu)劣,選擇對(duì)應(yīng)的MsE最低的隱藏層數(shù)。最終選擇各個(gè)分量在隱藏層的層數(shù)分別為6、13、15、3、4。
對(duì)于改進(jìn)的和未改進(jìn)的ACo-BP神經(jīng)網(wǎng)絡(luò),imf1待優(yōu)化的參數(shù)維度為31,取值的區(qū)間為[-2,2],將區(qū)間等分為100份,選擇螞蟻的個(gè)數(shù)為120,信息素的留存系數(shù)為0.8,信息素常數(shù)Q取20,最大迭代次數(shù)為1000,允許最大誤差e*為0.000l。BP網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)數(shù)為3,輸出層節(jié)點(diǎn)數(shù)為l,隱藏層節(jié)點(diǎn)數(shù)為6,學(xué)習(xí)率為0.00l,最大迭代次數(shù)為l000,允許最大誤差e*為0.0002。圖6展示了改進(jìn)的ACo-BP對(duì)202l年EMD分量的預(yù)測(cè)結(jié)果。
從圖6可以觀察得出,本征分量的預(yù)測(cè)準(zhǔn)確率相對(duì)較低。這是由于本征分量為高頻分量,其變化規(guī)律較為復(fù)雜,學(xué)習(xí)較為困難。相反,殘余分量是長(zhǎng)期變化的趨勢(shì)分量,曲線較為平緩,其預(yù)測(cè)值與真實(shí)值相差較小。將5個(gè)分量相疊加即可得到2021年月售電量的預(yù)測(cè)值,預(yù)測(cè)值與真實(shí)值對(duì)比如圖7所示。
同樣可以使用ACO-BP、BP網(wǎng)絡(luò)對(duì)EMD分量進(jìn)行學(xué)習(xí),將分量的預(yù)測(cè)結(jié)果疊加即可得到最終的預(yù)測(cè)結(jié)果。將BP、ACO-BP、改進(jìn)的ACO-BP的預(yù)測(cè)結(jié)果進(jìn)行對(duì)比,如圖8所示,3種預(yù)測(cè)模型均能很好地預(yù)測(cè)出月售電量的變化規(guī)律。
從表1的對(duì)比可以看出,改進(jìn)的ACO-BP預(yù)測(cè)精確度更高,決定系數(shù)R2最高為0.982186,均方根誤差RMSE和平均絕對(duì)誤差MAE最小。
表2對(duì)比了3種算法達(dá)到最大誤差時(shí)對(duì)應(yīng)的迭代次數(shù)。改進(jìn)的ACO-BP迭代次數(shù)最少,相較于ACO-BP和BP的迭代次數(shù)分別減少了32.3%和53.1%。
表3進(jìn)一步展示了3種預(yù)測(cè)模型的預(yù)測(cè)結(jié)果和相對(duì)誤差。通過(guò)對(duì)比可以發(fā)現(xiàn),改進(jìn)的ACO-BP最大相對(duì)誤差為7.91%,相較于ACO-BP和BP,最大相對(duì)誤差分別降低了4.92%和18.03%。
3結(jié)語(yǔ)
本文建立了基于ACO-BP的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,通過(guò)對(duì)月售電量時(shí)間序列的分析和分解預(yù)測(cè),消除由春節(jié)假期帶來(lái)的預(yù)測(cè)上的干擾。同時(shí),對(duì)傳統(tǒng)的ACO優(yōu)化模型進(jìn)行了信息素增減量和留存系數(shù)更新的改進(jìn),該方法可以更大程度上發(fā)揮ACO全局尋優(yōu)和BP的泛化能力。對(duì)某省的月售電量進(jìn)行預(yù)測(cè)試驗(yàn),結(jié)果表明,改進(jìn)的ACO-BP模型精度更高,能夠有效進(jìn)行月售電量的預(yù)測(cè)。