学习随笔#13 模型预测控制(MPC)

article/2025/11/9 10:41:41

MPC基本概念

  模型预测控制(MPC)是指通过模型来预测系统在某一未来时间段内的表现来进行优化控制。MPC多用于数位控制,因此使用系统的离散型状态空间表达形式,即 x k + 1 = A x k + B u k x_{k+1}=Ax_k+Bu_k xk+1=Axk+Buk。MPC一般分为3步:

  1. 估计/测量读取当前的系统状态;
  2. 基于 u k u_k uk u k + 1 u_{k+1} uk+1、……、 u k + n u_{k+n} uk+n来进行最优化;
  3. 只取 k k k时刻的系统输入 u k u_k uk,在 k + 1 k+1 k+1时刻,将控制区间(Control Horizon)和预测区间(Predictive Horizon)右移,重新执行前两步。

  这个过程被称为滚动优化控制(Receding Horizon Control)。代价函数(Cost Function)为
J = ∑ k N − 1 ( E k T Q E k + u k T R u k + E N T F E N ) J=\sum^{N-1}_k(E^T_kQE_k+u_k^TRu_k+E_N^TFE_N) J=kN1(EkTQEk+ukTRuk+ENTFEN)
其中 E N E_N EN为最终误差(Terminal Error)。MPC在求解时会考虑系统的约束(Constrains)。

最优化建模

  对于MPC,有很多方法可以对其最优化,这里介绍二次规划(Quadratic Programming)方法。二次规划的一般形式为求 Z T Q Z + C T Z Z^TQZ+C^TZ ZTQZ+CTZ的最小值,在这个式子里,第一项是二次型,第二项是线性的。如果 Q Q Q是一个对角阵,这个式子就变成了一个最小二乘的问题。

建立二次规划模型

  对于一个系统 x ( k + 1 ) = A x ( k ) + B u ( k ) x(k+1)=Ax(k)+Bu(k) x(k+1)=Ax(k)+Bu(k),其中 X X X为状态向量, U U U为系统输入。在 k k k时刻估计的系统在 k k k时刻的输入为 u ( k ∣ k ) u(k|k) u(kk),在k时刻估计的系统在 k + i k+i k+i时刻的输入为 u ( k + i ∣ k ) u(k+i|k) u(k+ik),直到 u ( k + N − 1 ∣ k ) u(k+N-1|k) u(k+N1k) k k k k + N − 1 k+N-1 k+N1为预测区间。对于系统状态也是同样,从 x ( k ∣ k ) x(k|k) x(kk) x ( k + N ∣ k ) x(k+N|k) x(k+Nk),控制区间比预测区间多一个周期。定义
X k = [ x ( k ∣ k ) x ( k + 1 ∣ k ) x ( k + 2 ∣ k ) ⋮ x ( k + N ∣ k ) ] , U k = [ u ( k ∣ k ) u ( k + 1 ∣ k ) u ( k + 2 ∣ k ) ⋮ u ( k + N ∣ k ) ] X_k=\left[\begin{matrix}x(k|k)\\x(k+1|k)\\x(k+2|k)\\\vdots\\x(k+N|k)\end{matrix}\right], U_k=\left[\begin{matrix}u(k|k)\\u(k+1|k)\\u(k+2|k)\\\vdots\\u(k+N|k)\end{matrix}\right] Xk=x(kk)x(k+1k)x(k+2k)x(k+Nk)Uk=u(kk)u(k+1k)u(k+2k)u(k+Nk)
  假设系统输出 y = x y=x y=x,系统参考 r = 0 r=0 r=0,则系统误差 e = y − r = x e=y-r=x e=yr=x,则系统的代价函数为
J = ∑ i = 0 N − 1 [ x ( k + i ∣ k ) T Q x ( k + i ∣ k ) + u ( k + i ∣ k ) T R u ( k + i ∣ k ) + x ( k + N ) T F x ( k + N ) ] J=\sum^{N-1}_{i=0}[x(k+i|k)^TQx(k+i|k)+u(k+i|k)^TRu(k+i|k)+x(k+N)^TFx(k+N)] J=i=0N1[x(k+ik)TQx(k+ik)+u(k+ik)TRu(k+ik)+x(k+N)TFx(k+N)]为了简化计算, Q Q Q R R R均设为对角矩阵。其中第一项为误差加权和,第二项为输入加权和,第三项为终端误差。
  为了将代价函数与二次规划统一,需要将系统状态 x x x转换为系统输入 u u u的函数。
x ( k ∣ k ) = x k 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|k) =& x_k\\x(k+1|k) =&Ax(k|k)+Bu(k|k)\\=&Ax_k+Bu(k|k)\\x(k+2|k)=&Ax(k+1|k)+Bu(k+1|k)\\=&A^2x_k+ABu(k|k)+Bu(k+1|k)\\\vdots\\x(k+N|k)=&A^Nx_k+A^{N-1}Bu(k|k)+\dots+Bu(k+N-1|k) \end{aligned} x(kk)=x(k+1k)==x(k+2k)==x(k+Nk)=xkAx(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 … 0 B 0 0 … 0 A B B 0 … 0 ⋮ ⋮ ⋮ ⋱ ⋮ A N − 1 B A N − 2 B A N − 3 B … B ] [ u ( k ∣ k ) u ( k + 1 ∣ k ) u ( k + 2 ∣ k ) ⋮ u ( k + N − 1 ∣ k ) ] X_k=\left[\begin{matrix}I\\A\\A^2\\\vdots\\A^N\end{matrix}\right]x_k+\left[\begin{matrix}0&0&0&\dots&0\\B&0&0&\dots&0\\AB&B&0&\dots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\A^{N-1}B&A^{N-2}B&A^{N-3}B&\dots&B\end{matrix}\right]\left[\begin{matrix}u(k|k)\\u(k+1|k)\\u(k+2|k)\\\vdots\\u(k+N-1|k)\end{matrix}\right] Xk=IAA2ANxk+0BABAN1B00BAN2B000AN3B000Bu(kk)u(k+1k)u(k+2k)u(k+N1k)

X k = M x k + C U k X_k=Mx_k+CU_k Xk=Mxk+CUk
  回到上面的代价函数,如果我们把第一项和第三项展开,就有
x ( k ∣ k ) T Q x ( k ∣ k ) + x ( k + 1 ∣ k ) T Q x ( k + 1 ∣ k ) + ⋯ + x ( k + N − 1 ∣ k ) T Q x ( k + N − 1 ∣ k ) + x ( k + N ∣ k ) T F x ( k + N ∣ k ) x(k|k)^TQx(k|k)+x(k+1|k)^TQx(k+1|k)+\dots+x(k+N-1|k)^TQx(k+N-1|k)+x(k+N|k)^TFx(k+N|k) x(kk)TQx(kk)+x(k+1k)TQx(k+1k)++x(k+N1k)TQx(k+N1k)+x(k+Nk)TFx(k+Nk)
将上式改写为矩阵形式有
原 式 = [ x ( k ∣ k ) x ( k + 1 ∣ k ) x ( k + 2 ∣ k ) ⋮ x ( k + N ∣ k ) ] T [ Q Q Q ⋱ F ] [ x ( k ∣ k ) x ( k + 1 ∣ k ) x ( k + 2 ∣ k ) ⋮ x ( k + N ∣ k ) ] = X T Q ‾ X \begin{aligned} 原式=&\left[\begin{matrix}x(k|k)\\x(k+1|k)\\x(k+2|k)\\\vdots\\x(k+N|k)\end{matrix}\right]^T\left[\begin{matrix}Q&&&&\\&Q&&&\\&&Q&&\\&&&\ddots&\\&&&&F\end{matrix}\right]\left[\begin{matrix}x(k|k)\\x(k+1|k)\\x(k+2|k)\\\vdots\\x(k+N|k)\end{matrix}\right]\\=&X^T\overline{Q}X \end{aligned} ==x(kk)x(k+1k)x(k+2k)x(k+Nk)TQQQFx(kk)x(k+1k)x(k+2k)x(k+Nk)XTQX
同理代价函数的第二项可以化为
原 式 = [ u ( k ∣ k ) u ( k + 1 ∣ k ) u ( k + 2 ∣ k ) ⋮ u ( k + N ∣ k ) ] T [ R R R ⋱ R ] [ u ( k ∣ k ) u ( k + 1 ∣ k ) u ( k + 2 ∣ k ) ⋮ u ( k + N ∣ k ) ] = U T R ‾ U \begin{aligned} 原式=&\left[\begin{matrix}u(k|k)\\u(k+1|k)\\u(k+2|k)\\\vdots\\u(k+N|k)\end{matrix}\right]^T\left[\begin{matrix}R&&&&\\&R&&&\\&&R&&\\&&&\ddots&\\&&&&R\end{matrix}\right]\left[\begin{matrix}u(k|k)\\u(k+1|k)\\u(k+2|k)\\\vdots\\u(k+N|k)\end{matrix}\right]\\=&U^T\overline{R}U \end{aligned} ==u(kk)u(k+1k)u(k+2k)u(k+Nk)TRRRRu(kk)u(k+1k)u(k+2k)u(k+Nk)UTRU
代价函数可改写为
J = X k T Q ‾ X k + U k T R ‾ U k = ( M x k + C U k ) T Q ‾ ( M x k + C U k ) + U k T R ‾ U k = ( x k T M T + U k T C T ) Q ‾ ( M x k + C U k ) + U k T R ‾ U k = x k T M T Q ‾ M x k + x k T M T Q ‾ C U k + U k T C T Q ‾ M x k + U k T C T Q ‾ C U k + U k T R ‾ U k = x k T G x k + 2 x k T E U k + U k T H U k \begin{aligned} J=&X^T_k\overline{Q}X_k+U^T_k\overline{R}U_k\\=&(Mx_k+CU_k)^T\overline{Q}(Mx_k+CU_k)+U^T_k\overline{R}U_k\\=&(x^T_kM^T+U^T_kC^T)\overline{Q}(Mx_k+CU_k)+U^T_k\overline{R}U_k\\=&x^T_kM^T\overline{Q}Mx_k+x_k^TM^T\overline{Q}CU_k+U_k^TC^T\overline{Q}Mx_k+U_k^TC^T\overline{Q}CU_k+U_k^T\overline{R}U_k\\=&x_k^TGx_k+2x_k^TEU_k+U_k^THU_k \end{aligned} J=====XkTQXk+UkTRUk(Mxk+CUk)TQ(Mxk+CUk)+UkTRUk(xkTMT+UkTCT)Q(Mxk+CUk)+UkTRUkxkTMTQMxk+xkTMTQCUk+UkTCTQMxk+UkTCTQCUk+UkTRUkxkTGxk+2xkTEUk+UkTHUk
其中 M T Q ‾ M = G M^T\overline{Q}M=G MTQM=G M T Q ‾ C = E M^T\overline{Q}C=E MTQC=E C T Q ‾ C + R ‾ = H C^T\overline{Q}C+\overline{R}=H CTQC+R=H。上式中第一项只与系统的初始状态有关,是标量;第二项是线性项;第三项是二次项。
  本文整理自【MPC模型预测控制器】1_最优化控制和基本概念和MPC模型预测控制器】2_最优化数学建模推导,欢迎大家去关注DR_CAN,他真的好强QAQ。


http://chatgpt.dhexx.cn/article/ROyGHDph.shtml

相关文章

MPC控制器学习-NMPC

趁着刚讲明白马上记录一下,不然以后又忘了_(:з」∠)_是一位老师给的现成的mpc小项目,代码写的很仔细能够帮助理解mpc的原理。 场景是一个二维平面的小车(看成一个质点),要运动到目标点,途中避开圆形范围的障碍物。 小车的矩形边框…

MPC简介

1.引言 在当今过程控制中,PID当然是用的最多的控制方法,但MPC也超过了10%的占有率。MPC是一个总称,有着各种各样的算法。其动态矩阵控制(DMC)是代表作。DMC采用的是系统的阶跃响应曲线,其突出的特点是解决…

MPC(模型预测控制)-Simulink仿真

文章目录 一、为什么使用MPC控制器?二、什么是MPC控制器?三、MPC控制器的参数如何设置?3.1 采样时间3.2 预测范围、控制范围3.3 约束条件3.4 权重 四、自适应增益调度和非线性MPC五、Simulink仿真MPC控制器5.1 数学分析5.2 实验过程 一、为什么使用MPC控制器? ① MPC可以处…

使用MPC设计控制器

这个例子展示了如何使用MPC设计器设计连续搅拌釜式反应器(CSTR)的模型预测控制器。 一、 CSTR 模型 下面的微分方程表示了涉及放热反应的连续搅拌釜式反应器(CSTR)的线性化模型: 其中 输入为 : CAi -料流中试剂A浓度(kgmol/m3) Tc -反应堆冷却剂温度(℃) 输出为&…

MPC(模型预测控制)控制小车沿轨迹移动——C++实现

任务说明 要求如下图所示,给定一条轨迹,要求控制小车沿这条轨迹移动,同时可以适用于系统带有延时的情况。注意,本篇文章只给出部分C代码参考。 主要流程 首先用运动学自行车模型(Kinematic Bicycle Model&#xff09…

mpc模型预测控制原理详解

mpc模型预测控制原理详解 前言mpc算法步骤mpc算法推导 前言 本文是对mpc模型预测控制学习的记录,主要参照了DR_CAN老师的视频进行学习。视频专栏链接:DR_CAN老师mpc视频专栏。在这篇博客中博主也针对DR_CAN老师的讲解做了详尽的笔记和代码实现。读者可以…

模型预测控制(MPC)解析(一):模型

一、MPC简介 1.1 预测控制的日常应用 模型预测控制的设计目标是计算未来控制变量u的轨迹,以优化未来的系统输出y。优化过程在一个有限的时间窗口进行,并且利用优化时间窗口开始时的系统信息进行优化。为了理解预测控制的基本思想,以一个日常…

MPC控制

基于状态空间模型的控制 模型预测控制(MPC)简介 对基于状态空间模型的控制理解得很到位 在这里我重点讲解一下状态空间模型。那么什么是状态?输出是不是也是状态的一种?对的,输出也是一种状态&#…

MPC模型预测控制

这篇主要讲一下模型预测控制,如果对PID控制了解的同学,那效果更好。如果不了解PID控制,还是熟悉下比较好。 模型预测控制,顾名思义,基于模型,预测未来,进行控制。这个控制是基于模型的&#xf…

模型预测控制(MPC)简介

1.引言 在当今过程控制中,PID当然是用的最多的控制方法,但MPC也超过了10%的占有率。MPC是一个总称,有着各种各样的算法。其动态矩阵控制(DMC)是代表作。DMC采用的是系统的阶跃响应曲线,其突出的特点是解决…

模型预测控制算法(MPC算法)底层逻辑

目录 MPC算法的基本原理 详细解析 预测模型中需要注意的点 滚动优化需要注意的点 构造目标函数约束部分 约束部分 举例说明 复盘总结 MPC算法的基本原理 MPC 的基本原理可以分为三个步骤:预测模型、滚动优化、反馈校正 (1)预测模型…

模型预测控制(MPC)算法原理

模型预测算法是在欧美等国家兴起的应用于工业领域的一种优化控制算法。目前经过多年的发展,在工业领域、智能控制领域等都有应用。随着算法的理论的完善,其已经成为工业领域内经常使用的一种经典算法。虽然在各个领域算法的应用存在差异。但他们都遵循预…

到底什么是模型预测控制MPC(一)

1. 为什么使用MPC控制 在浏览文章的时候,很多文章都是基于MPC来做的。那么究竟什么是模型预测呢? 模型预测也可以说是一种我们熟悉的反馈控制算法,其目的就是预测出未来的输出。以一个生活中的例子引入: 在我们驾驶汽车的时候&am…

MPC控制笔记(一)

转自 我的博客 笔记参考1:Understanding Model Predictive Control(Youtube 带自动生成字幕) 笔记参考2:Understanding Model Predictive Control(B站 生肉) 一、什么是MPC模型预测控制 MPC(Model Predict Control)是一种反馈控制(feedback control)算…

PID与MPC控制方法

记录udacity–无人驾驶工程师课程中控制部分。 MPC代码和实践链接https://github.com/udacity/CarND-MPC-Quizzes 本文按照对udacity课程的理解和翻译而来 1、PID P:Proportional 比例项, 用比例项乘以误差;快速缩小误差; I&…

了解模型预测控制2--什么是模型预测控制(MPC)

本节,我们将讨论模型预测控制器的工作原理。 在控制问题中,控制器的目标是计算被控对象的输入,使得被控对象输出遵循期望的参考信号。模型预测控制器计算此输入的策略是预测未来。 这听起来像算命,但让我们看看它究竟是什么。MPC使…

模型预测控制(MPC,Model Predictive Control)

发展历史 20世纪70年代后期,一类新型的计算机控制算法出现在美法等国的工业过程领域,如动态矩阵控制(DMC,Dynamic Matrix Control)、模型算法控制(MAC,Model Algorithm Control)。1987年,首次有学者阐述了该系列算法的动因、机理及其在控制工…

MPC学习笔记(1)——原理

最近在学习M. W. Mehrez的MPC时发现了很多不了解的细节,分享一下对该算法的梳理与理解。 在自动驾驶或机器人领域中,模型预测控制(Model Predictive Control, MPC)解决的是轨迹规划的问题。其前提条件是环境地图、载体位姿已知,根据MPC算法&…

MPC 控制原理

MPC 控制原理 1 生活中的启示2 实际控制的例子参考文献 Yin 机械工程师 本文引自 一个模型预测控制(MPC)的简单实现. 1 生活中的启示 情景如下:你们团队每天早晨开一次例会,主要会议内容是你汇报工作进度,领导根据工作…

EA建模工具,介绍常用的UML图

[导读] 作为程序猿都最好掌握的一门语言,那就是UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人员交流的有…