自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律
一、问题描述
设控制对象的状态方程为
x
˙
p
=
A
p
(
t
)
x
p
+
b
p
(
t
)
u
(1)
\dot{\boldsymbol{x}}_{p}=\boldsymbol{A}_{p}(t) x_{p}+\boldsymbol{b}_{p}(t) u \tag{1}
x˙p=Ap(t)xp+bp(t)u(1)
式中
A
p
=
[
0
1
−
6
−
7
]
,
b
p
=
[
2
4
]
(2)
\boldsymbol{A}_{p}=\left[\begin{array}{cc} 0 & 1 \\ -6 & -7 \end{array}\right], \quad \boldsymbol{b}_{p}=\left[\begin{array}{l} 2 \\ 4 \end{array}\right] \tag{2}
Ap=[0−61−7],bp=[24](2)
参考模型的状态方程为
x
˙
m
=
A
m
x
m
+
b
m
r
(3)
\dot{\boldsymbol{x}}_{m}=\boldsymbol{A}_{m} x_{m}+\boldsymbol{b}_{m} r \tag{3}
x˙m=Amxm+bmr(3)
式中
A
m
=
[
0
1
−
10
−
5
]
,
b
m
=
[
1
2
]
(4)
\boldsymbol{A}_{m}=\left[\begin{array}{cc} 0 & 1 \\ -10 & -5 \end{array}\right], \quad \boldsymbol{b}_{m}=\left[\begin{array}{l} 1 \\ 2 \end{array}\right] \tag{4}
Am=[0−101−5],bm=[12](4)
用李雅普诺夫稳定性理论设计自适应规律。
二、问题建模
由于控制对象的参数(状态矩阵 A p \boldsymbol{A}_{p} Ap 和控制矩阵 b p \boldsymbol{b}_{p} bp )一般是未知的,且无法直接调整。所以为改变控制对象的动态特性,需采用前馈控制加反馈控制。
控制信号
u
u
u 由前馈信号
K
r
Kr
Kr 和反馈信号
F
x
p
Fx_p
Fxp 组成,即
u
=
K
r
+
F
x
p
(5)
u=K r+F \boldsymbol{x}_{p} \tag{5}
u=Kr+Fxp(5)
式中,
r
r
r 为
m
m
m 维输入向量,
x
p
\boldsymbol{x}_{p}
xp 为
n
n
n 维状态向量,
K
K
K 为
m
×
m
m \times m
m×m 前馈增益矩阵,
F
F
F 为
m
×
n
m \times n
m×n 反馈增益矩阵;具体在本次仿真实验中,输入向量维度
m
=
1
m=1
m=1,状态向量维度
n
=
2
n=2
n=2。
将(5)式代入控制对象的状态方程,可得
x
˙
p
=
[
A
p
(
t
)
+
b
p
(
t
)
F
]
x
p
+
b
p
(
t
)
K
r
(6)
\dot{\boldsymbol{x}}_{p}=\left[\boldsymbol{A}_{p}(t)+\boldsymbol{b}_{p}(t) F\right] \boldsymbol{x}_{p}+\boldsymbol{b}_{p}(t) K r \tag{6}
x˙p=[Ap(t)+bp(t)F]xp+bp(t)Kr(6)
设系统的广义状态误差向量为
e
=
x
m
−
x
p
(7)
\boldsymbol{e}=\boldsymbol{x}_{m}-\boldsymbol{x}_{p} \tag{7}
e=xm−xp(7)
由参考模型的状态方程,结合(6)式及(7)式,可得:
e
˙
=
A
m
e
+
(
A
m
−
A
p
−
b
p
F
)
x
p
+
(
b
m
−
b
p
K
)
r
(8)
\dot{\boldsymbol{e}}=\boldsymbol{A}_{m} \boldsymbol{e}+\left(\boldsymbol{A}_{m}-\boldsymbol{A}_{p}-\boldsymbol{b}_{p} F\right) \boldsymbol{x}_{p}+\left(\boldsymbol{b}_{m}-\boldsymbol{b}_{p} K\right) r \tag{8}
e˙=Ame+(Am−Ap−bpF)xp+(bm−bpK)r(8)
在理想情况,即
e
→
0
e \rightarrow 0
e→0 的情况下,(8)式等号右端后两项应等于0。设前馈增益矩阵
K
K
K 和反馈增益矩阵
F
F
F 的理想值分别为
K
ˉ
\bar{K}
Kˉ 和
F
ˉ
\bar{F}
Fˉ。
则最终可将(8)式写成
e
˙
=
A
m
e
+
b
m
K
ˉ
−
1
Φ
x
p
+
b
m
K
ˉ
−
1
Ψ
r
(9)
\dot{\boldsymbol{e}}=\boldsymbol{A}_{m} \boldsymbol{e}+\boldsymbol{b}_{m} \bar{K}^{-1} \Phi \boldsymbol{x}_{p}+\boldsymbol{b}_{m} \bar{K}^{-1} \Psi r \tag{9}
e˙=Ame+bmKˉ−1Φxp+bmKˉ−1Ψr(9)
式中,
Φ
=
F
ˉ
−
F
\Phi=\bar{F}-F
Φ=Fˉ−F 为
m
×
n
m \times n
m×n 矩阵,
Ψ
=
K
ˉ
−
K
\Psi=\bar{K}-K
Ψ=Kˉ−K 为
m
×
m
m \times m
m×m 矩阵。
选取李雅普诺夫函数为:
V
=
1
2
[
e
T
P
e
+
tr
(
Φ
T
Γ
1
−
1
Φ
+
Ψ
T
Γ
2
−
1
Ψ
)
]
(10)
V=\frac{1}{2}\left[\boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{e}+\operatorname{tr}\left(\Phi^{T} \Gamma_{1}^{-1} \Phi+\Psi^{T} \Gamma_{2}^{-1} \Psi\right)\right] \tag{10}
V=21[eTPe+tr(ΦTΓ1−1Φ+ΨTΓ2−1Ψ)](10)
式中,
P
\boldsymbol{P}
P 为
n
×
n
n \times n
n×n 维正定对称阵,
Γ
1
\Gamma_{1}
Γ1 和
Γ
2
\Gamma_{2}
Γ2 均为
m
×
m
m \times m
m×m 维正定对称阵;符号
tr
\operatorname{tr}
tr 表示矩阵的迹。
求(10)式对时间的导数,得
V
˙
=
1
2
[
e
˙
P
e
+
e
T
P
e
˙
+
tr
(
Φ
˙
T
Γ
1
−
1
Φ
+
Φ
T
Γ
1
−
1
Φ
˙
+
Ψ
˙
T
Γ
2
−
1
Ψ
+
Ψ
T
Γ
2
−
1
Ψ
˙
)
]
(11)
\dot{V}=\frac{1}{2}\left[\dot{\boldsymbol{e}} \boldsymbol{P} \boldsymbol{e}+\boldsymbol{e}^{T} \boldsymbol{P} \dot{\boldsymbol{e}}+\operatorname{tr}\left(\dot{\Phi}^{T} \Gamma_{1}^{-1} \Phi+\Phi^{T} \Gamma_{1}^{-1} \dot{\Phi}+\dot{\Psi}^{T} \Gamma_{2}^{-1} \Psi+\Psi^{T} \Gamma_{2}^{-1} \dot{\Psi}\right)\right] \tag{11}
V˙=21[e˙Pe+eTPe˙+tr(Φ˙TΓ1−1Φ+ΦTΓ1−1Φ˙+Ψ˙TΓ2−1Ψ+ΨTΓ2−1Ψ˙)](11)
将(9)式代入(11)式,再根据矩阵迹的性质,于是有
V
˙
=
1
2
e
T
(
P
A
m
+
A
m
T
P
)
e
+
tr
(
Φ
˙
T
Γ
1
−
1
Φ
+
x
p
e
T
P
b
m
K
ˉ
−
1
Φ
)
+
tr
(
Ψ
˙
T
Γ
2
−
1
Ψ
+
r
e
T
P
b
m
K
ˉ
−
1
Ψ
)
(12)
\begin{aligned} \dot{V}=&\frac{1}{2} \boldsymbol{e}^{T}\left(\boldsymbol{P} \boldsymbol{A}_{m}+\boldsymbol{A}_{m}^{\boldsymbol{T}} \boldsymbol{P}\right) \boldsymbol{e}+\operatorname{tr}\left(\dot{\Phi}^{T} \Gamma_{1}^{-1} \Phi+\boldsymbol{x}_{p} \boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{b}_{m} \bar{K}^{-1} \Phi\right) \\ &+\operatorname{tr}\left(\dot{\Psi}^{T} \Gamma_{2}^{-1} \Psi+r \boldsymbol{e}^{T} \boldsymbol{P} \boldsymbol{b}_{m} \bar{K}^{-1} \Psi\right) \end{aligned} \tag{12}
V˙=21eT(PAm+AmTP)e+tr(Φ˙TΓ1−1Φ+xpeTPbmKˉ−1Φ)+tr(Ψ˙TΓ2−1Ψ+reTPbmKˉ−1Ψ)(12)
为满足李雅普诺夫第二法,需保证(12)式是负定的,对应的情况为(12)式第一项是负定的,后两项都为零。
因为
A
m
\boldsymbol{A}_{m}
Am 为稳定矩阵,则可选定正定对称阵
Q
Q
Q,使
P
A
m
+
A
m
T
P
=
−
Q
\boldsymbol{P} \boldsymbol{A}_{m}+\boldsymbol{A}_{m}^{\boldsymbol{T}} \boldsymbol{P}=-\boldsymbol{Q}
PAm+AmTP=−Q 成立。同时根据上述对应情况,
Φ
\Phi
Φ 和
Ψ
\Psi
Ψ 的选择如下:
Φ
˙
=
−
Γ
1
(
b
m
K
ˉ
−
1
)
T
P
e
x
p
T
Ψ
˙
=
−
Γ
2
(
b
m
K
ˉ
−
1
)
T
P
e
r
T
(13)
\begin{aligned} \dot{\Phi}&=-\Gamma_{1}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P} \boldsymbol{e} \boldsymbol{x}_{p}^{T} \\ \dot{\Psi}&=-\Gamma_{2}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P} \boldsymbol{e} r^{T} \end{aligned} \tag{13}
Φ˙Ψ˙=−Γ1(bmKˉ−1)TPexpT=−Γ2(bmKˉ−1)TPerT(13)
当
A
p
\boldsymbol{A}_{p}
Ap 和
b
p
\boldsymbol{b}_{p}
bp 为常值或缓慢变化时,可得自适应调节规律:
F
(
t
)
=
∫
0
t
Γ
1
(
b
m
K
ˉ
−
1
)
T
P
e
x
p
T
d
τ
+
F
(
0
)
K
(
t
)
=
∫
0
t
Γ
2
(
b
m
K
ˉ
−
1
)
T
P
e
r
d
τ
+
K
(
0
)
(14)
\begin{aligned} F(t)&=\int_{0}^{t} \Gamma_{1}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P e} \boldsymbol{x}_{p}^{T} d \tau+F(0) \\ K(t)&=\int_{0}^{t} \Gamma_{2}\left(\boldsymbol{b}_{m} \bar{K}^{-1}\right)^{T} \boldsymbol{P e} r d \tau+K(0) \end{aligned} \tag{14}
F(t)K(t)=∫0tΓ1(bmKˉ−1)TPexpTdτ+F(0)=∫0tΓ2(bmKˉ−1)TPerdτ+K(0)(14)
需额外说明的一点是,按上述步骤推导得到的自适应调节规律要求
x
p
\boldsymbol{x}_{p}
xp 与
r
r
r 线性独立。两者独立的条件是
r
(
t
)
r(t)
r(t) 为具有一定频率的方波信号或为
q
q
q 个不同频率的正弦信号组成的分段连续信号,其中
q
>
n
/
2
q>n / 2
q>n/2 或
q
>
(
n
−
1
)
/
2
q>(n-1) / 2
q>(n−1)/2。
三、问题求解
由上述推导可知,为采取李雅普诺夫稳定性理论设计该MRACS,需引入前馈增益矩阵 K K K 和反馈增益矩阵 F F F,设计的目标是确定 K K K 和 F F F 的系数。
在引入两个增益矩阵进行自适应控制后,可调系统的状态方程变为:
x
˙
p
=
[
A
p
(
t
)
+
b
p
(
t
)
F
]
x
p
+
b
p
(
t
)
K
r
(15)
\dot{\boldsymbol{x}}_{p}=\left[\boldsymbol{A}_{p}(t)+\boldsymbol{b}_{p}(t) F\right] \boldsymbol{x}_{p}+\boldsymbol{b}_{p}(t) K r \tag{15}
x˙p=[Ap(t)+bp(t)F]xp+bp(t)Kr(15)
由之前的推导可知,(14)式中的
b
m
K
ˉ
−
1
\boldsymbol{b}_{m} \bar{K}^{-1}
bmKˉ−1 与
b
p
\boldsymbol{b}_{p}
bp 的关系如下:
b
m
K
ˉ
−
1
=
b
p
=
[
2
4
]
(16)
\boldsymbol{b}_{m} \bar{K}^{-1}=\boldsymbol{b}_{p}=\left[\begin{array}{l} 2 \\ 4 \end{array}\right] \tag{16}
bmKˉ−1=bp=[24](16)
选取(14)式中的部分自适应参数如下:
P
=
[
3
1
1
1
]
,
Γ
1
=
Γ
2
=
1
(17)
\boldsymbol{P}=\left[\begin{array}{ll} 3 & 1 \\ 1 & 1 \end{array}\right], \quad \Gamma_{1}=\Gamma_{2}=1 \tag{17}
P=[3111],Γ1=Γ2=1(17)
所以可得最终的自适应规律:
F
(
t
)
=
∫
0
t
[
2
4
]
[
3
1
1
1
]
e
x
p
T
d
τ
+
F
(
0
)
K
(
t
)
=
∫
0
t
[
2
4
]
[
3
1
1
1
]
e
r
d
τ
+
K
(
0
)
(18)
\begin{aligned} F(t)&=\int_{0}^{t}\left[\begin{array}{ll} 2 & 4 \end{array}\right]\left[\begin{array}{ll} 3 & 1 \\ 1 & 1 \end{array}\right] \boldsymbol{e} \boldsymbol{x}_{p}^{T} d \tau+F(0) \\ K(t)&=\int_{0}^{t}\left[\begin{array}{ll} 2 & 4 \end{array}\right]\left[\begin{array}{ll} 3 & 1 \\ 1 & 1 \end{array}\right] \boldsymbol{e r d} \tau+K(0) \end{aligned} \tag{18}
F(t)K(t)=∫0t[24][3111]expTdτ+F(0)=∫0t[24][3111]erdτ+K(0)(18)
下将上述连续自适应规律进行离散化,用于实际的数值仿真实验。设数值积分步长为
h
h
h,则各时刻的参考模型状态向量及控制对象状态向量如下:
x
m
(
k
+
1
)
=
x
m
(
k
)
+
h
[
A
m
(
k
)
x
m
(
k
)
+
B
m
(
k
)
r
(
k
)
]
x
p
(
k
+
1
)
=
x
p
(
k
)
+
h
[
A
p
(
k
)
x
p
(
k
)
+
B
p
(
k
)
u
(
k
)
]
(19)
\begin{aligned} \boldsymbol{x}_{m}(k+1)&=\boldsymbol{x}_{m}(k)+h\left[\boldsymbol{A}_{m}(k) \boldsymbol{x}_{m}(k)+\boldsymbol{B}_{m}(k) r(k)\right] \\ \boldsymbol{x}_{p}(k+1)&=\boldsymbol{x}_{p}(k)+h\left[\boldsymbol{A}_{p}(k) \boldsymbol{x}_{p}(k)+\boldsymbol{B}_{p}(k) u(k)\right] \end{aligned} \tag{19}
xm(k+1)xp(k+1)=xm(k)+h[Am(k)xm(k)+Bm(k)r(k)]=xp(k)+h[Ap(k)xp(k)+Bp(k)u(k)](19)
由于上述推导得到的自适应控制规律要求
x
p
\boldsymbol{x}_{p}
xp 与
r
r
r 线性独立,即要求
r
(
t
)
r(t)
r(t) 为具有一定频率的方波信号或为
q
q
q 个不同频率的正弦信号组成的分段连续信号,其中
q
>
n
/
2
q>n / 2
q>n/2 或
q
>
(
n
−
1
)
/
2
q>(n-1) / 2
q>(n−1)/2。在本次实验中,
n
=
2
n=2
n=2,对应就要求
q
>
1
q>1
q>1,所以本次实验中选取由3个不同频率的正弦信号组成的分段连续信号,具体的输入信号的形式如下:
r
(
k
)
=
sin
(
0.01
π
k
)
+
4
sin
(
0.2
π
k
)
+
sin
(
π
k
)
(20)
r(k)=\sin (0.01 \pi k)+4 \sin (0.2 \pi k)+\sin (\pi k) \tag{20}
r(k)=sin(0.01πk)+4sin(0.2πk)+sin(πk)(20)
我们设计自适应规律时引入的控制信号
u
u
u 的离散化形式如下:
u
(
k
)
=
K
(
k
)
r
(
k
)
+
F
(
k
)
x
p
(
k
)
(21)
u(k)=K(k) r(k)+F(k) \boldsymbol{x}_{p}(k) \tag{21}
u(k)=K(k)r(k)+F(k)xp(k)(21)
最终,还需将自适应规律离散化:
F
(
k
)
=
h
⋅
∑
j
=
0
k
b
p
T
P
e
(
k
)
(
x
p
(
k
)
)
T
+
F
(
0
)
K
(
k
)
=
h
⋅
∑
j
=
0
k
b
p
T
P
e
(
k
)
r
(
k
)
+
K
(
0
)
(22)
\begin{aligned} F(k)&=h \cdot \sum_{j=0}^{k} \boldsymbol{b}_{p}^{T} \boldsymbol{P} \boldsymbol{e}(k)\left(\boldsymbol{x}_{p}(k)\right)^{T}+F(0) \\ K(k)&=h \cdot \sum_{j=0}^{k} \boldsymbol{b}_{p}^{T} \boldsymbol{P} \boldsymbol{e}(k) r(k)+K(0) \end{aligned} \tag{22}
F(k)K(k)=h⋅j=0∑kbpTPe(k)(xp(k))T+F(0)=h⋅j=0∑kbpTPe(k)r(k)+K(0)(22)
在推导出全部的自适应规律并对相应规律进行离散化后,通过MATLAB进行了相关的仿真实验。
可以得到2个维度的状态向量的参考模型值与可调系统值的情况如下:
可以看到,可调系统并没有很好的跟踪参考模型,这是由于在该例中不存在最优匹配。
附录:实现MATLAB代码
% 课本习题3.4-用李雅普诺夫稳定性理论设计自适应规律
clear, clc;
close all;
h=0.01;L=100/h; % 数值积分步长和仿真步数
% 可调系统的系数矩阵
Ap = [0 1;-6 -7];
Bp = [2; 4];
% 参考模型的系数矩阵
Am = [0 1;-10 -5];
Bm = [1; 2];
% n为行向量维数、m为列向量维数,Bp是n*m的矩阵
n = size(Bp, 1);
m = size(Bp, 2);
P = [3 1;1 1]; % 经计算得到的用于自适应规律的正定对称矩阵
% 设定所有参数的初始值
yr0 = zeros(m, 1);
xp0 = zeros(n, 1);
xm0 = zeros(n, 1);
u0 = zeros(m, 1);
e0 = zeros(n, 1);
F0 = zeros(m, n); % 反馈增益矩阵初始值
K0 = zeros(m, m); % 前馈增益矩阵初始值
% 初始分配参数空间
time = zeros(1, L); % 用于记录仿真的时刻,对应绘图的横轴
yr = zeros(m, L); % 输入信号(L个m维向量)
xp = zeros(n, L); % 可调系统的状态向量(L个n维向量)
xm = zeros(n, L); % 参考模型的状态向量(L个n维向量)
u = zeros(m, L); % 控制信号(L个m维向量)
e = zeros(n, L); % 系统的广义状态误差向量(L个n维向量)
for k = 1:L
time(k) = k*h;
% 输入信号
yr(k) = 1*sin(0.01*pi*time(k))+4*sin(0.2*pi*time(k))+sin(1*pi*time(k));
xp(:,k) = xp0+h*(Ap*xp0+Bp*u0); % 计算xp
xm(:,k) = xm0+h*(Am*xm0+Bm*yr0); % 计算xm
e(:,k) = xm(:,k)-xp(:,k); % e=xm-xp
% 代入F和K的自适应控制规律
F = F0+h*(Bp'*P*e0*xp0');
K = K0+h*(Bp'*P*e0*yr0);
% 控制信号u=K*r+F*xp(K是前馈增益矩阵,F是反馈增益矩阵)
u(:,k) = K*yr(k)+F*xp(:,k);
% 将本轮求解得到的参数赋值给参数初始值,方便下一轮迭代使用
yr0 = yr(:,k);
u0 = u(:,k);
e0 = e(:,k);
xp0 = xp(:,k);
xm0 = xm(:,k);
F0 = F;
K0 = K;
end
subplot(2,1,1);
plot(time, xm(1,:), 'Color', 'b', 'LineWidth', 0.9);
hold on
plot(time, xp(1,:), 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.1);
xlabel('t');
ylabel('x_m_1(t)、x_p_1(t)');
legend('x_m_1(t)','x_p_1(t)');
hold off
subplot(2,1,2);
plot(time, xm(2,:), 'Color', 'b', 'LineWidth', 0.9)
hold on
plot(time, xp(2,:), 'Color', 'r', 'LineStyle', '--', 'LineWidth', 1.1)
xlabel('t');
ylabel('x_m_2(t)、x_p_2(t)');
legend('x_m_2(t)', 'x_p_2(t)');
hold off
参考书目
李言俊, 张科. 自适应控制理论及应用[M]. 西北工业大学出版社, 2005.