📄 bpjianmo.m
字号:
close all
clear
echo on
clc
%BP建模
%原始数据归一化
m_data=[114047 31645.1 18022.1 1659.8 16210 469 38728;
112884 31685 19497.2 1739.8 15260 580 40731;
108845 30351.5 20912.5 1775.8 22710 793 37911;
110933 30467.9 22950 1930.6 23660 832 39151;
111268 30870 24836 1999.3 20390 909 40298;
110123 31455.7 26575 2141.5 23940 1033 39408;
112205 32440.5 28067 2357.1 24450 1126 40755;
113466 33336.4 28707.7 2590.3 17820 1258 44624;
112314 34186.3 29388.6 2805.1 27810 1497 43529;
110560 34037 30308.4 2930.2 25900 1644 44265.8;
110509 33258.2 31816.6 3151.9 23130 1950 45648.8;
109544 32690 33744 3317.9 31380 2308 44510;
110060 32334.5 36118.1 3593.7 22267 2774 46662;
112548 32260.4 38546.9 3827.8 21233 3605 50453.5;
112912 32434.9 42015.6 3980.7 30309 3897 49417;
113787 32626.4 45208 4083.7 25181 3971 51229.5;
113161 32911.8 48996.1 4124.3 26731 4046 50839;
108463 32997.5 52573.6 4146.4 34374 4677 46218];
%定义网络输入p和期望输出t
pause
clc
p1=m_data(:,1:6);
t1=m_data(:,7);
p=p1';t=t1';
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)
%设置网络隐单元的神经元数(5~30验证后15个最好)
n=15;
%建立相应的BP网络
pause
clc
net=newff(minmax(pn),[n,1],{'tansig','purelin'},'traingdm');
%训练网络
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=2000;
net.trainParam.goal=1e-3;
pause
clc
%调用TRAINGDM算法训练BP网络
net=train(net,pn,tn);
%对BP网络进行仿真
A=sim(net,pn)
E=A-tn;
M=sse(E)
N=mse(E)
pause
clc
%绘出训练后的仿真结果
close all;
plot(pn,A,pn,tn,'+')
legend('实际值','估计值');
title('训练后的BP网络模型输出拟合曲线');
xlabel('输入样本点');
ylabel('粮食总产量');
axis([-2,2,-2,2]);
echo off
p2=[106080 32451 55172.1 4253.8 31793 4884];
p2=p2';
p2n=tramnmx(p2,minp,maxp);
a2n=sim(net,p2n);
a2=postmnmx(a2n,mint,maxt)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -