使用 RBF神经网络,结合参考模型,通过神经网络输出被控模型的控制器,实现其对参考模型的跟踪,Matlab 程序

时间:2022-10-19 07:54:56
径向基
1 径向基RBF(radial basis function)函数、RBF神经网络、 反推(back-stepping)控制
2 基于 RBF 径向基神经网络的自适应控制,原理推导,效果实现,Matlab 程序
3 使用 RBF神经网络,结合参考模型,通过神经网络输出被控模型的控制器,实现其对参考模型的跟踪,Matlab 程序

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

反推控制

学习笔记(1)——反步控制法

反步(Back-Stepping)设计方法