Hello Mat

 找回密码
 立即注册
查看: 5028|回复: 0

RBF神经网络的优化逼近

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2017-3-16 12:52:49 | 显示全部楼层 |阅读模式
      RBF网络的学习过程与BP网络的学习过程类似,两者的主要区别在于各使用不同的作用函数。BP网络中隐层使用的是Sigmoid函数,其值在输入空间中无限大的范围内为非零值,因而是一种全局逼近的神经网络;而RBF网络中的作用函数是高斯基函数,其值在输入空间中有限范围内为非零值,因为RBF网络是局部逼近的神经网络。
      RBF网络逼近程序如下:
  1. % RBF Network approximation
  2. clc% 清屏
  3. clear all;%删除workplace变量
  4. close all;%关掉显示图形窗口
  5. % 网络学习参数
  6. alfa=0.08; %动量因子
  7. xite=0.7;   %学习因子   
  8. x=[0,0]';

  9. b=1.5*ones(4,1);   
  10. c=0.5*ones(2,4);   
  11. w=rands(4,1);   

  12. w_1=w;
  13. w_2=w_1;
  14. c_1=c;
  15. c_2=c_1;
  16. b_1=b;
  17. b_2=b_1;
  18. d_w=0*w;
  19. d_b=0*b;
  20. y_1=0;

  21. ts=0.001;
  22. for k=1:1:2000
  23.    
  24.     time(k)=k*ts;
  25.     u(k)=0.50*sin(1*2*pi*k*ts);

  26.     y(k)=u(k)^3+y_1/(1+y_1^2);  

  27.     x(1)=u(k); %初值
  28.     x(2)=y(k);

  29.     for j=1:1:4
  30.         h(j)=exp(-norm(x-c(:,j))^2/(2*b(j)*b(j)));% 高斯基函数
  31.     end
  32.     ym(k)=w'*h';
  33.     em(k)=y(k)-ym(k);

  34.     for j=1:1:4
  35.         d_w(j)=xite*em(k)*h(j);
  36.         d_b(j)=xite*em(k)*w(j)*h(j)*(b(j)^-3)*norm(x-c(:,j))^2;
  37.         for i=1:1:2
  38.             d_c(i,j)=xite*em(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2);
  39.         end
  40.     end
  41.    w=w_1+ d_w+alfa*(w_1-w_2);
  42.    b=b_1+d_b+alfa*(b_1-b_2);
  43.    c=c_1+d_c+alfa*(c_1-c_2);
  44.    
  45. %%Jacobian信息
  46.     yu=0;
  47.     for j=1:1:4
  48.         yu=yu+w(j)*h(j)*(c(1,j)-x(1))/b(j)^2; % 敏感度
  49.     end
  50.     dyu(k)=yu;

  51.     y_1=y(k);

  52.     w_2=w_1;
  53.     w_1=w;

  54.     c_2=c_1;
  55.     c_1=c;

  56.     b_2=b_1;
  57.     b_1=b;
  58. end
  59. figure(1);
  60. plot(time,y,'r',time,ym,'b'); % RBF网络辨识结果
  61. xlabel('time(s)');ylabel('y and ym');
  62. grid on
  63. title('RBF网络辨识结果')  
  64. figure(2);
  65. plot(time,y-ym,'r'); % RBF网络辨识误差
  66. xlabel('time(s)');ylabel('identification error');
  67. grid on
  68. title('RBF网络辨识误差')
  69. figure(3);
  70. plot(time,dyu,'r');   % RBF网络敏感度Jacobian信息
  71. xlabel('times');ylabel('dyu');
  72. grid on
  73. title('RBF网络敏感度Jacobian信息')
复制代码
参考文献:MATLAB智能算法超级学习手册

算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-22 22:17 , Processed in 0.203466 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表