自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律

自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律

一、问题描述

设控制对象的状态方程为
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=[0617],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=[01015],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=xmxp(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+(AmApbpF)xp+(bmbpK)r(8)
在理想情况,即 e → 0 e \rightarrow 0 e0 的情况下,(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Γ11Φ+ΨTΓ21Ψ)](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Γ11Φ+ΦTΓ11Φ˙+Ψ˙TΓ21Ψ+ΨTΓ21Ψ˙)](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Γ11Φ+xpeTPbmKˉ1Φ)+tr(Ψ˙TΓ21Ψ+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>(n1)/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>(n1)/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)=hj=0kbpTPe(k)(xp(k))T+F(0)=hj=0kbpTPe(k)r(k)+K(0)(22)
在推导出全部的自适应规律并对相应规律进行离散化后,通过MATLAB进行了相关的仿真实验。

可以得到2个维度的状态向量的参考模型值与可调系统值的情况如下:

在这里插入图片描述

图1. 状态向量的参考模型值与可调系统值

可以看到,可调系统并没有很好的跟踪参考模型,这是由于在该例中不存在最优匹配。

附录:实现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.

猜你喜欢

转载自blog.csdn.net/alan1ly/article/details/126056136