主要内容

使用Embotech FORCESPRO Solvers实现MPC控制器

您可以使用部队的实时嵌入式优化软件工具Embotech AG),模拟和生成使用模型预测控制工具箱™软件设计的线性和非线性MPC控制器的代码。Embotech提供了一个插件,它利用了模型预测控制工具箱软件的设计功能和部队的计算性能。使用该插件,您可以生成允许在实时硬件上进行部署的自定义解码器,并且基于您的特定MPC问题,高度优化,以实现满意的实时性能。

有关使用FORCESPRO MPC插件的更多信息,请参阅部队文件文档.您还可以使用MOTLAB中的其他优化应用程序来使用MORSONSPRO求解器®和仿真软金宝app件®.有关更多信息,请参见第三方产品和服务下载188bet金宝搏

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

二次规划(QP)求解器

设计和模拟使用的线性时间不变的MPC控制器(预测模型在Matlab中使用的预测模型不改变)eminctech FORCESPRO QP解决方案,请遵循以下步骤。

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

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

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

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

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

您还可以生成生产代码。例如,要从mpcmoveForces具有致密的QP制剂,其中变量Coredata.statedata, 和onlinedata是由mpctoforces,你可以使用以下代码:

%配置代码生成以创建MATLAB可执行文件cfg = coder.config (墨西哥人的);%或lib,exe等。cfg。ConstantInputs =“IgnoreValues”创建一个名为myMex的可执行文件codegen (“配置”cfg,'mpcmoveforces'“o”“myMex”...“参数”,{coder.constant(coredata),stateata,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求解器

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

请注意

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

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

在MATLAB中设计并仿真了一种非线性MPC控制器Embotech部队PRO NLP Solver,请遵循以下步骤。

  1. 设计一个非线性控制器nlmpc或者nlmpcmultistage目的。

  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. 设计一个非线性控制器nlmpc或者nlmpcmultistage目的。

  2. 使用nlmpcToForcesOptions(或nlmpcMultistageToForcesOptions,如果您在前面的步骤中设计了多级控制器)。对于一个nlmpc对象,您可以选择使用顺序二次编程(SQP)求解器而不是内部点(IP)求解器。如果您的非线性MPC问题有长预测地平线和大量约束,则使用IP求解器。为了nlmpcmultistage对象仅提供IP解算器。

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

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

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

  6. 模拟系统。

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

您还可以为SIMULINK模型生成代码,如部分所述金宝appSimulink中的代码生成金宝app

请注意

使用NLP Umbotech部件PricePro求解器仅支持状态和输出功能与Matlab代码生成金宝app兼容CasADi.此外,对于通用(即非多级)非线性MPC问题:

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

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

举个例子强制非线性MPC块见非线性模型预测控制的摆动控制

相关话题