参考下面这三个链接,主要还是知识的整理

0 定义

  • 模型预测控制实际上是以优化方法来求解控制问题,或者说是以优化问题的求解来给出控制器的动作。
  • 它利用一个已有的模型系统当前的状态未来的控制量,来预测系统未来的输出,然后与我们期望的系统输出做比较,得到一个损失函数
    在这里插入图片描述
  • 由于上式中模型、当前状态、期望输出都是已知的,因此只有未来控制量一个自变量。采用二次规划的方法求解出某个未来控制量,使得损失函数最小,这个未来控制量的第一个元素就是当前控制周期的控制量。

1 Motivation

1.1 三个概念

  1. 模型
    1. 机理模型
    2. 基于数据的模型(例如用神经网络训练的一个model)
  2. 预测
    1. 模型就是用来预测的,预测的目的是为了更好的决策
  3. 控制
    1. 根据预测,作出决策

1.2 一些例子

  1. 例如你过马路的时候,会预测一下是否有车能撞到你,如果没有你就赶快过马路(控制动作)
    1. 大脑根据以往经验学到的模型来做预测
  2. 例如淘宝会预测商品未来7天的购买量,就要看如果说有一些商品缺货了的话就赶紧去调货或者生产(控制动作)
    1. 用神经网络,决策树等机器学习学习到的模型
  3. 例如物理学家用牛顿三大定律预测小行星运动轨迹,如果预测到小行星会撞击到地球的话,那就提前需要采取措施来避免小行星的撞击(控制动作)
    1. 用到的是机理模型

2 模型预测控制&最优控制&PID控制

2.1 最优控制

  • 还需要从别的地方找资料,这里只是概述
  • 最优控制强调的是“最优”,一般最优控制需要在整个时间域上进行求优化(这样才能保证最优性)
  • 最优控制常用解法有 1变分法,2极大值原理,3动态规划。
  • 最优控制由于过于强调最优性,而暴露出两个问题
    1. 对于非线性的 包含复杂约束的情况难以求解;
    2. 需要对系统的模型精确的知道。

2.2 模型预测控制 与 最优控制

  • 模型预测控制退而求其次,仅去考虑未来几个时间步,一定程度上牺牲了最优性。

2.3 模型预测控制与传统PID控制

  • 由于各个控制回路之间存在耦合关系,多输入多输出系统的PID参数的整定变得非常困难
  • PID的缺点
    1. PID控制器不具有“前瞻性”,在计算公式中有当前err,上个周期的err,及err累积和,但没有未来的err
    2. PID属于无模型控制,仅通过err控制进行控制器设计
  • MPC的优点
    1. 模型预测控制善于处理多输入多输出系统
      • 对于MIMO系统,PID需要为每个子系统单独设计PID控制器,由于存在耦合对于较大的系统难以实现
        在这里插入图片描述

      • MPC控制器可以较好控制MIMO系统

    2. 模型预测控制可以处理约束
      1. 安全性约束,上下阈值
    3. 模型预测控制是有向前考虑未来时间步的有限时域优化(一定的预测能力)
      • 最优控制要求在整个时间优化
      • 实际上模型预测控制采用了一个折中的策略,既不是像最优控制那样考虑这个时域,也不是完全的贪婪控制仅仅考虑当前,而是考虑未来的有限时间域。
  • 在流程工业1980s开始使用
  • 需要较好的处理器和较大的内存,因为每一步(time step)都需要大量的在线优化,存储大量的变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZ6f6PfG-1649326826665)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f6f5fb17-9b40-4b24-b338-a722d1f06590/Untitled.png)]

3 模型预测控制的实现

3.1 概述

  • 模型预测控制的实现是通过建立优化问题的模型,求解该优化问题来得到控制器的输出的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mc32ToA2-1649326826666)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/78f72fe9-edf2-45bb-b83e-e91b4cbe1430/Untitled.png)]

  • 模型预测控制需要在每一个时间步通过反复的预测+优化来求解优化问题,当得到优化问题最优解后再将这个解作为真正的控制器的输出作用给被控对象

  • 常见的优化问题的模型

    • 未来N步
    • 约束(1)表示被控对象的动态特征
    • 约束(2)(3)分别表示u y的上下限约束
      在这里插入图片描述
  • 很多MPC最后形成一个二次规划问题,所以MPC表面是控制,实际上是一个优化方法

  • “控制时域”和“预测时域”的概念
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8L2flRNo-1649326826666)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/622c1a62-cb5c-487f-80d6-3ace12b9da4c/Untitled.png)]

  • 如果不能直接测量系统的状态,需要State Estimator

    • Kalman Filters

3.2 MPC参数选择

  • 选择一个好的参数不仅影响MPC控制的性能,而且还会影响到MPC每一个timestep内进行在线优化的计算复杂度。

3.2.1 采样周期

  • 采样周期过大,则系统反应过慢导致难以及时进行修正控制,而采样周期过小,则会导致系统产生大量的在线优化计算,给系统带来较大的开销。

  • 因而建议采样周期设计采用开环响应时间(10~90%上升时间)的十分之一或二十分之一

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNeLgL20-1649326826669)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/182b31a0-95ee-4c94-9be0-2900294d80e3/Untitled.png)]

3.2.2 预测范围(prediction horizon)

  • 预测范围指的是一次优化后预测未来输出的时间步的个数

  • 建议范围:在开环响应时间内采样20-30个样本的范围

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CEmnFeqJ-1649326826669)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7d9b0558-dc79-4481-a2a3-7cfcde3dc122/Untitled.png)]

3.2.3 控制范围(control horizon)

  • 如下图 [k, k+m]范围为控制范围,之后的红色部分称为 held constant,其中控制范围是要通过优化器来进行优化的参数。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ItEob92-1649326826670)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/98378e7f-57be-4c93-8e4c-648d9cd66001/Untitled.png)]

  • 过小的控制范围,可能无法做到较好的控制,而较大的控制范围,比如与预测范围相等,则会导致只有前一部分的控制范围才会有较好的效果,而后一部分的控制范围则收效甚微,而且将带来大量的计算开销。

  • 下图说明,只有最近的控制动作才对预测的输出有明显作用

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxiXXizw-1649326826671)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8a095d86-4208-417c-be2a-6007c7a5d120/Untitled.png)]

  • 建议控制范围应该在**预测范围的1020%之间**,最小值为23个timestep时间步

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEFcoWSn-1649326826672)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/eb31e84f-4532-462e-82e7-fdf1fb9f58e8/Untitled.png)]

3.2.4 约束

  • 对于约束,一般分为Hard约束和Soft约束,Hard约束是不可违背必须遵守的,在控制系统中,输入输出都可能会有约束限制,但是在设计时不建议将输入输出都给予Hard约束,因为这两部的约束有可能是有重叠的,导致优化器会产生不可行解。

  • 建议输出采用较小容忍度的Soft约束,而输入的话建议输入和输入参数变化率二者之间不要同时为Hard约束,可以一个Hard一个Soft。

    • Hard不能违反,Soft可以;比如Hard约束 是 刹车踩的幅度;Soft约束是速度

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LwcR0y8s-1649326826672)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ee222bd2-0175-441f-9272-2a6d485dc27c/Untitled.png)]

  • 建议将输出设置为soft约束

3.2.5 权重

  • MPC有许多控制目标,比如希望输出尽可能地接近输入;控制器输出尽可能平滑

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fEdjPJFz-1649326826673)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/daefe375-1568-439a-8533-a205c41303d1/Untitled.png)]

  • 为了在多个控制目标中寻找一个平衡,需要为他们设置不同的权重

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lB0x7rVb-1649326826674)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7da72350-67d6-4d68-b493-946045495977/Untitled.png)]

4 MPC分类

4.1 Linear MPC

  • 适用于非线性系统、线性约束、二次损失函数

  • 对于非线性系统,需要在不同的operating point处进行线性化处理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFfdapWq-1649326826674)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/779744c1-0448-4ff1-834d-c74edd40f669/Untitled.png)]

4.1.1 Adaptive MPC

  • 在 Adaptive MPC中,当operating condition发生变化的时候,需要进行一次近似线性化计算在每个时间步中,使用其近似线性模型来更新内部的平台模型(plant model,比如飞控模型,自行车模型等)。

  • 在 Adaptive MPC中,在不同的operating point条件下,其优化问题的结构保持不变,即状态数量,约束数量不会随着operating condition而改变。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZrTGx0i-1649326826675)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e865b467-8304-4f6e-a65a-fdccc4338241/Untitled.png)]

4.1.2 Gain-Scheduled MPC

  • 在 Gain-Scheduled MPC中,在不同的operating point条件下,其优化问题的结构会发生变化,需要为每一个operating point构建一个MPC控制器,且相互之间独立,其状态数量约束数量也可能不同。

  • 在 Gain-Scheduled MPC模式下,需要设计调度算法来切换不同的MPC模型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-unhGCQsN-1649326826675)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/27e0feda-50a5-473d-a6d3-a651c03297c7/Untitled.png)]

4.1.3 二者区别

  • 在不同的operating point下优化问题的结构(状态、约束)是否发生变化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gu6zC84p-1649326826676)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/97c76128-3bfd-432c-a1dd-86429f520117/Untitled.png)]

4.2 Non-Linear MPC

  • Non-Linear MPC相对强大,能够提供更准确的预测能力 与 决策支持,但是非线性优化的计算开销较大
  • 适用于 非线性系统、非线性约束、非线性损失函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UuszEt0m-1649326826677)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5bd037cb-45f8-4316-a99d-87d7b01d12a4/Untitled.png)]

5 python库 do-mpc

https://github.com/do-mpc/do-mpc

  • a continuous ordinary differential equation (ODE, 常微分方程), a differential algebraic equation (DAE, 微分代数方程) or a discrete equation 离散方程
  • 模型参数
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐