劉帥瑤,高 陽(yáng)
(沈陽(yáng)工程學(xué)院,遼寧沈陽(yáng) 110000)
BP 神經(jīng)網(wǎng)絡(luò)是一種由反向傳播算法控制的人工神經(jīng)網(wǎng)絡(luò),它適用于連續(xù)和離散自變量應(yīng)用系統(tǒng)。它有輸入和輸出層,還有一個(gè)或多個(gè)隱藏層,每一層上的節(jié)點(diǎn)數(shù)是任意的,彼此獨(dú)立。它的反向傳播特性與所解決問(wèn)題的性質(zhì)和細(xì)節(jié)的選擇密切相關(guān)。BP 神經(jīng)網(wǎng)絡(luò)由輸入層、輸出層和一個(gè)或多個(gè)隱藏層組成。在實(shí)踐中,更多的隱藏層模型,準(zhǔn)確預(yù)測(cè)結(jié)果將越少,但相應(yīng)地,多層結(jié)構(gòu)會(huì)使系統(tǒng)更復(fù)雜,算法更多的冗余,所以樣品模型的訓(xùn)練時(shí)間將增加,收斂速度將減少。特別是各網(wǎng)絡(luò)層權(quán)值的計(jì)算會(huì)非常復(fù)雜。
BP 神經(jīng)網(wǎng)絡(luò)適用于多種自變量應(yīng)用系統(tǒng),主要是連續(xù)和離散自變量。它的構(gòu)造有輸入和輸出層,還有一個(gè)或多個(gè)隱藏層。它的反向傳播特性與所解決問(wèn)題的性質(zhì)和細(xì)節(jié)的選擇密切相關(guān)。BP 神經(jīng)網(wǎng)絡(luò)主要由輸入層、輸出層和隱藏層組成。在多數(shù)實(shí)踐中,擁有更多的隱藏層模型會(huì)使準(zhǔn)確預(yù)測(cè)結(jié)果大幅減少,并且系統(tǒng)結(jié)構(gòu)更復(fù)雜,所以樣品模型的總體訓(xùn)練時(shí)間會(huì)上漲,隨之收斂速度急劇下降。相比之下,單隱層網(wǎng)絡(luò)的特點(diǎn)為:結(jié)構(gòu)簡(jiǎn)單、學(xué)習(xí)速度快、網(wǎng)絡(luò)相關(guān)權(quán)值計(jì)算準(zhǔn)確。當(dāng)有足量的隱含層節(jié)點(diǎn)數(shù)量時(shí),網(wǎng)絡(luò)就可以使所有非線性系統(tǒng)的基本特征變得清晰??紤]到上述原因,本文最終選擇了精確度以及性價(jià)比高的3層結(jié)構(gòu)。
本次預(yù)測(cè)的樣本采用某光伏電站的某天發(fā)電和氣象數(shù)據(jù)。由于日落后太陽(yáng)光輻射的強(qiáng)度幾乎為零,所以在此情境下,光伏系統(tǒng)的發(fā)電量也可以忽略不計(jì)。所以進(jìn)行預(yù)測(cè)時(shí)忽略日落后18:30至次日6:30這段時(shí)間,將6:30至18:30設(shè)置成有效預(yù)測(cè)時(shí)間,并取預(yù)測(cè)時(shí)間間隔為1h。由于歷史數(shù)據(jù)和具體數(shù)值相關(guān)氣象因素的影響,不同日期和同一日期在不同時(shí)間下的輸出功率值有或顯著或細(xì)微的差異。隨著這些數(shù)據(jù)的輸入,不僅會(huì)使擴(kuò)大搜索范圍還會(huì)使預(yù)測(cè)精度大幅降低。為了消除上述影響,需要將采集到的數(shù)據(jù)按照固定標(biāo)準(zhǔn),對(duì)其進(jìn)行歸一化處理后才可以使用。應(yīng)用中一般使用premnmx 函數(shù),通過(guò)此函數(shù)處理過(guò)后的數(shù)據(jù)會(huì)集中分布在[-1,+1]范圍內(nèi),然后再將這些數(shù)據(jù)輸入神經(jīng)網(wǎng)絡(luò)中。premnmx 函數(shù)轉(zhuǎn)換公式如下:
其中,An是歸一化之后的數(shù)據(jù);A表示為原始數(shù)據(jù)。
在此步驟之后,BP 祌經(jīng)網(wǎng)絡(luò)需要在計(jì)算和學(xué)習(xí)完成后,將新的數(shù)據(jù)恢復(fù)到原來(lái)的初始數(shù)據(jù)量綱輸出,此時(shí)一般選擇用premnmx 函數(shù)來(lái)進(jìn)行操作。
基于BP 神經(jīng)網(wǎng)絡(luò)算法,通過(guò)采用以下5個(gè)步驟建立光伏發(fā)電系統(tǒng)功率預(yù)測(cè)模型:
(1)確定網(wǎng)絡(luò)結(jié)構(gòu)。本文選擇了由輸入層、輸出層和單隱層組成的3層BP 神經(jīng)網(wǎng)絡(luò)模型。
(2)進(jìn)行輸入層設(shè)計(jì)。根據(jù)實(shí)際情況,選擇歷史輸出功率、溫度和光照強(qiáng)度來(lái)作為輸入數(shù)據(jù)。選擇5個(gè)輸入層節(jié)點(diǎn):在預(yù)測(cè)時(shí)間下的溫度、在預(yù)測(cè)時(shí)間前一天對(duì)應(yīng)同一時(shí)刻的溫度、在預(yù)測(cè)時(shí)間下的光強(qiáng)度、在預(yù)測(cè)時(shí)間前一天對(duì)應(yīng)同一時(shí)刻的光強(qiáng)度,以及在預(yù)測(cè)時(shí)間前一天對(duì)應(yīng)同一時(shí)刻的歷史發(fā)電功率。
(3)進(jìn)行輸出層設(shè)計(jì)。由于訓(xùn)練最終目標(biāo)是預(yù)測(cè)光伏系統(tǒng)的發(fā)電輸出功率,因此輸出層中的其中一個(gè)節(jié)點(diǎn)可以滿足要求。
(4)進(jìn)行隱藏層設(shè)計(jì)。對(duì)于隱層節(jié)點(diǎn)數(shù)的設(shè)置,并沒(méi)有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),一般情況下符合強(qiáng)數(shù)定理:
式中,m為隱含層所含有的節(jié)點(diǎn)數(shù)目;i為輸入層所含有節(jié)點(diǎn)數(shù)目;同理j對(duì)應(yīng)輸出層;1≤β≤10;P為樣本數(shù)據(jù)總數(shù)。將每層所選取的節(jié)點(diǎn)數(shù)代入上述公式,隱層節(jié)點(diǎn)數(shù)選取最小值時(shí)訓(xùn)練結(jié)果的誤差值最小。經(jīng)計(jì)算,本文最終選擇的是目標(biāo)誤差最小的4個(gè)節(jié)點(diǎn)來(lái)作為隱藏層中的節(jié)點(diǎn)數(shù)。
確定傳輸函數(shù)。確定tansig 非線性激勵(lì)函數(shù)來(lái)當(dāng)隱含層的傳遞函數(shù)。選取purelin 線性函數(shù)作為輸出層的傳遞函數(shù)。
(5)計(jì)算輸出預(yù)測(cè)值的誤差。因MAPE以百分?jǐn)?shù)形式出現(xiàn),所以更加直觀清楚。其公式如下:
式中,N為數(shù)據(jù)集總數(shù);Wf為功率預(yù)測(cè)值;Wa為功率實(shí)測(cè)值,i為樣本數(shù)據(jù)的序號(hào)。
通過(guò)MATLAB 軟件,建立本文需要使用的BP網(wǎng)絡(luò)功率預(yù)測(cè)模型。樣本數(shù)據(jù)來(lái)源于某一光伏電站的全天歷史發(fā)電和天氣數(shù)據(jù),以及各類數(shù)據(jù)在預(yù)測(cè)日對(duì)應(yīng)時(shí)間段的天氣預(yù)報(bào)數(shù)值。輸入歷史數(shù)據(jù)和預(yù)測(cè)日的樣本信息,經(jīng)過(guò)BP 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)和訓(xùn)練后輸出預(yù)測(cè)發(fā)電功率。
表1 為樣本輸入網(wǎng)絡(luò)后,光伏發(fā)電預(yù)測(cè)值和實(shí)際值數(shù)據(jù)的詳細(xì)數(shù)據(jù)對(duì)比情況,誤差的絕對(duì)值在0~6 kW,平均絕對(duì)百分比誤差為MAPE=5.178%。
單片機(jī)采用AT89C52,時(shí)鐘晶體選擇AT切型的11.059 2MHz,傳感器SHT11溫濕度傳感器的DATA管腳接P1.1,SCK接P1.0。這兩個(gè)管腳要接4.7kΩ的上拉電阻。仿真軟件下不顯示SHT11的電源和地端,實(shí)際接線時(shí),在電源和地間接入100nF的去耦濾波電容。因?yàn)閿?shù)據(jù)要上傳到PC,為了實(shí)現(xiàn)單片機(jī)和PC間的電平轉(zhuǎn)換,實(shí)際電路要采用RS232/RS485轉(zhuǎn)換接口,但在仿真軟件元件庫(kù)中無(wú)此器件,仿真時(shí)采用RS485標(biāo)準(zhǔn)的器件MAX487的輸出端接模擬PC串口的虛擬終端。電路連接如圖4所示。
表1 實(shí)際功率和經(jīng)過(guò)BP預(yù)測(cè)功率
圖1為數(shù)據(jù)樣本BP 神經(jīng)網(wǎng)絡(luò)輸出誤差曲線的實(shí)際值和估計(jì)值之間的關(guān)系。從圖1可以看出,BP 神經(jīng)網(wǎng)絡(luò)算法雖然可以預(yù)測(cè)更加精確的系統(tǒng)發(fā)電功率,但針對(duì)特殊樣本時(shí),有些預(yù)測(cè)值與實(shí)際功率仍然存在較大偏差,有些誤差值甚至超過(guò)10%,因此還需要對(duì)此算法進(jìn)行進(jìn)一步改進(jìn)和提高,從而達(dá)到可以提高預(yù)測(cè)輸出發(fā)電功率的精度,加快預(yù)測(cè)速度的目的。
圖1 BP神經(jīng)網(wǎng)絡(luò)發(fā)電量預(yù)測(cè)值與實(shí)際值誤差曲線
經(jīng)過(guò)大量對(duì)比發(fā)現(xiàn),在光伏功率預(yù)測(cè)中,BP 神經(jīng)網(wǎng)絡(luò)的自適應(yīng)能力和容錯(cuò)能力非常突出,但其預(yù)測(cè)精度要依賴于大量的輸入樣本,如果數(shù)據(jù)不足,預(yù)測(cè)精度的收斂速度將極大降低,此外多重?cái)?shù)據(jù)和擴(kuò)展常數(shù)等系列參數(shù)不能同時(shí)進(jìn)行計(jì)算,這也切斷了算法的一致性。因此,本文還采納了其他算法進(jìn)行優(yōu)化,最終選擇了遺傳算法和BP 神經(jīng)網(wǎng)絡(luò)的交叉混合算法。
遺傳算法是一種隨機(jī)選擇優(yōu)秀個(gè)體并迭代求解停產(chǎn)生物個(gè)體遺傳機(jī)制的搜索算法。遺傳算法自出現(xiàn)以來(lái),由于其優(yōu)良的特性,在許多場(chǎng)景中得到了廣泛的應(yīng)用。遺傳算法對(duì)向量化空間中的所有解進(jìn)行重復(fù)選擇、交換和變異操作,以概率方式執(zhí)行優(yōu)化步驟,并迭代獲得全局最優(yōu)解。
遺傳算法是一種隨機(jī)選擇優(yōu)秀個(gè)體并迭代求解停產(chǎn)生物個(gè)體遺傳機(jī)制的搜索算法。遺傳算法自出現(xiàn)以來(lái),由于其優(yōu)良的特性,在許多場(chǎng)景中得到了廣泛的應(yīng)用。遺傳算法對(duì)向量化空間中的所有解進(jìn)行重復(fù)選擇、交換和變異操作,以概率方式執(zhí)行優(yōu)化步驟,并迭代獲得全局最優(yōu)解。遺傳算法的結(jié)構(gòu)如下。
(1)對(duì)染色體進(jìn)行編碼。將字符串類似于生物基因中的染色體,通過(guò)二進(jìn)制編碼等編碼機(jī)制將樣本轉(zhuǎn)換為特定排列的數(shù)據(jù)字符串。
(2)構(gòu)建適應(yīng)度函數(shù)。反映在遺傳算法中,并成為判斷樣本數(shù)據(jù)字符串優(yōu)劣的基礎(chǔ)。
(4)適當(dāng)考慮其他影響因素。比如種群總數(shù)、交叉概率K。以及變異概率Km。
本文提出了一種新算法,該算法讓交叉和變異概率進(jìn)行自適應(yīng)計(jì)算??梢赃_(dá)到根據(jù)適應(yīng)度值來(lái)對(duì)交叉和變異概率進(jìn)行進(jìn)一步優(yōu)算,并且在解空間中搜索最優(yōu)解的時(shí)間最大程度進(jìn)行縮小。改進(jìn)后的計(jì)算方法如下:
公式中f為經(jīng)算法后的適應(yīng)度,f'為交叉操作后的適應(yīng)度值;favg為適應(yīng)度的平均值;fmax為種群的最大適應(yīng)度值。
采用改進(jìn)的遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型。步驟如下。
(1)首先初始化網(wǎng)絡(luò)參數(shù)并歸一化訓(xùn)練樣本。
(2)采用遺傳算法對(duì)網(wǎng)絡(luò)的權(quán)值、閾值和擴(kuò)展常數(shù)進(jìn)行編碼。
(3)通過(guò)BP 神經(jīng)網(wǎng)絡(luò)的輸入層輸入樣本數(shù)據(jù),計(jì)算其適應(yīng)度函數(shù)值。
(4)通過(guò)適應(yīng)度值對(duì)種群中的個(gè)體進(jìn)行評(píng)價(jià)。適應(yīng)值越大,個(gè)體表現(xiàn)越好,繁殖機(jī)會(huì)越多;反之,表現(xiàn)差,遺傳給后代的概率更小。
(5)生成新的種群個(gè)體并判斷適應(yīng)度。如果誤差精度滿足要求,可以直接輸出網(wǎng)絡(luò)的模型。如果誤差范圍在需求之外,繼續(xù)下一步。
(6)判斷算法是否達(dá)到設(shè)定的迭代次數(shù)或進(jìn)化代數(shù)上限。如果結(jié)果為是,則也直接輸出BP 神經(jīng)網(wǎng)絡(luò)的最終模型。如果結(jié)果為否,則對(duì)算子進(jìn)行選擇、交叉、變異等一系列操作,產(chǎn)生連接權(quán)值、閾值等更好的個(gè)體作為神經(jīng)網(wǎng)絡(luò)的輸入。
綜上可以得知,文章將遺傳算法與BP 神經(jīng)網(wǎng)絡(luò)相結(jié)合,形成遺傳神經(jīng)網(wǎng)絡(luò)對(duì)風(fēng)電場(chǎng)輸出功率進(jìn)行預(yù)測(cè),通過(guò)遺傳算法的尋優(yōu)能力優(yōu)化神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,取得了優(yōu)于單一BP 神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果。