天天看點

使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤,Matlab 程式

徑向基
1 ​​徑向基RBF(radial basis function)函數、RBF神經網絡、 反推(back-stepping)控制​​
2 ​​基于 RBF 徑向基神經網絡的自适應控制,原理推導,效果實作,Matlab 程式​​
3 ​​使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤,Matlab 程式​​

文章目錄

  • ​​1. RBF神經網絡在控制中的應用​​
  • ​​6. 嚴格回報結構​​
  • ​​7. 反推控制 Backstepping​​

1. RBF神經網絡在控制中的應用

這裡再給出一個使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤的程式。

關于原理講解請參考​​RBF神經網絡參考模型自适應MATLAB實作(分析)​​。

程式結果如下

使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤,Matlab 程式
使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤,Matlab 程式
% 
% Author: Z-JC
% Data: 2022-10-16
clear
clc

%%
% reference model states
y_d(:,1) = 0.5 * sin(0);
y_m(:,1) = y_d(:,1);

% model states
u(:,1) = 0;
y(:,1) = u(:,1);

% output error
e_c(:,1) = y_m(:,1) - y(:,1);

% RBF
InpLayNum = 3;
HidLayNum = 7;
OutLayNum = 1;

x(:,1) = [y_d(:,1)  e_c(:,1)  y(:,1)]';
c = [-3 -2 -1  0  1  2  3
     -3 -2 -1  0  1  2  3
     -3 -2 -1  0  1  2  3];
b = 2;
w = rands(7,1);
h = zeros(7,1);

% learning rate
alpha = 0.5;

%% Time state
t(1,1) = 0;
tBegin = 0;
tFinal = 10;
dT = 0.05;
times = (tFinal-tBegin)/dT;

% Iterations
for i = 1:times
    % Record time
    t(:,i+1) = t(:,i) + dT;
    
    y_d(:,i+1) = 0.5 * sin(t(:,i+1));
    
    % reference model output
    y_m(:,i+1) = y_d(:,i+1);
    
    % model output
    y(:,i) = u(:,i);
    
    % output error
    e_c(:,i) = y_m(:,i) - y(:,i);
    
    % RBF
    x(:,i) = [y_d(:,i)  e_c(:,i)  y(:,i)]';
    
    % 這裡有 7 個隐含層節點 HidLayNum
    for j = 1:HidLayNum
        h(j) = exp( -norm(x(:,i)-c(:,j))^2/(2*b^2) ); % 節點高斯核函數
    end
    
    % update weight % 梯度下降法更新權值
    d_w = e_c(:,i) * h;
    w(:,i+1) = w(:,i) + alpha * d_w;
    
    % RBF output
    u(:,i+1) = w(:,i+1)' * h;
    
    % update model output
    y(:,i+1) = u(:,i+1);
    
    % update output error
    e_c(:,i+1) = y_m(:,i+1) - y(:,i+1);
end

figure(1);
plot(t,y_m,'r', t,y,'k:', 'linewidth',1.5);
xlabel('t (s)');ylabel('ym,y');
legend('Reference model output $y_m$','Model output $y$', 'interpreter','latex');

figure(2);
plot(t,u,'r', 'linewidth',1.5);
legend('Model control input $u$', 'interpreter','latex');
xlabel('t (s)');ylabel('Control input');      

6. 嚴格回報結構

​​控制理論中,什麼是嚴格回報結構?​​

​​嚴格回報系統和純回報系統的差別是?​​

7. 反推控制 Backstepping

​​反推控制​​

繼續閱讀