主要内容

使用Embotech FORCESPRO Solvers实现MPC控制器

您可以使用FORCESPRO的实时嵌入式优化软件工具Embotech AG),用于模拟和生成使用模型预测控制工具箱™软件设计的线性和非线性MPC控制器的代码。Embotech提供了一个插件,利用模型预测控制工具箱软件的设计能力和FORCESPRO的计算性能。使用插件,您可以生成定制的解决方案,允许部署在实时硬件和高度优化,基于您特定的MPC问题,以实现令人满意的实时性能。

有关使用FORCESPRO MPC插件的更多信息,请参阅FORCESPRO文档.你也可以在MATLAB中使用FORCESPRO求解器来实现其他优化应用®和仿真软金宝app件®.有关更多信息,请参见第三方产品和服务下载188bet金宝搏

有关在MATLAB和Simulink中为模型预测控制工具箱控制器生成代码的信息,请参见金宝app生成代码和部署控制器到实时目标

二次规划(QP)求解器

在MATLAB中利用该方法设计并仿真线性时不变MPC控制器(其中预测模型在运行时不发生变化)eminctech FORCESPRO QP解决方案,请遵循以下步骤。

  1. 设计一个线性控制器货币政策委员会对象。

  2. 为使用的求解器创建一个自定义求解器生成选项对象mpcToForcesOptions字符串输入参数为“稀疏”(构建一个稀疏的QP问题),或者“密集”(构建密集的QP问题)。使用“稀疏”如果你的MPC问题有一个长期的预测范围和大量的限制。

  3. 使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量mpcToForces

  4. 如果需要,在包含状态数据结构的变量中调整控制器状态,并在包含在线数据结构的变量中指定运行时信号。

  5. 通过迭代调用来模拟系统mpcmoveFORCES.对于稀疏QP问题,将自动生成MEX文件并用于加速模拟。

您还可以生成生产代码。例如,要从mpcmoveForces用密集的QP公式,其中的变量coredatastatedata,onlinedata是由mpcToForces,你可以使用以下代码:

%配置代码生成,以创建一个MATLAB可执行文件cfg = coder.config (墨西哥人的);%或LIB, EXE等。cfg。ConstantInputs =“IgnoreValues”创建一个名为myMex的可执行文件codegen (“配置”cfg,“mpcmoveForces”“o”“myMex”...“参数”, {coder.Constant (coredata)、statedata onlinedata});%通过调用myMex可执行文件来计算被操纵的变量[mv, statedata, info] = myMex(coredata, statedata, onlinedata)

利用该方法在Simulink中设计和仿真线性时不变MPC控制器金宝appeminctech FORCESPRO QP解决方案解算器,遵循以下步骤。

  1. 设计一个线性控制器货币政策委员会对象。

  2. 为使用的求解器创建一个自定义求解器生成选项对象mpcToForcesOptions字符串输入参数为“稀疏”(构建一个稀疏的QP问题),或者“密集”(构建密集的QP问题)。使用“稀疏”如果你的MPC问题有一个长期的预测范围和大量的限制。

  3. 使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量mpcToForces

  4. 将适当的块添加到模型中:

    • 对于稀疏QP问题,打开Simulink库浏览器,找到金宝appMPC(稀疏QP)块下FORCESPRO MPC模块类别,并将其添加到您的模型中。

    • 对于稠密的QP问题,打开Simulink库浏览器,找到金宝appMPC控制器块下模型预测控制工具箱类别,并将其添加到您的模型中。

  5. 在块对话框中指定结构变量:

    • 对于稀疏QP问题,指定包含核心和状态数据结构的变量。

    • 对于稠密的QP问题,指定货币政策委员会对象。

  6. 模拟系统。

  7. 需要时,直接从模型或代码块生成代码。

有关如何与模型预测控制工具箱一起使用QP求解器的详细信息,请参见QP解决者

有关FORCESPRO QP求解器的更多信息,请参阅eminctech FORCESPRO QP解决方案文档。

请注意

不支持对自适应MPC控制器或带有自定义约束的MPC控制器使用QP Embotech FORCESPRO Solver。金宝app

博雅特非线性规划(NLP)求解器

在MATLAB中设计并仿真了一种非线性MPC控制器eminctech FORCESPRO NLP解决方案,请遵循以下步骤。

  1. 设计一个非线性控制器nlmpcnlmpcMultistage对象。

  2. 使用指定自定义求解器生成选项nlmpcToForcesOptions(或nlmpcMultistageToForcesOptions,如果您在前面的步骤中设计了多级控制器)。对于一个nlmpc对象时,可以选择使用顺序二次规划(SQP)求解器而不是内部点(IP)求解器。如果你的非线性MPC问题有很长的预测范围和大量的约束条件,请使用IP解算器。为nlmpcMultistage对象中只有IP解析器可用。

  3. 使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量nlmpcToForces(或nlmpcMultistageToForces).

  4. 指定当前控制器状态、最后控制动作,并使用包含在线数据结构的变量来指定其他运行时信号。

  5. 通过迭代调用来模拟系统nlmpcmoveForces(或nlmpcmoveForcesMultistage).在MATLAB中为这两个函数自动生成MEX文件以加快仿真速度。

要在Simulink中使用Embotech FORCESPRO NLP求解器设计和仿真非线性MPC控制器,金宝app请遵循以下步骤。

  1. 设计一个非线性控制器nlmpcnlmpcMultistage对象。

  2. 使用指定自定义求解器生成选项nlmpcToForcesOptions(或nlmpcMultistageToForcesOptions,如果您在前面的步骤中设计了多级控制器)。对于一个nlmpc对象时,可以选择使用顺序二次规划(SQP)求解器而不是内部点(IP)求解器。如果你的非线性MPC问题有很长的预测范围和大量的约束条件,请使用IP解算器。为nlmpcMultistage对象中只有IP解析器可用。

  3. 使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量nlmpcToForces(或nlmpcMultistageToForces).

  4. 打开Simulin金宝appk库浏览器,找到多阶段非线性MPC块下FORCESPRO MPC模块类别,并将其添加到您的模型中。

  5. 在块对话框中指定包含核心数据结构的变量。

  6. 模拟系统。

  7. 需要时,直接从模型或代码块生成代码。

您还可以如本节所述为您的Simulink模型生成代码金宝app在Simulink中的代码生成金宝app

请注意

仅当状态和输出函数与MATLAB代码生成兼容时,才支持使用NLP Embotech FORCES金宝appPRO SolverCasADi.此外,对于一般(非多级)非线性MPC问题:

  • 您不能使用自定义成本和约束函数。

  • 如果非线性MPC控制器使用多个可选参数,则必须将它们分组在单个列向量中并设置模型。NumberOfParameters属性设置为1。

举个例子力非线性MPC块看基于非线性模型预测控制的摆振控制

相关的话题