基于麻雀搜索算法优化的Elman神经网络数据预测 - 附代码
基于麻雀搜索算法優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè) - 附代碼
文章目錄
- 基于麻雀搜索算法優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè) - 附代碼
- 1.Elman 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
- 2.Elman 神經(jīng)用絡(luò)學(xué)習(xí)過(guò)程
- 3.電力負(fù)荷預(yù)測(cè)概述
- 3.1 模型建立
- 4.基于麻雀搜索優(yōu)化的Elman網(wǎng)絡(luò)
- 5.測(cè)試結(jié)果
- 6.參考文獻(xiàn)
- 7.Matlab代碼
摘要:針對(duì)Elman神經(jīng)網(wǎng)絡(luò),初始權(quán)值閾值盲目隨機(jī)性的缺點(diǎn)。采用麻雀搜索算法對(duì)ELman的閾值和權(quán)值進(jìn)行優(yōu)化。利用電力負(fù)荷預(yù)測(cè)模型進(jìn)行測(cè)試,結(jié)果表明改進(jìn)后的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)性能更佳。
1.Elman 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
Elman 型神經(jīng)網(wǎng)絡(luò)一般分為四層:輸入層、隱含層(中間層)、承接層和輸出層 。 如圖 1所示。輸入層、隱含層、輸出層的連接類(lèi)似于前饋式網(wǎng)絡(luò) ,輸入層的單元僅起信號(hào)傳輸作用,輸出層單元起線性加權(quán)作用。隱含層單元的傳遞函數(shù)可采用線性或非線性函數(shù),承接層又稱(chēng)上 下文層或狀態(tài)層,它用來(lái)記憶隱含層單元前一時(shí)刻的輸出值并返回給網(wǎng)絡(luò)的輸入 , 可以認(rèn)為是 一個(gè)一步延時(shí)算子。
Elman 神經(jīng)網(wǎng)絡(luò)的特點(diǎn)是隱含層的輸出通過(guò)承接層的延遲與存儲(chǔ),自聯(lián)到隱含層的輸入。 這種自聯(lián)方式使其對(duì)歷史狀態(tài)的數(shù)據(jù)具有敏感性,內(nèi)部反饋網(wǎng)絡(luò)的加入增強(qiáng)了網(wǎng)絡(luò)本身處理動(dòng)態(tài)信息的能力 ,從而達(dá)到動(dòng)態(tài)建模的目的。此外, Elman 神經(jīng)網(wǎng)絡(luò)能夠以任意精度逼近任意非線性映射,可以不考慮外部噪聲對(duì)系統(tǒng)影響的具體形式,如果給出系統(tǒng)的輸入輸出數(shù)據(jù)對(duì) , 就可以對(duì)系統(tǒng)進(jìn)行建模 。
圖1.Elman網(wǎng)絡(luò)結(jié)構(gòu)2.Elman 神經(jīng)用絡(luò)學(xué)習(xí)過(guò)程
以圖1為例 , Elman 網(wǎng)絡(luò)的非線性狀態(tài)空間表達(dá)式為 :
y(k)=g(w3x(k))(1)y(k) = g(w^3x(k)) \tag{1} y(k)=g(w3x(k))(1)
x(k)=f(w1xc(k)+w2(u(k?1)))(2)x(k)=f(w^1x_c(k)+w^2(u(k-1)))\tag{2} x(k)=f(w1xc?(k)+w2(u(k?1)))(2)
xc(k)=x(k?1)(3)x_c(k)=x(k-1)\tag{3} xc?(k)=x(k?1)(3)
式中, yyy 為 mmm 維輸出結(jié)點(diǎn)向量 ; xxx 為 nnn 維中間層結(jié)點(diǎn)單元向量;uuu 為 rrr 維輸入向量; xcx_cxc?為 nnn 維反饋狀態(tài)向量; w3w^3w3 為中間層到輸出層連接權(quán)值; w2w^2w2為輸入層到中間層連接權(quán)值; w1w^1w1為承接層到中間層的連接權(quán)值;g(?)g(*)g(?)為輸出神經(jīng)元的傳遞函數(shù),是中間層輸出的線性組合; f(?)f(*)f(?)為中間層神經(jīng)元的傳遞函數(shù),常采用 SSS 函數(shù) 。
Elman 神經(jīng)網(wǎng)絡(luò)也采用 BP 算法進(jìn)行權(quán)值修正,學(xué)習(xí)指標(biāo)函數(shù)采用誤差平方和函數(shù)。
E(w)=∑k=1n(yk(w)?yk′(w))2(4)E(w)=\sum_{k=1}^n(y_k(w)-y'_k(w))^2\tag{4} E(w)=k=1∑n?(yk?(w)?yk′?(w))2(4)
3.電力負(fù)荷預(yù)測(cè)概述
電力系統(tǒng)由電力網(wǎng)、電力用戶共同組成,其任務(wù)是給廣大用戶不間斷地提供經(jīng)濟(jì)、可靠、符 質(zhì)量標(biāo)準(zhǔn)的電能,滿足各類(lèi)負(fù)荷的需求,為社會(huì)發(fā)展提供動(dòng)力。由于電力的生產(chǎn)與使用具有特殊性,即電能難以大量?jī)?chǔ)存,而且各類(lèi)用戶對(duì)電力的需求是時(shí)刻變化的,這就要求系統(tǒng)發(fā)電出力應(yīng)隨時(shí)與系統(tǒng)負(fù)荷的變化動(dòng)態(tài)平衡,即系統(tǒng)要最大限度地發(fā)揮出設(shè)備能力,使整個(gè)系統(tǒng)保 持穩(wěn)定且高效地運(yùn)行,以滿足用戶的需求 。 否則,就會(huì)影響供用電的質(zhì)量,甚至危及系統(tǒng)的安全 與穩(wěn)定 。 因此,電力系統(tǒng)負(fù)荷預(yù)測(cè)技術(shù)發(fā)展了起來(lái),并且是這一切得以順利進(jìn)行的前提和基礎(chǔ)。負(fù)荷預(yù)測(cè)的核心問(wèn)題是預(yù)測(cè)的技術(shù)問(wèn)題,或者說(shuō)是預(yù)測(cè)的數(shù)學(xué)模型。傳統(tǒng)的數(shù)學(xué)模型是用現(xiàn)成的數(shù)學(xué)表達(dá)式加以描述,具有計(jì)算量小、速度快的優(yōu)點(diǎn),但同時(shí)也存在很多的缺陷和局限性,比如不具備自學(xué)習(xí)、自適應(yīng)能力、預(yù)測(cè)系統(tǒng)的魯棒性沒(méi)有保障等。特別是隨著我國(guó)經(jīng)濟(jì) 的發(fā)展,電力系統(tǒng)的結(jié)胸日趨復(fù)雜,電力負(fù)荷變化的非線性、時(shí)變性和不確定性的特點(diǎn)更加明 顯,很難建立一個(gè)合適的數(shù)學(xué)模型來(lái)清晰地表達(dá)負(fù)荷 和影響負(fù)荷的變量之間的 關(guān)系。而基于神經(jīng)網(wǎng)絡(luò)的非數(shù)學(xué)模型預(yù)測(cè)法,為解決數(shù)學(xué)模型法的不足提供了新的思路 。
3.1 模型建立
利用人工神經(jīng)網(wǎng)絡(luò)對(duì)電力系統(tǒng)負(fù)荷進(jìn)行預(yù)測(cè),實(shí)際上是利用人工神經(jīng)網(wǎng)絡(luò)可以以任意精度逼近任一非線性函數(shù)的特性及通過(guò)學(xué)習(xí)歷史數(shù)據(jù)建模的優(yōu)點(diǎn)。而在各種人工神經(jīng)網(wǎng)絡(luò)中, 反饋式神經(jīng)網(wǎng)絡(luò)又因?yàn)槠渚哂休斎胙舆t,進(jìn)而適合應(yīng)用于電力系統(tǒng)負(fù)荷預(yù)測(cè)。根據(jù)負(fù)荷的歷史數(shù)據(jù),選定反饋神經(jīng)網(wǎng)絡(luò)的輸入、輸出節(jié)點(diǎn),來(lái)反映電力系統(tǒng)負(fù)荷運(yùn)行的內(nèi)在規(guī)律,從而達(dá)到預(yù)測(cè)未來(lái)時(shí)段負(fù)荷的目的。因此,用人工神經(jīng)網(wǎng)絡(luò)對(duì)電力系統(tǒng)負(fù)荷進(jìn)行預(yù)測(cè) ,首要的問(wèn)題是確定神經(jīng)網(wǎng)絡(luò)的輸入、輸出節(jié)點(diǎn),使其能反映電力負(fù)荷的運(yùn)行規(guī)律。
一般來(lái)說(shuō),電力系統(tǒng)的負(fù)荷高峰通常出現(xiàn)在每天的 9~ 19 時(shí)之間 ,本案對(duì)每天上午的逐時(shí)負(fù)荷進(jìn)行預(yù)測(cè) ,即預(yù)測(cè)每天 9 ~ 11 時(shí)共 3 小時(shí)的負(fù)荷數(shù)據(jù)。電力系統(tǒng)負(fù)荷數(shù)據(jù)如下表所列,表中數(shù)據(jù)為真實(shí)數(shù)據(jù),已經(jīng)經(jīng)過(guò)歸 一化 。
| 2008.10.10 | 0.1291 | 0.4842 | 0.7976 |
| 2008.10.11 | 0.1084 | 0.4579 | 0.8187 |
| 2008.10.12 | 0.1828 | 0.7977 | 0.743 |
| 2008.10.13 | 0.122 | 0.5468 | 0.8048 |
| 2008.10.14 | 0.113 | 0.3636 | 0.814 |
| 2008.10.15 | 0.1719 | 0.6011 | 0.754 |
| 2008.10.16 | 0.1237 | 0.4425 | 0.8031 |
| 2008.10.17 | 0.1721 | 0.6152 | 0.7626 |
| 2008.10.18 | 0.1432 | 0.5845 | 0.7942 |
利用前 8 天的數(shù)據(jù)作為網(wǎng)絡(luò)的訓(xùn)練樣本,每 3 天的負(fù)荷作為輸入向量,第 4 天的負(fù)荷作為目標(biāo)向量。這樣可以得到 5 組訓(xùn)練樣本。第 9 天的數(shù)據(jù)作為網(wǎng)絡(luò)的測(cè)試樣本,驗(yàn)證網(wǎng)絡(luò)能否合理地預(yù)測(cè)出當(dāng)天的負(fù)荷數(shù)據(jù) 。
4.基于麻雀搜索優(yōu)化的Elman網(wǎng)絡(luò)
麻雀搜索算法的具體原理參考博客:https://blog.csdn.net/u011835903/article/details/108830958。
利用麻雀搜索算法對(duì)Elman網(wǎng)絡(luò)的初始權(quán)值和閾值進(jìn)行優(yōu)化。適應(yīng)度函數(shù)設(shè)計(jì)為測(cè)試集的絕對(duì)誤差和:
fitness=∑i=1n∣predictn?TrueValuen∣(5)fitness = \sum_{i=1}^n|predict_n - TrueValue_n| \tag{5} fitness=i=1∑n?∣predictn??TrueValuen?∣(5)
5.測(cè)試結(jié)果
麻雀參數(shù)設(shè)置如下:
%% 網(wǎng)絡(luò)相關(guān)參數(shù)設(shè)定 hiddNum = 18;%隱含層個(gè)數(shù) R = size(p_train,1);%輸入數(shù)據(jù)每組的維度 Q = size(t_train,1);%輸出數(shù)據(jù)的維度 threshold = [0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];%每組數(shù)據(jù)對(duì)應(yīng)維度的最小(0)和最大值(1);%% 麻雀相關(guān)參數(shù)設(shè)定 %% 定義麻雀優(yōu)化參數(shù) pop=20; %種群數(shù)量 Max_iteration=20; % 設(shè)定最大迭代次數(shù) dim = hiddNum*R + hiddNum + Q + hiddNum*hiddNum + Q*hiddNum;%維度,即權(quán)值與閾值的個(gè)數(shù),承接層個(gè)數(shù) lb = -5.*ones(1,dim);%下邊界 ub = 5.*ones(1,dim);%上邊界 fobj = @(x) fun(x,hiddNum,R,Q,threshold,p_train,t_train,p_test,t_test);原始Elman的絕對(duì)誤差和:0.19782
SSA-Elman的絕對(duì)誤差和:0.015998
從結(jié)果來(lái)看,3個(gè)時(shí)刻點(diǎn),SSA-Elman均比原始結(jié)果Elman好,誤差更小。
由于上述數(shù)據(jù)有限,大家可以用自己的數(shù)據(jù)進(jìn)行測(cè)試。
6.參考文獻(xiàn)
書(shū)籍《MATLAB神經(jīng)網(wǎng)絡(luò)43個(gè)案例分析》
7.Matlab代碼
基于麻雀搜索算法優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè)?
基于灰狼優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè)
基于遺傳算法優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè)
基于鯨魚(yú)優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè)
基于粒子群優(yōu)化的Elman神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)預(yù)測(cè)
個(gè)人資料介紹
總結(jié)
以上是生活随笔為你收集整理的基于麻雀搜索算法优化的Elman神经网络数据预测 - 附代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: phpRedisAdmin 安装
- 下一篇: 什么是 LOW-CODE ?