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