径向基 | |
---|---|
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˙=x1−xd=x˙1−x˙d=x2−x˙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˙2−x¨d=ce˙+f(x)+u−x¨d(4)
由式(3)可知,如果 s → 0 s\rightarrow 0 s→0,则 e → 0 e\rightarrow 0 e→0 且 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)+u−x¨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。画画图,看看效果。
首先是没有未知干扰项的仿真结果,如下图所示。
紧接着给出有 f ( x ) f(x) f(x) 的仿真结果。
最后再把程序给出。
% 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(2bj2∥x−cj∥2)(4)
f = W ∗ T h ( x ) + ε (5) f = W^{*\text{T}}h(x) + \varepsilon \tag{5} f=W∗Th(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)=W∗Th(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)+u−x¨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 u∈Rn 和 y ∈ R n y\in\mathbb{R}^n y∈Rn 分别为系统的控制输入和输出。
令 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=yd−y=yd−x1=[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实现(分析)