主要内容

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

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

有关使用FORCESPRO MPC插件的更多信息,请参阅FORCESPRO文档.你也可以在MATLAB中使用FORCESPRO求解器来实现其他优化应用®和Sim万博1manbetxulink®。有关详细信息,请参阅FORCESPRO第三方产品和服务s manbetx 845

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

Embotech二次规划(QP)求解器

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

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

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

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

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

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

您还可以生成生产代码移动力用密集的QP公式,其中的变量coredata,状态数据,在线数据是由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中使用万博1manbetxEmbotech FORCESPRO QP解算器求解器,请按照以下步骤操作。

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

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

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

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

    • 对于稀疏QP问题,打开Simulink库浏览器,找到万博1manbetx部队MPC(稀疏QP)下挡FORCESPRO MPC块类别,并将其添加到您的模型中。

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

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

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

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

  6. 模拟系统。

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

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

有关FORCESPRO QP求解器的更多信息,请参阅Embotech FORCESPRO QP解算器文档。

笔记

不支持对自适应MPC控制器或具有自定义约束的MPC控制器使用QP Embotech FORCESPRO解算器。万博1manbetx

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

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

  1. 利用一种非线性控制器设计方法nlmpcnlmpcMultistage对象。

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

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

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

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

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

  1. 利用一种非线性控制器设计方法nlmpcnlmpcMultistage对象。

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

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

  4. 打开Simulin万博1manbetxk库浏览器,找到强制多级非线性MPC下挡FORCESPRO MPC块类别,并将其添加到您的模型中。

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

  6. 模拟系统。

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

您还可以如本节所述为您的Simulink模型生成代码万博1manbetx在Simulink中的代码生成万博1manbetx

笔记

仅当状态和输出函数与MATLAB代码生成兼容时,才支持使用NLP Embotech FORCES万博1manbetxPRO Solver卡萨迪.此外,对于一般(非多级)非线性MPC问题:

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

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

有关使用力非线性MPC块看基于非线性模型预测控制的摆振控制

相关的话题