找回密码
 立即注册
查看: 329|回复: 0

MPC算法流程详解(一)

[复制链接]
发表于 2022-4-22 08:54 | 显示全部楼层 |阅读模式
写在前面

本文是对《Model Predictive Control - Theory and Design》第二章部分的内容的解读,承接MPC中关于优化函数的解法总结(一)的相关内容,后续会继续不断更新,欢迎大家持续阅读!
<hr/>有人咨询的一些特殊字符如何书写的问题,知乎上的公式是怎么打出来的关于文中部分常见的字母的打法,可以参照这篇文章。本文中的 等字符是参考链接文章中的如下命令:打开“公式”->输入"/mathbb P"即可得到。
MPC的特点

对MPC稍有理解的同学可能很清楚MPC的三个基本原理(三个基本特征):

  • 预测模型:预测模型是模型预测控制的基础。其主要功能是根据对象的立式信息和未来输入,预测系统未来的输出。对预测模型的形式没有做严格的限定,状态方程、传递函数这类传统的模型都可以作为预测模型。对于线性稳定系统,阶跃响应、脉冲响应这类非参数模型,也可以直接作为预测模型使用。
  • 滚动优化:模型预测控制通过某一性能指标的最优来确定控制作用,但优化不是一次离线进行,而是反复在线进行的。这就是滚动优化的含义,也是模型预测控制区别于传统最优控制的根本点
  • 反馈校正:为了防止模型失配或者环境干扰引起控制对理想状态的偏离,在新的采样时刻,首先检测对象的实际输出,并利用这一实时信息对基于模型的预测结果进行修正,然后再进行新的优化。
上一篇文章我们介绍了MPC的一种常用模式,即通过使用LQ的方法去求解代价函数,其实对应的就是滚动优化中的优化过程(只是一个时段内还没有滚动起来……)。MPC是一种在一段采样时间内在线求解初始状态是当前时刻的系统状态的有限时域的最优化问题,最优化问题的解既是该段时间内的控制动作。最优化产生了一系列的控制输入,仅将第一个作用于系统中。不同于传统控制的离线一次性生成控制律,MPC在线根据系统的运行情况进行控制律的在线生成。MPC的最大优点是,即使被控系统是非线性的,并且必须满足状态和控制的硬约束,使用标准的数学规划算法,开环最优控制问题通常可以足够快地得到解决。
所以综合来看,MPC并不是一种跳脱与传统控制之外的全新控制方法,而更像是DP算法的一种实现方法
接下来对于MPC的研究,我们认为系统的状态已知(虽然在实际应用过程中,很少能出现状态实时已知),从而方便对系统稳定和控制性能的分析。
Model Predictive Control

对于非线性系统,我们通常用一下连续时间下的微分方程来表示:



式1

对于这类系统,具有最优闭环特性的控制律是以下问题的解。



式2

如果 是正定的,那么控制的目标就是令系统状态趋向原点。如果该问题的解存在,就记为 ,闭环系统在该解的作用下可以写为:



式3

当系统的状态维数比较大或者控制时域也比较大时,通过DP进行求解可能不太现实,所以需要建立一个近似模型。系统近似的常用方法就是用离散的差分方程来代替连续时间微分方程。



式4

按照该思路,式4即为用非线性差分方程表示非线性系统的通式。其是连续时间微分方程 的离散形式。(这里有个疑问?为什么前面的式4中的x+代表的是状态的微分,后续又说对于式4的解 ,如果输入为 ,初始状态为 那么就满足 那这里的 表示的又是状态量而不是他的微分了)。
关于离散系统的约束等的表达,这里暂且跳过,先看代价函数部分。



式5

这里定义  表示在事件  的最优化控制问题,是求解式5的最小值。通过求解  得到的将是与初始事件  有关的两个函数(控制序列及状态序列)。



式6

其中 ,
原文中有相当长的篇幅来描述推导在有状态和输入约束下,问题 的解应该是什么格式的,这里并没有太深入的进行阅读,通过书中的例子来进行理解:
样例2.5:线性二次型MPC

给定如下系统:



式7



式8



式9

假设该系统没有终端约束和终端约束,控制域的长度为2。(另,式7-9中的:=符号是我第一次见,查询资料后了解到其表示“定义为”,即给系统中的某些参数进行定义,至于其与=的区别读者可以自行思考)用第一种控制方法,那么控制问题就可以转化为:



式10


对u的限制相当于两个不等式约束,对x的约束相当于三个等式约束,要求状态符合差分方程。
第二种方法,在第一种方法的基础上将等式约束带入式10中。可以得到如下:



式11

因为没有状态和终端约束,所以控制输入通常不会与状态  相关。对于求解这类的二次型最优控制问题,通常的解法就是先确定状态后求解控制输入序列。比如,当 时, ,此时对应的状态轨迹为 ,代价函数 。通过求问题 内的解,可以将其组合起来得到控制律 。结果如下图所示:



图1

可以看出求解方法为正向求解,较为直观,容易理解。那么有没有更进一步的解法呢?
样例2.6:更进一步的线性二次型MPC解法

我们重温一下样例2.5中讨论的MPC问题。目标函数为:



式12

其中 , ,目标函数可以重写为:



式13



式14



式15

因为 是正定的,观察式13,很容易看出当  时代价函数有最小值,所以这里可以认为  是目标函数的无约束最小值。(也就是目标函数在没有任何约束的理想情况下可以取到的)这也可以很容易得到验证:代价函数关于输入 的梯度为:



式16

将  带入可得梯度为0。
时,  的轨迹如下图所示:



图2

图中的直线表示 ,矩形区域则表示控制输入约束下的可行域,在可行域内控制输入即等于  。通过图可以很清晰的看出当  变化时,  的轨迹与控制输入可行域的交点对应的 。当 时无约束最小值会落在可行域外,这些状态下的最优控制输入则为目标函数水平集(即图2中的椭圆)与可行域边界的切点(交点,当 之后的椭圆与该点均不是切点了)。关于图中目标函数水平集的理解,我认为椭圆大小意味着代价函数的大小,椭圆越大代价越大。所以当椭圆逐渐增大至相切时为代价函数最小。
到这里,你是不是也会有一个疑问?这个5/3和3是怎么计算出来的呢?
利用上面画图的相切原理,可知表现为椭圆的水平集与可行域左边界(-1,0)相切。椭圆水平集在 处的切线表示为 根据上述叙述有以下式子成立:



式17

因为已知切点在左边界上,所以切点可以表示为 , ,所以有


求解可得 ,


通过分段分析,可以得到与样例2.5相同的结论:


<hr/>刚开始看这部分全是一些抽象的假设,很难看得进去,后面看到例子感觉前面的叙述真是巧妙。哈哈哈数学公式的美都是展现给坚持到底的人看的,加油啊各位!对于课本中的内容的理解可能各有千秋,每个人可能都有不同的疑问,欢迎大家在评论区留言评论,大家一起讨论!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 14:25 , Processed in 0.119124 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表