葉國(guó)達(dá)
(廣東能源陸河蓄能發(fā)電有限公司,廣東 汕尾 516700)
電力系統(tǒng)負(fù)荷預(yù)測(cè)是基于系統(tǒng)的運(yùn)行特性、自然條件等諸多因素,在滿足一定精度要求的條件下,根據(jù)過去的負(fù)荷數(shù)值和現(xiàn)在的負(fù)荷數(shù)值,預(yù)測(cè)未來某特定時(shí)刻的負(fù)荷數(shù)值,具有不確定性、局限性、時(shí)間性、多方案性等特點(diǎn)。利用適當(dāng)?shù)念A(yù)測(cè)技術(shù)對(duì)負(fù)荷數(shù)值進(jìn)行研究分析,以此來推測(cè)未來某時(shí)刻的電力負(fù)荷的狀況和發(fā)展趨勢(shì),電力企業(yè)就可以經(jīng)濟(jì)合理地安排內(nèi)部發(fā)電機(jī)組的工作任務(wù)。這樣不僅維護(hù)了電網(wǎng)的安全穩(wěn)定運(yùn)行,也減小了過度發(fā)電所造成的浪費(fèi),在發(fā)電機(jī)發(fā)生故障時(shí)還可以合理安排檢修,維持電力的供給。這既保障了社會(huì)生產(chǎn)的正常運(yùn)行,同時(shí)也減小了發(fā)電成本,提高了社會(huì)經(jīng)濟(jì)效益。
電力系統(tǒng)負(fù)荷預(yù)測(cè)對(duì)未來新發(fā)電機(jī)組的安裝有很大的用處,可以幫助電力企業(yè)確定發(fā)電機(jī)組的容量、位置和運(yùn)行時(shí)間,電力企業(yè)也可根據(jù)預(yù)測(cè)結(jié)果對(duì)電網(wǎng)進(jìn)行擴(kuò)容,對(duì)于電網(wǎng)未來的建設(shè)和發(fā)展都有重大的意義。在我國(guó)電力行業(yè)蓬勃發(fā)展的今天,電力系統(tǒng)負(fù)荷的管理已經(jīng)市場(chǎng)化,對(duì)電力系統(tǒng)負(fù)荷進(jìn)行預(yù)測(cè)分析,再根據(jù)這個(gè)預(yù)測(cè)結(jié)果對(duì)供給進(jìn)行整頓,是一項(xiàng)重要的任務(wù)。
電力系統(tǒng)負(fù)荷預(yù)測(cè)的核心是預(yù)測(cè)的技術(shù)方法,隨著社會(huì)科學(xué)技術(shù)不斷發(fā)展,電力系統(tǒng)負(fù)荷預(yù)測(cè)技術(shù)得到了很大的發(fā)展,預(yù)測(cè)程序、軟件不斷出現(xiàn),其中最重要的是數(shù)學(xué)預(yù)測(cè)模型[1]。
BP神經(jīng)網(wǎng)絡(luò)的主要特點(diǎn)是數(shù)據(jù)從輸入層到輸出層即信息的正向傳播,誤差則是從輸出層到輸入層即誤差的反向傳播。在輸入層到輸出層的過程中,輸入數(shù)據(jù)經(jīng)過輸入層各神經(jīng)元,傳遞到中間各層神經(jīng)元,在這里進(jìn)行信息變換。中間層根據(jù)信息變化能力的需求,可以設(shè)置為單隱含層或多隱含層結(jié)構(gòu),信息在最后一個(gè)隱含層處理后則完成了一次循環(huán)。這是BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的正向傳播處理過程,最后在輸出層逐層處理,向外界輸出信息處理結(jié)果。當(dāng)輸出層的結(jié)果與預(yù)想的結(jié)果誤差較大時(shí),則進(jìn)入誤差的反向傳播階段,即這個(gè)誤差會(huì)原路返回,然后算法根據(jù)這個(gè)預(yù)測(cè)誤差調(diào)整參數(shù)——權(quán)值和閾值,按誤差梯度下降的方式修正各層權(quán)值和閾值,向隱含層、輸入層逐層反傳,目的是減小下一次預(yù)測(cè)結(jié)果與預(yù)想結(jié)果的誤差,直到輸出信息接近預(yù)想結(jié)果。這就是BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)訓(xùn)練的過程,此過程一直持續(xù)到網(wǎng)絡(luò)輸出的誤差減少到可以接受的程度,或者是達(dá)到完成預(yù)先設(shè)定好的學(xué)習(xí)次數(shù)為止。每層神經(jīng)元的狀態(tài)只會(huì)受到上一層神經(jīng)元狀態(tài)的影響。BP神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
圖1中,X1,X2,…,Xn表示輸入值,Y1,Y2,…,Yn表示預(yù)測(cè)值,ωij和ωjk是BP神經(jīng)網(wǎng)絡(luò)權(quán)值。把BP神經(jīng)網(wǎng)絡(luò)的輸入與輸出看作一對(duì)有函數(shù)關(guān)系的變量,X1,X2,…,Xn則是該函數(shù)的自變量,Y1,Y2,…,Yn則是該函數(shù)的因變量。當(dāng)輸入節(jié)點(diǎn)數(shù)為n、輸出節(jié)點(diǎn)數(shù)為m時(shí),BP神經(jīng)網(wǎng)絡(luò)就表達(dá)了從n個(gè)自變量到m個(gè)因變量的函數(shù)映射關(guān)系。利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)預(yù)測(cè)時(shí),需要先對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使其具有聯(lián)想記憶和預(yù)測(cè)能力。
本研究是在MATLAB編程環(huán)境里進(jìn)行設(shè)計(jì)。其中運(yùn)用到了MATLAB工具箱中的神經(jīng)網(wǎng)絡(luò)工具箱。它以人工神經(jīng)網(wǎng)絡(luò)理論為基礎(chǔ),輸入輸出數(shù)據(jù)的處理和計(jì)算,誤差、權(quán)值、閾值的計(jì)算和更新,算法迭代等都可以通過用MATLAB編程語言構(gòu)造的大部分子程序來完成,使復(fù)雜的神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)和訓(xùn)練得到簡(jiǎn)化。所以當(dāng)要進(jìn)行一系列的數(shù)據(jù)操作時(shí),只需要調(diào)用子程序即可。BP神經(jīng)網(wǎng)絡(luò)主要用于構(gòu)建函數(shù)、訓(xùn)練函數(shù)和預(yù)測(cè)函數(shù),具體如下:
1)newff函數(shù)的功能是構(gòu)建一個(gè)BP神經(jīng)網(wǎng)絡(luò);
2)train函數(shù)的功能是訓(xùn)練BP神經(jīng)網(wǎng)絡(luò);
3)sim函數(shù)的功能是用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)函數(shù)輸出。
算法流程可以分為BP神經(jīng)網(wǎng)絡(luò)構(gòu)建、BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練和BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)3個(gè)部分,見圖2。
圖2 BP神經(jīng)網(wǎng)絡(luò)算法流程圖
本文將基于已有的負(fù)荷數(shù)據(jù)進(jìn)行預(yù)測(cè),歷史負(fù)荷數(shù)據(jù)[3]見表1。
根據(jù)表1數(shù)據(jù)可以看出,BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)輸出結(jié)果與實(shí)際負(fù)荷數(shù)值之間的誤差是穩(wěn)定的,相對(duì)誤差均沒有超過1%。
由于BP神經(jīng)網(wǎng)絡(luò)的輸入與輸出是以列為單位進(jìn)行預(yù)測(cè)的,選擇不超過24個(gè)原始數(shù)據(jù)為BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸出數(shù)據(jù),并將訓(xùn)練數(shù)據(jù)個(gè)數(shù)定義為n。在神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)前對(duì)數(shù)據(jù)做歸一化處理,以消除每個(gè)維度的數(shù)據(jù)的幅度差異,并防止因數(shù)據(jù)的幅度差異較大而造成不可避免的預(yù)測(cè)誤差。所以要將數(shù)據(jù)轉(zhuǎn)化為0~1之間的數(shù)。數(shù)據(jù)歸一化常用的2種方法分別是最大最小法和平均數(shù)方差法。
采用最大最小法,歸一化函數(shù)采用MATLAB自帶函數(shù)mapminmax,對(duì)測(cè)試數(shù)據(jù)進(jìn)行處理:
inputn_test=mapminmax(‘a(chǎn)pply’,input_test,inputps);
BPoutput=mapminmax(‘reverse’,an,outputps);
以上分別是歸一化和反歸一化的函數(shù)形式。其中,input_test歸一化后的數(shù)據(jù)存放在inputn_test中,input_test則是input_test歸一化的依據(jù),運(yùn)用‘a(chǎn)pply’來實(shí)現(xiàn);an則是用歸一化后的測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè)得到的結(jié)果,需要運(yùn)用‘reverse’[4]對(duì)其進(jìn)行反歸一化,以得到真實(shí)的數(shù)據(jù)BPoutput。
為了保證預(yù)測(cè)結(jié)果的準(zhǔn)確性,以下把BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸入數(shù)據(jù)矩陣和輸出矩陣分為多種方式進(jìn)行訓(xùn)練。討論分析的訓(xùn)練數(shù)據(jù)為部分原始數(shù)據(jù)(前24個(gè)數(shù)據(jù)),預(yù)測(cè)的數(shù)據(jù)有5個(gè)。
將表1中負(fù)荷一列的值構(gòu)建成BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸入、訓(xùn)練輸出的數(shù)據(jù)矩陣,全部都在原始數(shù)據(jù)的基礎(chǔ)上來構(gòu)造:將訓(xùn)練輸入、輸出的數(shù)據(jù)矩陣構(gòu)造為一個(gè)21維(3輸入對(duì)應(yīng)3輸出)的矩陣,從而得到BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練輸入矩陣和輸出矩陣,即input_train和output_train。
運(yùn)用數(shù)據(jù)歸一化函數(shù)對(duì)BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸入、輸出數(shù)據(jù)進(jìn)行歸一化:
mapminmax(input_train);
mapminmax(output_train)
得到歸一化后的BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸入、輸出數(shù)據(jù)。運(yùn)用newff函數(shù)構(gòu)建一個(gè)BP神經(jīng)網(wǎng)絡(luò):
net=newff(inputn,outputn.21,‘traingd’);
其中輸入、輸出數(shù)據(jù)為21維的矩陣,把隱含層神經(jīng)元數(shù)量設(shè)置為21個(gè),包含1個(gè)隱含層。
將隱含層節(jié)點(diǎn)的傳遞函數(shù)和輸出層節(jié)點(diǎn)的傳遞函數(shù)分別設(shè)置為tansig函數(shù)和purelin函數(shù),BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)設(shè)置為traingd:
net.layers{1}.transferFcn=‘tansig’;
net.layers{2}.transferFcn=‘purelin’;
BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)速率的值設(shè)置為0.01:net.trainParam.lr=0.01;
BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練次數(shù)的值設(shè)置為3000:net.trainParam.epochs=3000;
BP神經(jīng)網(wǎng)絡(luò)的均方誤差的值設(shè)置為0.001:net.trainParam.goal=0.001;
其余的參數(shù)設(shè)置為默認(rèn),參數(shù)設(shè)置完畢。
對(duì)構(gòu)建的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練:
net=train(net,inputn,outputn);
output_train矩陣?yán)锏拿總€(gè)元素都是對(duì)應(yīng)的input_train矩陣?yán)锏拿總€(gè)元素的預(yù)測(cè)結(jié)果,因?yàn)樵紨?shù)據(jù)數(shù)量有限,需要往后預(yù)測(cè)5個(gè)數(shù)據(jù),則要多加一個(gè)循環(huán),對(duì)網(wǎng)絡(luò)訓(xùn)練5次,把每次的通過訓(xùn)練后的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)數(shù)據(jù)當(dāng)作第二次預(yù)測(cè)輸入數(shù)據(jù),從而得到5個(gè)BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)數(shù)據(jù)。
對(duì)預(yù)測(cè)數(shù)據(jù)進(jìn)行歸一化處理,構(gòu)建一個(gè)1行(21+5)列的矩陣,為C;
inputn_test=mapminmax(‘a(chǎn)pply’,C,inputps);
針對(duì)訓(xùn)練過的BP神經(jīng)網(wǎng)絡(luò)對(duì)預(yù)測(cè)數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)預(yù)測(cè):
an=sim(net,inputn_test);
an即為通過訓(xùn)練后的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)數(shù)據(jù),通過反歸一化可得到BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)值:
BPoutput=mapminmax(‘reverse’,an,outputps);
經(jīng)過BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)后的網(wǎng)絡(luò)預(yù)測(cè)數(shù)據(jù)為[10900.452 11018.556 11426.124 12558.794 11079.280]。
將訓(xùn)練輸入、輸出的數(shù)據(jù)矩陣構(gòu)造為一個(gè)21維(3輸入對(duì)應(yīng)1輸出)的矩陣,從而得到BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練輸入矩陣和輸出矩陣,即input_train和output_train,其他參數(shù)都與上一次測(cè)試相同。則這次的預(yù)測(cè)輸出數(shù)據(jù)為[11102.562 10920.209 10996.802 10397.403 10863.493]。
根據(jù)所得到的試驗(yàn)數(shù)據(jù),在更改了BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸入和訓(xùn)練輸出數(shù)據(jù)后,所得到的預(yù)測(cè)數(shù)據(jù)依舊不太理想,通過更改輸入層與輸出層的傳遞函數(shù)、學(xué)習(xí)速率、訓(xùn)練次數(shù)、均方誤差等參數(shù)之后所得到的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)輸出結(jié)果基本上沒有太多變化。從表1中的數(shù)據(jù)可以看到預(yù)測(cè)輸出數(shù)據(jù)的趨勢(shì),與原始數(shù)據(jù)相比可明顯看出預(yù)測(cè)輸出的數(shù)據(jù)非常不穩(wěn)定。而后發(fā)現(xiàn)一個(gè)問題,原始數(shù)據(jù)趨近于一條直線,說明原始數(shù)據(jù)之間存在一定的線性關(guān)系。對(duì)于傳遞函數(shù),tansig函數(shù)是正切S型傳遞函數(shù),logsig是對(duì)數(shù)S型傳遞函數(shù),purelin是線性傳遞函數(shù)。傳遞函數(shù)的選擇不同,BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果也不同。
BP神經(jīng)網(wǎng)絡(luò)用于輸入層節(jié)點(diǎn)的傳遞函數(shù)可以選用tansig函數(shù)和logsig函數(shù),也可以選用purelin函數(shù),輸出層節(jié)點(diǎn)的傳遞函數(shù)可以選用tansig函數(shù)和purelin函數(shù)。
重新構(gòu)建一個(gè)BP神經(jīng)網(wǎng)絡(luò),輸入層節(jié)點(diǎn)的傳遞函數(shù)選用purelin函數(shù)。
BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練輸入、輸出矩陣用訓(xùn)練輸入、輸出樣本2。其他參數(shù)設(shè)置保持不變。則預(yù)測(cè)輸出結(jié)果為[11162.858 11307.172 11432.694 11542.686 11639.808]。
不同參數(shù)設(shè)置的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)結(jié)果對(duì)比及誤差分析見表1,其中絕對(duì)誤差和相對(duì)誤差是樣本3預(yù)測(cè)結(jié)果與原始數(shù)據(jù)比較的結(jié)果。從表中數(shù)據(jù)可以看出,樣本3預(yù)測(cè)的結(jié)果是比較好的。從多次試驗(yàn)的結(jié)果來看,基于原始數(shù)據(jù)構(gòu)建一個(gè)BP神經(jīng)網(wǎng)絡(luò)。將樣本1、樣本2和樣本3分別與原始數(shù)據(jù)進(jìn)行對(duì)比,輸入層節(jié)點(diǎn)與輸出層節(jié)點(diǎn)的傳遞函數(shù)都選用purelin函數(shù)所得到的樣本3預(yù)測(cè)結(jié)果最接近原始數(shù)據(jù)。
BP神經(jīng)網(wǎng)絡(luò)是學(xué)習(xí)型的機(jī)制,BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)輸出目標(biāo)是經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化,需要大量樣本來支撐,訓(xùn)練過程中經(jīng)常出現(xiàn)神經(jīng)網(wǎng)絡(luò)的過擬合的問題,即神經(jīng)網(wǎng)絡(luò)對(duì)訓(xùn)練輸入的預(yù)測(cè)誤差非常小,但是對(duì)測(cè)試輸入的預(yù)測(cè)誤差非常大。
重慶電力高等專科學(xué)校學(xué)報(bào)2023年5期