1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52al5lt
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
ESN是Jaeger于2001年提出一种新型递归神经网络,ESN一经提出便成为学术界的热点,并被大量地应用到各种不同的领域中,包括动态模式分类、机器人控制、对象跟踪核运动目标检测、事件监测等,尤其是在时间序列预测问题上,取得了较为突出的贡献。
使用RBF网络,对ESN得到的W权值进行迭代跟新,我这里,使用的方法为是将RBF网络构架整合到ESN中,使得ESN的权值输出为非线性模型,从而提升性能。
4.部分源码
%lorenz_series
sequenceLength = 2100;
load data.mat
%每个变量需提取的数目
ext = 2;
inputSequence = zeros(2098,2*ext);
outputSequence = zeros(2098,1) ;
for i=ext+1:2100
outputSequence(i-ext,1)=lorenz_series(i,1);
for j=1:ext
inputSequence(i-ext,j)=lorenz_series(i-j,1);
end
Ystart=ext+1;
Yend=2*ext;
for k=Ystart:Yend
neednum=k-ext;
inputSequence(i-ext,k)=lorenz_series(i-neednum,2);
end
end
%ESN
%split the data into train and test
train_fraction = 0.5 ; % use 50% in training and 50% in testing
[trainInputSequence, testInputSequence] = split_train_test(inputSequence,train_fraction);
[trainOutputSequence,testOutputSequence] = split_train_test(outputSequence,train_fraction);
%generate an esn
nInputUnits = 4;
nInternalUnits = 100;
nOutputUnits = 1;
esn = generate_esn(nInputUnits,nInternalUnits,nOutputUnits, ...
'spectralRadius',0.9,...
'inputScaling',[0.1;0.1;0.1;0.1],...
'inputShift',[0;0;0;0],...
'teacherScaling',0.3,...
'teacherShift',-0.2,...
'feedbackScaling',0,...
'type', 'plain_esn');
esn.internalWeights = esn.spectralRadius * esn.internalWeights_UnitSR;
%train the ESN
nForgetPoints = 100 ; % discard the first 100 points
[trainedEsn,stateMatrix] = train_esn(trainInputSequence, trainOutputSequence, esn, nForgetPoints) ;
predictedTrainOutput = test_esn(trainInputSequence, trainedEsn, nForgetPoints);
predictedTestOutput = test_esn(testInputSequence, trainedEsn, nForgetPoints) ;
nPlotPoints = length(predictedTestOutput);
05_024_m