MPC模型预测控制器——数学推导

先参考一下基本内容;

MPC模型预测控制_tingfenghanlei的博客-CSDN博客_mpc模型预测控制

最优化控制和基本概念

参考链接:

MPC_1_最优化控制和基本概念_知识搬运工阿杰的博客-CSDN博客_mpc优化控制

最优控制的研究动机:在约束条件下达到最优的系统表现

Get the best performance within certain limitation

  • 注:

    所谓“最优”就是设计“惩罚函数”,把“惩罚函数”映射到“解空间”

    最优不是唯一解

误差 e = y − r e=y-r e=yr

举例:

下图是一个典型的单输入单输出系统(SISO):

图1
假设该系统是一个轨迹跟踪控制系统,其中e为轨迹跟踪误差,u为控制输入,则

  • ∫ 0 t e 2 d t \int_{0}^{t} e^{2} dt 0te2dt越小,说明轨迹追踪效果越好
  • ∫ 0 t u 2 d t \int_{0}^{t} u^{2} dt 0tu2dt越小,就表明该控制器的输入越小,能量消耗就越低

基于此,定义一个 Cost Function(目标/代价函数):

J = ∫ 0 t q e 2 + r u 2 d t ⇒ m i n J J = \int_{0}^{t} q e^{2}+r u^{2} dt \Rightarrow minJ J=0tqe2+ru2dtminJ

q > > r q >> r q>>r,控制器看重误差

r > > q r>>q r>>q,控制器看重输入

根据现实中不同的控制系统要求调节。而最优控制的目标就是使得代价函数J最小。

拓展到MIMO(多输入多输出)系统中:

d x d t = A x + B u Y = C x \begin{aligned}\frac{d x}{d t} &=A x+B u \\Y &=C x\end{aligned} dtdxY=Ax+Bu=Cx

其代价函数就可以写为:

J = ∫ 0 ∞ E T Q E + U T Q U d t J=\int_{0}^{\infty} E^{T} Q E+U^{T} Q U d t J=0ETQE+UTQUdt

其中Q、R分别为调节矩阵。

例如:

d x d t [ x 1 x 2 ] = A [ x 1 x 2 ] + B [ u 1 u 2 ] \frac{d x}{d t}\left[\begin{array}{l}x_{1} \\x_{2}\end{array}\right]=A\left[\begin{array}{l}x_{1} \\x_{2}\end{array}\right]+B\left[\begin{array}{l}u_{1} \\u_{2}\end{array}\right] dtdx[x1x2]=A[x1x2]+B[u1u2]

[ y 1 y 2 ] = [ x 1 x 2 ] R = [ r 1 r 2 ] = [ 0 0 ] E = [ x 1 x 2 ] \begin{gathered}{\left[\begin{array}{l}y_{1} \\y_{2}\end{array}\right]=\left[\begin{array}{l}x_{1} \\x_{2}\end{array}\right]} \\R=\left[\begin{array}{l}r_{1} \\r_{2}\end{array}\right]=\left[\begin{array}{l}0 \\0\end{array}\right] \\E=\left[\begin{array}{l}x_{1} \\x_{2}\end{array}\right]\end{gathered} [y1y2]=[x1x2]R=[r1r2]=[00]E=[x1x2]

E T Q E = [ x 1 x 2 ] T [ q 1 0 0 q 2 ] [ x 1 x 2 ] = q 1 x 1 2 + q 2 x 2 2 E^{T} Q E=\left[\begin{array}{l}x_{1} \\x_{2}\end{array}\right]^{T}\left[\begin{array}{cc}q_{1} & 0 \\0 & q_{2}\end{array}\right]\left[\begin{array}{l}x_{1} \\x_{2}\end{array}\right]=q_{1} x_{1}^{2}+q_{2} x_{2}^{2} ETQE=[x1x2]T[q100q2][x1x2]=q1x12+q2x22

U T ′ R U = r 1 u 1 2 + r 2 u 2 2 U^{T^{\prime}} R U=r_{1} u_{1}^{2}+r_{2} u_{2}^{2} UTRU=r1u12+r2u22

其中 q 1 、 q 2 、 x 1 、 x 2 q_{1}、q_{2}、x_{1}、x_{2} q1q2x1x2为权重系数。

关注哪个变量就把哪个变量对应的权重参数调大,另一个权重参数调小

MPC:模型预测

MPC作用机理描述为:在每一个采用时刻,根据获得的当前测量信息,在线求解一个有限时间开环优化问题,并将得到的控制序列的第一个元素作用于被控对象。在下一个采样时刻,重复上述过程:用新的测量值作为此时预测系统未来动态的初始条件,刷新优化问题并重新求解 。

即MPC算法包括三个步骤:

  1. 在k时刻估计/测量当前系统状态

  2. 基于 u k 、 u k + 1 . . . u k + n u_{k}、u_{k+1}...u_{k+n} ukuk+1...uk+n来进行最优化

    先找到曲线对应的控制区间和预测区间

    J = ∑ k = 0 N − 1 E k T Q E k + U k T Q U k + E N t F E N d t J=\sum_{k=0}^{N-1} E_{k}^{T} Q E_{k}+U_{k}^{T} Q U_{k}+E_{N}^{t} F E_{N} d t J=k=0N1EkTQEk+UkTQUk+ENtFENdt

    上式中第三项为最终代价

    对代价函数进行最优化,找到在预测区间内代价函数的最小值

  3. 只施加 u k u_{k} uk的控制量

    该步骤被称为滚动优化控制(Receding Horizon Control):

    预测的模型很难完美描述现实的系统,现实的系统可能会有扰动

    当时间从k到k+1时,对应的控制区间和预测区间也向右移动一个时刻,然后重复进行第二步

最优化数学建模推导

参考链接

MPC_2_最优化数学建模推导_知识搬运工阿杰的博客-CSDN博客

介绍最常用的一种最优化方法——二次规划

一般形式:

m i n Z T Q Z + C T Z minZ^{T} Q Z+C^{T} Z minZTQZ+CTZ

前面的部分是线性规划——最小二乘法: q 1 z 1 2 + q 2 z 2 2 q_{1} z_{1}^{2}+q_{2}z_{2}^{2} q1z12+q2z22

Q是对角矩阵

Q = [ q 1 q 2 q 3 q 4 ] Q=\begin{bmatrix} q_{1} & & & \\ & q_{2} & & \\ & & q_{3}&\\ & & &q_{4} \end{bmatrix} Q=q1q2q3q4

举例

x ( k + 1 ) = A x ( k ) + B u ( k ) x(k+1)=A x(k)+B u(k) x(k+1)=Ax(k)+Bu(k)

x为状态向量 [ x 1 x 2 x 3 x 4 ] \begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \\ x_{4}\end{bmatrix} x1x2x3x4,u为输入向量 [ u 1 u 2 u 3 u 4 ] \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ u_{4}\end{bmatrix} u1u2u3u4

在k时刻

X k = [ x ( k ∣ k ) x ( k + 1 ∣ k ) x ( k + 2 ∣ k ) ⋮ x ( k + N ∣ k ) ] X_{k}=\begin{bmatrix} x(k|k) \\ x(k+1|k) \\ x(k+2|k) \\\vdots \\ x(k+N|k)\end{bmatrix} Xk=x(kk)x(k+1k)x(k+2k)x(k+Nk)

U k = [ u ( k ∣ k ) u ( k + 1 ∣ k ) u ( k + 2 ∣ k ) ⋮ u ( k + i ∣ k ) u ( k + N − 1 ∣ k ) ] U_{k}=\begin{bmatrix} u(k|k) \\ u(k+1|k) \\ u(k+2|k) \\\vdots \\ u(k+i|k) \\ u(k+N-1|k)\end{bmatrix} Uk=u(kk)u(k+1k)u(k+2k)u(k+ik)u(k+N1k)

N称为预测空间(Predictive Horizon)

假设系统输出 y = x y=x y=x

参考值 R = 0 R=0 R=0

误差 E = y − R = x − 0 = x E=y-R=x-0=x E=yR=x0=x

代价函数

m i n J = ∑ i = 0 N − 1 x ( k + i ∣ k ) ⊤ Q x ( k + i ∣ k ) + u ( k + i ∣ k ) ⊤ Q u ( k + i ∣ k ) + x ( k + N ) ⊤ F x ( k + N ) d t min J=\sum_{i=0}^{N-1} x(k+i|k)^{\top} Q x(k+i|k)+u(k+i|k)^{\top} Q u(k+i|k)+x(k+N)^{\top} F x(k+N) d t minJ=i=0N1x(k+ik)Qx(k+ik)+u(k+ik)Qu(k+ik)+x(k+N)Fx(k+N)dt

上式可以理解为:

J=误差加权和+输入加权和+终端误差

系统的初始条件:

x ( k ∣ k ) = x k x(k|k)=x_{k} x(kk)=xk

x ( k + 1 ∣ k ) = A x ( k ∣ k ) + B u ( k ∣ k ) = A x k + B u ( k ∣ k ) x ( k + 2 ∣ k ) = A x ( k + 1 ∣ k ) + B u ( k + 1 ∣ k ) = A 2 x k + A B u ( k ∣ k ) + B u ( k + 1 ∣ k ) . . . x ( k + N ∣ k ) = A N x k + A N − 1 B u ( k ∣ k ) + . . . + B u ( k + N − 1 ∣ k ) \begin{aligned} x(k+1|k) &=A x(k|k)+B u(k|k) \\&=A x_{k}+B u(k|k) \\ x(k+2|k) &=A x(k+1|k)+B u(k+1|k) \\&=A^{2} x_{k}+A B u(k|k)+Bu(k+1|k) \\ &... \\ x(k+N|k) &=A^{N} x_{k}+A^{N-1} B u(k|k)+...+B u(k+N-1|k) \\ \end{aligned} x(k+1k)x(k+2k)x(k+Nk)=Ax(kk)+Bu(kk)=Axk+Bu(kk)=Ax(k+1k)+Bu(k+1k)=A2xk+ABu(kk)+Bu(k+1k)...=ANxk+AN1Bu(kk)+...+Bu(k+N1k)

X k = [ I A A 2 ⋮ A N ] x k + [ 0 0 ⋯ 0 B A B B ⋯ ⋮ ⋯ B A N − 1 B A N − 2 B ] + [ u ( k ∣ k ) u ( k + 1 ∣ k ) u ( k + 2 ∣ k ) ⋮ u ( k + N − 1 ∣ k ) ] X_{k} = \begin{bmatrix} I \\ A \\ A^{2} \\\vdots \\ A^{N} \end{bmatrix} x^{k}+\left[\begin{array}{ccccc} 0 & 0 & \cdots & 0 & \\ B & & & & & \\ A B & B & \cdots & & & \\ \vdots & & \cdots & B & \\ A^{N-1} B & A^{N-2} B & & & \end{array}\right]+\begin{bmatrix} u(k|k) \\ u(k+1|k) \\ u(k+2|k) \\\vdots \\ u(k+N-1|k) \end{bmatrix} Xk=IAA2ANxk+0BABAN1B0BAN2B0B+u(kk)u(k+1k)u(k+2k)u(k+N1k)

上述矩阵化为:

x k = M x k + C u k x_{k}=M x_{k}+C u_{k} xk=Mxk+Cuk

将代价函数展开

J = ∑ i = 0 N − 1 x ( k + i ∣ k ) ⊤ Q x ( k + i ∣ k ) + u ( k + i ∣ k ) ⊤ Q u ( k + i ∣ k ) + x ( k + N ) ⊤ F x ( k + N ) d t = x ( k ∣ k ) ⊤ Q x ( k ∣ k ) + x ( k + 1 ∣ k ) ⊤ Q x ( k + 1 ∣ k ) + ⋯ + x ( k + m − 1 ∣ k ) ⊤ Q x ( k + N − 1 ∣ k ) + x ( k + N ) ⊤ E x ( k + N ) \begin{aligned} J &= \sum_{i=0}^{N-1} x(k+i|k)^{\top} Q x(k+i|k)+u(k+i|k)^{\top} Q u(k+i|k)+x(k+N)^{\top} F x(k+N) d t \\&= x(k \mid k)^{\top} Q x(k \mid k)+x(k+1 \mid k)^{\top} Q x(k+1 \mid k)+\cdots+x(k+m-1 \mid k)^{\top} Q x(k+N-1 \mid k)+x(k+N)^{\top} E x(k+N) \end{aligned} J=i=0N1x(k+ik)Qx(k+ik)+u(k+ik)Qu(k+ik)+x(k+N)Fx(k+N)dt=x(kk)Qx(kk)+x(k+1k)Qx(k+1k)++x(k+m1k)Qx(k+N1k)+x(k+N)Ex(k+N)

J = [ x ( k ∣ k ) x ( k + 1 ∣ k ) ⋮ x ( k + N ∣ k ) ] ⊤ [ Q Q . . . F ] [ x ( k ∣ k ) ⋮ λ ( k + N ∣ k ) ] = X k ⊤ Q ˉ X k J=\left[\begin{array}{c}x(k \mid k) \\x(k+1 \mid k) \\\vdots\\x(k+N|k) \end{array}\right]^{\top}\left[\begin{array}{llll}Q & & & \\& Q & & \\& & ... & \\& & & F\end{array}\right]\left[\begin{array}{c}x(k \mid k) \\\vdots \\\lambda(k+N| k)\end{array}\right]=X_{k}^{\top} \bar{Q} X_{k} J=x(kk)x(k+1k)x(k+Nk)QQ...Fx(kk)λ(k+Nk)=XkQˉXk

J = X k ⊤ Q ˉ X k + U k ⊤ R ˉ U k = ( x k ⊤ M ⊤ + u R ⊤ C ⊤ + C U k ) Q ˉ ( M x k + C U k ) + U k ⊤ R U k \begin{aligned} J &=X_{k}^{\top} \bar{Q} X_{k}+U_{k}^{\top} \bar{R} U_{k} \\&=\left(x_{k}^{\top} M^{\top}+u_{R}^{\top} C^{\top}+C U_{k}\right) \bar{Q}\left(M x_{k}+C U_{k}\right)+U_{k}^{\top} R U_{k} \end{aligned} J=XkQˉXk+UkRˉUk=(xkM+uRC+CUk)Qˉ(Mxk+CUk)+UkRUk

G = M ⊤ Q ˉ M E = C ⊤ Q ˉ M H = C ⊤ R ˉ C + R G=M^{\top} \bar{Q} M \quad E=C^{\top} \bar{Q} M \quad H=C^{\top} \bar{R} C+R G=MQˉME=CQˉMH=CRˉC+R

将上式展开之后合并可得

m i n J = x k ⊤ G x k + 2 x k ⊤ E U k + U k ⊤ H U k min J=x_{k}^{\top} G x_{k}+2 x_{k}^{\top} E U_{k}+U_{k}^{\top} H U_{k} minJ=xkGxk+2xkEUk+UkHUk

上式为新的代价函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值