matlab生成网络流量,BP神经网络 预测网络流量

最近一直在做一个关于用BP神经网络预测网络流量的仿真实验,数据来源比较准确,都是实测出来的数值,在完成编程之后,运行的效果非常的不满意,基本上预测值和真实值相差太大 。有图为证:

我查阅过相关资料,BP在预测这块的效果是比较好的,但是预测出来的效果的确是不尽人意。算法设想的是利用前五天每天每小时的网络流量,来预测第六天每小时的流量,即24小时流量,最近,自己也在不停的查阅相关资料,估计是实验中的样本组合出现问题,根据资料上的说明,是说利用滚动式法来进行预测,即第一天到第五天预测第六天,第二天到第六天预测第七天,但是这样的意思,反映到算法上到底是如何表示呢,而我自己的表示就是:输入值p(:,1)+p(:,2)+p(:,3)+p(:,4)+p(:,5),目标值为p(:,6),P是连续15天每天每小时的流量数值的数组,共15行24列,不知道是不是我的输入值的组合出了问题,导致预测的结果误差如此之大,想请教各位高手们,来帮我看看这个问题,我不胜感激!

324619ae995a043bc12bde7d078becb8.gif

114147lb8zs24pm6e6bcp2.jpg (230.74 KB, 下载次数: 12)

2013-12-13 01:15 上传

那我现在吧程序完整的贴出来,请各位高手们帮我指正哈,主要就是样本训练那块,我的本意是希望利用前三天的流量来预测第四天的流量,但是预测的结果,不太理想,谢谢你们啦哈~p=[1365 1779 1499 1343 1699 1305 1481 1000 1496 6690 2963 5919  3600  4594  4882 5198 3231 7478 6664 4417 4667 3545 3964 4800;

3085 3096  799 1708  732 1586 2798 2220 2565 5164 4868 2949  3219  3556  4251 3380 6494 3182 3043 4707 3805 2095 3107 6746;

3124 2636 1407 1347 1896 1887 2627 3106 2282 3622 4862 2805  2843  2305  1590 2515 3864 2827 4104 2354  488 2144 1380 2274;

1250 3635  774 1623 1279 1269 1299 1516 1730 1630 1779 3128  2989  4037  2027 2731 2165 1972 2168 3139 2795 2544 3084 5177;

4202 2527 2004  896  754 1441 1717 1257 2870 2324 3927 1998  2886  4325  2806 2899 2788 3681 2943 3233 1996 3255 4332 3281;

2504  587 1297  746  641 1061 1588 1697 4502 9879 3435 2961  6507  2343  1806 3593 2746 2974 3275 2755 2817 2582 2868 3161;

2247 2031 1309 1725 1243 1402 1568 1069 2986 9115 4041 1411  2838  5794 11516 4201 1833 3329 1838 3510 1129 1174 1832 1273;

2086 1656 1988 1030 1563  847 1097  737 1750 2384 2094 1715  6860 13602  2927 3130 3174 1432  750 1853 2265 1794 1691 2784;

1754 1457 1543  745 1158 1338 1465  755 5146 2207 4985 3794  3481  3791  2184 4355 3607 4106 2550 2048 2144 2654 1590 3875;

2131 2919 1708 1252 1470 1228 1576 1137 1152 2412 4059 2344 12736  1492  1250 1622  988 1776 1461 1467 1032 1089 1000 2096;

1417 1527 1572 1776 1296 1263 1557 1013 1882 1361 2073 1854  1200  2090  1003 1527 1606 2105 2195 2706 2113 1380 1707 2565;

960 1784 1022  742 1057  946 1432 2653 3702 4395 3073 4737  2301  3136  3013 2240 3781 7096 2002 1545 1273 1651 1490 11066;

1043 1496 1203 1592 1157 1490 1320 1224 1692 2201 7071 2600  1746  1785  1413 4907 1618 2153 1804 1353  899 1031  820  487;

1279  940 1070 1139 1239 1150 1147  885 1044 1567 3372 4040  5060  1331  2749 1102 1685 6137 4984 6685 3870 4169 5370 6596;

6343 2527 2945 2578 1303 1576 2036 5365 24355 13025 6308 6200 5936 6747 5206 10394 5939 10414 6479 5385 3025 2126 4698 7238;

2208 3857 1224 1404 1361  962 1654 3103 2104 3201 2888 2760  2355  2170  1950 2496 1045 1923 2389 1427 1461  864 1163 1854;

2120 1744 1547 1547 1298 1046 1709 2185 1640 7986 2198 1742  1921  1155  2621 1050 1219 1208 2313 1851  811 1860 2395 4946;

2812 2064 1405 1054  718  886  725 1568 14499 7806 4884 5974  8107  5598  2184 2592 2781 2311 2391 1888 2384 5279 3933 2200;]';

p=p./1024;

t=[1250 3635  774 1623 1279 1269 1299 1516 1730 1630 1779 3128  2989  4037  2027 2731 2165 1972 2168 3139 2795 2544 3084 5177;

4202 2527 2004  896  754 1441 1717 1257 2870 2324 3927 1998  2886  4325  2806 2899 2788 3681 2943 3233 1996 3255 4332 3281;

2504  587 1297  746  641 1061 1588 1697 4502 9879 3435 2961  6507  2343  1806 3593 2746 2974 3275 2755 2817 2582 2868 3161;

2247 2031 1309 1725 1243 1402 1568 1069 2986 9115 4041 1411  2838  5794 11516 4201 1833 3329 1838 3510 1129 1174 1832 1273;

2086 1656 1988 1030 1563  847 1097  737 1750 2384 2094 1715  6860 13602  2927 3130 3174 1432  750 1853 2265 1794 1691 2784;

1754 1457 1543  745 1158 1338 1465  755 5146 2207 4985 3794  3481  3791  2184 4355 3607 4106 2550 2048 2144 2654 1590 3875;

2131 2919 1708 1252 1470 1228 1576 1137 1152 2412 4059 2344 12736  1492  1250 1622  988 1776 1461 1467 1032 1089 1000 2096;

1417 1527 1572 1776 1296 1263 1557 1013 1882 1361 2073 1854  1200  2090  1003 1527 1606 2105 2195 2706 2113 1380 1707 2565;

960 1784 1022  742 1057  946 1432 2653 3702 4395 3073 4737  2301  3136  3013 2240 3781 7096 2002 1545 1273 1651 1490 11066;

1043 1496 1203 1592 1157 1490 1320 1224 1692 2201 7071 2600  1746  1785  1413 4907 1618 2153 1804 1353  899 1031  820  487;

1279  940 1070 1139 1239 1150 1147  885 1044 1567 3372 4040  5060  1331  2749 1102 1685 6137 4984 6685 3870 4169 5370 6596;

6343 2527 2945 2578 1303 1576 2036 5365 24355 13025 6308 6200 5936 6747 5206 10394 5939 10414 6479 5385 3025 2126 4698 7238;

2208 3857 1224 1404 1361  962 1654 3103 2104 3201 2888 2760  2355  2170  1950 2496 1045 1923 2389 1427 1461  864 1163 1854;

2120 1744 1547 1547 1298 1046 1709 2185 1640 7986 2198 1742  1921  1155  2621 1050 1219 1208 2313 1851  811 1860 2395 4946;

2812 2064 1405 1054  718  886  725 1568 14499 7806 4884 5974  8107  5598  2184 2592 2781 2311 2391 1888 2384 5279 3933 2200;

2911 1228 1411 1315 1061  751 1539 1181 1181 2478 7403 3854  4997  2553  2646 3560 4587 1675 2222 2261 1379  993 1948 3253;]';

t=t./1024;

u=t;

%%%%%%归一到 0 1 之间

for i=1:24

p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));

end

for i=1:24

t(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));

end

threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];

net=newff(threshold,[95,24],{'tansig','purelin'},'traingdx');

net.trainParam.epochs=5000;

%训练次数

net.trainParam.goal=1e-4;

%训练结束的目标

net.trainParam.lr=0.06;

trainParam.lr_inc =1.1;

%这个应该是学习率

net.trainParam.show=50;

P=[p(:,1)+p(:,2)+p(:,3) p(:,2)+p(:,3)+p(:,4) p(:,3)+p(:,4)+p(:,5) p(:,4)+p(:,5)+p(:,6) p(:,5)+p(:,6)+p(:,7) p(:,6)+p(:,7)+p(:,8) p(:,7)+p(:,8)+p(:,9) p(:,8)+p(:,9)+p(:,10) p(:,9)+p(:,10)+p(:,11) p(:,10)+p(:,11)+p(:,12) p(:,11)+p(:,12)+p(:,13) p(:,12)+p(:,13)+p(:,14) p(:,13)+p(:,14)+p(:,15)  p(:,14)+p(:,15)+p(:,16)  p(:,15)+p(:,16)+p(:,17)];

T=[t(:,1) t(:,2) t(:,3) t(:,4) t(:,5) t(:,6) t(:,7) t(:,8) t(:,9) t(:,10) t(:,11) t(:,12) t(:,13) t(:,14) t(:,15)];

%输入样本的输入和目标

net=train(net,P,T);

%训练网络

test=[p(:,16)+p(:,17)+p(:,18)];

out=sim(net,test);%仿真预测,归一化后的实际输出

%反归一化

for i=1:24

predict(i)=out(i)*(max(u(i,:))-min(u(i,:)))+ min(u(i,:));

end

predict=abs(predict)

%绘制预报曲线

y=[u(:,16)];

X=0:23;

figure(1);

plot(X,predict,'r*-',X,y,'bo-');

legend('predicted data','actual data')

xlabel('00:00~23:00(h)');

ylabel('network traffic(M)');

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值