MPC算法

Posted wujianming-110117

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MPC算法相关的知识,希望对你有一定的参考价值。

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算法)底层逻辑

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

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

MPC算法轨迹跟踪控制资源

MPC算法轨迹跟踪控制资源

安全多方计算(MPC)从入门到精通:Frutta语言