分三章学习MPC的理论细节。推荐北航诸兵老师的课程。笔者在此基础上加入自己的理解。放个链接在这:模型预测控制(2022春)lecture 1-2 Unconstrained MPC_哔哩哔哩_bilibili
无约束线性MPC
- LTI system: x ( k + 1 ) = A x ( k ) + B u ( k ) x(k+1)=Ax(k)+Bu(k) x(k+1)=Ax(k)+Bu(k)
- 定义:
x
(
i
∣
k
)
x(i|k)
x(i∣k):向后预测 i步长,
x
(
0
∣
k
)
=
x
(
k
)
,
u
(
0
∣
k
)
=
u
(
k
)
x(0|k)=x(k),u(0|k)=u(k)
x(0∣k)=x(k),u(0∣k)=u(k)。
所以, x ( i ∣ k ) = A x ( i − 1 ∣ k ) + A i − 1 B u ( 0 ∣ k ) + A i − 2 B u ( 1 ∣ k ) + ⋯ + B u ( i − 1 ∣ k ) x(i|k) = Ax(i-1|k)+A^{i-1}Bu(0|k)+A^{i-2}Bu(1|k)+\cdots+Bu(i-1|k) x(i∣k)=Ax(i−1∣k)+Ai−1Bu(0∣k)+Ai−2Bu(1∣k)+⋯+Bu(i−1∣k)
写成矩阵形式 X ( k ) X(k) X(k)和 U ( k ) U(k) U(k),有: X ( k ) = F x ( k ) + Φ U ( k ) X(k)=Fx(k)+\Phi U(k) X(k)=Fx(k)+ΦU(k) - Cost funtion:
可解得,
U
∗
(
k
)
=
−
(
Φ
T
Q
Φ
+
R
)
−
1
Φ
T
Q
F
x
(
k
)
U^*(k)=-(\Phi^TQ\Phi +R)^{-1}\Phi^T QFx(k)
U∗(k)=−(ΦTQΦ+R)−1ΦTQFx(k)
执行第一项,
- EXAMPLE:
离线计算优化,公式确定。
- 闭环系统中:
x
(
k
+
1
)
=
(
A
−
B
K
m
p
c
)
x
(
k
)
x(k+1)=(A-BK_{mpc})x(k)
x(k+1)=(A−BKmpc)x(k)
前提:系统稳定可控(根判别法,连续: ( A − B K m p c ) (A-BK_{mpc}) (A−BKmpc)根实部小于0;离散: ( A − B K m p c ) (A-BK_{mpc}) (A−BKmpc)根位于单位圆内)当预测无法反映系统整体趋势时,即N(contrrol horizon)过小时,会导致系统不稳定,从而无法正确预测。最优并不能保证系统稳定
由上可知,优化本身并不能保证系统稳定。若每次滚动优化后都进行一次稳定性判断,过于繁琐。故我们需要寻找一种机制避免次次计算判断。
按上述分析,令
N
=
∞
N=\infty
N=∞即可。
事实上,可以有严格数学证明:
我们选择使用lyapunov function直接判别法证明:
N
=
∞
N=\infty
N=∞时,cost funtion变为:
在
k
+
1
k+1
k+1时刻,至少存在一组可行解(上一次优化控制量
u
u
u等于下次实际控制量,即从k+1时刻起预测完全符合下一时刻):
u
(
i
∣
k
+
1
)
=
u
∗
(
i
+
1
∣
k
)
u(i|k+1)=u^*(i+1|k)
u(i∣k+1)=u∗(i+1∣k)
x
(
i
∣
k
+
1
)
=
x
∗
(
i
+
1
∣
k
)
x(i|k+1)=x^*(i+1|k)
x(i∣k+1)=x∗(i+1∣k)
该可行解不一定是最优解,但最优解小于等于该可行解。使用
J
∗
J^*
J∗代表最优解,
J
J
J代表当前可行解。由于上一次优化控制量
u
u
u等于下次实际控制量,即从k+1时刻起预测完全符合下一时刻,故后边轨迹均相等相减后只剩初始k时刻的cost值。
所以有:
J
∗
(
k
+
1
)
−
J
∗
(
k
)
≤
J
(
k
+
1
)
−
J
∗
(
k
)
=
−
∣
∣
x
(
1
∣
k
)
∣
∣
Q
2
−
∣
∣
u
(
0
∣
k
)
∣
∣
R
2
J^*(k+1)-J^*(k)\leq J(k+1)-J^*(k)=-||x(1|k)||^2_Q-||u(0|k)||^2_R
J∗(k+1)−J∗(k)≤J(k+1)−J∗(k)=−∣∣x(1∣k)∣∣Q2−∣∣u(0∣k)∣∣R2
容易看出,该结果负定。符合离散系统lyapunov function直接判别法。得证。
- 解无穷u的无约束线性MPC:
- 困扰: Q 和 R Q和R Q和R均为无穷维矩阵,无法计算。
- 由discrete-time lyapunov function,
J
(
k
)
J(k)
J(k)极限为有限值。
以上,我们将无限时域的问题转化成了有限时域问题。
此时
Q
=
d
i
a
g
[
q
,
q
,
.
.
.
q
,
K
]
,
R
=
d
i
a
g
[
r
,
r
,
r
,
.
.
.
r
]
Q=diag[q,q,...q,K],R=diag[r,r,r,...r]
Q=diag[q,q,...q,K],R=diag[r,r,r,...r]
3. 一个例子: