📄 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 + -