MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器

这篇具有很好参考价值的文章主要介绍了MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

MATLAB 模型预测控制(MPC)



前言

模型预测控制工具箱™ 提供了用于开发模型预测控制 (MPC) 的函数、应用程序、Simulink® 模块和参考示例。对于线性问题,该工具箱支持设计隐式、显式、自适应和增益调度 MPC。对于非线性问题,您可以实现单级和多级非线性 MPC。该工具箱提供可部署的优化求解器,还能让您使用自定义求解器。

您可以在 MATLAB® 和 Simulink 中通过运行闭环仿真来评估控制器性能。对于自动驾驶,您还可以使用提供的符合 MISRA C™ 和 ISO 26262 标准的模块和示例,快速开始车道保持辅助、路径规划、路径跟踪和自适应巡航控制应用。

工具箱支持 C 和 CUDA® 代码以及 IEC 61131-3 结构化文本生成。


一、使用 MPC Designer 设计控制器

本例说明如何使用 MPC Designer 为连续搅拌槽反应器 (CSTR) 设计模型预测控制器。

1.1 CSTR 模型

连续搅拌罐反应器(CSTR)的线性化模型见 CSTR 模型。在该模型中,前两个状态变量分别是试剂浓度(此处称为 CA,单位为 kmol/m3)和反应器温度(此处称为 T,单位为 K),而前两个输入量分别是冷却剂温度(Tc,单位为 K,用于控制被控对象)和流入的进料试剂浓度 CAf,单位为 kmol/m3,(通常被视为未测量的干扰)。

在本例中,冷却剂温度与标称值的变化范围为 ±10 度,变化速率为每秒 ±2 度。

创建 CSTR 系统的状态空间模型。

A = [   -5  -0.3427;
     47.68    2.785];
B = [    0   1
       0.3   0];
C = flipud(eye(2));
D = zeros(2);
CSTR = ss(A,B,C,D);

1.2 导入被控对象并定义 MPC 结构

mpcDesigner

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

在 "MPC 设计器 "选项卡的 "结构 "部分,单击 “MPC 结构”。

在 "通过导入定义 MPC 结构 "对话框中,在 "从 MATLAB 工作区选择一个被控对象模型或一个 MPC 控制器 "表中,选择 CSTR 模型。

由于 CSTR 是一个稳定的连续时间 LTI 系统,因此 MPC Designer 将控制器采样时间设置为 0.1 Tr,其中 Tr 是 CSTR 的平均上升时间。在本例中,在指定 MPC 控制器采样时间字段中,输入 0.5 秒的采样时间。

默认情况下,所有被控对象输入均定义为操纵变量,所有被控对象输出均定义为测量输出。在 "分配被控对象 i/o 通道 "部分,分配输入和输出通道索引,以便

  • 第一个输入,即冷却液温度,为操纵变量。

  • 第二个输入,进料浓度,是一个未测量的干扰。

  • 第一个输出,反应器温度,是一个测量输出。

  • 第二个输出,反应物浓度,是一个未测量的输出。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

单击导入。

应用程序会将 CSTR 被控对象导入数据浏览器。以下内容也会添加到数据浏览器中:

  • mpc1 - 使用 CSTR 作为内部模型创建的默认 MPC 控制器。

  • scenario1 - 默认模拟场景。

该程序运行默认模拟场景,并更新输入响应和输出响应图。闭环系统能够成功跟踪所需的测量输出,而未测量输出则不然。由于被控对象只有一个操纵变量,因此这种行为是意料之中的。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

一旦定义了 MPC 结构,就不能在当前的 MPC Designer 会话中进行更改。要使用不同的通道配置,请启动新的应用程序会话。

1.3 定义输入和输出通道属性

在 MPC Designer 选项卡上,选择 I/O Attributes。

在 "输入和输出通道规格 "对话框的 "名称 "栏中,为每个输入和输出通道指定一个有意义的名称。

在 "单位 "栏中,可选择指定每个通道的单位。

由于状态空间模型是使用与标称工作点的偏差来定义的,因此请将每个输入和输出通道的标称值保持为 0。

各通道的比例因子保持默认值 1。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

单击 “确定”。

输入响应和输出响应绘图标签会更新,以反映新的信号名称和单位。

1.4 配置仿真场景

在 "MPC 设计器 "选项卡的 "场景 "部分,单击 “编辑场景”>“场景 1”。

在 "模拟场景 "对话框中,将模拟持续时间设置为 20 秒。

在参考信号表的第一行,指定步长为 2,时间为 5。

在信号列第二行,选择常量参考,将浓度设定点保持在输入和输出通道规格对话框中定 义的标称值上(本例中标称值为零)。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

默认设置为模拟参考反应器温度 T 在 5 秒钟内发生 2 开尔文的阶跃变化。

单击确定。

响应图更新以反映新的模拟方案配置。CA 的参考值不再是阶跃值,而是等于零的常数。

在 MPC Designer 左下方的 "情景 "部分,单击情景 1。第二次单击情景 1,并将情景重命名为 stepT。

1.5 配置控制器水平线

在 "调整 "选项卡的 "水平线 "部分,指定预测水平线为 15,控制水平线为 3。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

响应图更新以反映新的范围。输入响应图显示,控制操作违反了对冷却剂温度变化率的限制要求。

1.6 定义输入约束条件

在 "设计 "部分,单击 “约束”。

在 "约束 "对话框的 "输入和输出约束 "部分的 "输入 "行中,分别在 "最小值 "和 "最大值 "列中输入冷却剂温度的上下限。

在 RateMin 和 RateMax 栏中指定变化率限制。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

单击 “确定”。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32
输入响应图显示了受控变量的控制行动。输入响应图显示了受控变量的控制行动。

1.7 指定控制器调整权重

在 "调整 "选项卡的 "设计 "部分,单击 “权重”。

在输入权重表中,将操纵变量 (MV) 比率权重增加到 0.3。在控制器优化成本函数中,增加 MV 率权重可抑制 MV 的大幅变化。

在输出权重表中,保留默认权重值。默认情况下,所有未测量的输出权重为零。

由于只有一个受控变量,如果控制器试图将两个输出都保持在特定的设定点上,则一个或两个输出的响应都会出现稳态误差。由于控制器会忽略权重为零的输出设定点,因此将浓度输出权重设置为零可实现反应釜温度设定点跟踪,且稳态误差为零。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

单击 “确定”。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

输入响应图显示了较为保守的控制操作,这导致输出响应速度较慢。

1.8 消除输出超调

假设应用要求输出响应零过冲。在 "性能调整 "选项卡上,向左拖动 "闭环性能 "滑块,直到输出响应没有过冲。向左移动该滑块可同时增加控制器的操纵速率权重和减少输出变量权重,使控制器更加稳健。假设应用要求输出响应零过冲。在 "性能调整 "选项卡上,向左拖动 "闭环性能 "滑块,直到输出响应没有过冲。向左移动该滑块可同时增加控制器的操纵速率权重和减少输出变量权重,使控制器更加稳健。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

使用 "闭环性能 "滑块调整控制器调整权重时,MPC Designer 不会更改您在 "权重 "对话框中指定的权重。相反,滑块控制一个调整系数,该系数与用户指定的权重一起用于定义实际控制器权重。

当滑块居中时,该系数为 1;当滑块向左移动时,其值减小;当滑块向右移动时,其值增大。权重系数乘以操纵变量和输出变量权重,再除以权重对话框中的操纵变量速率权重。因此,移动滑块增加鲁棒性会降低 OV 和 MV 权重,增加 MV 率权重,从而放宽对输出的控制,使控制动作更加保守。

要查看实际控制器权重,请将控制器导出到 MATLAB® 工作区,然后查看导出控制器对象的权重属性。

1.9 测试控制器抗干扰能力

在过程控制应用中,干扰抑制往往比设定点跟踪更重要。模拟控制器对进料浓度阶跃变化(未测量干扰)的响应。

在 "MPC 设计器 "选项卡的 "情景 "部分,单击 “绘制情景”>“新建情景”。

在模拟场景对话框中,将模拟持续时间设为 20 秒。

在参考信号表的第一行信号下拉列表中,选择步长,然后指定步长为 2,时间为 5。在第二行的信号列中,保持恒定参考以将浓度设定点保持在标称值上。

在 "未测量的干扰 "行的信号下拉列表中,选择 “步长”,然后指定步长为 0.2,时间为 5。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

单击确定。

应用程序会将新方案添加到数据浏览器中,并创建新的相应输入响应图和输出响应图。

在数据浏览器的 "方案 "部分,将 NewScenario 重命名为 distReject。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32

从输出响应图中可以看出,闭环系统仍能达到预期的反应器温度。在这种情况下,所需的控制动作加上输入干扰会导致输出浓度 CA 稳态下降 0.1 kmol/m3。

1.10 指定浓度输出约束条件

之前,您定义了控制器调整权重,以实现跟踪反应釜温度设定点且稳态误差为零的主要控制目标。这样做可以使未测量的反应器浓度自由变化。假设反应器浓度相对于其标称值降至 0.05 kmol/m3 以下时,会发生不必要的反应。要限制反应釜浓度,请指定输出限制。

在 "设计 "部分的 "调谐 "选项卡上,单击 “约束”。

在 "约束 "对话框的 "输入 "和 "输出约束 "部分的 "输出 "表第二行中,指定最小未测量输出 (UO) 值为 -0.05。

默认情况下,所有输出约束都是软约束,即最小ECR 值和最大ECR 值都大于零。要进一步软化未测量输出 (UO) 约束,请增加其最大ECR 值。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32
单击 “确定”。

mpc模块初始值设置,MATLAB使用记录,matlab,机器人,自动驾驶,ROS,模型预测控制,MPC,stm32
在输出响应图中,反应器浓度 CA 在 10 秒后稳定在-0.05 kmol/m3 的水平。由于只有一个控制变量,控制器在两个相互竞争的控制目标之间进行了折中: 温度跟踪和满足约束条件。较软的输出约束使控制器可以牺牲更多的约束要求来改善温度跟踪。

由于输出约束条件较软,控制器可通过允许少量违反浓度约束条件来保持一定的温度控制水平。一般来说,根据您的应用要求,您可以尝试使用不同的约束设置来实现可接受的控制目标折衷。

输出控制器
在 "调谐 "选项卡的 "分析 "部分,单击 "导出控制器 "将调谐控制器 mpc1 保存到 MATLAB 工作区。

1.11 删除被控对象、控制器和场景

要删除被控对象、控制器或场景,请在 "数据浏览器 "中右键单击要删除的项目,然后选择 “删除”。

不能删除当前控制器。此外,如果被控对象是唯一列出的工厂或方案,则无法删除。

如果某个工厂被任何控制器或场景使用,则无法删除该工厂。

要删除多个被控对象、控制器或场景,请按住 Shift 键并单击要删除的每个项目。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。文章来源地址https://www.toymoban.com/news/detail-783272.html

到了这里,关于MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 本文的

    2024年02月14日
    浏览(35)
  • 【无人机控制】基于模型预测控制MPC无人机实现轨迹跟踪附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年04月28日
    浏览(26)
  • MATLAB - 利用非线性模型预测控制(Nonlinear MPC)来控制四旋翼飞行器

    本示例展示了如何利用非线性模型预测控制(MPC)为四旋翼飞行器设计一个跟踪轨迹的控制器。 四旋翼飞行器有四个向上的旋翼。从四旋翼飞行器的质量中心出发,旋翼呈等距离的正方形排列。四旋翼飞行器动力学数学模型采用欧拉-拉格朗日方程 [1]。 四旋翼飞行器的十二种

    2024年01月22日
    浏览(58)
  • 【轨迹跟踪】模型预测控制MPC无人机轨迹跟踪【含Matlab源码 3958期】

    获取代码方式1: 完整代码已上传我的资源:【轨迹跟踪】基于matlab模型预测控制MPC无人机轨迹跟踪【含Matlab源码 3958期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏Matlab物理应用(初级版) 备注: 点击上面蓝色字体 付费专栏Matlab物理应用(初级

    2024年02月21日
    浏览(36)
  • 为建筑物的供暖系统实施MPC控制器的小型项目(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 ​目前,

    2024年02月07日
    浏览(32)
  • 模型预测控制(MPC)解析(一):模型

    1.1 预测控制的日常应用         模型预测控制的设计目标是计算未来控制变量u的轨迹,以优化未来的系统输出y。优化过程在一个有限的时间窗口进行,并且利用优化时间窗口开始时的系统信息进行优化。为了理解预测控制的基本思想,以一个日常工作为例来进行说明。

    2024年02月02日
    浏览(35)
  • mpc模型预测控制原理详解

    本文是对mpc模型预测控制学习的记录,主要参照了DR_CAN老师的视频进行学习。视频专栏链接:DR_CAN老师mpc视频专栏。在这篇博客中博主也针对DR_CAN老师的讲解做了详尽的笔记和代码实现。读者可以相结合地进行学习。 MPC算法主要包括以下三步: 估计/测量读取当前系统状态

    2023年04月14日
    浏览(34)
  • 基于预测控制模型的自适应巡航控制仿真与机器人实现(Matlab代码实现)

         目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 自适应巡航控制技术为目前由于汽车保有量不断增长而带来的行车安全、驾驶舒适性及交通拥堵等问题提供了一条有效的解决途径,因此本文通过理论分析、仿真验证及实车实验对自适应巡航控制中的若干

    2024年02月16日
    浏览(30)
  • 【自动驾驶】模型预测控制(MPC)实现轨迹跟踪

    bilibili的DR_CAN讲解的MPC模型预测控制器 知乎上一个比较通俗易懂的解释 模型预测控制 轨迹跟踪模型预测控制(MPC)原理与python实现 DR_CAN笔记MPC MPC控制笔记 模型预测控制(MPC)的核心思想就是以优化方法求解最优控制器,其中优化方法大多时候采用二次规划(Quadratic Programmin

    2024年02月02日
    浏览(39)
  • 路径跟踪算法之模型预测控制(MPC)跟踪

    模型预测控制(以下简称 MPC)是一种依赖于系统模型进行数学优化的复杂控制器。它利用优化算法计算有限时间范围内一系列的控制输入序列,并优化该序列,但控制器仅执行序列中的第一组控制输入,然后再次重复该循环。MPC 主要分为 3 个关键步骤:模型预测、滚动优化

    2024年01月23日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包