徑向基 | |
1 | 徑向基RBF(radial basis function)函數、RBF神經網絡、 反推(back-stepping)控制 |
2 | 基于 RBF 徑向基神經網絡的自适應控制,原理推導,效果實作,Matlab 程式 |
3 | 使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤,Matlab 程式 |
文章目錄
- 1. RBF神經網絡在控制中的應用
- 6. 嚴格回報結構
- 7. 反推控制 Backstepping
1. RBF神經網絡在控制中的應用
這裡再給出一個使用 RBF神經網絡,結合參考模型,通過神經網絡輸出被控模型的控制器,實作其對參考模型的跟蹤的程式。
關于原理講解請參考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
反推控制