基于 RBF 径向基神经网络的自适应控制,原理,实现,Matlab 程序

时间:2022-10-16 13:56:29
径向基
1 径向基RBF(radial basis function)函数、RBF神经网络、 反推(back-stepping)控制

3. 基于RBF网络逼近的自适应控制

3.1 问题描述

简单的运动系统动力学方程为:
θ ¨ = f ( θ , θ ˙ ) + u (1) \ddot{\theta} = f(\theta, \dot{\theta}) + u \tag{1} θ¨=f(θ,θ˙)+u(1)

其中 θ \theta θ 为角度, u u u 为控制输入。

写成状态方程形式为:
x ˙ 1 = x 2 x ˙ 2 = f ( x ) + u (2) \begin{aligned} &\dot{x}_1 = x_2 \\ &\dot{x}_2 = f(x) + u \end{aligned} \tag{2} x˙1=x2x˙2=f(x)+u(2)

其中 f ( x ) f(x) f(x) 为未知非线性函数。

未知指令为 x d x_d xd,则误差及其变化率为:
e = x 1 − x d e ˙ = x ˙ 1 − x ˙ d = x 2 − x ˙ d \begin{aligned} e &= x_1 - x_d \\ \dot{e} &= \dot{x}_1 - \dot{x}_d \\ &=x_2 - \dot{x}_d \end{aligned} ee˙=x1xd=x˙1x˙d=x2x˙d

定义误差函数为
s = c e + e ˙ ,     c > 0 (3) s=ce + \dot{e}, ~~~ c>0 \tag{3} s=ce+e˙,   c>0(3)


s ˙ = c e ˙ + e ¨ = c e ˙ + x ˙ 2 − x ¨ d = c e ˙ + f ( x ) + u − x ¨ d (4) \begin{aligned} \dot{s} &= c\dot{e}+\ddot{e}\\ &=c\dot{e}+\dot{x}_2-\ddot{x}_d \\ &=c\dot{e}+f(x)+u-\ddot{x}_d \end{aligned} \tag{4} s˙=ce˙+e¨=ce˙+x˙2x¨d=ce˙+f(x)+ux¨d(4)

由式(3)可知,如果 s → 0 s\rightarrow 0 s0,则 e → 0 e\rightarrow 0 e0 e ˙ → 0 \dot{e}\rightarrow 0 e˙0

若对滑模控制有了解的,可以发现上述误差函数 (3) 的形式与滑模控制中的滑模面类似,可以看一下文章【控制】滑模控制,滑模面的选择。这里还有滑模的解决方案,也就是趋近律的选择。

借助趋近律 s ˙ = − η  sgn ( s ) \dot{s} = -\eta ~\text{sgn}(s) s˙=η sgn(s),那么基于上式 (4) 可以得到
s ˙ = c e ˙ + f ( x ) + u − x ¨ d = − η  sgn ( s ) u = − c e ˙ − f ( x ) + x ¨ d − η  sgn ( s ) (5) \begin{aligned} \dot{s} &=c\dot{e}+f(x)+u-\ddot{x}_d = -\eta ~\text{sgn}(s) \\ u& = -c\dot{e} - f(x) + \ddot{x}_d -\eta ~\text{sgn}(s) \end{aligned} \tag{5} s˙u=ce˙+f(x)+ux¨d=η sgn(s)=ce˙f(x)+x¨dη sgn(s)(5)

式 (5) 就是包含了未知非线性函数 f ( x ) f(x) f(x) 的系统控制器。

但是 f ( x ) f(x) f(x) 往往是未知的,我们没有一个具体的显式表达式。而这个控制器并不能让系统达到期望输入,根本原因就是 f ( x ) f(x) f(x) 的存在影响了系统。

3.2 验证没有未知干扰项的控制器

不过为了方便理解,我们先验证一下没有未知项 f ( x ) f(x) f(x) 干扰时的控制器。

也就是将模型式 (2) 简化为
x ˙ 1 = x 2 x ˙ 2 = u (6) \begin{aligned} &\dot{x}_1 = x_2 \\ &\dot{x}_2 = u \end{aligned} \tag{6} x˙1=x2x˙2=u(6)

将控制器式 (5) 简化为

u = − c e ˙ + x ¨ d − η  sgn ( s ) (7) \begin{aligned} u& = -c\dot{e} + \ddot{x}_d -\eta ~\text{sgn}(s) \end{aligned} \tag{7} u=ce˙+x¨dη sgn(s)(7)

系统初始状态为 x 1 ( 0 ) = rand x_1(0) = \text{rand} x1(0)=rand x 2 ( 0 ) = rand x_2(0) = \text{rand} x2(0)=rand。期望状态为 x d = sin ⁡ ( t ) x_d = \sin(t) xd=sin(t) x ˙ d = cos ⁡ ( t ) \dot{x}_d = \cos(t) x˙d=cos(t) x ¨ d = − sin ⁡ ( t ) \ddot{x}_d = -\sin(t) x¨d=sin(t)。参数假设为 c = 1 , η = 1 c = 1, \eta = 1 c=1,η=1
虽然我们把未知干扰项简化掉了,但是我们这里还是给出一个 f ( x ) = 10 x 1 x 2 f(x)=10 x_1 x_2 f(x)=10x1x2。画画图,看看效果。


首先是没有未知干扰项的仿真结果,如下图所示。

基于 RBF 径向基神经网络的自适应控制,原理,实现,Matlab 程序
基于 RBF 径向基神经网络的自适应控制,原理,实现,Matlab 程序


紧接着给出有 f ( x ) f(x) f(x) 的仿真结果。

基于 RBF 径向基神经网络的自适应控制,原理,实现,Matlab 程序

基于 RBF 径向基神经网络的自适应控制,原理,实现,Matlab 程序


最后再把程序给出。

% Paper: 2020_面向多船协同的自适应编队控制方法研究
% Author: Z-JC
% Data: 2022-10-03
clear
clc

%%
% states
x_1(:,1) = rand;
x_2(:,1) = rand;

fx(:,1) = 10 * x_1(:,1) * x_2(:,1);

% Control inputs
u(:,1) = rand;

% Desired 
x_d(:,1) = sin(0);
ddot_x_d(:,1) = cos(0);
dot_x_d(:,1) = -sin(0);

% Parameters
c = 1;
eta = 1;

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

% Iterations
for i=1:times
    % Record time
    t(:,i+1) = t(:,i) + dT;
    
    fx(:,i) = 10 * x_1(:,i) * x_2(:,i);
    
    % error
    x_d(:,i+1) = sin(t(:,i+1));
    e = x_1(:,i) - x_d(:,i+1);
    
    dot_x_d(:,i+1) = cos(t(:,i+1));
    dot_e = x_2(:,i) - dot_x_d(:,i+1);
    
    s = c*e + dot_e;
    
    ddot_x_d(:,i+1) = -sin(t(:,i+1));
    u(:,i+1) = -c*dot_e + ddot_x_d(:,i+1) - eta * sign(s);
    
    % update states
    x_2(:,i+1) = x_2(:,i) + dT * ( 0*fx(:,i)+u(:,i+1) );
    x_1(:,i+1) = x_1(:,i) + dT * x_2(:,i+1);
    
    fx(:,i+1) = 10 * x_1(:,i+1) * x_2(:,i+1);
end

%% Plot results
figure(1)
subplot(2,1,1)
plot(t,x_1, t,x_d, 'linewidth',1.5); hold on
legend('$x_{1}$', '$x_{d}$', 'interpreter','latex');
grid on

subplot(2,1,2)
plot(t,x_2, t,dot_x_d, 'linewidth',1.5); hold on
legend('$x_{2}$', '$\dot{x}_{d}$', 'interpreter', 'latex');
grid on

figure(2)
subplot(2,1,1)
plot(t,u, 'linewidth',1.5); hold on
legend('$u$', 'interpreter','latex');
grid on

subplot(2,1,2)
plot(t,fx, 'linewidth',1.5); hold on
legend('$f(x)$', 'interpreter','latex');
grid on

3.2 RBF 网络原理

对比上述结果也可以看到, f ( x ) f(x) f(x) 对系统影响特别大。这时候就需要 RBF 来发挥作用了。

由于 RBF 网络具有万能逼近特性,采用 RBF 神经网络逼近 f ( x ) f(x) f(x),网络算法为:
h j = exp ⁡ ( ∥ x − c j ∥ 2 2 b j 2 ) (4) h_j = \exp(\frac{\|x-c_j\|^2}{2b^2_j}) \tag{4} hj=exp(2bj2xcj2)(4)

f = W ∗ T h ( x ) + ε (5) f = W^{*\text{T}}h(x) + \varepsilon \tag{5} f=WTh(x)+ε(5)

其中, x x x 为网络的输入, j j j 为网络隐含层第 j j j 个节点, h = [ h j ] T h=[h_j]^\text{T} h=[hj]T 为网络的高斯基函数输出, W ∗ W^* W 为网络的理想权值, ε \varepsilon ε 为网络的逼近误差, ε ≤ ε N \varepsilon\le\varepsilon_N εεN

网络输入取状态变量 x = [ x 1 , x 2 ] T x=[x_1, x_2]^\text{T} x=[x1,x2]T,则网络输出为:
f ^ ( x ) = W ^ T h ( x ) (6) \hat{f}(x) = \hat{W}^\text{T} h(x) \tag{6} f^(x)=W^Th(x)(6)

3.3 控制算法设计与分析

由于
f ( x ) − f ^ ( x ) = W ∗ T h ( x ) + ε − W ^ T h ( x ) = − W ~ T h ( x ) + ε \begin{aligned} f(x) - \hat{f}(x) &= W^{*\text{T}}h(x) + \varepsilon - \hat{W}^\text{T}h(x)\\ &=-\tilde{W}^\text{T} h(x) + \varepsilon \end{aligned} f(x)f^(x)=WTh(x)+εW^Th(x)=W~Th(x)+ε

定义 Lyapunov 函数为
V = 1 2 s 2 + 1 2 γ W ~ T W ~ (7) V = \frac{1}{2}s^2+\frac{1}{2\gamma}\tilde{W}^\text{T} \tilde{W} \tag{7} V=21s2+2γ1W~TW~(7)

其中 γ > 0 , W ~ = W ^ − W ∗ \gamma>0, \tilde{W}=\hat{W}-W^* γ>0,W~=W^W


V ˙ = s s ˙ + 1 2 γ W ~ T W ^ ˙ = s ( c e ˙ + f ( x ) + u − x ¨ d ) + 1 2 γ W ~ T W ^ ˙ \begin{aligned} \dot{V} &= s\dot{s} + \frac{1}{2\gamma}\tilde{W}^\text{T} \dot{\hat{W}} \\ &=s(c\dot{e}+f(x)+u-\ddot{x}_d)+\frac{1}{2\gamma}\tilde{W}^\text{T} \dot{\hat{W}} \end{aligned} V˙=ss˙+2γ1W~TW^˙=s(ce˙+f(x)+ux¨d)+2γ1W~TW^˙

设计控制律为
u = − c e ˙ − f ^ ( x ) + x ¨ d − η  sgn ( s ) (8) u=-c\dot{e} - \hat{f}(x) + \ddot{x}_d - \eta~ \text{sgn}(s) \tag{8} u=ce˙f^(x)+x¨dη sgn(s)(8)


V ˙ = s ( f ( x ) − f ^ ( x ) − η  sgn ( s ) ) + 1 γ W ~ T W ^ ˙ = s ( − W ~ T h ( x ) + ε − η  sgn ( x ) ) + 1 γ W ~ T W ^ ˙ = ε s − η ∣ s ∣ + W ~ T ( 1 γ W ^ ˙ − s h ( x ) ) \begin{aligned} \dot{V} &= s (f(x) - \hat{f}(x) - \eta~ \text{sgn}(s)) + \frac{1}{\gamma}\tilde{W}^\text{T} \dot{\hat{W}} \\ &= s(-\tilde{W}^\text{T} h(x) + \varepsilon - \eta~\text{sgn}(x)) + \frac{1}{\gamma}\tilde{W}^\text{T} \dot{\hat{W}} \\ &= \varepsilon s - \eta |s| + \tilde{W}^\text{T} (\frac{1}{\gamma}\dot{\hat{W}}-s h(x)) \end{aligned} V˙=s(f(x)f^(x)η sgn(s))+γ1W~TW^˙=s(W~Th(x)+εη sgn(x))+γ1W~TW^˙=εsηs+W~T(γ1W^˙sh(x))

η > ∣ ε ∣ max ⁡ \eta > |\varepsilon|_{\max} η>εmax,自适应律为
W ^ ˙ = γ s h ( x ) (9) \dot{\hat{W}} = \gamma s h(x) \tag{9} W^˙=γsh(x)(9)

V ˙ = ε s − η ∣ s ∣ < 0 \dot{V}=\varepsilon s - \eta |s| < 0 V˙=εsηs<0

3.4 仿真实例

考虑如下被控对象
x ˙ 1 = x 2 x ˙ 2 = f ( x ) + u \begin{aligned} &\dot{x}_1 = x_2 \\ &\dot{x}_2 = f(x) + u \end{aligned} x˙1=x2x˙2=f(x)+u

其中 f ( x ) = 10 x 1 x 2 f(x)=10 x_1 x_2 f(x)=10x1x2

控制律采用式(8),自适应律采用式(9),取 γ = 500 , η = 0.50 \gamma=500, \eta=0.50 γ=500,η=0.50。根据网络的输入 x 1 x_1 x1 x 2 x_2 x2 的实际范围,高斯基函数的参数 c i c_i ci b i b_i bi 的取值分别为 [-2 -1 0 1 2] 和 3.0。网络权值矩阵中各个元素的初始值取 0.10。

仿真结果如下图所示。

Ref: 一种简单的基于RBF网络逼近的自适应控制


4. RBF神经网络自适应控制matlab仿真_RBF神经网络及其在控制中的应用简介

RBF神经网络在控制中的应用,可以按其隐含层与输出层连接权值的计算方式分为以下两类:

1. 采用梯度下降法计算权值

2. 依据稳定性理论设计权值

依据稳定性理论设计权值,即通过分析系统的Lyapunov稳定性,设计权值,从而保证系统的稳定性和收敛性。

考虑如下二阶非线性系统,以自适应RBF控制器的设计为例,对该权值设计方式进行简要介绍。

x ¨ = f ( x , x ˙ ) + g ( x , x ˙ ) u (3) \ddot{x} = f(x, \dot{x}) + g(x, \dot{x}) u \tag{3} x¨=f(x,x˙)+g(x,x˙)u(3)

其中, f f f 为未知非线性函数, g g g 为已知非线性函数; u ∈ R n u\in\mathbb{R}^n uRn y ∈ R n y\in\mathbb{R}^n yRn 分别为系统的控制输入和输出。

x 1 = x , x 2 = x ˙ x_1 = x, x_2 = \dot{x} x1=x,x2=x˙ y = x 1 y=x_1 y=x1,(3)式可改写为

x ˙ 1 = x 2 x ˙ 2 = f ( x 1 , x 2 ) + g ( x 1 , x 2 ) u y = x 1 \begin{aligned} &\dot{x}_1 = x_2 \\ &\dot{x}_2 = f(x_1,x_2) + g(x_1,x_2) u \\ & y = x_1 \end{aligned} x˙1=x2x˙2=f(x1,x2)+g(x1,x2)uy=x1

设理想跟踪指令为 y d y_d yd,则误差为
e = y d − y = y d − x 1 E = [ e , e ˙ ] T \begin{aligned} e &= y_d - y \\ &= y_d - x_1 \\ E &= [e, \dot{e}]^\text{T} \end{aligned} eE=ydy=ydx1=[e,e˙]T

设计 K = [ k p , k d ] T K=[k_p, k_d]^\text{T} K=[kp,kd]T 使多项式 s 2 + k d s + k p = 0 s^2 + k_d s + k_p = 0 s2+kds+kp=0 的根都在左半复平面。

将 RBF 神经网络的输出代替式(3)中未知函数,可设计控制律为
u = 1 g ( x ) [ ] u = \frac{1}{g(x)} [] u=g(x)1[]

Ref: rbf神经网络自适应控制matlab仿真_RBF神经网络及其在控制中的应用简介


5. RBF神经网络在控制中的应用

Ref: RBF神经网络参考模型自适应MATLAB实现(分析)


6. 严格反馈结构

控制理论中,什么是严格反馈结构?

严格反馈系统和纯反馈系统的区别是?


7. 反推控制 Backstepping

反推控制

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

反步(Back-Stepping)设计方法