【预测模型】基于天牛须算法优化ELman神经网络实现数据预测matlab代码
?1 簡介
Elman 神經網絡是一種局部遞歸神經網絡,其結構包括輸入層、隱含層、承接層和輸出層,見圖 1。輸入層單元起數據輸入作用; 輸出層單元作線性加權操作; 隱含層單元的傳遞函數可采用線性或非線性函數。承接層單元用來記憶和儲存隱含層單元前一時刻的輸出值。承接層與隱含層的特殊連接方式使該網絡模型對時序動態數據具有敏感性,因此使得Elman神經網絡處理復雜時變數據的能力得到了提升。
2 部分代碼
```matlab
clear all
clc
%% bas優化elman網絡
%% 自變量個數
x_number=49;
%% 因變量個數
y_number=1;
%% 網絡節點個數
inputnum=x_number; % 輸入層
hiddennum=50; % 隱含層
outputnum=y_number; % 輸出層
iterations=2000; % 迭代次數
%% 導入數據
[data_train,~,raw_train]=xlsread('train.xlsx');
[data_predict,~,raw_predict]=xlsread('predict.xlsx');
%% 自變量
x_train=data_train(2:366,5:end);
x_test=data_train(367:397,5:end);
%% 因變量
y_train=data_train(367:731,6);
y_test=data_predict(2:end,6);
%% 自變量歸一化
[x,xn]=mapminmax([x_train;x_test]',-1,1);
trainx=x(:,1:size(x_train,1));
testx=x(:,size(x_train,1)+1:end);
%% 因變量歸一化
[trainy,yn]=mapminmax(y_train',-1,1);
%% 維度
global dim
dim=inputnum*hiddennum+hiddennum*hiddennum+outputnum*hiddennum+hiddennum*outputnum+outputnum;
% 用訓練的神經網絡對測試組數據進行訓練
nh=sim(net,testx);
% 網絡輸出反歸一化
BPnh=mapminmax('reverse',nh,yn);
%% 預測值
predict=BPnh';
%% 真實值
real=y_test;
%% 誤差
err=(predict-real)./real;
figure(1)
plot(fbest_store)
%% 繪圖
figure(2)
subplot(121)
plot(predict,'k-*')
hold on
plot(real,'b--o')
legend('預測值','真實值')
title(['BAS優化ELman神經網絡預測誤差:',num2str(var(err))])
subplot(122)
plot(err,'o-')
title('BAS優化ELman神經網絡預測誤差')
```
3 仿真結果
4 參考文獻
[1]胡程磊等. "一種基于天牛須優化算法和神經網絡的建筑能耗預測方法.".?
?
總結
以上是生活随笔為你收集整理的【预测模型】基于天牛须算法优化ELman神经网络实现数据预测matlab代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AVR ASF4库函数学习笔记】二、G
- 下一篇: 第16章:霍夫变换