邱立國(guó)
(珠海泰坦新動(dòng)力電子有限公司,珠海519000)
日度負(fù)荷預(yù)測(cè)算法的研究和應(yīng)用
邱立國(guó)
(珠海泰坦新動(dòng)力電子有限公司,珠海519000)
日度負(fù)荷預(yù)測(cè)不僅和預(yù)測(cè)日前一天有關(guān),和上周同一天的用電量相關(guān)甚至和上月同一天的用電量也相關(guān),還和外部因素如時(shí)間因素、氣候因素和經(jīng)濟(jì)因素有關(guān)。傳統(tǒng)的預(yù)測(cè)主要依靠于相關(guān)人員的經(jīng)驗(yàn)來判斷,這樣的方法并不能很精準(zhǔn)地預(yù)測(cè)未來的用電量,同時(shí)帶有很強(qiáng)的主觀性。因此建立模型來預(yù)測(cè)是十分有必要的。這里采用傳統(tǒng)的時(shí)間序列模型和現(xiàn)代機(jī)器學(xué)習(xí)中的人工神經(jīng)網(wǎng)絡(luò)算法的組合預(yù)測(cè),得到更為精準(zhǔn)的結(jié)果。
ARIMA(季節(jié));模型BP神經(jīng)網(wǎng)絡(luò);組合優(yōu)化
電力負(fù)荷預(yù)測(cè)是電力市場(chǎng)的重要組成部分。當(dāng)今世界,電力負(fù)荷預(yù)測(cè)工作的水平已成為衡量一個(gè)電力企業(yè)的管理是否走向現(xiàn)代化的重要標(biāo)志之一,尤其自我國(guó)電力事業(yè)空前發(fā)展的今天,用電管理走向市場(chǎng)化,電力負(fù)荷預(yù)測(cè)問題的解決已經(jīng)成為我們面臨的重要而又艱巨的任務(wù)。依據(jù)預(yù)測(cè)的結(jié)果可以經(jīng)濟(jì)合理地安排電網(wǎng)內(nèi)部發(fā)電機(jī)組的啟停,保持電網(wǎng)運(yùn)行的安全穩(wěn)定性,減少不必要的旋轉(zhuǎn)儲(chǔ)備容量,合理安排機(jī)組檢修計(jì)劃,保證社會(huì)的正常生產(chǎn)和生活,有效降低發(fā)電成本,提高經(jīng)濟(jì)效益和社會(huì)效益。
同時(shí),隨著電力產(chǎn)業(yè)在世界范圍的去規(guī)則化和自由競(jìng)爭(zhēng),電力作為一種商品以一定的價(jià)格在電力市場(chǎng)進(jìn)行買賣。因此,在競(jìng)爭(zhēng)的電力市場(chǎng),負(fù)荷預(yù)測(cè)對(duì)于能量交易至關(guān)重要。然而,由于電力負(fù)荷的多變性和動(dòng)態(tài)性以及受諸多外部因素影響,負(fù)荷預(yù)測(cè)系統(tǒng)建設(shè)是一項(xiàng)艱巨又困難的任務(wù)。首先,電力負(fù)荷不僅復(fù)雜而且呈現(xiàn)一定程度的季節(jié)性:對(duì)于給定某日的用電量不僅和昨天的用電量相關(guān),而且和上周同一天的用電量相關(guān),甚至和上月同一天的用電量也相關(guān)。其次,諸多外部變量對(duì)負(fù)荷預(yù)測(cè)有重要的影響。如時(shí)間因素、氣候因素和經(jīng)濟(jì)因素等。傳統(tǒng)的預(yù)測(cè)主要依靠于相關(guān)人員的經(jīng)驗(yàn)來判斷,這樣的方法并不能很精準(zhǔn)地預(yù)測(cè)未來的用電量,同時(shí)帶有很強(qiáng)的主觀性。因此,建立一套科學(xué)完整的企業(yè)用電量預(yù)測(cè)系統(tǒng)能夠更加精準(zhǔn)客觀地幫助企業(yè)做好電力負(fù)荷預(yù)測(cè)。
傳統(tǒng)的負(fù)荷預(yù)測(cè)方法有時(shí)間序列法和回歸分析法。時(shí)間序列法根據(jù)負(fù)荷的歷史資料對(duì)未來的負(fù)荷進(jìn)行預(yù)測(cè),不需外部數(shù)據(jù)變量,但是其預(yù)測(cè)結(jié)果有時(shí)不具有直接的業(yè)務(wù)意義,不便于解釋,而且只適合短期預(yù)測(cè)?;貧w分析法預(yù)測(cè)精度較高,適用于在中、短期預(yù)測(cè)使用,但是解釋變量很難找齊找準(zhǔn),而且只能測(cè)算總電量,很難測(cè)算出各供電區(qū)域的電量。近年來,許多研究都致力于現(xiàn)代機(jī)器學(xué)習(xí)算法在負(fù)荷預(yù)測(cè)中的應(yīng)用,現(xiàn)代機(jī)器學(xué)習(xí)算法中的人工神經(jīng)人工神經(jīng)網(wǎng)絡(luò)法是模擬人腦神經(jīng)系統(tǒng)的一種預(yù)測(cè)分類算法,其算法泛化能力強(qiáng),但短期預(yù)測(cè),模型難以解釋。在日度負(fù)荷預(yù)測(cè)中我們選用時(shí)間序列法和人工神經(jīng)網(wǎng)絡(luò)法,并對(duì)其進(jìn)行組合預(yù)測(cè)。
ARIMA季節(jié)模型是表示為ARIMA(p,d,q)*ARI?MA(P,D,Q)的乘法季節(jié)模型,該模型用ARIMA(p,d,q)來表示數(shù)據(jù)整體趨勢(shì),再用第二個(gè)ARIMA(P,D,Q)模型來表示季節(jié)因素,從而進(jìn)行季節(jié)性預(yù)測(cè)。
在以下的描述中,s則代表周期,也就是季節(jié)性模型特點(diǎn)的體現(xiàn)。
(1)季節(jié)差分過程
當(dāng)存在季節(jié)單位根時(shí),即季節(jié)性時(shí)間序列yt=yy-s+μt,則首先用季節(jié)差分的方式消除季節(jié)單位根,即yt-yt-s,季節(jié)差分算子定義為:Δs=1-Ls,也稱為s階差分,則yt進(jìn)行一次季節(jié)性差分表示為:
若非平穩(wěn)季節(jié)性時(shí)間序列存在D個(gè)季節(jié)單位根,則需要進(jìn)行D次季節(jié)差分后才能轉(zhuǎn)換為平穩(wěn)序列。即
(2)描述季節(jié)性的自回歸與移動(dòng)平均過程
即Δsyt可以建立關(guān)于周期為s的P階自回歸Q階移動(dòng)平均季節(jié)時(shí)間序列模型。
其中AP(Ls)=(1-α1Ls-α2L2s-…-αPLPs)稱為季節(jié)自回歸算子;BQ(Ls)=(1+β1Ls+β2L2s+…+βQLQs)稱為季節(jié)移動(dòng)平均算子(注意季節(jié)自回歸和季節(jié)移動(dòng)平均項(xiàng)的表示方法,例如P、Q等于2時(shí),之后算子應(yīng)為(Ls)1=Ls,(Ls)2=L2s)。對(duì)于上述模型,相當(dāng)于假定μt是平穩(wěn)的、非自相關(guān)的。以上模型把序列中的季節(jié)單位根、季節(jié)相關(guān)成分描述完了。
(3)季節(jié)時(shí)間序列的一般形式
當(dāng)μt非平穩(wěn)且存在自回歸和移動(dòng)平均成分時(shí),則把μt描述為
其中vt為白噪聲過程,p,q分別表示非季節(jié)自回歸,移動(dòng)平均算子的最大階數(shù),d表示μt的一階(非季節(jié))差分次數(shù)。由上式得
把該式代入(5.1.4-21)式子中,于是得到了季節(jié)時(shí)間序列模型的一般表達(dá)式。
其中下表P,Q,p,q分別表示季節(jié)與非季節(jié)自回歸、移動(dòng)平均算子的最大滯后階數(shù),d、D分別表示非季節(jié)和季節(jié)性次數(shù),上式稱為(p,d,q)×(P,D,Q)s階季節(jié)時(shí)間序列模型。
(1)BP神經(jīng)網(wǎng)絡(luò)模型過程使用算法詳解
BP算法是一種有效的多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法,其主要特點(diǎn)是信號(hào)前向傳遞,而誤差后向傳播,通過不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)重值,使得網(wǎng)絡(luò)的最終輸出與期望輸出盡可能接近,以達(dá)到訓(xùn)練的目的。其核心思想是通過調(diào)節(jié)神經(jīng)元中的權(quán)重以及偏置去逼近任意函數(shù)。該方案采用R中的AMORE的神經(jīng)網(wǎng)絡(luò)框架完成。
①隱含層的結(jié)構(gòu)
該方案中進(jìn)過試驗(yàn)和測(cè)試選取2層隱含層,同時(shí)該神經(jīng)網(wǎng)絡(luò)中的輸入節(jié)點(diǎn)數(shù)和輸出節(jié)點(diǎn)數(shù)都是確定的,故通常采用經(jīng)驗(yàn)公式確定隱含層節(jié)點(diǎn)數(shù)目,常見經(jīng)驗(yàn)公式如下:
其中m為隱含層節(jié)點(diǎn)數(shù),n為輸入層節(jié)點(diǎn)數(shù),l為輸出層節(jié)點(diǎn)數(shù)。
②信息傳遞過程與預(yù)測(cè)過程
(2)信息正向傳遞過程:
設(shè)節(jié)點(diǎn)i和節(jié)點(diǎn)j之間的權(quán)值為wij,節(jié)點(diǎn)j的閥值為bj,每個(gè)節(jié)點(diǎn)的輸出值為xj,而每個(gè)節(jié)點(diǎn)的輸出值是根據(jù)上層所有節(jié)點(diǎn)的輸出值、當(dāng)前節(jié)點(diǎn)與上一層所有節(jié)點(diǎn)的權(quán)值和當(dāng)前節(jié)點(diǎn)的閾值還有激活函數(shù)來實(shí)現(xiàn)的。具體計(jì)算方法如下:
其中w為權(quán)值,該值為0~1的隨機(jī)數(shù),f為激活函數(shù),該過程使用的激活函數(shù)為sigmoid和purelin。xj當(dāng)前的輸入以及下一層的輸出。神經(jīng)網(wǎng)絡(luò)利用該過程進(jìn)過三次計(jì)將特征從輸入層進(jìn)入隱含層1,隱含層1進(jìn)入隱含層2,最后再?gòu)碾[含層2輸出至輸出層,該輸出層輸出結(jié)果則為該次的預(yù)測(cè)結(jié)果。
(3)誤差反向傳遞過程
從上一步中得到的預(yù)測(cè)結(jié)果與真實(shí)值進(jìn)行比對(duì),得出誤差進(jìn)行反向傳遞就為誤差反向傳遞過程。
首先定義誤差函數(shù):
其中d為神經(jīng)網(wǎng)絡(luò)最后輸出,即最后一個(gè)xj,y為真實(shí)目標(biāo)值。
在方案中的學(xué)習(xí)規(guī)則我們使用的是通過沿著相對(duì)誤差平方和的最速下降方向,連續(xù)調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,根據(jù)梯度下降法,權(quán)值矢量的修正正比于當(dāng)前位置上E的梯度,對(duì)于第j個(gè)輸出節(jié)點(diǎn)有:
其中α為學(xué)習(xí)率,權(quán)值更新公式為:
閾值更新和權(quán)值是同樣的道理,每更新一次w和b就返回正向傳遞子過程。
當(dāng)對(duì)w進(jìn)行更新后,則算完成了一次迭代懸鏈過程。
應(yīng)用上述算法對(duì)日度負(fù)荷進(jìn)行預(yù)測(cè)。過程分為預(yù)處理過程,日度預(yù)測(cè)主體過程和結(jié)果評(píng)估過程三個(gè)部分,圖1為該方案流程圖。
(1)數(shù)據(jù)預(yù)處理
①數(shù)據(jù)預(yù)處理
●在輸入數(shù)據(jù)data中提取其日期字段的首位與末位,填補(bǔ)中間日期字段,再根據(jù)其建立dataframe數(shù)據(jù)表,再利用該表的日期字段對(duì)輸入數(shù)據(jù)data進(jìn)行遍歷填補(bǔ)其用電量數(shù)據(jù),填補(bǔ)過程中,如遇到在data中日期重復(fù)情況則選擇用較大的用電量進(jìn)行填補(bǔ),去除較小的用電量。而未遍歷到的日期用“NaN”值填補(bǔ),輸出數(shù)據(jù)dataframes數(shù)據(jù)表datacleaned。
●檢查datacleaned中數(shù)值,標(biāo)記出0、負(fù)值、NaN值,并利用該異常位置前后數(shù)據(jù)進(jìn)行線性填補(bǔ),如出現(xiàn)連續(xù)異常問題則前后數(shù)據(jù)順延。
圖1
●該步用于替換非0、負(fù)值得異常值,由于該數(shù)據(jù)為用電量累積數(shù)據(jù),為線性上升趨勢(shì),故首先對(duì)上一步處理過的數(shù)據(jù)進(jìn)行一階差分變?yōu)槊咳沼秒娏?,然后利用箱線圖排查嚴(yán)重偏離正常值范圍的值,確定數(shù)據(jù)中的上四分位數(shù)Q3以及下四分位數(shù)Q1。令I(lǐng)QR=Q3-Q1,設(shè)max=Q3+a*IQR,min=Q1-a*IQR,a為待定系數(shù)。a越小,被定義為異常值的范圍越大,經(jīng)過測(cè)試在ARIMA中a取4,BP神經(jīng)網(wǎng)絡(luò)中a取8。然后利用max和min遍歷數(shù)據(jù)集,標(biāo)記超出該范圍的值,并用中位數(shù)替代,并輸出最終結(jié)果datacleaned。
②算法引擎判斷
●輸入預(yù)處理過的數(shù)據(jù)(datacleaned)及需要預(yù)測(cè)天數(shù)(t),用于測(cè)試數(shù)據(jù)量(test_D)
●檢測(cè)輸入數(shù)據(jù)的個(gè)數(shù),然后將該個(gè)數(shù)減去測(cè)試數(shù)據(jù)量(test_D),得到可用數(shù)據(jù)數(shù)量(data_t)
(3)設(shè)定閾值為一年13個(gè)月395天和2周14天,根據(jù)可用數(shù)據(jù)量(data_t)進(jìn)行分流,之所以需要395= 365+30是因?yàn)樯窠?jīng)網(wǎng)絡(luò)特征提取,提取特征后,整個(gè)數(shù)據(jù)集會(huì)減少一個(gè)月:
data_t<=14:返回?cái)?shù)據(jù)量不夠無法預(yù)測(cè)
14 395 該過程會(huì)輸出數(shù)據(jù)分流判斷和預(yù)處理過的數(shù)據(jù)datacleaned。 (2)訓(xùn)練與預(yù)測(cè) ①ARIMA模型預(yù)測(cè)過程 ●數(shù)據(jù)集拆分: 首先對(duì)整體數(shù)據(jù)集datacleaned數(shù)據(jù)集進(jìn)行拆分,根據(jù)之前輸入的測(cè)試數(shù)據(jù)量(test_D),將data末尾test_D個(gè)數(shù)據(jù)提取出成為D_test,而剩下的數(shù)據(jù)為D_trian。 ●模型測(cè)試: 利用上一步驟得出的D_train對(duì)ARIMA模型(周期設(shè)定為7)進(jìn)行模型訓(xùn)練,并利用訓(xùn)練好模型進(jìn)行數(shù)量為test_D的預(yù)測(cè),得出測(cè)試預(yù)測(cè)結(jié)果。 ●模型預(yù)測(cè): 利用整體數(shù)據(jù)集datacleaned對(duì)ARIMA模型進(jìn)行訓(xùn)練,并利用訓(xùn)練好模型進(jìn)行數(shù)量為t的預(yù)測(cè),得出預(yù)測(cè)結(jié)果。 ●結(jié)果輸出: 該模型輸出預(yù)測(cè)結(jié)果,測(cè)試誤差,以及模型擬合圖像以及擬合優(yōu)秀度。 ②BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)過程 ●數(shù)據(jù)集處理: 對(duì)于BP神經(jīng)網(wǎng)絡(luò)需要先對(duì)特征進(jìn)行構(gòu)建,利用datacleaned中的數(shù)據(jù)對(duì)其進(jìn)行處理,此構(gòu)建48維特征,其中包含預(yù)測(cè)日是否為周末,預(yù)測(cè)日上個(gè)月的平均,最大,最小用電量以及用電量的方差,以及將月度離散為12維的0,1向量,日都31維的0,1向量。 ●BP神經(jīng)網(wǎng)絡(luò)構(gòu)建即參數(shù) 該神經(jīng)網(wǎng)絡(luò)為實(shí)現(xiàn)構(gòu)筑的神經(jīng)網(wǎng)絡(luò),采用兩個(gè)隱藏層,隱藏層神經(jīng)元個(gè)數(shù)為經(jīng)驗(yàn)公式得出為6個(gè),輸入層與第一隱層、第一隱層與第二隱層之間的激活函數(shù)為purelin函數(shù),第二隱層與輸出層使用sigmoid為激活函數(shù)。該模型設(shè)定為每月更新。 ●數(shù)據(jù)拆分 在對(duì)數(shù)據(jù)進(jìn)行上面步驟的預(yù)處理后,對(duì)整體數(shù)據(jù)集datacleaned數(shù)據(jù)集進(jìn)行拆分,根據(jù)之前輸入的測(cè)試數(shù)據(jù)量(test_D),將data末尾test_D個(gè)數(shù)據(jù)提取出成為D_test,而剩下的數(shù)據(jù)為D_trian。 ●模型測(cè)試: 利用上一步驟得出的D_train對(duì)BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行模型訓(xùn)練,并利用訓(xùn)練好模型進(jìn)行數(shù)量為test_D的預(yù)測(cè),得出測(cè)試預(yù)測(cè)結(jié)果。 ●模型預(yù)測(cè): 利用整體數(shù)據(jù)集datacleaned對(duì)BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,并利用訓(xùn)練好模型進(jìn)行數(shù)量為t的預(yù)測(cè),得出預(yù)測(cè)結(jié)果。 ●結(jié)果輸出: 該模型輸出預(yù)測(cè)結(jié)果,測(cè)試誤差,以及模型擬合圖像以及擬合優(yōu)秀度。 日度預(yù)測(cè)中使用參數(shù)均為周期T=7,預(yù)測(cè)天數(shù)t= 30,用于測(cè)試數(shù)數(shù)據(jù)量test_D=30來進(jìn)行測(cè)試 數(shù)據(jù)資源均采用商業(yè)廣場(chǎng)用電量數(shù)據(jù)。此份數(shù)據(jù)包含19個(gè)月的數(shù)據(jù)量,截取近12個(gè)月數(shù)據(jù)測(cè)試方案一,使用全部數(shù)據(jù)測(cè)試方案二。 (1)ARIMA模型預(yù)測(cè) 可以看出,雖然ARIMA的擬合優(yōu)度很高,接近96%,但使用該方法一次性預(yù)測(cè)未來大量天數(shù)效果不佳,測(cè)試中預(yù)測(cè)曲線明顯偏離真實(shí)值軌跡,僅第一天很接近。對(duì)于波動(dòng)劇烈的日用電量,用ARIMA做長(zhǎng)期預(yù)測(cè)很難取得理想的效果。 圖2 為ARIMA模型預(yù)測(cè)結(jié)果圖 圖3 為BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)結(jié)果圖 (2)BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè) 可以看出,雖然神經(jīng)網(wǎng)絡(luò)的擬合優(yōu)度不如ARI?MA,約94.5%,但該方法一次性預(yù)測(cè)誤差要明顯小于ARIMA。原因是因?yàn)樵擃A(yù)測(cè)方法泛化能力比較好,能夠在一定程度上感應(yīng)到用電量的波動(dòng)規(guī)律。對(duì)于波動(dòng)劇烈的日用電量,用神經(jīng)網(wǎng)絡(luò)做長(zhǎng)期預(yù)測(cè)取得的效果相對(duì)比較理想。 [1]徐晨,曹莉,梁小晚,樂英高.基于ABC-BP神經(jīng)網(wǎng)絡(luò)的用電量預(yù)測(cè)研究[J].Computer Measurement&Control,2014,22(3):912-915,922. [2]李建偉,趙法起,劉鳳玲.中長(zhǎng)期電力負(fù)荷的組合預(yù)測(cè)法[J].電力系統(tǒng)及其自動(dòng)化學(xué)報(bào),2011,23(4):133-136. [3]曾鳴,李定林,孫曉菲,薛松.貴州省2015~2020年用電量預(yù)測(cè)及其比較[J].水電能源科學(xué),2013,31(4):229-232. [4]李春祥,牛東曉,孟麗敏.基于層次分析法和徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)的中長(zhǎng)期負(fù)荷預(yù)測(cè)綜合模型[J].電網(wǎng)技術(shù),2009,33(2):99-104. Research and Application of Daily Degree Load Forecasting Algorithm QIU Li-guo (Zhuhai Titan New Power Electronics Co.,Ltd.,Zhuhai 510090) The daily load forecasting and forecasting not only one day before the last week,and the same day the electricity related and even the same day of the last month of electricity is also relevant,and external factors such as time related factors,climatic factors and economic factors. The traditional prediction mainly depends on the experience of related personnel to judge,this method is not very accurate to predict the fu?ture of the electricity at the same time,with very strong subjectivity.Therefore modeling is very necessary.Combination of artificial neural network algorithm of time series model and modern machine learning in traditional prediction,gets more accurate results. 1007-1423(2017)21-0021-06 10.3969/j.issn.1007-1423.2017.21.004 ARIMA(Seasonal)Model;BP Neural Network;Combinatorial Optimization3.3 日度預(yù)測(cè)案例