Advertisement

模型预测控制MPC3(无约束MPC,Unconstrained Model Predictive Control)

阅读量:

注:本文是针对离散时间系统MPC预测控制计算

Unconstrained Model Predictive Control

  • 一、Example

  • 二、MATLAB实例:

    • 2.1 任取反馈矩阵K=[1.4,5.76]
    • 2.2 任取反馈矩阵K=[2,8]
  • 三、离散LQR函数实现:[K,P,r] = dlqr(A,B,Q,R)

    • 3.1 形式:
    • 3.2 函数dlqr()和MPC求解对比:

一、Example

无限时域

在这里插入图片描述

区别是在Q的基础上加了 K TRK

二、MATLAB实例:

2.1 任取反馈矩阵K=[1.4,5.76]

复制代码
    >> A
    A =
    1.1000    2.0000
         0    0.9500
    
    >> B
    B =
         0
    0.0790
    
    >> Q
    Q =
     1     0
     0     1
    
    >> R
    R =
    0.1000
    
    >> K
    K =
    1.4000    5.7600
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读
复制代码
    >> eig(A)
    A =
    1.1000
    0.9500
    
    >> Acl=A-B*K
    Acl =
    1.1000    2.0000
       -0.1106    0.4950
       
    >> eig(Acl)
    Acl =
       0.7975 + 0.3601i
       0.7975 - 0.3601i
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

开环系统的状态矩阵A存在模大于1的特征根,则该开环系统必然处于不稳定状态;而当其反馈校正后的状态矩阵Acl的所有特征根均位于复数域单位圆内部时,则该闭环控制系统具有良好的稳定性特性。同时,在解决上述控制系统稳定性问题的过程中,请计算离散时间系统的P矩阵。

复制代码
    >> Q2=Q+K'*R*K
    Q2 =
    1.1960    0.8064
    0.8064    4.3178
    
    >> P=dlyap(A2',Q2)
    P =
    5.2471   12.8188
       12.8188   67.1313
    
    
      
      
      
      
      
      
      
      
      
    
    代码解读

注意:这里的 Q =Q +K TRKN =4,
所以,根据 Q =diag[Q ,Q ,Q ,P]; R =diag[R ,R ,R ,R]有

复制代码
    Q_ =
    1.0000         0         0         0         0         0         0         0
         0    1.0000         0         0         0         0         0         0
         0         0    1.0000         0         0         0         0         0
         0         0         0    1.0000         0         0         0         0
         0         0         0         0    1.0000         0         0         0
         0         0         0         0         0    1.0000         0         0
         0         0         0         0         0         0    5.2471   12.8188
         0         0         0         0         0         0   12.8188   67.1313
    
    
      
      
      
      
      
      
      
      
      
    
    代码解读
复制代码
    R_ =
     0.1000         0         0         0
      0    0.1000         0         0
      0         0    0.1000         0
      0         0         0    0.1000
    
    
      
      
      
      
      
    
    代码解读
复制代码
      K_=(Fai'*Q_*Fai+R_)^(-1)*Fai'*Q_*F
    K_ =
    2.6168   12.9285
    0.2741    4.5212
       -0.7360   -0.0902
       -1.0828   -2.3610
    
    
      
      
      
      
      
      
    
    代码解读
在这里插入图片描述

新的反馈增益矩阵k构成的闭环系统矩阵特征值为:

复制代码
    >> Kmpc=[2.6168   12.9285]
    Kmpc =
       2.6168   12.9285
       
    >> A3=A-B*Kmpc
    A3 =
       1.1000    2.0000
      -0.2067   -0.0714
    
    >> eig(A3)
    ans =
5143 + 0.2654i
5143 - 0.2654i
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

系统的特征根位于单位圆之内,并且与单位圆之间存在一定的间距。这表明该系统具有一定的稳定性储备量。

2.2 任取反馈矩阵K=[2,8]

复制代码
    >> K=[2 8]
    K =
     2     8
    
    >> Acl=A-B*K
    Acl =
    1.1000    2.0000
       -0.1580    0.3180
    
    >> eig(Acl)
    ans =
       0.7090 + 0.4039i
       0.7090 - 0.4039i
       
     >> Q2=Q+K'*R*K
    Q2 =
    1.4000    1.6000
    1.6000    7.4000
    
    >> P=dlyap(Acl',Q2)
    P =
    4.5578    9.8278
    9.8278   42.4220
    
    Q_ =
    1.0000         0         0         0         0         0         0         0
         0    1.0000         0         0         0         0         0         0
         0         0    1.0000         0         0         0         0         0
         0         0         0    1.0000         0         0         0         0
         0         0         0         0    1.0000         0         0         0
         0         0         0         0         0    1.0000         0         0
         0         0         0         0         0         0    4.5578    9.8278
         0         0         0         0         0         0    9.8278   42.4220
    
     >> R
    R =
    0.1000
    
    >> K_=(Fai'*Q_*Fai+R_)^(-1)*Fai'*Q_*F
    K_ =
    2.5563   12.7249
    0.2790    4.5254
       -0.6540    0.1604
       -0.8928   -1.7578
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

注意到随机选择了一个k值后,并未采用dlqr()所计算出的最优增益K值来进行MPC算法的第一步预测。

三、离散LQR函数实现:[K,P,r] = dlqr(A,B,Q,R)

3.1 形式:

在这里插入图片描述

其中输入包含:

在这里插入图片描述

在所有情况中,如果忽略 N ,则 N 设定为0。
求出的解包含:

在这里插入图片描述
复制代码
    >> [K,P,r] = dlqr(A,B,Q,R)
    
    K =
    
       2.4950   12.5106
    
    
    P =
    
       4.0373    8.5226
       8.5226   31.5400
    
    
    r =
    
5308 + 0.2651i
5308 - 0.2651i
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

研究者们注意到,在线性二次型优化控制器dlqr()和无约束MPC求解过程中,反馈增益矩阵k保持一致。如式(1)所示:k = \text{dlqr}(A, B, Q, R)

3.2 函数dlqr()和MPC求解对比:

区别:与第一、二章的区别在于在Q的基础上加了 K TRK

复制代码
    >> A
    
    A =
    
       1.1000    2.0000
        0    0.9500
    
    >> B
    
    B =
    
        0
       0.0790
       >> Q
    
    Q =
    
    1     0
    0     1
    
    >> R
    
    R =
    
       0.1000
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

先用离散 dlqr()函数求解最优反馈增益矩阵 K

复制代码
    [K,P,r] = dlqr(A,B,Q,R)
    K =
    2.4950   12.5106
    
    P =
    4.0373    8.5226
    8.5226   31.5400
    
    r =
       0.5308 + 0.2651i
       0.5308 - 0.2651i
    
    
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

① 根据lyapunov方程可知闭环系统矩阵 Q 2=Q +K T RK
② 再求解闭环系统矩阵 Acl

复制代码
    >> Acl=A-B*K
    Acl =
       1.1000    2.0000
      -0.1971   -0.0383
    
    >> eig(Acl)
    ans =
5308 + 0.2651i
5308 - 0.2651i
    
    
      
      
      
      
      
      
      
      
      
    
    代码解读

当闭环系统的矩阵特征值位于单位圆内部时,则该系统呈现稳定性。接下来需要求取Lyapunov方程P

复制代码
    >> P=dlyap(Acl',Q2)
    P =
     4.0373    8.5226
     8.5226   31.5400
    
    
      
      
      
      
    
    代码解读

再求解反馈矩阵Kmpc

复制代码
    Q_ =
       1.0000         0         0         0         0         0         0         0
        0    1.0000         0         0         0         0         0         0
        0         0    1.0000         0         0         0         0         0
        0         0         0    1.0000         0         0         0         0
        0         0         0         0    1.0000         0         0         0
        0         0         0         0         0    1.0000         0         0
        0         0         0         0         0         0    4.0373    8.5226
        0         0         0         0         0         0    8.5226   31.5400
    
    >> K_=(Fai'*Q_*Fai+R_)^(-1)*Fai'*Q_*F
    
    K_ =
       2.4950   12.5106
       0.2785    4.5107
      -0.5822    0.3856
      -0.7165   -1.1786
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

发现:基于dlqr()函数计算得到的最优增益值K,在应用MPC优化过程时其对应的优化变量第一项控制增量与该方法所得结果一致

全部评论 (0)

还没有任何评论哟~