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

📄 bp.m

📁 bp神经网络算法用于拟合和预测
💻 M
字号:
%bpann.m
%BP人工神经网络算法程序
clc
%原始数据
%公路客运量(万人)
glkyl=[12815 15543 19326 22864 26150 28468 30882 39375 45759 49589 52560 48726 51083 56495 62767 83606 92090 101370 107317 108654 111847 112872 116997 126007 128980];
%公路货运量(万吨)
glhyl=[2690 2998 3012 3042 3616 3728 3988 9397 17680 19426 24128 24354 22879 24162 28957 36439 40593 45052 47400 45224 45338 45815 47151 55705 63532];
%市区人数(万人)
sqrs=[47.8 52.2 59 63.1 68.5 70 72 79.2 84.7 88.6 91 93 97.5 103.7 110 123 129.6 132 137.6 141 145 155.5 157 163.1 165.9];
%市区机动车数(万辆)
sqjdcs=[1.2 1.5 1.7 1.8 2.1 2.7 2.9	3.2	3.4	3.7	4.3	4.4	4.5	4.7	5 5.2 5.4 5.7 5.9 6.2 6.3 6.7 7.2 7.5 7.9];
%市区公路面积(万平方公里)
sqglmj=[0.2 0.25 0.25 0.3 0.45 0.5 0.5 0.7 0.7 0.75 0.8 0.8 0.85 1.1 1.25 1.3 1.3 1.5 1.55 1.75 1.8 1.8 2.05 2.1 2.3];

b=[sqrs;sqjdcs;sqglmj];  %输入数据矩阵
c=[glkyl;glhyl];         %输出数据矩阵

%bp神经模拟
[pn,minp,maxp,tn,mint,maxt]=premnmx(b,c);  % 对于输入矩阵b和输出矩阵c进行归一化处理
dx=[-1,1;-1,1;-1,1];  %归一化处理后最小值为-1,最大值为1

net=newff(dx,[3,7,2],{'tansig','tansig','purelin'},'traingd');  %建立模型,并采用基本梯度下降法训练.
net.trainParam.show=100;              %100轮回显示一次结果
net.trainParam.Lr=0.05;               %学习速度为0.05
net.trainParam.epochs=1000;         %最大训练轮回为100000次
net.trainParam.goal=1e-2;             %均方误差为0.0001
net=train(net,pn,tn);    %开始训练,其中pn,tn分别为输入输出样本
                         % 训练时应该用归一化之后的数据

an=sim(net,pn);          %用训练好的模型进行仿真
a=postmnmx(an,mint,maxt); % 训练结束后还应对网络的输出an=sim(net,pn)作如下处理

%绘图,对比模拟结果
x=1980:2004;
newk=a(1,:);
newh=a(2,:);
subplot(2,1,1);plot(x,newk,'b--+',x,glkyl,'r-o')
subplot(2,1,2);plot(x,newh,'b--+',x,glhyl,'r-o')

% 当用训练好的网络对新数据pnew进行预测时,也应作相应的处理:
% pnewn=tramnmx(pnew,minp,maxp);
% anewn=sim(net,pnewn);
% anew=postmnmx(anew,mint,maxt);
pnew=[170.67 175.7
7.927 8.1949
2.1955 2.2818];
pnewn=tramnmx(pnew,minp,maxp);
anewn=sim(net,pnewn);
anew=postmnmx(anewn,mint,maxt);











⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -