模型预测控制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 TRK, N =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优化过程时其对应的优化变量第一项控制增量与该方法所得结果一致
