mpc算法

wujianming-110117 wujianming-110117     2022-12-07     548

关键词:

MPC算法

一.    引言

在工程技术方面,MPC全称可指Model Predictive Control模型预测控制(又称RHC, Receding Horizon  )。

技术图片

 

 模型预测控制算法

一种进阶过程控制方法,自1980年以来开始在化工炼油等过程工业得到应用,并在经济领域开始得到应用。

MPC是一种多变量控制策略,其中涉及了:

过程内环动态模型;控制量的历史数值;在预测区间上的一个最优值方程J。最优控制量可由以上各量求出。

MPC最大的特点在于,相对于LQR控制而言,MPC可以考虑空间状态变量的各种约束,而LQR,PID等控制只能够考虑输入输出变量的各种约束。

MPC可应用于线性和非线性系统

在当今过程控制中,PID当然是用的最多的控制方法,但MPC也超过了10%的占有率。MPC是一个总称,有着各种各样的算法。其动态矩阵控制(DMC)是代表作。DMC采用的是系统的阶跃响应曲线,其突出的特点是解决了约束控制问题。那么是DMC是怎么解决约束的呢?在这里只给出宏观的解释,而不做详细的说明。DMC把线性规划和控制问题结合起来,用线性规划解决输出约束的问题,同时解决了静态最优的问题,一石二鸟,在工业界取得了极大的成功。

如下图所示为一个MIMO系统u1,u2输入与y1,y2输出相互影响。如果使用PID控制的话,每一个子系统单独设计一个PID控制器,两个相互影响的子系统没有任何的交联,使得系统难以设计,如果像图二一样设计一个较大的系统,则参数较多难以实现,而使用MPC控制器的话可以较好的解决两种问题,综合相互间的影响来设计参数。

技术图片

 

 二.    作用机理

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

MPC算法包括三个步骤:

1)预测系统未来动态;

2)(数值)求解开环优化问题;

3)将优化解的第一个元素(或者说第一部分)作用于系统

这三步是在每个采样时刻重复进行的,且无论采用什么样的模型,每个采样时刻得到的测量值都作为当前时刻预测系统未来动态的初始条件

在线求解开环优化问题获得开环优化序列是MPC和传统控制方法的主要区别,因为后者通常是离线求解一个反馈控制律,并将得到的反馈控制律一直作用于系统。

在这里给出两点说明:

1.MPC是一个反馈控制策略,但是之前不是说将得到的控制序列中的第一个元素作用于被控对象,求解开环问题。那么哪来的反馈呢?

实际上在下一个采样周期,下一时刻的测量值又被使用上了,用下一时刻的测量值求解下一时刻的控制值。故这是一个反馈控制策略

2.传统的控制方法为什么被称为离线控制?

设计变阻器应有的级数来达到控制并励直流电动机启动的例子,那么如何看的出来是离线控制呢?其实很简单,在起始的时候就已经把每级电阻值就给定出来了,但是实际上是否能如理论计算的这样呢?比如我电压突然受到了扰动了怎么办?那么这个计算的每级电阻值肯定不对了啦,但是传统的控制方法对此确是无能为力的,因为每级启动电阻在最早的时候已经计算好了的。

三.    MPC的基本特点

不管是何种算法,他们的基本特点都是:基于模型的预测、滚动优化和前馈-反馈的控制结构。

1.基于模型的预测

MPC算法中,需要一个描述对象动态行为的模型,这个模型的作用是预测系统未来的动态。即能够根据系统k时刻的状态和k时刻的控制输入,预测到k+1时刻的输出。在这里k时刻的输入正是用来控制系统k+1时间的输出,使其最大限度的接近k+1时刻的期望值。故我们强调的是该模型的预测作用,而不是模型的形式。

在这里我重点讲解一下状态空间模型。那么什么是状态?输出是不是也是状态的一种?对的,输出也是一种状态,只不过我们赋予了这个状态特殊的意义。举个例子来说,舞龙,假设是只能通过龙尾的人A指挥前面一个人B动作,然后B指挥他前面的一个人C动作….依次如此,达到控制龙头的人F叼住绣球的动作。如果只关注龙头的人(输出)和龙尾的人(输入),而忽略龙身子的动态,那就是所谓的输入—输出系统。经典控制理论就是建立在输入—输出系统的基础上面的。 但是我如果不管要管龙尾和龙头的人,我连龙身子上面的人也要要求在固定的位置,那么这就是状态空间的概念,即我对系统中的每一个状态都要控制到。龙头位置的人也是一个状态,故输出本身就是一个状态,或者说是状态的一个组合。

2.滚动优化

因为外部干扰和模型失配的影响,系统的预测输出和实际输出存在着偏差,如果测量值能测到这个偏差,那么在下一时刻能根据这个测量到偏差的测量值在线求解下一时刻的控制输入,即优化掉了这个偏差值。若将求解的控制输出的全部序列作用于系统,那么k+1时刻的测量值不能影响控制动作,也就是说测量值所包括的外部干扰或模型误差信息得不到有效利用。故我们将每个采样时刻的优化解的第一个分量作用于系统,在下一个采用时刻,根据新得到的测量值为初始条件重新预测系统的未来输出并求解优化解,继续讲这个时刻的优化解的第一个分量作用于系统,这样重复至无穷。

故预测控制不是采用一个不变的全局优化目标,而是采用时间向前滚动式的有限时域优化策略。这也就是意味着优化过程不是一次离线进行,而是反复在线进行的。

3.前馈-反馈的控制结构

这个在前面给出的两点说明中的第一点就已经给出了。

四. MPC参数选择

选择一个好的参数不仅影响MPC控制的性能,而且还会影响到MPC每一个timestep内进行在线优化的计算复杂度。这里将会给出关于控制器采样周期、预测及控制范围(prediction and control)、约束及权重。

采样周期的选择

采样周期过大,则系统反应过慢导致难以及时进行修正控制,而采样周期过小,则会导致系统产生大量的在线优化计算,给系统带来较大的开销。因而建议采样周期设计采用开环响应时间(10~90%上升时间)的十分之一或二十分之一:

技术图片

 

mpc算法轨迹跟踪控制资源

...矩阵的底层逻辑、纵向控制、非线性系统线性化处理及MPC算法动力学跟踪任何轨迹等)专属爆品课程(赠送会员专属全套答疑课程及全套爆品资源,且课程持续更新)!1.MPC跟踪直线轨 查看详情

mpc算法

MPC算法一.   引言在工程技术方面,MPC全称可指ModelPredictiveControl模型预测控制(又称RHC,RecedingHorizon )。  模型预测控制算法一种进阶过程控制方法,自1980年以来开始在化工炼油等过程工业得到应用,并在... 查看详情

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

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

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

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

mpc车辆轨迹跟踪----理论推导(代码片段)

MPC控制简介众所周知,控制算法中,PID的应用占据了90%,而另外10%就是这次的主角MPC控制算法。MPC控制算法全称模型预测控制,它相对比PID有着多输入,多输出以及更加平稳的特点。并且最重要的是... 查看详情

mpc车辆轨迹跟踪----理论推导(代码片段)

MPC控制简介众所周知,控制算法中,PID的应用占据了90%,而另外10%就是这次的主角MPC控制算法。MPC控制算法全称模型预测控制,它相对比PID有着多输入,多输出以及更加平稳的特点。并且最重要的是... 查看详情

mpc算法纵向速度控制推导

速度控制:1.上位控制器:通过MPC算法计算出期望加速度,让车辆(快速且平稳)跟踪我们设计好的期望速度曲线2.下位控制器:根据计算出来的期望加速度,通过协调驱动机构和制动机... 查看详情

mpc车辆轨迹跟踪----理论推导(代码片段)

MPC控制简介众所周知,控制算法中,PID的应用占据了90%,而另外10%就是这次的主角MPC控制算法。MPC控制算法全称模型预测控制,它相对比PID有着多输入,多输出以及更加平稳的特点。并且最重要的是... 查看详情

matlab模型预测控制(mpc,modelpredictivecontrol)(代码片段)

...预测控制是一种基于模型的闭环优化控制策略。预测控制算法的三要素:内部(预测)模型、参考轨迹、控制算法。现在一般则更清楚地表述为内部(预测)模型、滚动优化、反馈控制。 大量的预测控制权威性文献都无一例... 查看详情

mpc跟踪圆形轨迹约束部分答疑

...矩阵的底层逻辑、纵向控制、非线性系统线性化处理及MPC算法动力学跟踪任何轨迹等)专属爆品课程(赠送会员专属全套答疑课程及全套爆品资源,且课程持续更新)! 查看详情

ansys如何做接触分析

...SClassic中可以用“ContactPair”(接触对),或者点约束(MPC)算法,通过方程进行约束。MPC算法适用于面对面、点对面的接触单元。使用该方法时,ANSYS会根据接触运动建立MPC方程。内部MPC方法能够克服传统接触法则和其他多点约束... 查看详情

如何使用 gnu gcc 标志 -mpc32、-mpc64 和 -mpc80?

】如何使用gnugcc标志-mpc32、-mpc64和-mpc80?【英文标题】:Howtousegnugccflag-mpc32,-mpc64and-mpc80?【发布时间】:2020-01-2410:26:36【问题描述】:我从GNUGCCcompilerManual获得了这些GCC标志。但是当我尝试使用这些标志(-mpc32、-mpc64和-mpc80)时... 查看详情

基于mpc的零知识证明协议

...s®inPrivacyandSecurity,2018,2(2-3):70-246.应用密码学:协议、算法与C源程序(机工社大黑皮)ZKP零知识证明协议的基本定义在这篇文章。交互式最近看到了另一种描述ZKP的表述:Verifier拥有一个困难问题实例H1H_1H1​,... 查看详情

mpc理论

MPC的理论基础由一个状态空间方程和一个输出方程构成。下面我们以线性误差模型的MPC推导为例,进行一个简单的介绍:   关于目标函数,我们可以做以下理解(可以参考MPC跟踪直线轨迹的视频讲解):... 查看详情

mpc潜在安全隐患分析

目录MtA协议攻击1.背景2. 攻击原理3.解决方案MPC签名派生密钥风险(Signature-derivedKeyRisk) 查看详情

我如何编译 MPC 代码?

】我如何编译MPC代码?【英文标题】:HowIcompileMPCcode?【发布时间】:2011-08-1014:10:58【问题描述】:MPC在这里:http://www.multiprecision.org/我想在Linux下用g++编译C++代码,同时安装了GMP和MPFR。关键是我不知道我应该在命令行中放置什... 查看详情

MPC 中的绑定请求失败

】MPC中的绑定请求失败【英文标题】:BindingrequestfailedinMPC【发布时间】:2017-03-0514:51:59【问题描述】:#import"Session.h"#import<MultipeerConnectivity/MultipeerConnectivity.h>@interfaceSession()<MCSessionDelegate,MCBrowserViewControllerDe 查看详情

MPC 控制器 Python

】MPC控制器Python【英文标题】:MPCControllerPython【发布时间】:2021-04-2623:15:33【问题描述】:从这里获取代码:ImplementationofaLateralcontollerusingnonlinearmodelpredictivecontrolinGEKKO我似乎无法运行它。我得到的错误是:求解器启动...错误:d... 查看详情