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


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

    一、问题描述

    设控制对象的状态方程为
    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[

    0167" role="presentation" style="position: relative;">0167
    \right], \quad \boldsymbol{b}_{p}=\left[
    24" role="presentation" style="position: relative;">24
    \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[
    01105" role="presentation" style="position: relative;">01105
    \right], \quad \boldsymbol{b}_{m}=\left[
    12" role="presentation" style="position: relative;">12
    \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)

    V˙=12eT(PAm+AmTP)e+tr(Φ˙TΓ11Φ+xpeTPbmK¯1Φ)+tr(Ψ˙TΓ21Ψ+reTPbmK¯1Ψ)" role="presentation" style="position: relative;">V˙=12eT(PAm+AmTP)e+tr(Φ˙TΓ11Φ+xpeTPbmK¯1Φ)+tr(Ψ˙TΓ21Ψ+reTPbmK¯1Ψ)
    \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)

    Φ˙=Γ1(bmK¯1)TPexpTΨ˙=Γ2(bmK¯1)TPerT" role="presentation" style="position: relative;">Φ˙=Γ1(bmK¯1)TPexpTΨ˙=Γ2(bmK¯1)TPerT
    \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)
    F(t)=0tΓ1(bmK¯1)TPexpTdτ+F(0)K(t)=0tΓ2(bmK¯1)TPerdτ+K(0)" role="presentation" style="position: relative;">F(t)=0tΓ1(bmK¯1)TPexpTdτ+F(0)K(t)=0tΓ2(bmK¯1)TPerdτ+K(0)
    \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[

    24" role="presentation" style="position: relative;">24
    \right] \tag{16} bmKˉ1=bp=[24](16)
    选取(14)式中的部分自适应参数如下:
    P = [ 3 1 1 1 ] , Γ 1 = Γ 2 = 1 (17) \boldsymbol{P}=\left[
    3111" role="presentation" style="position: relative;">3111
    \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)
    F(t)=0t[24][3111]expTdτ+F(0)K(t)=0t[24][3111]erdτ+K(0)" role="presentation" style="position: relative;">F(t)=0t[24][3111]expTdτ+F(0)K(t)=0t[24][3111]erdτ+K(0)
    \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)
    xm(k+1)=xm(k)+h[Am(k)xm(k)+Bm(k)r(k)]xp(k+1)=xp(k)+h[Ap(k)xp(k)+Bp(k)u(k)]" role="presentation" style="position: relative;">xm(k+1)=xm(k)+h[Am(k)xm(k)+Bm(k)r(k)]xp(k+1)=xp(k)+h[Ap(k)xp(k)+Bp(k)u(k)]
    \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)
    F(k)=hj=0kbpTPe(k)(xp(k))T+F(0)K(k)=hj=0kbpTPe(k)r(k)+K(0)" role="presentation" style="position: relative;">F(k)=hj=0kbpTPe(k)(xp(k))T+F(0)K(k)=hj=0kbpTPe(k)r(k)+K(0)
    \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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    参考书目

    李言俊, 张科. 自适应控制理论及应用[M]. 西北工业大学出版社, 2005.

  • 相关阅读:
    CDR插件开发之Addon插件007 - Addon插件简介和案例演示
    idea正常,jar启动报错
    2022年全球及中国工程机械行业头部企业市场占有率及排名调研报告
    题目0063-射击比赛
    SAGI GAMES 创始人曾嵘:瞄准休闲游戏,将“创意”转化为“商业”
    自动化python的简单使用
    完美解决configure: error: APR not found. Please read the documentation.
    电脑重装系统word从第二页开始有页眉页脚如何设置
    数据的距离度量 三、Jaccard距离,卡方相似度,相关系数,Dice系数
    万宾科技亮相2023中国传感器与应用技术大会,创始人CEO发表演讲
  • 原文地址:https://blog.csdn.net/alan1ly/article/details/126056136