Model Predictive Control Toolbox

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

 

Model Predictive Control Toolbox™ 提供一系列函数、App 和 Simulink® 模块,支持您利用线性和非线性模型预测控制 (MPC) 来设计和仿真控制器。您可以使用该工具箱指定被控对象和扰动模型、时域、约束和权重。通过运行闭环仿真,您可以评估控制器性能。

通过在运行时改变控制器权重和约束,您可以调整控制器的行为。该工具箱提供了可部署的优化求解器,同时还允许您使用自定义求解器。要控制非线性被控对象,您可以实现自适应、增益调度和非线性 MPC 控制器。对于采样速率较快的应用,您可以使用该工具箱从常规控制器生成显式模型预测控制器,或者实现近似解。

对于快速原型和嵌入式系统实现(包括优化求解器的部署),此工具箱支持 C 代码和 IEC 61131-3 结构化文本生成。

开始:

设计模型预测控制器

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

MPC 设计器

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

在 Simulink 中设计 MPC

该工具箱提供 MPC Controller 等一系列模块,用于在 Simulink 中进行 MPC 控制器建模和仿真。对 Simulink 模型进行配平和线性化,以计算 MPC 控制器的内部线性时不变被控对象模型,并使用 Simulink Control Design™ 获取被控对象输入和输出的标称值。

在 MATLAB 中设计 MPC

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

通过命令行设计 MPC 控制器。

自动驾驶应用

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

预置模块

以 Adaptive Cruise Control System、Lane Keeping Assist System 和 Path Following Control System 模块为起点,设计 ADAS 应用并按需自定义。从预置模块生成代码用于车载部署。

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

参考应用示例

使用参考应用示例,了解为自动驾驶系统设计和部署 MPC 控制器的工作流程。此外,参考应用示例还可展示如何以不同的保真度对系统的各个部分建模。

线性模型预测控制器

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

线性 MPC

设计线性 MPC 控制器,方法可以是将内部被控对象模型指定为使用 Control System Toolbox™ 创建的线性时不变 (LTI) 系统,也可以是使用 Simulink Control Design 将 Simulink 模型线性化。您还可以使用 System Identification Toolbox™ 导入基于测得的输入-输出数据创建的模型。

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

自适应 MPC

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

增益调度 MPC

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

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

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

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

控制器参数

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

在 MPC 设计器中指定控制器参数。

状态估计

使用内置状态估计器,根据测得的输出估计控制器状态。此外,您也可以使用自定义算法进行状态估计。

自定义状态估计。

设计检查

使用内置的诊断功能,检测 MPC 控制器的潜在稳定性和鲁棒性问题。在控制器设计期间,可以使用此诊断结果调整控制器权重和约束,避免运行时故障。

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

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

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

运行时参数调整

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

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

运行时性能监控

访问优化状态信号,发现优化无法收敛的罕见情况。然后使用此信息指导备份控制策略决策。

实时检测控制器故障。

实现快速模型预测控制器

在计算资源有限的应用中设计、仿真和部署 MPC 控制器

显式 MPC

从隐式 MPC 设计生成显式 MPC 控制器以加快执行速度。简化生成的显式 MPC 控制器,减少内存占用。

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

近似(次优)解

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

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

非线性模型预测控制器

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

最优规划

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

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

反馈控制

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

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

经济 MPC

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

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

代码生成

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

使用 MATLAB 和 Simulink 生成代码

在 Simulink 中设计 MPC 控制器,并使用 Simulink Coder™ 生成 C 代码,或使用 Simulink PLC Coder™ 生成 IEC 61131-3 结构化文本。使用 MATLAB Coder™ 在 MATLAB 中生成 C 代码,并部署代码以进行实时控制。还可以使用 MATLAB Compiler™ 将 MPC 控制器打包,以作为独立应用程序共享。

从 MPC Controller 模块生成 C 代码。

内置求解器

基于内置的活动集和内点二次规划 (QP) 求解器生成代码,以在嵌入式处理器上高效实现。对于非线性问题,使用 Optimization Toolbox 中的序列二次规划 (SQP) 求解器进行仿真并生成代码。您可以将生成的代码部署到任意数量的处理器。

内置求解器。

自定义求解器

使用 Embotech FORCES PRO QP 和非线性规划 (NLP) 求解器仿真线性和非线性 MPC 控制器并生成代码。也可以使用自定义 QP 和 NLP 求解器进行仿真并生成代码。

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

最新特性

与 FORCES PRO 集成

使用 Embotech AG 开发的 FORCES PRO 求解器,仿真 MPC 控制器并生成代码

内点 QP 求解器

有效计算大规模 MPC 问题的最优控制动作

非线性 MPC 代码生成

为使用默认 fmincon 求解器和 SQP 算法的非线性 MPC 控制器生成代码

关于这些特性和相应函数的详细信息,请参阅发行说明