📄 车流量的神经网络预测及其优化源代码.txt
字号:
for j=1:8
(j)=(P(j)-min)/(max-min);
end
a1=radbas(dist(w1,P),b1)
a2=purelin(w2*a1,b2)
%----------输出---------------------------
y=a2*(max-min)+min
function y=bp_net2(x)
clf reset
figure(gcf)
colordef(gcf,'white')
% setsize(500,200);
echo on
clc
pause
%-----------------------------------------------
%星期一由东向西的车流量
P=[320 352 311 330 268 295 317 286 ;
352 311 330 268 295 317 286 295 ;
311 330 268 295 317 286 295 310 ;
330 268 295 317 286 295 310 326 ;
268 295 317 286 295 310 326 332 ;
295 317 286 295 310 326 332 361 ;
317 286 295 310 326 332 361 347 ;
286 295 310 326 332 361 347 305 ;
295 310 326 332 361 347 305 287 ;
310 326 332 361 347 305 287 296 ;
326 332 361 347 305 287 296 311 ;
332 361 347 305 287 296 311 287 ;
361 347 305 287 296 311 287 256 ;
347 305 287 296 311 287 256 229 ;
305 287 296 311 287 256 229 184 ;
287 296 311 287 256 229 184 176 ;
296 311 287 256 229 184 176 130 ;
311 287 256 229 184 176 130 157 ;
287 256 229 184 176 130 157 234 ;
256 229 184 176 130 157 234 250 ;
229 184 176 130 157 234 250 267 ;
184 176 130 157 234 250 267 253 ;
176 130 157 234 250 267 253 306 ;
130 157 234 250 267 253 306 347 ;
157 234 250 267 253 306 347 290 ;
234 250 267 253 306 347 290 336 ;
250 267 253 306 347 290 336 229 ;
267 253 306 347 290 336 229 263 ;
253 306 347 290 336 229 263 230 ;
306 347 290 336 229 263 230 257 ;
347 290 336 229 263 230 257 211 ;
290 336 229 263 230 257 211 193 ;
336 229 263 230 257 211 193 201 ;
229 263 230 257 211 193 201 236 ;
263 230 257 211 193 201 236 266 ;
230 257 211 193 201 236 266 347 ;
257 211 193 201 236 266 347 206 ;
211 193 201 236 266 347 206 211 ;
193 201 236 266 347 206 211 217 ;
201 236 266 347 206 211 217 245];
T=[295 310 326 332 361 347 305 287 296 311 287 256 229 184 176 130 157 234 ...
250 267 253 306 347 290 336 229 263 230 257 211 193 201 236 266 347 206 211 217 245 230];
% 归一化以上两个矩阵,车辆范围150~400
t1=length(P);
t2=length(T);
% P=[320 352 311 330 268 295 317 286 ;
% 352 311 330 268 295 317 286 295 ;
% 311 330 268 295 317 286 295 310 ;
% 330 268 295 317 286 295 310 326 ;
% 268 295 317 286 295 310 326 332 ;
% 295 317 286 295 310 326 332 361 ;
% 317 286 295 310 326 332 361 347 ;
% 286 295 310 326 332 361 347 305 ];
% T=[295 310 326 332 361 347 305 287];
% 归一化以上两个矩阵,车辆范围150~400
min=100;max=370;
for i=1:t1
for j=1:8
(i,j)=(P(i,j)-min)/(max-min);
end
T(i)=(T(i)-min)/(max-min);
end
%-----------------------------------------------------------
pause
% clc
% plot(P,T,'+')
% title('Training Vector');
% xlabel('Input Vector P');
% ylabel('Target Vector T');
% pause
%S1=5;
S1=17;%13;%隐层节点个数
S2=2;
[w1,b1,w2,b2]=initff(P',S1,'logsig',T,'purelin')%初始化网络,最多三层
%[w1,b1,w2,b2,w3,b3]=initff(P,S1,'tansig',S2,'purelin');
echo off
k=pickic;
if k==2
% w1=[0.5641;0.8164];
% b1=[-0.3781;0.3062];
% w2=[0.3313 0.9980];
% b2=[-0.1772];
%--------------------------------------------------------------------------
% w1 =[-2.9148 -2.4230 0.9980 -0.1043 4.0517 -1.1342 -2.0680 -2.8672;
% -2.1870 2.5929 2.2296 1.8029 1.8334 3.0653 -3.2251 -0.5993;
% 0.1383 -1.1276 2.1163 -3.8757 0.1253 -0.7250 -3.2350 -4.1476;
% 2.4476 1.6206 -3.8116 2.3761 -0.7474 -0.6544 -3.3655 -2.4777;
% 1.3216 -1.8237 2.9427 4.6835 4.6103 0.3475 -0.1737 0.7022;
% -1.1680 0.0724 4.2842 -1.8907 2.2630 -4.6367 -1.8433 -0.0394;
% 2.6008 -0.5584 3.8152 2.7831 3.7048 0.0270 1.8372 2.8187;
% -3.3917 0.5699 -0.8206 -0.1275 2.1155 -1.6533 4.2094 -2.2037;
% 2.8642 1.8894 2.9636 -3.5422 -0.9770 0.2024 -0.8610 -3.7176;
% 0.5528 -1.9429 0.8362 2.0439 -5.3711 1.7581 3.2693 0.9027;
% 2.0420 2.5877 3.0202 -0.0714 3.1975 -2.3333 -0.8931 2.6273;
% 0.6301 0.5639 -3.6863 -2.2509 -1.2566 -4.5306 0.6834 3.0461;
% -2.0448 3.1168 -2.4001 -1.4638 4.3323 0.2555 0.6471 2.5109;
% -3.0991 3.5891 -2.5356 1.1810 -1.9544 -1.7722 2.2398 -0.4302;
% -2.3152 2.3131 -0.5602 -0.2167 0.2638 2.2067 4.7229 1.7523;
% -2.4264 -1.7909 -0.2938 3.6004 -3.4613 2.0680 3.3052 0.2642;
% -3.1367 0.5526 -0.2915 -3.3255 -4.4388 0.3307 2.3124 1.9883];
% b1=[4.6558;-5.2883;7.2932;5.0376; -7.7717; 2.6141;-11.1633;1.3431;...
% -0.2673;-1.4775;-6.9976;2.9303;-3.3965;1.3468;-5.5469;-0.7790;3.3559];
% w2 =[0.0848 -0.5788 -0.0357 0.4627 0.1203 0.2758 -0.1152...
% -0.1683 -0.1377 0.0547 0.1463 -0.0387 0.0461 -0.0036...
% 0.1398 0.0039 0.1170];
% b2 =-0.3729;
%---------------------------------------------------100
w1=[2.4063 2.7415 1.4561 -2.5735 4.0384 2.3961 -1.8559 0.4239;
-2.7761 -1.3457 0.9658 0.0149 -2.0444 -3.4898 -2.3073 -2.7993;
3.2467 1.6495 4.6956 1.0841 -3.2989 -0.7979 -1.2666 -0.9117;
1.3622 4.2306 0.9504 -3.0748 -2.9399 -1.7217 1.5410 -1.2017;
0.0188 -1.9732 1.7077 -1.7858 1.6021 -3.9084 -3.3716 -1.9279;
-1.2426 -3.4794 2.5151 3.7008 3.7426 -1.4297 -0.9531 -1.2012;
0.0401 2.2170 -4.3445 -2.6141 -1.9640 -0.4439 -2.4358 3.4639;
-2.2584 3.1693 -3.9980 -2.6921 -2.6064 0.4021 0.9890 -1.5112;
-3.0588 2.2151 0.1952 -2.4010 -2.5893 1.3482 1.5322 -3.3741;
-2.6333 -2.3508 2.2585 1.3113 -2.7351 -1.5705 3.5988 1.7061;
-2.3524 3.1016 2.1774 1.1169 -3.2643 0.0554 1.9463 -3.0639;
-1.2864 1.2364 -4.2832 -2.6603 -2.8947 -0.5233 2.6459 3.1057;
0.1316 1.8756 2.2655 4.9274 0.3631 0.3435 3.4166 -2.8535;
-0.9200 1.9676 2.9861 3.0741 -2.7440 1.4456 4.4996 0.1083;
1.4444 0.1330 -1.6620 -5.7574 0.6894 -1.2357 -2.2234 -3.6448;
-3.4055 1.9742 1.7287 -0.7171 -2.9113 2.4279 -0.3615 3.1177;
1.5182 -0.9803 0.9349 -0.9522 1.4335 5.3663 3.1944 -0.4715];
b1=[-5.5205;9.0924;-2.4769;0.6689;6.7549;-2.8945;3.7084;5.9825;4.0662;1.1158;0.4256;1.6425;-7.0904;-5.1974;6.3409;-1.5962;-6.4703];
w2=[0.0656 0.0134 -0.0514 0.0029 -0.0230 -0.1441 0.1241 -0.1129 0.0399 -0.2237 0.0039 -0.2737 -0.2446 0.4762 -0.3628 0.1147 -0.0909];
b2=-0.1783;
%--------------------------------------------------------------------------
end
echo on
df=10;
me=1000;%800;
eg=0.0001;%0.00005
lr=0.01;
tp=[df me eg lr];
[w1,b1,w2,b2,te,tr]=trainlm(w1,b1,'logsig',w2,b2,'purelin',P',T,tp);
% [w1,b1,w2,b2,w3,b3,ep,tr]=trainbp(w1,b1,'tansig',w2,b2,'tansig',w3,b3,'purelin',P,T,tp);
pause
plottr(tr,eg);
pause
p=2;
w1
b1
w2
b2
% w3
% b3
eg
%----------测试-----------------------
P=[286 295 310 326 332 361 347 305;
295 310 326 332 361 347 305 287];
T=287;
for j=1:8
P(j)=(P(j)-min)/(max-min);
end
p=P';
a=simuff(p,w1,b1,'logsig',w2,b2,'purelin')%对网络进行仿真,最多三层
%----------输出---------------------------
y=a*(max-min)+min
% a=sim(p,w1,b1,'tansig',w2,b2,'tansig',w3,b3,'purelin')
echo off
disp('End of DEMOBP6')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -