基于麻雀搜索算法优化的Elman神经网络数据预测 - 附代码
基于麻雀搜索算法優化的Elman神經網絡數據預測 - 附代碼
文章目錄
- 基于麻雀搜索算法優化的Elman神經網絡數據預測 - 附代碼
- 1.Elman 神經網絡結構
- 2.Elman 神經用絡學習過程
- 3.電力負荷預測概述
- 3.1 模型建立
- 4.基于麻雀搜索優化的Elman網絡
- 5.測試結果
- 6.參考文獻
- 7.Matlab代碼
摘要:針對Elman神經網絡,初始權值閾值盲目隨機性的缺點。采用麻雀搜索算法對ELman的閾值和權值進行優化。利用電力負荷預測模型進行測試,結果表明改進后的神經網絡預測性能更佳。
1.Elman 神經網絡結構
Elman 型神經網絡一般分為四層:輸入層、隱含層(中間層)、承接層和輸出層 。 如圖 1所示。輸入層、隱含層、輸出層的連接類似于前饋式網絡 ,輸入層的單元僅起信號傳輸作用,輸出層單元起線性加權作用。隱含層單元的傳遞函數可采用線性或非線性函數,承接層又稱上 下文層或狀態層,它用來記憶隱含層單元前一時刻的輸出值并返回給網絡的輸入 , 可以認為是 一個一步延時算子。
Elman 神經網絡的特點是隱含層的輸出通過承接層的延遲與存儲,自聯到隱含層的輸入。 這種自聯方式使其對歷史狀態的數據具有敏感性,內部反饋網絡的加入增強了網絡本身處理動態信息的能力 ,從而達到動態建模的目的。此外, Elman 神經網絡能夠以任意精度逼近任意非線性映射,可以不考慮外部噪聲對系統影響的具體形式,如果給出系統的輸入輸出數據對 , 就可以對系統進行建模 。
圖1.Elman網絡結構2.Elman 神經用絡學習過程
以圖1為例 , Elman 網絡的非線性狀態空間表達式為 :
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 維輸出結點向量 ; xxx 為 nnn 維中間層結點單元向量;uuu 為 rrr 維輸入向量; xcx_cxc?為 nnn 維反饋狀態向量; w3w^3w3 為中間層到輸出層連接權值; w2w^2w2為輸入層到中間層連接權值; w1w^1w1為承接層到中間層的連接權值;g(?)g(*)g(?)為輸出神經元的傳遞函數,是中間層輸出的線性組合; f(?)f(*)f(?)為中間層神經元的傳遞函數,常采用 SSS 函數 。
Elman 神經網絡也采用 BP 算法進行權值修正,學習指標函數采用誤差平方和函數。
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.電力負荷預測概述
電力系統由電力網、電力用戶共同組成,其任務是給廣大用戶不間斷地提供經濟、可靠、符 質量標準的電能,滿足各類負荷的需求,為社會發展提供動力。由于電力的生產與使用具有特殊性,即電能難以大量儲存,而且各類用戶對電力的需求是時刻變化的,這就要求系統發電出力應隨時與系統負荷的變化動態平衡,即系統要最大限度地發揮出設備能力,使整個系統保 持穩定且高效地運行,以滿足用戶的需求 。 否則,就會影響供用電的質量,甚至危及系統的安全 與穩定 。 因此,電力系統負荷預測技術發展了起來,并且是這一切得以順利進行的前提和基礎。負荷預測的核心問題是預測的技術問題,或者說是預測的數學模型。傳統的數學模型是用現成的數學表達式加以描述,具有計算量小、速度快的優點,但同時也存在很多的缺陷和局限性,比如不具備自學習、自適應能力、預測系統的魯棒性沒有保障等。特別是隨著我國經濟 的發展,電力系統的結胸日趨復雜,電力負荷變化的非線性、時變性和不確定性的特點更加明 顯,很難建立一個合適的數學模型來清晰地表達負荷 和影響負荷的變量之間的 關系。而基于神經網絡的非數學模型預測法,為解決數學模型法的不足提供了新的思路 。
3.1 模型建立
利用人工神經網絡對電力系統負荷進行預測,實際上是利用人工神經網絡可以以任意精度逼近任一非線性函數的特性及通過學習歷史數據建模的優點。而在各種人工神經網絡中, 反饋式神經網絡又因為其具有輸入延遲,進而適合應用于電力系統負荷預測。根據負荷的歷史數據,選定反饋神經網絡的輸入、輸出節點,來反映電力系統負荷運行的內在規律,從而達到預測未來時段負荷的目的。因此,用人工神經網絡對電力系統負荷進行預測 ,首要的問題是確定神經網絡的輸入、輸出節點,使其能反映電力負荷的運行規律。
一般來說,電力系統的負荷高峰通常出現在每天的 9~ 19 時之間 ,本案對每天上午的逐時負荷進行預測 ,即預測每天 9 ~ 11 時共 3 小時的負荷數據。電力系統負荷數據如下表所列,表中數據為真實數據,已經經過歸 一化 。
| 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 天的數據作為網絡的訓練樣本,每 3 天的負荷作為輸入向量,第 4 天的負荷作為目標向量。這樣可以得到 5 組訓練樣本。第 9 天的數據作為網絡的測試樣本,驗證網絡能否合理地預測出當天的負荷數據 。
4.基于麻雀搜索優化的Elman網絡
麻雀搜索算法的具體原理參考博客:https://blog.csdn.net/u011835903/article/details/108830958。
利用麻雀搜索算法對Elman網絡的初始權值和閾值進行優化。適應度函數設計為測試集的絕對誤差和:
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.測試結果
麻雀參數設置如下:
%% 網絡相關參數設定 hiddNum = 18;%隱含層個數 R = size(p_train,1);%輸入數據每組的維度 Q = size(t_train,1);%輸出數據的維度 threshold = [0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];%每組數據對應維度的最小(0)和最大值(1);%% 麻雀相關參數設定 %% 定義麻雀優化參數 pop=20; %種群數量 Max_iteration=20; % 設定最大迭代次數 dim = hiddNum*R + hiddNum + Q + hiddNum*hiddNum + Q*hiddNum;%維度,即權值與閾值的個數,承接層個數 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的絕對誤差和:0.19782
SSA-Elman的絕對誤差和:0.015998
從結果來看,3個時刻點,SSA-Elman均比原始結果Elman好,誤差更小。
由于上述數據有限,大家可以用自己的數據進行測試。
6.參考文獻
書籍《MATLAB神經網絡43個案例分析》
7.Matlab代碼
基于麻雀搜索算法優化的Elman神經網絡數據預測?
基于灰狼優化的Elman神經網絡數據預測
基于遺傳算法優化的Elman神經網絡數據預測
基于鯨魚優化的Elman神經網絡數據預測
基于粒子群優化的Elman神經網絡數據預測
個人資料介紹
總結
以上是生活随笔為你收集整理的基于麻雀搜索算法优化的Elman神经网络数据预测 - 附代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phpRedisAdmin 安装
- 下一篇: 什么是 LOW-CODE ?