主要内容

使用Embotech FORCESPRO解算器实现MPC控制器

你可以用FORCESPRO,一个由Embotech公司,为使用模型预测控制工具箱设计的线性和非线性MPC控制器模拟和生成代码™ 软件。Embotech提供了一个插件,该插件利用模型预测控制工具箱软件的设计功能和FORCESPRO的计算性能。使用该插件,您可以生成自定义解算器,允许在实时硬件上部署,并根据您的特定MPC问题进行高度优化,以实现令人满意的性能实时性能。

有关使用FORCESPRO MPC插件的更多信息,请参阅FORCESPRO文件。您也可以使用FORCESPRO解算器在MATLAB和®和Sim金宝appulink®。有关详细信息,请参阅FORCESPRO第三方产品和服务下载188bet金宝搏.

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

Embotech二次规划(QP)求解器

在MATLAB中使用Embotech FORCESPRO QP解算器,请按照以下步骤操作。

  1. 用一种新方法设计线性控制器mpc对象

  2. 使用为解算器创建自定义解算器生成选项对象mpcToForcesOptions使用字符串输入参数,该参数为“稀疏”(构建稀疏QP问题),或“稠密”(构建密集的QP问题)。使用“稀疏”如果您的MPC问题具有很长的预测范围和大量的约束条件。

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

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

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

您还可以生成生产代码移动力使用稠密QP公式,其中变量核心数据,状态数据在线数据都是由mpcToForces,您可以使用以下代码:

%配置代码生成以创建MATLAB可执行文件cfg=coder.config(“墨西哥”);%或LIB、EXE等。康斯坦丁普茨=“忽略价值观”;%创建一个名为myMex的可执行文件编码基因(“-config”,cfg,“mpcmoveForces”,“-o”,“myMex”,...“-args”,{coder.Constant(coredata),statedata,onlinedata});%通过调用myMex可执行文件来计算操纵变量[mv,statedata,info]=myMex(coredata,statedata,onlinedata)

在Simulink中使用金宝appEmbotech FORCESPRO QP解算器求解器,请按照以下步骤操作。

  1. 用一种新方法设计线性控制器mpc对象

  2. 使用为解算器创建自定义解算器生成选项对象mpcToForcesOptions使用字符串输入参数,该参数为“稀疏”(构建稀疏QP问题),或“稠密”(构建密集的QP问题)。使用“稀疏”如果您的MPC问题具有很长的预测范围和大量的约束条件。

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

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

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

    • 对于密集QP问题,请打开Simulink库浏览器,找到金宝appMPC控制器下挡模型預測控制工具箱类别,并将其添加到模型中。

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

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

    • 对于密集QP问题,请指定mpc对象

  6. 模拟系统。

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

有关如何将QP解算器与模型预测控制工具箱一起使用的更多信息,请参阅QP解算器.

有关FORCESPRO QP解算器的详细信息,请参见Embotech FORCESPRO QP解算器文档

笔记

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

Embotech非线性规划(NLP)求解器

利用MATLAB语言设计并仿真了一种非线性MPC控制器Embotech FORCESPRO NLP解算器,请按照以下步骤操作。

  1. 利用一种非线性控制器设计方法nlmpcNLMPC多级对象

  2. 使用指定自定义解算器生成选项nlmpcToForcesOptions(或NLMPC多级强制操作,如果您在上一步中设计了多级控制器)。对于nlmpc对象,您可以选择使用序列二次规划(SQP)解算器而不是内点(IP)解算器。如果您的非线性MPC问题具有较长的预测范围和大量约束,请使用IP解算器。对于NLMPC多级对象仅IP解算器可用。

  3. 使用生成自定义解算器和包含核心、状态和联机数据结构的相关变量NLMPCTO力,(或NLMPC多级部队).

  4. 指定当前控制器状态、上次控制操作,并使用包含联机数据结构的变量指定其他运行时信号。

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

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

  1. 利用一种非线性控制器设计方法nlmpcNLMPC多级对象

  2. 使用指定自定义解算器生成选项nlmpcToForcesOptions(或NLMPC多级强制操作,如果您在上一步中设计了多级控制器)。对于nlmpc对象,您可以选择使用序列二次规划(SQP)解算器而不是内点(IP)解算器。如果您的非线性MPC问题具有较长的预测范围和大量约束,请使用IP解算器。对于NLMPC多级对象仅IP解算器可用。

  3. 使用生成自定义解算器和包含核心、状态和联机数据结构的相关变量NLMPCTO力,(或NLMPC多级部队).

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

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

  6. 模拟系统。

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

您还可以为Simulink模型生成代码,如一节中所述金宝appSimulink中的代码生成金宝app.

笔记

仅当状态和输出函数与MATLAB代码生成和金宝app卡萨迪此外,对于一般(即非多级)非线性MPC问题:

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

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

有关使用力非线性MPC块锯基于非线性模型预测控制的单摆摆起摆控制.

相关话题