⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 r_rbfnic_yu_wi_2.m

📁 利用遞迴式模糊類神經網路(recerrent neural networks system identification, RFNN)進行系統辨識, 自己寫的請多包含
💻 M
字号:
%Adaptive PID control based on RBF Identification
clear all;
close all;
clc;

xite=0.25;
xiteC=0.1;
x=[0; 0];
xC=[0; 0];

ci=30*ones(2,5);
bi=40*ones(5,1);
w=0.1*ones(5,1); 
wi=0.1*ones(2,5);

ciC=30*ones(2,5);
biC=40*ones(5,1);
wC=0.1*ones(5,1); 
wiC=0.1*ones(2,5);

h=[0,0,0,0,0]';
hC=[0,0,0,0,0]';

u_1=0;
y_1=0;
error_1 = 0;
error_2 = 0;

% initial feedback output
O12_1 = zeros(2,5);
O12C_1 = zeros(2,5);

tf=2;
ts=0.001;
n=floor(tf/ts);

for k=1:n
   time(k)=k*ts;
   rin(k)=1.0*sin(sin(2*pi*k*ts));
   
   yout(k)=(-0.1*y_1+u_1)/(1+y_1^2);  %Nonlinear plant
 
% R_RBFI start ---------------------------------------------      
       for i1 = 1:2
           for j1=1:5
              O12(i1,j1) = O12_1(i1,j1)*wi(i1,j1) + x(i1,end);
           end
        end
   
   for j=1:5
      h(j)=exp(-norm(O12(:,j)-ci(:,j))^2/(2*bi(j)*bi(j)));
   end
   ymout(k)=w'*h;
   %pause

   e(k)=rin(k)-ymout(k);
   d_w=0*w;
   for j=1:5
      d_w(j)=xite*e(k)*h(j);
   end
   w=w+d_w;
   
   d_bi=0*bi;
   for j=1:5
      d_bi(j)=xite*e(k)*w(j)*h(j)*(bi(j)^-3)*norm(O12(:,j)-ci(:,j))^2;
   end
   bi=bi+ d_bi;
   for j=1:5
     for i=1:2
      d_ci(i,j)=xite*e(k)*w(j)*h(j)*(O12(i,j)-ci(i,j))*(bi(j)^-2);
     end
   end
   ci=ci+d_ci;
   
  d_wi=0*wi;
  for i = 1:2 
   for j=1:5
      d_wi(j)=xite*e(k)*w(j)*h(j)*(O12(i,j)-ci(i,j))*(bi(j)^-2)*O12_1(i,j);
   end
  end
   wi=wi+d_wi;
% R_RBFI end --------------------------------------------- 

%%%%%%%%%%%%%%%%%%%%%%Jacobian%%%%%%%%%%%%%%%%%%%%%%%

yu=0;
yuu = 0;
for i = 1:2
  for  j=1:5
      yu=yu+w(j)*h(j)*(-O12(i,j)+ci(i,j))/bi(j,1)^2; 
  end
  yuu=yuu+yu;
end
  dyout(k)=yuu;

% R_RBFC start --------------------------------------------- 
      for i1 = 1:2
           for j1=1:5
              O12C(i1,j1) = O12C_1(i1,j1)*wiC(i1,j1) + xC(i1,end);
           end
        end
   
   for j=1:5
      hC(j)=exp(-norm(O12C(:,j)-ciC(:,j))^2/(2*biC(j)*biC(j)));
   end
   u(k)=wC'*hC;
   %pause
   
eC(k)=rin(k)-yout(k);

   d_wC=0*wC;
   for j=1:5
      d_wC(j)=xiteC*eC(k)*hC(j);
   end
   wC=wC+d_wC;
   
   d_biC=0*biC;
   for j=1:5
      d_biC(j)=xiteC*eC(k)*wC(j)*hC(j)*(biC(j)^-3)*norm(O12C(:,j)-ciC(:,j))^2;
   end
   biC=biC+ d_biC*dyout(k);
   for j=1:5
     for i=1:2
      d_ciC(i,j)=xiteC*eC(k)*wC(j)*hC(j)*(O12C(i,j)-ciC(i,j))*(biC(j)^-2);
     end
   end
   ciC=ciC+d_ciC*dyout(k);
   
   d_wiC=0*wiC;
  for i = 1:2 
   for j=1:5
      d_wiC(j)=xiteC*eC(k)*wC(j)*hC(j)*(O12C(i,j)-ciC(i,j))*(biC(j)^-2)*O12C_1(i,j);
   end
  end
   wiC=wiC+d_wiC*dyout(k);
% R_RBFC end ---------------------------------------------

   % Return  parameters  
   % R_RFNNI
   O12_1 = O12;
   x(1,k+1) = u(k);
   x(2,k+1) = y_1;
   % R_RFNNC
   O12C_1 = O12C;
   xC(1,k+1) = eC(k);
   xC(2,k+1) = eC(k)-2*error_1-error_2;
   error_2 = error_1;   
   error_1 = eC(k);
   
   u_1=u(k);
   y_1=yout(k);

   
   k
end
figure(1);
plot(time,rin,'r',time,ymout,'b');
xlabel('time(s)');ylabel('rin,ymout');
legend('reference', 'NNout');


figure(2);
plot(time,rin,'r',time,yout,'g');
xlabel('time(s)');ylabel('rin,yout');
legend('reference', 'Plant');

figure(3);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
legend('control');

figure(4);
plot(time,dyout,'r');
xlabel('time(s)');ylabel('dyout');
legend('Jacobian');



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -