注:本文是针对离散时间系统MPC预测控制计算
>> 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+KTRK,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
>> 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
特征值在单位圆内,并且离单位圆还有一定距离,也就是说该系统有一定的稳定裕度
>> 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()求出的结果只是很接近,但不相同。
其中输入包含:
在所有情况中,如果忽略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相同,如下:
区别:与第一、二章的区别在于在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()求出的结果相同。