📄 bp_year.m
字号:
function [DataFore,DataReal,error]=BP_year(year,num,n)
% bp神经网络年径流预报
% year 待预报年
% num 历史样本容量大小
% n 隐含层神经元个数
if (year-num-1)<1984
input('历史样本容量过大,请减小样本长度!');
return
end
load D2
load Qx
%取数据模块,以年径流量为单位,包括样本输入、输出数据,其中训练样本容量为num
DataInput=[];DataRain=[];DataFlow=[];DataTarget=[];
for i=1:num
sumRain=sum(D2(find(D2(:,2)==(year-num-2+i)),5));
DataRain=[DataRain,sumRain]; %取预报因子降雨样本
sumFlow=sum(Qx(find(Qx(:,2)==(year-num-2+i)),5));
DataFlow=[DataFlow,sumFlow]; %取预报因子流量样本
end
DataInput=[DataRain;DataFlow];
for j=1:num
test_sumFlow=sum(Qx(find(Qx(:,2)==(year-num-1+j)),5));
DataTarget=[DataTarget,test_sumFlow];
end
%训练网络
net=newff(minmax(DataInput),[n,1],{'logsig','purelin'});
net.IW{1,1}=ones(n,2)/10;
net.b{1}=ones(n,1)/10;
net.LW{2,1}=ones(1,n)/10;
net.b{2}=1/10;
net.trainParam.show=100;
net.trainParam.lr=0.0001;
net.trainParam.epochs=50;
net.trainParam.goal=0.1;
net=train(net,DataInput,DataTarget);
DataTest=[];
DataTest=[sum(D2(find(D2(:,2)==(year-1)),5));sum(Qx(find(Qx(:,2)==(year-1)),5))];
DataFore=sim(net,DataTest)
DataReal=sum(Qx(find(Qx(:,2)==year),5))
error=abs(DataFore-DataReal)/DataReal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -