模型预测控制

1 模型预测控制介绍

1.1生活中的例子

为了更好的理解模型预测控制的思想,先举一个生活中的例子:假设你的导师给你安排了文献阅读的任务,一个月(30天)阅读30篇英文文献, 接下来你的导师就会为你制定阅读计划。
方式一是根据你现在完成的量和目标工作量之间的差距制定阅读计划,差距越大工作量越大,导师仅仅关心还剩下多少文献没有阅读,而不关心你自身阅读文献的能力,这样制定的阅读计划肯定是不合理的,导致的结果可能是你不干了、你三天打鱼,两天筛网、任务没完成。
方式二是你的导师很了解你的能力,知道你当前完成的阅读量,预测你一个星期的阅读量并制定出一个星期的阅读计划,但是仅仅将第一天的工作计划给你,然后根据你第一天完成情况继续制定下一个七天的工作计划,但是每次制定七天的计划,仅仅使用第一天的计划,无疑浪费了你导师的宝贵时间于精力,所以就降低导师的任务量,仅仅给你制定五天的工作计划,但是依然预测你七天的工作量,第六天和第七天按照第五天的计划进行。

1.2基本概念

预测模型:
根据被控对象的历史信息和未来的输入,可以预测系统未来的输出。预测模型可以是状态方程或传递函数,对于稳定的线性系统,可以是阶跃响应或脉冲响应。

滚动优化:
通过对某一性能指标的在线反复优化来确定最优控制动作。
反馈矫正:
被控对象的实际输出用于修正预测结果,防止模型不匹配或环境干扰预测结果。
约束:
在实际的应用过程中,被控对象得状态往往受限于环境,即状态受约束,例如避障问题中被控对象得位置;或由于执行机构得性能,控制量受约束,即控制约束。
控制时域:
控制量的预测范围,也就是控制序列的长度,即给出执行器在未来多长时间的输出。
预测时域:
预测被控对象在未来多长时间内的状态,预测时域可以大于控制时域,也可以等于,但是不能小于。
模型预测控制:
在每个采用点处,根据被控对象的状态和预测模型,预测系统在未来一段时间内的状态,依据某一性能指标(成本函数)来求解最优的一组控制序列,并将这组控制序列的第一个控制作用作为输出给执行机构,在下一个采样点继续执行优化算法。
模型预测控制_第1张图片
这张图显示了模型预测控制的过程:上图为被控对象状态,红色实线为实际状态,星线为预测状态,一共画出了四步;下图为控制序列,相应颜色的线对应上图的预测序列。
从第一步看,初始状态为-1,控制器预测一组状态序列和控制序列(蓝线),然后将控制序列第一个作为输出,被控对象根据这个控制作用调节自身状态,这个状态和预期状态(蓝线的第二个点)有误差,所以控制器又依据当前的实际状态对系统未来状态进行有一次预测,并给出了新的控制序列(橙色线),再把第一个控制序列输入到被控对象,如此循环,直到系统稳定。模型预测控制算法的控制系统框图如下:
模型预测控制_第2张图片
模型预测控制算法主要包括linear MPC、nonlinear MPC、robust MPC、hybrid MPC、explicit MPC等等,随着人工智能大数据时代的到来,又出现了基于数据的data-driven MPC。下面我们先从最简单的linear MPC开始学习。

2线性模型预测控制

无约束线性MPC

我们先从最简单的无约束线性MPC开始,首先要有一个预测模型:
在这里插入图片描述
有了预测模型,基于当前时刻的状态下x(0),可以得到如下的一组预测序列:
模型预测控制_第3张图片
最优控制的成本函数如下:
在这里插入图片描述
在这里插入图片描述
x(N)是终端状态(也可以没有,根据实际情况),P,Q,R都是对称正定矩阵,关于这三个参数做简单解释:这三个矩阵分别代表对终端状态,过程状态和控制量的惩罚,越看重那一项,就使得这个矩阵增大,比如我们希望用更小的控制量,那么就增大R,R足够大,如果想要J足够小,那么就需要控制量u足够小,以此类推。
可以将成本函数写成矩阵形式:
模型预测控制_第4张图片
进一步简化成如下形式(建议自己推一遍,加深印象):
模型预测控制_第5张图片
现在的J就是一个二次型函数,要想求其最小值,就要它的倒数为零:

在这里插入图片描述

然后就可以求出最优控制序列:
模型预测控制_第6张图片
还是建议读者自己推导一下这个过程,对理解模型预测的思想又很大帮助。
这里举个例子,被控对象的状态空间模型如下,初始状态[1;0],设计MPC(二次优化的方法)控制器使其稳定
在这里插入图片描述
模型预测控制_第7张图片

约束线性MPC

MPC的一大优势是滚动优化,另一个优势就是处理约束问题了,约束包括控制约束(考虑执行机构能力),状态或输出约束(考虑实际应用场景),再细分还有终端约束和过程约束,这里我们仅仅考虑输出约束和控制约束。
还是如下的预测模型:
在这里插入图片描述
这里对输出和控制添加约束:
在这里插入图片描述
性能指标具有如下形式:
模型预测控制_第8张图片
然后我们根据无约束MPC的推导方法,可以推导出如下的形式:
在这里插入图片描述
红色部分就是约束,下面我们来看一下怎么计算出来的:
在这里插入图片描述
模型预测控制_第9张图片
这一步可以看懂吧,就是将控制约束写成矩阵形式。同样的,输出约束:
在这里插入图片描述
在这里插入图片描述
将两组约束写在一起,就得到了如下形式:
在这里插入图片描述
在这里插入图片描述
再求解线性无约束MPC的时候,我们是用到了MATLAB的quadprog,具体的使用可以help一下,对于控制约束他也是可以处理的,还是借用上边的例子,控制约束为[-0.3 0],得到的仿真结果如下(代码见Linear2,私信我):
模型预测控制_第10张图片
模型预测控制_第11张图片
如果是状态约束,可以借助一些工具箱求解,例如Hybtbx工具箱,我们稍后介绍。以上两个问题归纳为调节器问题,就是给定系统不为零的初始状态,设计控制器使其最终稳定到零,还有一类问题,轨迹跟踪问题,下一小节介绍。

轨迹跟踪问题

轨迹跟踪问题就是让系统的输出y跟随指令r,接下来我们推导一下轨迹跟踪问题的求解。
首先定义控制增量:
在这里插入图片描述
满足:
在这里插入图片描述
定义一个新的状态:
在这里插入图片描述
然后有:
在这里插入图片描述
现在的MPC控制器具有如下形式:
模型预测控制_第12张图片
权重的定义如下:
在这里插入图片描述
依据之前我们推导的过程,可以得到如下的形式:
在这里插入图片描述
现在就又是一个二次优化问题了。
在实际的应用过程中,常常是用一些工具箱来求解,例如Hybtbx工具箱,下载链接如下:
http://cse.lab.imtlucca.it/~bemporad/hybrid/toolbox/
可以直接在浏览器中搜所“hybtbx“
下载解压后,需要再MATLAB中添加工作路径,个人建议尽量将解压后文件放在MATLAB/toolbx文件夹下,方便统一管理,然后再MATLAB中设置路径:
在这里插入图片描述
点击添加并包含子文件夹
模型预测控制_第13张图片
选择刚才的文件夹
模型预测控制_第14张图片
然后保存,关闭。
模型预测控制_第15张图片
下一讲我们就以轨迹跟踪为例子,介绍Hybtbx工具箱。

Hybtbx工具箱简介

轨迹跟踪的例子是example3.m,路径为:…\toolbox\hybtbx\demos\linear,还有一个其对应的simulink模型。下面介绍代码:
模型预测控制_第16张图片
这段是清除所有变量,设置采样实际0.5s。
模型预测控制_第17张图片
定义传递函数模型并离散化,如果状态空间模型的话,用sys=ss(A,B,C,D)命令。
模型预测控制_第18张图片
这段是添加约束,当然也可以添加输出约束:
limits.ymax=xxx
limits.ymin=xxx
其他例子里边可能有输出约束的添加方法。
模型预测控制_第19张图片
成本函数的权重。
在这里插入图片描述
预测时域和控制时域。
在这里插入图片描述
创建控制器,第一个参数为模型、第二个是控制类型,这里’track’是轨迹跟踪,如果是调节器的花用’reg’。剩下三个参数就是上边创建的。
在这里插入图片描述
定义参考轨迹和仿真时间。
在这里插入图片描述
仿真并打开simulink模型。
模型预测控制_第20张图片
返回数据并绘图。
仿真结果:
模型预测控制_第21张图片
模型预测控制_第22张图片

MPT工具箱

安装:https://www.mpt3.org/Main/Installation
这是官网的安装教程,可以直接在浏览器搜索mpt3即可,这是MPT官网主页
模型预测控制_第23张图片
我是采用了自动安装的方式。
模型预测控制_第24张图片
关于MPC的相关教程在这里:
https://www.mpt3.org/UI/Control
模型预测控制_第25张图片
MPT3工具箱官网的教程很详细,就不做过多的介绍了。
MATLAB工具箱
MATLAB的工具箱也是有很详细的教程,有好多小伙伴没办法下载官方文档,这里附上下载链接:
链接:https://pan.baidu.com/s/1Vh9pymFqiQpihRBZcHsgWw
提取码:r5nn
先从mpc_gs_MATLAB.pdf这个文件入手吧,这是入门级的教程,方便上手,另一个文件800多页,一时半会看不完,其实也没必要看完,因为是针对好多不同问题的,当作一个指导手册查阅就好了。

3视频教程及源码

本文是对我发布的视频教程的一个总结,视频可以在B站或者知乎上找到
B站:https://www.bilibili.com/video/BV1Ab4y1X74N/
知乎:https://www.zhihu.com/zvideo/1430477559661862912 进入主页就可以看到所有视频

源码下载链接:
链接:https://pan.baidu.com/s/1vublfv6is11kcWV8H0bAbg 
提取码:3nd0

你可能感兴趣的:(经验分享)