MPC模型预测控制及在Matlab中实现函数定义_mpc代价函数,2024年最新带你彻底弄明白

174 阅读10分钟

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。 img img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

基于b站DR_CAN老师的MPC控制视频【MPC模型预测控制器】4_数学建模推导--Matlab代码详解_哔哩哔哩_bilibili的学习分享如下:

一、研究目的

        在约束条件(物理限制)下达到最优的系统表现。

        1.对于单输入单输出(SISO)系统:

                         \int _{0}^{t}e^{2}dt越小,跟踪能力越强;

                        \int _{0}^{t}u^{2}dt越小,输入越小,能耗越低。(用平方项来衡量e、u的绝对值大小)

        2.代价函数Cost Function

                J=\int _{0}^{t}qe^{2}+ru^{2}dt\rightarrow minJ,通过设计u,寻找最小的J的过程为最优化

        其中q,r为调节参数

                ①若q>>r,则误差e对于设计系统的影响权重更大

                ②若r>>q,则系统设计更看重输入u

        3.对于多输入多输出(MIMO)系统:

                状态空间:\left{\begin{matrix} \frac{dX}{dt}=AX+BU \ Y=CX \end{matrix}\right.

                 代价函数:J=\int _{0}^{\infty }E^{T}QE+U^{T}RUdt

        具体地,例如已知系统\frac{d}{dt}\begin{bmatrix} x_{1}\ x_{2} \end{bmatrix} =A\begin{bmatrix} x_{1}\ x_{2} \end{bmatrix}+B \begin{bmatrix} u_{1}\ u_{2} \end{bmatrix},     \begin{bmatrix} y_{1}\ y_{2} \end{bmatrix}= \begin{bmatrix} x_{1}\ x_{2} \end{bmatrix},系统的参考目标Refer=\begin{bmatrix} refer_{1}\ refer_{2} \end{bmatrix}= \begin{bmatrix} 0\ 0 \end{bmatrix},则误差矩阵E=\begin{bmatrix} e_{1}\ e_{2} \end{bmatrix}=\begin{bmatrix} y_{1}-r_{1}\ y_{2}-r_{2} \end{bmatrix}=\begin{bmatrix} x_{1}\ x_{2} \end{bmatrix}

                E^{T}QE=\begin{bmatrix} x_{1}\ x_{2} \end{bmatrix}^{T}\begin{bmatrix} q_{1}& 0\ 0& q_{2} \end{bmatrix}\begin{bmatrix} x_{1}\ x_{2} \end{bmatrix} =q_{1}x_{1}^{2}+q_{2}x_{2}^{2}

                U^{T}RU=\begin{bmatrix} u_{1}\ u_{2} \end{bmatrix}^{T}\begin{bmatrix} r_{1}& 0\ 0& r_{2} \end{bmatrix}\begin{bmatrix} u_{1}\ u_{2} \end{bmatrix} =r_{1}u_{1}^{2}+r_{2}u_{2}^{2}

                其中,Q,R为调节矩阵,q_{1},q_{2},r_{1},r_{2}为系统最优时的权重系数。

二、基本概念

MPC(Model Predictive Control)模型预测控制:通过模型来预测系统在某一未来时间段内的表现来进行优化控制,多用于数位控制,用离散的状态空间表达,即X_{k+1}=AX_{k}+BU_{k}

实现步骤:

Step1:估计/测量读取当前k时刻的系统状态

Step2:基于u_{k},u_{k+1},...,u_{k+N}的选择进行最优化

                代价函数:J=\sum_{k}^{k+N-1}E_{k}^{T}QE_{k}+U_{k}^{T}RU_{k}+E_{N}^{T}FE_{N}

                其中,E_{k}为k时刻的误差矩阵,U_{k}为k时刻的输入矩阵,E_{N}为终端(N时刻)误差,Q,R为调节矩阵,F为终端误差权重矩阵

Step3:实施一步u_{k}(即从t=k运行到t=k+1即可)

                下一次从t=k+1时重复Step1到3,重新预测u_{k+1},...,u_{k+N+1}的输入

                即每一轮的预测都是预测区间和控制区间整体右移一个单位,整个过程是向右滚动的,

                称为滚动优化控制(Receding Horizon Control),系统对控制器的计算能力要求高。

三、MPC最优化建模

(对于模型求解的原理是基于二次规划(Quadratic Programming)模型的求解,通过调用Matlab、Python等二次规划函数求解,下面的代码用到Matlab的quadprog函数)

1.如何建立二次规划模型

        已知系统模型:X(k+1) = AX(k) + BU(k),输出Y=X,参考目标Refer=0

        其中,X(k+1) 为k+1时刻的状态变量,X(k) 为k时刻的状态变量,U(k)为k时刻的输入变量。

        在k时刻:

                ①设u(k+i | k)表示在k时刻预测的第k+i时刻的输入值,在预测区间N内,有u(k | k),u(k+1| k),...,u(k+N-1 | k),即U_{k}=\begin{bmatrix} u(k|k)\ u(k+1|k)\ ...\ u(k+N-1|k) \end{bmatrix}

                同理,X_{k}=\begin{bmatrix} x(k|k)\ x(k+1|k)\ ...\ x(k+N|k) \end{bmatrix},x(k+i | k)表示在k时刻预测的第k+i时刻的系统状态

                ②误差E=Y-Refer=X-0=X

                代价方程J=\sum_{i=0}^{N-1}x(k+i|k)^{T}Qx(k+i|k)+u(k+i|k)^{T}Ru(k+i|k)+x(k+N)^{T}Fx(k+N)

J=\sum(误差加权和 + 输入加权和 + 终端误差项)

                ③初始条件(k时刻)  x(k|k) = x_{k}

                   预测的k+1时刻  x(k+1|k) = Ax(k|k)+Bu(k|k)=Ax_{k}+Bu(k|k)

                   预测的k+2时刻x(k+2|k) = Ax(k+1|k)+Bu(k+1|k)=Ax_{k}^{2}+ABu(k|k)+Bu(k+1|k)

                   预测的k+N时刻x(k+N|k) =Ax_{k}^{N}+A^{N-1}Bu(k|k)+...+Bu(k+N-1|k)

                   综上,X_{k}=\begin{bmatrix} x(k|k)\ x(k+1|k)\ x(k+2|k)\ ...\ x(k+N|k) \end{bmatrix}=\begin{bmatrix} I\ A\ A^{2}\ ...\ A^{N} \end{bmatrix}x_{k}+\begin{bmatrix} 0 &0 &... &0 \ B & 0 & ... & 0\ AB &B &... &... \ ... & ... & ... &0 \ A^{N-1}B& A^{N-2}B &... & B \end{bmatrix}\begin{bmatrix} u(k|k)\ u(k+1|k))\ ...\ ...\ u(k+N-1|k) \end{bmatrix}

                简化为X_{k}=Mx_{k}+CU_{k}          (1)

                X_{k}为k时刻预测的一段时间内的所有状态值的组合向量,x_{k}为已知的t=k这一个时刻的状态值,M=\begin{bmatrix} I\ A\ A^{2}\ ...\ A^{N} \end{bmatrix},C=\begin{bmatrix} 0 &0 &... &0 \ B & 0 & ... & 0\ AB &B &... &... \ ... & ... & ... &0 \ A^{N-1}B& A^{N-2}B &... & B \end{bmatrix}

                在t=k时刻的代价矩阵可表述为J_{k}=X_{k}^{T}QX_{k}+U_{k}^{T}RU_{k}           (2)

                将式(1)代入(2)得

J_{k}=x_{k}^{T}M^{T}\bar{Q}Mx_{k}+x_{k}^{T}M^{T}\bar{Q}CU_{k}+U_{k}^{T}C^{T}\bar{Q}Mx_{k}+u_{k}^{T}C^{T}\bar{Q}Cu_{k}+U_{k}^{T}\bar{R}U_{k}

                其中,\bar{Q},\bar{R}为增广矩阵,\bar{Q}=\begin{bmatrix} Q & & & \ & ... & & \ & &Q & \ & & & F \end{bmatrix},\bar{R}=\begin{bmatrix} R & & & \ & R & & \ & &... & \ & & & R \end{bmatrix}

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。 img img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!