模型预测控制(MPC)原理及详细推导

模型预测控制:通过模型预测系统在某一未来时间段内的表现来进行优化控制。

具体控制方法可以分为以下几个步骤:

Step1:估计/测量当前k时刻的系统状态\pmb{x}_{k}

Step2:基于输入\pmb{u}_{k},\pmb{u}_{k+1},\cdots ,\pmb{u}_{k+N-1}(控制区间,自己选定)来对代价函数进行最优化控制,计算得到最优输入和系统输出\pmb{y}_{k},\pmb{y}_{k+1},\cdots ,\pmb{y}_{k+N}(预测区间)。

Step3:只选取最优化结果中的第一个(\pmb{u}_{k})作为系统输入实施。 

Step4:在下一时刻返回Step2重复上述步骤实现滚动优化过程。


针对Step2中的最优化控制(基于二次规划方法)下面给出详细数学推导:

首先给出系统状态方程

\begin{aligned} \boldsymbol{x}_{k+1}&=\boldsymbol{A}_{n\times n}\boldsymbol{x}_{k}+\boldsymbol{B}_{n\times p}\boldsymbol{u}_{k} \end{}

其中\pmb{x}_{k}n\times 1矩阵,\pmb{u}_{k}p\times 1矩阵。

在k时刻进行预测(N为预测区间)

模型预测控制(MPC)原理及详细推导_第1张图片

模型预测控制(MPC)原理及详细推导_第2张图片

假设系统输出\boldsymbol{y}=\boldsymbol{x}且参考值\boldsymbol{R}=0,因此误差

\boldsymbol{E}=\boldsymbol{y}-\boldsymbol{R}=\boldsymbol{x}

代价函数\boldsymbol{J}

\begin{aligned} \boldsymbol{J}&=\sum_{k}^{N-1}(\boldsymbol{E}_{k}^T\boldsymbol{Q}\boldsymbol{E}_{k}+\boldsymbol{u}_{k}^T\boldsymbol{Q}\boldsymbol{u}_{k})+\boldsymbol{E}_{N}^T\boldsymbol{F}\boldsymbol{E}_{N} \\&=\sum_{i=0}^{N-1}(\boldsymbol{x}(k+i|k)^T\boldsymbol{Q}\boldsymbol{x}(k+i|k)+\boldsymbol{u}(k+i|k)^T\boldsymbol{R}\boldsymbol{u}(k+i|k))+\boldsymbol{x}(k+N)^T\boldsymbol{F}\boldsymbol{x}(k+N) \end{aligned}

即误差加权和、输入加权和以及终端误差三者之和。

由于设计的控制器目标是控制输入u,所以需要消除状态变量x

\begin{aligned} \boldsymbol{x}(k|k)&=\boldsymbol{x}_{k} \\\boldsymbol{x}(k+1|k)&=\boldsymbol{A}\boldsymbol{x}(k|k)+\boldsymbol{B}\boldsymbol{u}(k|k)=\boldsymbol{A}\boldsymbol{x}_{k}+\boldsymbol{B}\boldsymbol{u}(k|k) \\\boldsymbol{x}(k+2|k)&=\boldsymbol{A}\boldsymbol{x}(k+1|k)+\boldsymbol{B}\boldsymbol{u}(k+1|k)=\boldsymbol{A}^2\boldsymbol{x}_{k}+\boldsymbol{ABu}(k|k)+\boldsymbol{Bu}(k+1|k) \\\vdots \\\boldsymbol{x}(k+N|k)&=\boldsymbol{A}^N\boldsymbol{x}_{k}+\boldsymbol{A}^{N-1}\boldsymbol{Bu}(k|k)+\cdots +\boldsymbol{Bu}(k+N-1|k) \end{aligned}

 \Rightarrow \boldsymbol{X}_{k}=\begin{bmatrix} \boldsymbol{I}_{n\times n}\\ \boldsymbol{A}_{n\times n}\\ \boldsymbol{A}^2\\ \vdots \\ \boldsymbol{A}^N \end{bmatrix}\boldsymbol{x}_{k}+\begin{bmatrix} \boldsymbol{O}_{n\times 1}\\ \boldsymbol{B}_{n\times p}& & & \\ \boldsymbol{AB}& \boldsymbol{B} \\ \vdots & \vdots & \ddots & \\ \boldsymbol{A}^{N-1}\boldsymbol{B}& \boldsymbol{A}^{N-2}\boldsymbol{B}& \cdots & \boldsymbol{B} \end{bmatrix}\boldsymbol{U}_{k}

\Rightarrow \boldsymbol{X}_{k}=\boldsymbol{M}{\color{Red} _{(N+1)n\times n}}\boldsymbol{x}_{k}+\boldsymbol{C}{\color{Red} _{(N+1)n\times Np}}\boldsymbol{U}_{k}

将上式代入代价函数中可以得到,

\begin{aligned} \boldsymbol{J}&=\sum_{i=0}^{N-1}(\boldsymbol{x}(k+i|k)^T\boldsymbol{Qx}(k+i|k)+\boldsymbol{u}(k+i|k)^T\boldsymbol{Ru}(k+i|k))+\boldsymbol{x}(k+N)^T\boldsymbol{Fx}(k+N) \\&= \begin{bmatrix} \boldsymbol{x}(k|k)\\ \boldsymbol{x}(k+1|k)\\ \vdots \\ \boldsymbol{x}(k+N|k) \end{bmatrix}^T\begin{bmatrix} \boldsymbol{Q}\\ &\boldsymbol{Q}\\ &&\ddots\\ &&&\boldsymbol{F} \end{bmatrix}\begin{bmatrix} \boldsymbol{x}(k|k)\\ \boldsymbol{x}(k+1|k)\\ \vdots \\ \boldsymbol{x}(k+N|k) \end{bmatrix}+ \begin{bmatrix} \boldsymbol{u}(k|k)\\ \boldsymbol{u}(k+1|k)\\ \vdots \\ \boldsymbol{u}(k+N-1|k) \end{bmatrix}^T\begin{bmatrix} \boldsymbol{R}\\ &\boldsymbol{R}\\ &&\ddots\\ &&&\boldsymbol{R} \end{bmatrix}\begin{bmatrix} \boldsymbol{u}(k|k)\\ \boldsymbol{u}(k+1|k)\\ \vdots \\ \boldsymbol{u}(k+N-1|k) \end{bmatrix} \end{aligned}

\large \begin{aligned} \Rightarrow \boldsymbol{J}&=\boldsymbol{X}_{k}\bar{\boldsymbol{Q}}\boldsymbol{X}_{k}+\boldsymbol{U}_{k}^{T}\bar{\boldsymbol{R}}\boldsymbol{U}_{k} \\&=(\boldsymbol{Mx}_{k}+\boldsymbol{CU}_{k})^T\bar{\boldsymbol{Q}}(\boldsymbol{Mx}_{k}+\boldsymbol{CU}_{k})+\boldsymbol{U}_{k}^{T}\bar{\boldsymbol{R}}\boldsymbol{U}_{k} \\&=(\boldsymbol{x}_{k}^T\boldsymbol{M}^{T}+\boldsymbol{U}_{k}^{T}\boldsymbol{C}^T)\bar{\boldsymbol{Q}}(\boldsymbol{Mx}_{k}+\boldsymbol{CU}_{k})+\boldsymbol{U}_{k}^{T}\bar{\boldsymbol{R}}\boldsymbol{U}_{k} \\&=\boldsymbol{x}_{k}^T\boldsymbol{M}^{T}\bar{\boldsymbol{Q}}\boldsymbol{Mx}_{k}+\boldsymbol{x}_{k}^T\boldsymbol{M}^{T}\bar{\boldsymbol{Q}}\boldsymbol{CU}_{k}+\boldsymbol{U}_{k}^{T}\boldsymbol{C}^T\bar{\boldsymbol{Q}}\boldsymbol{Mx}_{k}+\boldsymbol{U}_{k}^{T}\boldsymbol{C}^T\bar{\boldsymbol{Q}}\boldsymbol{CU}_{k}+\boldsymbol{U}_{k}^{T}\bar{\boldsymbol{R}}\boldsymbol{U}_{k} \end{aligned}

         \begin{aligned} &=\boldsymbol{x}_{k}^T\boldsymbol{M}^{T}\bar{\boldsymbol{Q}}\boldsymbol{Mx}_{k}+2\boldsymbol{x}_{k}^T\boldsymbol{M}^T\bar{\boldsymbol{Q}}\boldsymbol{CU}_{k}+\boldsymbol{U}_{k}^{T}(\boldsymbol{C}^T\bar{\boldsymbol{Q}}\boldsymbol{C}+\bar{\boldsymbol{R}})\boldsymbol{U}_{k} \\&=\boldsymbol{x}_{k}^T\boldsymbol{Gx}_{k}+2\boldsymbol{x}_{k}^T\boldsymbol{EU}_{k}+\boldsymbol{U}_{k}^{T}\boldsymbol{HU}_{k} \end{aligned}

\large \begin{aligned} \boldsymbol{G}&=\boldsymbol{M}^{T}\bar{\boldsymbol{Q}}\boldsymbol{M} \\\boldsymbol{E}&=\boldsymbol{M}^T\bar{\boldsymbol{Q}}\boldsymbol{C} \\\boldsymbol{H}&=\boldsymbol{C}^T\bar{\boldsymbol{Q}}\boldsymbol{C}+\bar{\boldsymbol{R}}\end{aligned}

即代价函数\boldsymbol{J}可以转化为初始状态\boldsymbol{x}_{k}^T\boldsymbol{Gx}_{k}和二次规划形式2\boldsymbol{x}_{k}^T\boldsymbol{E}{\color{Red}\boldsymbol{U}_{k}}+{\color{Red}\boldsymbol{U}_{k}^{T}}\boldsymbol{H}{\color{Red}\boldsymbol{U}_{k}}的结合。

之后便可以通过二次规划的方法求得最优解。

你可能感兴趣的:(控制理论,算法,算法,学习)