Model Predictive Control Toolbox

设计和仿真模型预测控制器

 

Model Predictive Control Toolbox™ 提供了用于设计和仿真模型预测控制器 (MPC) 所需的函数、应用和 Simulink® 模块。您可以使用该工具箱指定被控对象和扰动模型、时域、约束和权重。通过运行闭环仿真,您可以评估控制器性能。

通过在运行时改变控制器权重和约束,您可以调整控制器的行为。要控制非线性被控对象,您可以实现自适应和增益调度 MPC。对于采样速率较快的应用情况,您可以从常规控制器生成显式模型预测控制器,或者实现近似解。

对于快速原型和嵌入式系统实现,此工具箱支持 C 代码和 IEC 61131-3 结构化文本生成。

快速入门:

设计模型预测控制器

设计 MPC 控制器来控制受输入和输出约束限制的 MIMO 系统。运行闭环仿真来评估控制器性能。

在 MATLAB 中设计 MPC

使用命令行函数设计 MPC 控制器。定义内部被控对象模型,调整权重、约束和其他控制器参数,并仿真闭环系统响应以评估控制器性能。

在命令行设计 MPC 控制器。

在 Simulink 中设计 MPC

使用 MPC 控制器模块和该工具箱提供的其他模块,在 Simulink 中对 MPC 控制器进行建模和仿真。对 Simulink 模型进行修剪和线性化,以计算 MPC 控制器的内部线性时不变对象模型,并使用 Simulink Control Design™ 计算被控对象输入和输出的标称值。

MPC Designer 应用

通过定义内部被控对象模型并调整时域、权重和约束,以交互方式设计 MPC 控制器。使用仿真场景验证控制器性能。比较多个 MPC 控制器的响应。

自动驾驶应用

使用预置的 Simulink 模块加速 ADAS 系统开发。使用参考示例快速设计 ADAS 控制器。从 Simulink 模块生成代码,用于在车辆中部署 MPC 控制器。

预置的模块

使用 Adaptive Cruise Control System、Lane Keeping Assist System 和 Path Following Control System 模块作为 ADAS 应用的起点,并按需自定义设计。从预置的模块生成代码,用于部署 MPC 控制器。

使用预置的 Simulink 模块设计自适应巡航控制系统。

参考应用

利用参考应用去逐步了解为自动驾驶系统设计和部署 MPC 控制器的工作流程。此外,参考应用还会展示如何对系统的不同部分进行多保真度建模。

线性模型预测控制器

为具有线性动态特性的系统设计 MPC 控制器。为动态特性随工况变化的被控对象设计自适应和增益调度 MPC 控制器。

线性 MPC

通过从 Control System Toolbox™ 将内部被控对象模型指定为线性时不变 (LTI) 系统,或者使用 Simulink Control Design 对 Simulink 模型进行线性化,来设计线性 MPC 控制器。也可以使用 System Identification Toolbox™ 导入从测得的输入-输出数据创建的模型。

为线性 MPC 设计指定内部被控对象模型。

自适应 MPC

使用命令行函数和 Adaptive MPC Controller 模块设计和仿真自适应 MPC 控制器。在每个计算步骤更新被控对象模型,并将其作为输入提供给控制器。使用具备渐近稳定性保障的内置线性时变 (LTV) 卡尔曼滤波器估计自适应模型预测控制器的状态。

增益调度 MPC

使用 Multiple MPC Controllers 模块在各种工况下控制非线性被控对象。为每个工作点设计 MPC 控制器,并在运行时切换控制器。

使用多 MPC 控制器模块设计增益调度 MPC 控制器。

MPC 设计参数、状态估计和设计检查

通过定义内部被控对象模型、调整控制器参数,并仿真闭环系统响应以评估控制器性能,来迭代改进控制器设计。检查控制器是否存在潜在的设计问题。

控制器参数

定义内部被控对象模型后,指定采样时间、预测和控制时域、缩放因子、输入和输出约束以及权重,完成 MPC 控制器设计。此工具箱还支持约束软化和时变约束与权重。

在 MPC Designer 应用中指定控制器参数。

状态估计

使用内置状态估计器,根据测得的输出估计控制器状态。在需要为控制器提供使用自定义算法估计的值时,也可以使用自定义状态估计选项。

自定义状态估计。

设计检查

使用工具箱提供的诊断功能,检测 MPC 控制器的潜在稳定性和稳健性问题。在控制器设计期间,可以使用此诊断工具调整控制器权重和约束,避免运行时故障。

使用设计检查报告提供的建议改进控制器设计。

运行时参数调整和性能监控

通过调整运行时权重和约束来改进控制器性能。分析控制器的运行时性能。

运行时参数调整

调整 MPC 控制器的运行时权重和约束,在运行时优化性能,无需重新设计或重新实现控制器。在 MATLAB 和 Simulink 中执行运行时控制器调整。

在运行时调整权重和约束。

运行时性能监控

访问优化状态信号,发现优化无法收敛的罕见情况,然后判断是否应当使用备份控制策略。

实时检测控制器故障。 

实现快速模型预测控制器

在计算吞吐量预算有限的应用中设计、仿真和部署 MPC 控制器。

从先前设计的隐式控制器生成显式 MPC 控制器。

近似(次优)解

设计、仿真和部署 MPC 控制器,使用近似(次优)解保障最坏情况执行时间。

比较最优解和近似(次优)解的执行时间

非线性模型预测控制器

使用非线性预测模型、代价函数或约束来设计非线性 MPC 控制器,以控制被控对象。

最优规划

将非线性 MPC 控制器用于需要非线性模型以及非线性代价或约束的最优规划应用。

使用非线性 MPC 优化和控制飞行机器人轨道。

反馈控制

在非线性成本和约束下,仿真非线性被控对象的闭环控制。默认情况下,非线性 MPC 控制器使用 Optimization Toolbox™ 解决非线性编程问题。您也可以指定自己的自定义非线性求解器。

放热化学反应器的非线性模型预测控制。

经济 MPC

设计经济性 MPC 控制器,在任意非线性约束下为任意代价函数优化控制器。您可以使用线性或非线性预测模型、自定义非线性代价函数和自定义非线性约束。

环氧乙烷生产的经济 MPC 控制。

代码生成

为在 Simulink 和 MATLAB 中设计的模型预测控制器生成代码,并为实时控制应用部署该代码。

使用 MATLAB 和 Simulink 生成代码

在 Simulink 中设计 MPC 控制器,并分别使用 Simulink Coder™ 或 Simulink PLC Coder™ 生成 C 代码和 IEC 61131-3 结构化文本。使用 MATLAB Coder™ 在 MATLAB 中生成 C 代码,并部署代码以进行实时控制。或者使用 MATLAB CompilerTM 部署 MPC 控制器。

从 MPC Controller 模块生成 C 代码。

嵌入式求解器

从提供的二次规划(QP) 求解器生成代码,以便在嵌入式处理器上进行高效的实现。将生成的代码部署到任意处理器。将提供的 QP 求解器与标准 MPC 方程结合使用,或者用它来解决自定义 MPC 问题。

自定义 MPC 控制器。

自定义 QP 求解器

使用您选择的自定义二次规划 (QP) 求解器进行仿真和生成代码。

使用自定义 QP 求解器进行仿真并生成代码。