陶 娟,鄒紅波,周 冬
(三峽大學(xué) 電氣與新能源學(xué)院,湖北宜昌 443000)
電力負荷預(yù)測是考慮到歷史負荷、天氣、時間等信息,對未來電力負荷進行預(yù)測。負荷預(yù)測包括發(fā)電調(diào)度、系統(tǒng)備用發(fā)電量的確定、市場運行優(yōu)化等[1-3]。負荷預(yù)測對電力企業(yè)在電力采購、發(fā)電、負荷切換、電壓控制、基礎(chǔ)設(shè)施建設(shè)等方面做出重要決策具有重要作用[4-5]。按預(yù)測持續(xù)時間分為長期預(yù)測[6-8]和短期預(yù)測[9-13]。負荷預(yù)測包括傳統(tǒng)方法和基于人工智能的方法。前者包括時間序列[14],多元回歸[15]和狀態(tài)估計方法,而后者包括模糊邏輯[16]、支持向量機[17],人工神經(jīng)網(wǎng)絡(luò)(ANN)方法[18]。傳統(tǒng)的方法具有簡單的優(yōu)點,而基于人工智能的方法具有較高的預(yù)測精度,可以準確地建模觀測負荷與所依賴的變量之間的高度非線性關(guān)系。
利用集成學(xué)習(xí)進一步提高了預(yù)測精度。集成學(xué)習(xí)中應(yīng)用最多的兩種算法是袋裝神經(jīng)網(wǎng)絡(luò)算法(BNN)和提升人工神經(jīng)網(wǎng)絡(luò)算法(BooNN)。兩種算法都將單個預(yù)測模型的輸出聚合起來,以提高總體預(yù)測精度。BooNN技術(shù)基于迭代地生成許多ANN模型,在每個迭代中,生成的模型減少了預(yù)期輸出與前一個迭代中訓(xùn)練的模型之間的誤差。該模型通過前一個迭代的目標輸出中減去加權(quán)估計值來更新每次迭代的目標輸出。數(shù)值計算結(jié)果表明,與現(xiàn)有的算法相比,該方法具有更小的預(yù)測誤差。
本研究采用一種基于提升人工神經(jīng)網(wǎng)絡(luò)的短期負荷預(yù)測方法,并進行仿真驗證預(yù)測誤差。
人工神經(jīng)網(wǎng)絡(luò)算法的體系結(jié)構(gòu)包括三層:輸入層、隱含層和輸出層。第一層的輸入由不同的因素或特性組成。隱含層用以把輸入數(shù)據(jù)的特征抽象到另外的維度空間,來展現(xiàn)其更抽象化的特征,從而利用這些特征更好地進行線性劃分。輸出層為最后一層,輸出預(yù)測值。
每個隱含層包含有多個神經(jīng)元,每層的輸出由前一層的輸入乘以權(quán)重加上偏差得到。權(quán)重矩陣將輸出從前面的層擴展到后面的層。神經(jīng)網(wǎng)絡(luò)算法的數(shù)學(xué)模型為:
式中,xint為t時刻的輸入矢量,為輸入向量的各個分量,F(xiàn)為輸入?yún)?shù)的個數(shù);分別為第1層和第i層輸出矢量;為最后層的輸出,為標量;L為總的層數(shù);ρ為各層的激活函數(shù);W1、Wi、WL分別為第1、i、L層的權(quán)值矩陣;b1、bi分別為第1、i層的偏差向量,bL為第L層的偏差,為標量。
通過改變權(quán)值和偏差對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,并將所得到的預(yù)測輸出與輸入訓(xùn)練數(shù)據(jù)比較,得到權(quán)值和偏差的變化,進而得到目標輸出。通過訓(xùn)練使預(yù)測輸出與目標輸出之間的差異最小化,數(shù)學(xué)表示為:
式中,xouttarg為目標輸出值;W為權(quán)值矩陣集合;b為偏差向量集合。分別表示為:
通過隨機梯度下降算法對權(quán)值和偏差進行更新。利用部分訓(xùn)練樣本得到上述目標函數(shù),并根據(jù)權(quán)值和偏差計算目標函數(shù)的梯度。通過從權(quán)重和偏差中減去一個因子加權(quán)的計算梯度來更新權(quán)重和偏差。
在短期電力負荷預(yù)測中,預(yù)測模型反映了影響電力負荷的各種獨立參數(shù)X在離散時間序列上的取值,與這些時刻測量到的相應(yīng)負荷值y之間的關(guān)系。描述X與y關(guān)系的模型i應(yīng)滿足以下要求:
(2)預(yù)測值具有較低的方差。不同模型的預(yù)測值與所有模型的預(yù)測平均值之間不存在較大差異。
(3)函數(shù)應(yīng)避免過擬合。該模型應(yīng)該能夠忽略預(yù)測中的隨機誤差。
由于該模型是一個高度非線性的函數(shù),基于人工智能的算法在處理非線性關(guān)系方面具有很大的優(yōu)勢,本研究采用了基于人工神經(jīng)網(wǎng)絡(luò)的總體學(xué)習(xí)方法,提升人工神經(jīng)網(wǎng)絡(luò)算法。使用一組人工神經(jīng)網(wǎng)絡(luò)模型,其中每個模型都是通過對不同數(shù)據(jù)集的訓(xùn)練得到的,然后將這組模型(也稱為總體)融合在一起,得到最終的估計預(yù)測。改進模型是通過迭代生成,圖1為提升算法的流程。
圖1 改進人工神經(jīng)網(wǎng)絡(luò)算法的流程
首先,在第i次迭代中使用原始訓(xùn)練數(shù)據(jù)生成初始模型,這些原始訓(xùn)練數(shù)據(jù)包含獨立的特征和相應(yīng)的目標輸出。在第i+1次迭代中,將輸出目標替換為第一個模型預(yù)測的誤差,從而生成新的模型:
式中,hi是目標輸出與使用第i次迭代后模型的輸出之間的誤差,αi是每個模型的權(quán)重。迭代過程生成了M個模型,所有這些模型形成的集合為:
預(yù)測因子的線性組合表示為:
針對負荷預(yù)測問題,考慮由自變量Xtr和負荷ytr組成的訓(xùn)練數(shù)據(jù)集,改進算法的步驟如下:
(1)參數(shù)定義。定義總體中迭代的總數(shù)為M,權(quán)重αi為常量為ytr。
(2)迭代生成模型。第一次迭代的模型為:
(3)從i=2到i=M,殘差按照下式進行迭代:
利用更新后的殘差計算出一個新的神經(jīng)網(wǎng)絡(luò)模型:
更新過程使用在每個迭代中權(quán)值的估計值,只使用與目標輸出和訓(xùn)練模型得到的輸出之間的差值相關(guān)的部分信息,可以防止過度擬合。
(4)在所有迭代結(jié)束時,每次迭代得到的所有神經(jīng)網(wǎng)絡(luò)模型即為集合Ψ。
(5)在給定參數(shù)X的情況下,預(yù)測負荷以集成模型輸出的加權(quán)和的形式計算如下:
采用文獻[19]中的歷史小時溫度和負荷數(shù)據(jù),這些參數(shù)是短期負荷預(yù)測的典型參數(shù)。訓(xùn)練數(shù)據(jù)集由這些變量組成的數(shù)據(jù)向量構(gòu)成,目標輸出與這些數(shù)據(jù)中給定時刻測量的電力負荷相對應(yīng)。
表1為不同時段數(shù)對平均絕對誤差率的影響。對于大于500個時段數(shù)、大于20個節(jié)點和大于1個隱含層數(shù)時,性能沒有顯著提高。在300個或更多的時代,EMAP幾乎保持不變。隨著節(jié)點數(shù)的增加,EMAP減少,而當節(jié)點數(shù)超過20時,EMAP不再減少。此外,對于固定數(shù)量的節(jié)點,當隱含層從1增加到2時,EMAP的變化非常小。對于20個節(jié)點,1個隱含層的性能與10個節(jié)點,2個隱含層的性能相似?;谶@些結(jié)果,選擇的ANN模型參數(shù)為500個時段數(shù),1個隱含層包含20個節(jié)點。
表1 不同時段數(shù)對平均絕對誤差率的影響
不同迭代次數(shù)和訓(xùn)練樣本大小對負荷預(yù)測精度的影響如表2~3所示。對于相同的迭代次數(shù),隨著訓(xùn)練樣本數(shù)量的增加,EMAP減小。樣本大于20 000時,對于每個樣本大小,25次迭代小于5次迭代的EMAP。隨著迭代次數(shù)增加,EMAP會有所減少并在最小值附近有一些波動。15 000個樣本時訓(xùn)練樣本的大小不夠,在這種情況下,EMAP隨著迭代的增加而增加,因為在一定的迭代次數(shù)之后,會導(dǎo)致過度擬合。
表2 不同節(jié)點數(shù)和層數(shù)對平均絕對誤差率的影響
表3 不同樣本數(shù)和迭代數(shù)對平均絕對誤差率的影響
圖2為樣本數(shù)為25 000和35 000時平均絕對誤差率與迭代次數(shù)的關(guān)系。EMAP隨著迭代次數(shù)的增加而減小,特別是當?shù)螖?shù)大于12次時,35 000個樣本時的EMAP小于25 000個樣本的。但差別較小且隨著迭代次數(shù)大于10次時EMAP變化較小,因此可以選擇樣本大小為25 000,迭代次數(shù)為10次。
圖2 樣本數(shù)對平均絕對誤差率的影響
選取文獻[19]中該地區(qū)2018年8月1日~9月1日的數(shù)據(jù)作為訓(xùn)練樣本,預(yù)測10月1日~12日的小時負荷。將通過BooNN算法得到的平均絕對誤差率與現(xiàn)有的方法進行比較,包括袋裝神經(jīng)網(wǎng)絡(luò)算法(BNN)、自回歸滑動平均算法(ARMA)、混合無監(jiān)督神經(jīng)網(wǎng)絡(luò)算法(HybANN)、基于典型日的小波神經(jīng)網(wǎng)絡(luò)(SIWNN)。
圖3為與現(xiàn)有算法預(yù)測性能比較,BooNN的誤差率與ARMA、HybANN和SIWNN均有顯著性差異。雖然與BNN相比,其改進幅度較小,但BooNN在計算速度上更有優(yōu)勢。BooNN的平均預(yù)測值為1.42%,ARMA、HybANN、BNN和SIWNN的平均預(yù)測值分別為2.21%、1.94%、1.47%和1.93%,說明BooNN具有更高的預(yù)測精度。
圖3 與現(xiàn)有算法預(yù)測性能比較
本研究提出了一種基于提升人工神經(jīng)網(wǎng)絡(luò)(BooNN)的短期負荷預(yù)測方法。通過仿真,當計算輸出的模型個數(shù)大于或等于20時,可以獲得較低的預(yù)測誤差。通過與BNN、ARMA、HybANN和SI‐WNN的預(yù)測性能比較,進一步證明用BooNN得到的誤差更小,波動也更小。