BP.m
上传用户:yetwld
上传日期:2010-01-26
资源大小:82k
文件大小:8k
源码类别:

TAPI编程

开发平台:

Matlab

  1. %BP建模
  2. %标准化后的建模数据集
  3. m_data=[0.26667 0.47647 0.35 0.30741 0.39565 0.9;
  4. 0.2 0.75882 0.35 0.27778 0.53479 0.46001;
  5. 0.2 0.52353 0.4 0.33704 0.32609 0.48001;
  6. 0.66667 0.52353 0.29999 0.21852 0.27391 0.50001;
  7. 0.26667 0.75882 0.6 0.33704 0.32609 0.44001;
  8. 0.16667 0.57059 0.29999 0.27778 0.3087 0.46001;
  9. 0.2 0.71176 0.4 0.36667 0.44783 0.48001;
  10. 0.23333 0.71176 0.5 0.30741 0.15218 0.34001;
  11. 0.16667 0.42941 0.5 0.24815 0.5 0.48001;
  12. 0.13333 0.57059 0.5 0.3963 0.41305 0.48001;
  13. 0.16667 0.75882 0.5 0.21852 0.3087 0.52001;
  14. 0.16667 0.71176 0.4 0.27778 0.48261 0.44001;
  15. 0.23333 0.75882 0.5 0.33704 0.3087 0.48001;
  16. 0.13333 0.75882 0.5 0.33704 0.23913 0.42001;
  17. 0.16667 0.75882 0.2 0.18889 0.13478 0.1;
  18. 0.13333 0.71176 0.35 0.27778 0.32609 0.14;
  19. 0.2 0.24119 0.35 0.24815 0.3087 0.88001;
  20. 0.70001 0.47647 0.25 0.33704 0.20435 0.38001;
  21. 0.4 0.52353 0.2 0.15927 0.23913 0.34001;
  22. 0.26667 0.47647 0.35 0.12963 0.16957 0.36;
  23. 0.16667 0.6647 0.35 0.27778 0.27391 0.40001;
  24. 0.3 0.61764 0.55 0.24815 0.25652 0.62001;
  25. 0.13333 0.75882 0.6 0.30741 0.20435 0.62001;
  26. 0.3 0.71176 0.55 0.18889 0.20435 0.70001;
  27. 0.13333 0.57059 0.5 0.30741 0.29131 0.72001;
  28. 0.16667 0.80588 0.5 0.21852 0.23913 0.60001;
  29. 0.1 0.61764 0.6 0.21852 0.16957 0.62001;
  30. 0.23333 0.61764 0.5 0.3963 0.3087 0.70001;
  31. 0.2 0.80588 0.45 0.18889 0.1 0.48001;
  32. 0.23333 0.6647 0.45 0.1 0.11739 0.54001;
  33. 0.2 0.52353 0.29999 0.30741 0.16957 0.50001;
  34. 0.16667 0.71176 0.6 0.24815 0.23913 0.70001;
  35. 0.1 0.85293 0.6 0.12963 0.16957 0.52001;
  36. 0.3 0.61764 0.5 0.21852 0.13478 0.64001;
  37. 0.13333 0.61764 0.4 0.27778 0.23913 0.62001;
  38. 0.16667 0.80588 0.6 0.3963 0.23913 0.36;
  39. 0.23333 0.75882 0.75 0.30741 0.1 0.66001;
  40. 0.13333 0.9 0.6 0.27778 0.20435 0.44001;
  41. 0.16667 0.61764 0.29999 0.27778 0.32609 0.60001;
  42. 0.16667 0.71176 0.6 0.27778 0.27391 0.52001;
  43. 0.1 0.85293 0.45 0.1 0.23913 0.54001;
  44. 0.1 0.71176 0.69999 0.27778 0.43044 0.76001;
  45. 0.1 0.38236 0.6 0.30741 0.32609 0.64001;
  46. 0.1 0.75882 0.6 0.33704 0.25652 0.46001;
  47. 0.73333 0.71176 0.25 0.45556 0.5 0.50001;
  48. 0.56667 0.61764 0.35 0.33704 0.34348 0.74;
  49. 0.13333 0.6647 0.75 0.75186 0.69131 0.56001;
  50. 0.83334 0.61764 0.25 0.60371 0.44783 0.38001;
  51. 0.9 0.33529 0.2 0.3963 0.3087 0.54001;
  52. 0.4 0.61764 0.5 0.3963 0.44783 0.48001;
  53. 0.1 0.57059 0.4 0.57408 0.7261 0.88001;
  54. 0.16667 0.61764 0.35 0.27778 0.34348 0.38001;
  55. 0.1 0.47647 0.35 0.75186 0.83045 0.62001;
  56. 0.2 0.47647 0.35 0.81111 0.83045 0.70001;
  57. 0.1 0.33529 0.6 0.9 0.9 0.50001;
  58. 0.13333 0.24119 0.4 0.81111 0.86522 0.58356;
  59. 0.4 0.80588 0.6 0.48519 0.55218 0.42001;
  60. 0.5 0.42941 0.45 0.57408 0.37826 0.56001;
  61. 0.16667 0.28824 0.25 0.75186 0.79567 0.54001;
  62. 0.23333 0.33529 0.4 0.84075 0.65653 0.68001;
  63. 0.13333 0.57059 0.6 0.57408 0.67392 0.46001;
  64. 0.5 0.57059 0.5 0.51482 0.55218 0.44001;
  65. 0.1 0.6647 0.69999 0.57408 0.65653 0.88001;
  66. 0.3 0.75882 0.75 0.21852 0.37826 0.70001;
  67. 0.23333 0.57059 0.6 0.3963 0.41305 0.48001;
  68. 0.59999 0.80588 0.45 0.24815 0.25652 0.42001;
  69. 0.70001 0.28824 0.65 0.63334 0.58696 0.60001;
  70. 0.4 0.61764 0.4 0.33704 0.34348 0.34001;
  71. 0.46666 0.1 0.5 0.63334 0.65653 0.54001;
  72. 0.23333 0.33529 0.25 0.84075 0.7261 0.50001;
  73. 0.2 0.47647 0.1 0.27778 0.3087 0.42001;
  74. 0.36667 0.52353 0.5 0.51482 0.83045 0.62001;
  75. 0.4 0.47647 0.45 0.33704 0.32609 0.50001;
  76. 0.33333 0.33529 0.4 0.63334 0.7261 0.46001;
  77. 0.23333 0.24119 0.55 0.63334 0.7261 0.53778;
  78. 0.13333 0.24119 0.45 0.33704 0.3087 0.76001;
  79. 0.33333 0.47647 0.45 0.42593 0.41305 0.70001;
  80. 0.5 0.1 0.35 0.3963 0.48261 0.70001;
  81. 0.46666 0.52353 0.4 0.63334 0.86522 0.52001;
  82. 0.26667 0.33529 0.25 0.69259 0.83045 0.68001;
  83. 0.26667 0.71176 0.6 0.42593 0.55218 0.34001;
  84. 0.4 0.42941 0.5 0.45556 0.43044 0.52001;
  85. 0.23333 0.47647 0.6 0.54445 0.62175 0.52001;
  86. 0.36667 0.47647 0.4 0.69259 0.69131 0.52001;
  87. 0.26667 0.61764 0.29999 0.63334 0.81306 0.44001;
  88. 0.1 0.33529 0.65 0.3963 0.23913 0.44001;
  89. 0.13333 0.57059 0.6 0.51482 0.55218 0.38001;
  90. 0.2 0.33529 0.55 0.45556 0.55218 0.52001;
  91. 0.33333 0.24119 0.29999 0.57408 0.83045 0.64001;
  92. 0.16667 0.42941 0.5 0.45556 0.76088 0.58001;
  93. 0.13333 0.71176 0.65 0.45556 0.37826 0.22001;
  94. 0.1 0.71176 0.6 0.63334 0.69131 0.28001;
  95. 0.2 0.52353 0.9 0.36667 0.48261 0.36446;
  96. 0.16667 0.71176 0.8 0.36667 0.32609 0.42001;
  97. 0.13333 0.42941 0.55 0.51482 0.48261 0.58001;
  98. 0.4 0.47647 0.5 0.30741 0.37826 0.48001;
  99. 0.8 0.52353 0.4 0.30741 0.34348 0.48001;
  100. 0.1 0.6647 0.69999 0.51482 0.5 0.38001;
  101. 0.16667 0.6647 0.55 0.45556 0.32609 0.34001;
  102. 0.23333 0.61764 0.65 0.51482 0.41305 0.2;
  103. 0.3 0.71176 0.5 0.33704 0.5174 0.70001;
  104. 0.13333 0.57059 0.5 0.33704 0.44783 0.60001;
  105. 0.3 0.80588 0.69999 0.54445 0.5174 0.50001;
  106. 0.13333 0.75882 0.65 0.3963 0.37826 0.28001;
  107. 0.16667 0.71176 0.65 0.57408 0.5 0.70001;
  108. 0.16667 0.75882 0.6 0.45556 0.62175 0.44001;
  109. 0.26667 0.61764 0.65 0.3963 0.34348 0.74;
  110. 0.36667 0.57059 0.5 0.30741 0.39565 0.62001;
  111. 0.16667 0.57059 0.65 0.3963 0.29131 0.62001;
  112. 0.2 0.52353 0.5 0.48519 0.39565 0.44001;
  113. 0.4 0.52353 0.45 0.33704 0.34348 0.56001;
  114. 0.13333 0.52353 0.5 0.33704 0.29131 0.52001;
  115. 0.26667 0.42941 0.5 0.75186 0.65653 0.76001;
  116. 0.13333 0.24119 0.5 0.54445 0.58696 0.64001;
  117. 0.13333 0.14707 0.1 0.51482 0.5174 0.58001;
  118. 0.2 0.24119 0.29999 0.60371 0.62175 0.74;
  119. 0.26667 0.42941 0.25 0.57408 0.65653 0.60001;
  120. 0.56667 0.19412 0.4 0.78148 0.69131 0.70001;
  121. 0.4 0.57059 0.25 0.60371 0.58696 0.50001;
  122. 0.33333 0.47647 0.25 0.48519 0.65653 0.72001;
  123. 0.4 0.38236 0.29999 0.42593 0.23913 0.58001;
  124. 0.13333 0.61764 0.65 0.57408 0.55218 0.70001;
  125. 0.23333 0.42941 0.69999 0.63334 0.48261 0.62001;
  126. 0.2 0.28824 0.55 0.81111 0.76088 0.58];
  127. %定义网络输入p和期望输出t
  128. p1=m_data(:,1:5);
  129. t1=m_data(:,6);
  130.  p=p1';t=t1';
  131. %设置网络隐单元的神经元数(5~30验证后20个最好) 
  132.  n=15;
  133. %建立相应的BP网络
  134.  net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm');
  135. %对没有训练的网络仿真
  136.  y1=sim(net,p);
  137.  %绘制仿真得到的曲线
  138.  figure
  139.  plot(t);
  140.  hold on
  141.  plot(y1,'r:')
  142.  legend('化验值','估计值');
  143.  title('没有训练的BP网络模型输出拟合曲线');
  144.  xlabel('输入样本点');
  145.  ylabel('淀粉利用率'); 
  146.  axis([1,130,-2,2]);
  147.  hold off
  148. %训练网络
  149.  net.trainParam.epochs=1000;
  150.  net.trainParam.lr=0.1;
  151.  net.trainParam.goal=0.001;
  152.  net=train(net,p,t);
  153.  %对训练后的网络进行仿真
  154.  %y=sim(net,p);
  155.  y=sim(net,p);
  156. %绘出训练后的仿真结果
  157.  figure;
  158.  plot(t);
  159.  hold on;
  160.  plot(y,'r:');
  161.  legend('化验值','估计值');
  162.  title('训练后的BP网络模型输出拟合曲线');
  163.  xlabel('输入样本点');
  164.  ylabel('淀粉利用率');
  165.  hold off;
  166.  axis([1,130,0,1]);
  167.  %误差定义
  168.  E=t-y;
  169.  ysse=sse(E);
  170.  ymse=mse(E);
  171. %标准化后的测试数据集t_data
  172. t_data=[0.1 0.68668 0.67143 0.79999 0.79091 0.40004;
  173. 0.36667 0.58001 0.1 0.7 0.71818 0.20001;
  174. 0.26 0.47334 0.1 0.29997 0.2091 0.80009;
  175. 0.36667 0.9 0.9 0.29997 0.13637 0.37504;
  176. 0.26 0.84668 0.67143 0.1 0.42727 0.37504;
  177. 0.36667 0.58001 0.44286 0.49999 0.1 0.55006;
  178. 0.15333 0.47334 0.44286 0.7 0.42727 0.60006;
  179. 0.1 0.84668 0.67143 0.29997 0.5 0.1;
  180. 0.15333 0.42 0.21429 0.49999 0.5 0.55006;
  181. 0.20667 0.79335 0.21429 0.59999 0.5 0.32503;
  182. 0.1 0.42 0.21429 0.9 0.5 0.45005;
  183. 0.1 0.84668 0.32857 0.59999 0.5 0.27502;
  184. 0.20667 0.47334 0.32857 0.29997 0.13637 0.50005;
  185. 0.1 0.68668 0.67143 0.49999 0.24546 0.20001;
  186. 0.42 0.58001 0.21429 0.9 0.9 0.42504;
  187. 0.31334 0.58001 0.44286 0.49999 0.31818 0.25002;
  188. 0.15333 0.42 0.1 0.19999 0.35454 0.55006;
  189. 0.20667 0.47334 0.32857 0.29997 0.31818 0.27502;
  190. 0.15333 0.68668 0.44286 0.29997 0.31818 0.40004;
  191. 0.20667 0.20667 0.21429 0.39999 0.28183 0.52506;
  192. 0.26 0.79335 0.21429 0.49999 0.57273 0.9;
  193. 0.42 0.36667 0.1 0.59999 0.35454 0.30003;
  194. 0.47334 0.36667 0.1 0.59999 0.57273 0.35003;
  195. 0.1 0.47334 0.67143 0.7 0.42727 0.49894;
  196. 0.42 0.58001 0.67143 0.49999 0.24546 0.47505;
  197. 0.31334 0.1 0.32857 0.9 0.79091 0.8501;
  198. 0.1 0.52667 0.21429 0.9 0.5 0.50005;
  199. 0.52667 0.55867 0.21429 0.1 0.28183 0.42504;
  200. 0.9 0.58001 0.55715 0.1 0.17273 0.32503;
  201. 0.15333 0.68668 0.62572 0.29997 0.2091 0.57506];
  202. %测试结果
  203. tp1=t_data(:,1:5);
  204. tt1=t_data(:,6);
  205. tp=tp1';tt=tt1';
  206. ty=sim(net,tp);
  207. %定义误差
  208. tE=tt-ty;
  209. tsse=sse(tE);
  210. tmse=mse(tE);
  211. %预测(测试)曲线
  212. figure;
  213.  plot(tt,'-+');
  214.  hold on;
  215.  plot(ty,'r:*');
  216.  legend('化验值','预测值');
  217.  title('BP网络模型输出预测曲线');
  218.  xlabel('输入样本点');
  219.  ylabel('淀粉利用率');
  220. axis([1,30,-4,4]);