你可以用FORCESPRO,一个由Embotech公司,为使用模型预测控制工具箱设计的线性和非线性MPC控制器模拟和生成代码™ 软件。Embotech提供了一个插件,该插件利用模型预测控制工具箱软件的设计功能和FORCESPRO的计算性能。使用该插件,您可以生成自定义解算器,允许在实时硬件上部署,并根据您的特定MPC问题进行高度优化,以实现令人满意的性能实时性能。
有关使用FORCESPRO MPC插件的更多信息,请参阅FORCESPRO文件。您也可以使用FORCESPRO解算器在MATLAB和®和Sim金宝appulink®。有关详细信息,请参阅FORCESPRO第三方产品和服务下载188bet金宝搏.
有关在MATLAB和Simulink中为模型预测控制工具箱控制器生成代码的信息,请参阅金宝app生成代码并将控制器部署到实时目标.
在MATLAB中使用Embotech FORCESPRO QP解算器,请按照以下步骤操作。
用一种新方法设计线性控制器mpc
对象
使用为解算器创建自定义解算器生成选项对象mpcToForcesOptions
使用字符串输入参数,该参数为“稀疏”
(构建稀疏QP问题),或“稠密”
(构建密集的QP问题)。使用“稀疏”
如果您的MPC问题具有很长的预测范围和大量的约束条件。
使用生成自定义解算器和包含核心、状态和联机数据结构的相关变量mpcToForces
.
如果需要,在包含状态数据结构的变量中调整控制器状态,并在包含在线数据结构的变量中指定运行时信号。
通过迭代调用来模拟系统移动力
. 对于稀疏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解算器求解器,请按照以下步骤操作。
用一种新方法设计线性控制器mpc
对象
使用为解算器创建自定义解算器生成选项对象mpcToForcesOptions
使用字符串输入参数,该参数为“稀疏”
(构建稀疏QP问题),或“稠密”
(构建密集的QP问题)。使用“稀疏”
如果您的MPC问题具有很长的预测范围和大量的约束条件。
使用生成自定义解算器和包含核心、状态和联机数据结构的相关变量mpcToForces
.
将适当的块添加到模型中:
对于稀疏QP问题,请打开Simulink库浏览器,找到金宝app部队MPC(稀疏QP)下挡FORCESPRO MPC块类别,并将其添加到模型中。
对于密集QP问题,请打开Simulink库浏览器,找到金宝appMPC控制器下挡模型預測控制工具箱类别,并将其添加到模型中。
在“块”对话框中指定结构变量:
对于稀疏QP问题,指定包含核心和状态数据结构的变量。
对于密集QP问题,请指定mpc
对象
模拟系统。
需要时,直接从模型或块生成代码。
有关如何将QP解算器与模型预测控制工具箱一起使用的更多信息,请参阅QP解算器.
有关FORCESPRO QP解算器的详细信息,请参见Embotech FORCESPRO QP解算器文档
笔记
不支持对自适应MPC控制器或具有自定义约束的MPC控制器使用QP Embotech FORCESPRO解算器。金宝app
利用MATLAB语言设计并仿真了一种非线性MPC控制器Embotech FORCESPRO NLP解算器,请按照以下步骤操作。
使用指定自定义解算器生成选项nlmpcToForcesOptions
(或NLMPC多级强制操作
,如果您在上一步中设计了多级控制器)。对于nlmpc
对象,您可以选择使用序列二次规划(SQP)解算器而不是内点(IP)解算器。如果您的非线性MPC问题具有较长的预测范围和大量约束,请使用IP解算器。对于NLMPC多级
对象仅IP解算器可用。
使用生成自定义解算器和包含核心、状态和联机数据结构的相关变量NLMPCTO力
,(或NLMPC多级部队
).
指定当前控制器状态、上次控制操作,并使用包含联机数据结构的变量指定其他运行时信号。
通过迭代调用来模拟系统nlmpcmoveForces
(或NLMPCMOVERCESS多级
).将自动为这两个函数生成一个MEX文件,以加快MATLAB中的仿真速度。
要使用Embotech FORCESPRO NLP解算器在Simulink中设计和仿真非线性MPC控制器,金宝app请执行以下步骤。
使用指定自定义解算器生成选项nlmpcToForcesOptions
(或NLMPC多级强制操作
,如果您在上一步中设计了多级控制器)。对于nlmpc
对象,您可以选择使用序列二次规划(SQP)解算器而不是内点(IP)解算器。如果您的非线性MPC问题具有较长的预测范围和大量约束,请使用IP解算器。对于NLMPC多级
对象仅IP解算器可用。
使用生成自定义解算器和包含核心、状态和联机数据结构的相关变量NLMPCTO力
,(或NLMPC多级部队
).
打开Simulin金宝appk库浏览器,找到强制多级非线性MPC下挡FORCESPRO MPC块类别,并将其添加到模型中。
在“块”对话框中指定包含核心数据结构的变量。
模拟系统。
需要时,直接从模型或块生成代码。
您还可以为Simulink模型生成代码,如一节中所述金宝appSimulink中的代码生成金宝app.
笔记
仅当状态和输出函数与MATLAB代码生成和金宝app卡萨迪此外,对于一般(即非多级)非线性MPC问题:
不得使用自定义成本和约束函数。
如果非线性MPC控制器使用多个可选参数,则必须将它们分组到单个列向量中,并设置模型参数
将控制器的属性设置为1。
有关使用力非线性MPC块锯基于非线性模型预测控制的单摆摆起摆控制.