您可以使用部队的实时嵌入式优化软件工具Embotech AG),模拟和生成使用模型预测控制工具箱™软件设计的线性和非线性MPC控制器的代码。Embotech提供了一个插件,它利用了模型预测控制工具箱软件的设计功能和部队的计算性能。使用该插件,您可以生成允许在实时硬件上进行部署的自定义解码器,并且基于您的特定MPC问题,高度优化,以实现满意的实时性能。
有关使用FORCESPRO MPC插件的更多信息,请参阅部队文件文档.您还可以使用MOTLAB中的其他优化应用程序来使用MORSONSPRO求解器®和仿真软金宝app件®.有关更多信息,请参见第三方产品和服务下载188bet金宝搏.
有关MATLAB中的代码和模拟预测控制工具箱控制器的代码的信息,请参阅金宝app生成代码和部署控制器到实时目标.
设计和模拟使用的线性时间不变的MPC控制器(预测模型在Matlab中使用的预测模型不改变)eminctech FORCESPRO QP解决方案,请遵循以下步骤。
设计一个线性控制器货币政策委员会
目的。
为求解器创建自定义求解器生成选项对象mpcToForcesOptions
使用字符串输入参数“稀疏”
(建立稀疏QP问题),或“稠密”
(建立密集的QP问题)。用“稀疏”
如果您的MPC问题有很长的预测地平线和大量约束。
使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量mpctoforces
.
如果需要,在包含状态数据结构的变量中调整控制器状态,并在包含在线数据结构的变量中指定运行时信号。
通过迭代调用来模拟系统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解决方案解算器,遵循以下步骤。
设计一个线性控制器货币政策委员会
目的。
为求解器创建自定义求解器生成选项对象mpcToForcesOptions
使用字符串输入参数“稀疏”
(建立稀疏QP问题),或“稠密”
(建立密集的QP问题)。用“稀疏”
如果您的MPC问题有很长的预测地平线和大量约束。
使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量mpctoforces
.
将适当的块添加到模型中:
对于稀疏QP问题,打开Simulink库浏览器,查找金宝appMPC(稀疏QP)块下FORCESPRO MPC模块类别,并将其添加到您的模型中。
对于稠密的QP问题,打开Simulink库浏览器,找到金宝appMPC控制器块下模型预测控制工具箱类别,并将其添加到您的模型中。
在块对话框中指定结构变量:
对于稀疏QP问题,指定包含核心和状态数据结构的变量。
对于稠密的QP问题,指定货币政策委员会
目的。
模拟系统。
需要时,直接从模型或代码块生成代码。
有关如何使用带有模型预测控制工具箱的QP求解器的详细信息,请参阅QP求解器.
有关武器QP求解器的更多信息,请参阅eminctech FORCESPRO QP解决方案文档。
请注意
不支持对自适应MPC控制器或带有自定义约束的MPC控制器使用QP Embotech FORCESPRO Solver。金宝app
在MATLAB中设计并仿真了一种非线性MPC控制器Embotech部队PRO NLP Solver,请遵循以下步骤。
设计一个非线性控制器nlmpc
或者nlmpcmultistage
目的。
使用nlmpcToForcesOptions
(或nlmpcMultistageToForcesOptions
,如果您在前面的步骤中设计了多级控制器)。对于一个nlmpc
对象,您可以选择使用顺序二次编程(SQP)求解器而不是内部点(IP)求解器。如果您的非线性MPC问题有长预测地平线和大量约束,则使用IP求解器。为了nlmpcmultistage
对象仅提供IP解算器。
使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量nlmpcToForces
(或nlmpcMultistageToForces
).
指定当前控制器状态、最后控制动作,并使用包含在线数据结构的变量来指定其他运行时信号。
通过迭代调用来模拟系统nlmpcmoveForces
(或nlmpcmoveForcesMultistage
).在MATLAB中为这两个函数自动生成MEX文件以加快仿真速度。
要在Simulink中使用Embotech FORCESPRO NLP求解器设计和仿真非线性MPC控制器,金宝app请遵循以下步骤。
设计一个非线性控制器nlmpc
或者nlmpcmultistage
目的。
使用nlmpcToForcesOptions
(或nlmpcMultistageToForcesOptions
,如果您在前面的步骤中设计了多级控制器)。对于一个nlmpc
对象,您可以选择使用顺序二次编程(SQP)求解器而不是内部点(IP)求解器。如果您的非线性MPC问题有长预测地平线和大量约束,则使用IP求解器。为了nlmpcmultistage
对象仅提供IP解算器。
使用生成自定义求解器和包含核心、状态和在线数据结构的相关变量nlmpcToForces
(或nlmpcMultistageToForces
).
打开Simulin金宝appk库浏览器,找到强制多级非线性MPC块下FORCESPRO MPC模块类别,并将其添加到您的模型中。
在块对话框中指定包含核心数据结构的变量。
模拟系统。
需要时,直接从模型或代码块生成代码。
您还可以为SIMULINK模型生成代码,如部分所述金宝appSimulink中的代码生成金宝app.
请注意
使用NLP Umbotech部件PricePro求解器仅支持状态和输出功能与Matlab代码生成金宝app兼容CasADi.此外,对于通用(即非多级)非线性MPC问题:
您不得使用自定义成本和约束函数。
如果非线性MPC控制器使用多个可选参数,则必须将它们分组在单个列向量中并设置模型。NumberOfParameters
属性设置为1。
举个例子强制非线性MPC块见非线性模型预测控制的摆动控制.