模型预测控制MPC2(无约束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

模型预测控制MPC2(无约束MPC,Unconstrained Model Predictive Control)_第1张图片
区别是在Q的基础上加了KTRK

二、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+KTRKN=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 =
  0.5143 + 0.2654i
  0.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求解的第一个k跟dlqr()求出的结果只是很接近,但不相同。

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

3.1 形式:

在这里插入图片描述
其中输入包含:
模型预测控制MPC2(无约束MPC,Unconstrained Model Predictive Control)_第2张图片
在所有情况中,如果忽略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 =

  0.5308 + 0.2651i
  0.5308 - 0.2651i

== 发现线性二次型优化控制器dlqr()和无约束MPC求解的反馈增益矩阵k相同,如下:

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

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

>> 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方程可知闭环系统矩阵Q2=Q+KTRK
② 再求解闭环系统矩阵Acl

>> Acl=A-B*K
Acl =
   1.1000    2.0000
  -0.1971   -0.0383

>> eig(Acl)
ans =
  0.5308 + 0.2651i
  0.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求解的第一个k跟dlqr()求出的结果相同。

你可能感兴趣的:(线性系统,矩阵,Lyapunov,算法,matlab,控制器,矩阵)