p=[724.570000000000,739.774223126620,771.489090673942,804.563606600594,839.056060404793,875.027240514377,912.540541418428,951.662075391767,992.460789009143,1035.00858465455]6 a8 d9 [, R/ T! t
t=[724.570000000000,746.620000000000,778.270000000000,800.800000000000,827.750000000000,871.100000000000,912.370000000000,954.280000000000,995.010000000000,1037.20000000000] 6 e' B A' c/ {0 D/ `5 w) L7 `: t [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化4 F2 H, P' F K0 S5 \
# l! c$ H$ f$ I5 Unet=newff(minmax(pn),[9,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP网络 * M" N \5 V# p! E3 N4 unet.trainParam.show=2000; % 训练网络 ; B: B* ^; e2 B% o1 Gnet.trainParam.lr=0.01;- L3 g6 g9 W0 i5 d& w. |/ r
net.trainParam.epochs=10000; ( C* I2 G5 k- a. F0 ]; ]net.trainParam.goal=1e-5;7 K2 Z5 k5 u* o: @( B& m
[net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP网络 3 Q7 h2 L- H+ P: u; A+ I# N5 ?8 G6 n, Y( w! E; M' \
an=sim(net,pn); %对BP网络进行仿真2 }% \% L- a- k9 o& @
a=postmnmx(an,mint,maxt); %还原数据. l/ M) f9 ]5 v3 K( R- T6 F
x=2001:2010; 3 _4 d' ]# i( ]. a }newk=a(1,;8 u3 c) Z% v% S5 B( V( `9 ~: E
plot(x,newk,'r-o',x,t,'b--+') 1 i; r* ]; \; l6 D' E" {legend('网络输出值/万人','实际人口数/万人'); 3 }4 u1 \+ t! Z8 ]$ C) ? h& Axlabel('年份'); W: J/ \/ W( ^8 f1 P+ F
ylabel('人口数'); 5 r- P$ q& D4 @0 k0 c2 mtitle('预测人口数对比表');1 A! @" P1 h i# f/ ^
2 ]2 ~! H& f% M' s
pnew1=[1079.38044723977,1125.65457635540,1173.91252408743,1224.23933874207,1276.72371473226,1331.45814888992,1388.53910347951,1448.06717620014,1510.14727747579,1574.88881534617] ( a: x7 B8 v. t+ _: X i# V; Z( kpnew=pnew18 L0 d$ j0 s( _, A% O4 T) x6 C
pnewn=tramnmx(pnew,minp,maxp);0 F: s# ^! A! [3 p( N' \
anewn=sim(net,pnewn); %对BP网络进行仿真) O0 o9 r8 R5 N. T9 u! V4 f
anew=postmnmx(anewn,mint,maxt); %还原数据, E [0 N" |5 s' C% J% S9 w
y=anew'/ ~2 F, i- B* ]$ _5 d