⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bp_year.m

📁 用BP算法做的对流量进行预测的程序
💻 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 + -