主要内容

多级非线性MPC控制器

模拟多级非线性模型预测控制器

  • 库:
  • 模型预测控制工具箱

  • 多级非线性MPC控制器

描述

多级非线性MPC控制器块模拟多级非线性模型预测控制器。在每个控制区间,块计算最优控制举措解决非线性规划问题的不同的成本函数和约束定义为不同的预测步骤(阶段)。有关非线性MPC的更多信息,请参阅非线性MPC

使用这一块,您必须首先创建一个nlmpcMultistageMATLAB的对象®工作区。

限制

  • 没有一个多级非线性MPC控制器块参数可调。

港口

输入

全部展开

需要输入

目前的预测模型,指定为一个向量长度的信号Nx,在那里Nx预测模型的状态数。由于非线性MPC控制器不执行状态估计,您必须测量或估计当前状态预测模型在每个时间间隔的控制。

控制信号用于控制区间,以前工厂指定为一个向量长度的信号Nmv,在那里Nmv是操纵变量的数量。

请注意

连接last_mvMV信号实际应用于植物在前面的控制区间。通常,这些MV控制器产生的信号值,尽管有时他们可以来自不同的源。例如,如果您的控制器脱机和运行跟踪模式,(也就是说,控制器输出不是推动工厂),然后喂输入实际的工厂last_mv可以帮助实现无扰转移时,控制器将重新上线。

额外的输入

如果你的控制器预测模型测量干扰你必须启用该端口,连接到一个行向量或矩阵信号。

使用相同的测量干扰值预测地平线,连接医学博士一个行向量的信号N医学博士元素,N医学博士是操纵变量的数量。每个元素指定的值测量的干扰。

不同的干扰预测地平线(预览)k时间k+p,连接医学博士一个矩阵信号N医学博士列和p+ 1行。在这里,k当前时间和吗p是预测地平线。每行包含预测地平线一步的干扰。如果你指定不到p+ 1行,最终干扰用于预测地平线的其余步骤。

依赖关系

要启用这个端口,选择测量的干扰参数。

如果您的控制器使用可选参数的预测模型,使这个输入端口,并连接一个矢量信号N元素,N状态参数的数量(等于Model.ParameterLength财产的nlmpcMultistage控制器对象)。控制器将这些参数传递给它的模型状态转换和州雅可比矩阵函数。

如果你的控制器不使用可选参数,必须禁用state.param端口。

依赖关系

要启用这个端口,选择StateFcn参数参数。

如果您的控制器使用可选参数在任何阶段成本或约束函数,使这个输入端口,并连接一个矢量信号N光伏元素,N光伏是所有阶段的参数函数,总数等于总和(Stages.ParameterLength)。所有阶段的参数是堆放在参数向量如下。

阶段1(参数向量;参数向量为第二阶段;…参数向量阶段p + 1;]

在每个阶段,控制器通过相关参数向量阶段成本和约束功能活跃。

如果你的控制器不使用可选参数,必须禁用stage.param端口。有关更多信息,请参见nlmpcMultistagenlmpcmove

依赖关系

要启用这个端口,选择堆叠阶段参数参数。

网络限制

指定运行时最小操纵变量约束,使这个输入端口。如果该端口被禁用,块使用中指定的下界ManipulatedVariables.Min它的控制器对象的属性。

使用相同的边界预测地平线,连接mv.min一个行向量的信号Nmv元素,Nmv是输出的数量。每个元素指定一个操纵变量的下限。

不同范围的预测地平线k时间k+p1,连接mv.min一个矩阵信号Ny列和p行。在这里,k当前时间和吗p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限申请的其余部分预测地平线。

依赖关系

要启用这个端口,选择较低的MV限制参数。

指定运行时最大操纵变量约束,使这个输入端口。如果该端口被禁用,块使用中指定的上界ManipulatedVariables.Max它的控制器对象的属性。

使用相同的边界预测地平线,连接mv.max一个行向量的信号Nmv元素,Nmv是输出的数量。每个元素指定一个操纵变量的上界。

不同范围的预测地平线k时间k+p1,连接mv.max一个矩阵信号Ny列和p行。在这里,k当前时间和吗p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限申请的其余部分预测地平线。

依赖关系

要启用这个端口,选择上层MV限制参数。

指定运行时最小操纵可变利率限制,使这个输入端口。如果该端口被禁用,块使用中指定的下界ManipulatedVariable.RateMin它的控制器对象的属性。dmv.min范围必须是负的。

使用相同的边界预测地平线,连接dmv.min一个行向量的信号Nmv元素,Nmv是输出的数量。每个元素指定一个操纵变量变化率的下界。

不同范围的预测地平线k时间k+p1,连接dmv.min一个矩阵信号Ny列和p行。在这里,k当前时间和吗p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限申请的其余部分预测地平线。

依赖关系

要启用这个端口,选择低MVRate限制参数。

指定运行时最大操纵变量率限制,使这个输入端口。如果该端口被禁用,块使用中指定的上界ManipulatedVariables.RateMax它的控制器对象的属性。dmv.max范围必须是负的。

使用相同的边界预测地平线,连接dmv.max一个行向量的信号Nmv元素,Nmv是输出的数量。每个元素指定为被控变量变化率上界。

不同范围的预测地平线k时间k+p1,连接dmv.max一个矩阵信号Ny列和p行。在这里,k当前时间和吗p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限申请的其余部分预测地平线。

依赖关系

要启用这个端口,选择上层MVRate限制参数。

指定运行时最低状态约束,使这个输入端口。如果该端口被禁用,块使用中指定的下界States.Min它的控制器对象的属性。

使用相同的边界预测地平线,连接x.min一个行向量的信号Nx元素,Nx是输出的数量。每个元素指定状态的下界。

不同范围的预测地平线k+ 1,k+p,连接x.min一个矩阵信号Ny列和p行。在这里,k当前时间和吗p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限申请的其余部分预测地平线。

依赖关系

要启用这个端口,选择较低的国家限制参数。

指定运行时最大状态约束,使这个输入端口。如果该端口被禁用,块使用中指定的上界States.Max它的控制器对象的属性。

使用相同的边界预测地平线,连接x.max一个行向量的信号Nx元素,Nx是输出的数量。每个元素指定状态的上界。

不同范围的预测地平线k+ 1,k+p,连接x.max一个矩阵信号Ny列和p行。在这里,k当前时间和吗p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限申请的其余部分预测地平线。

依赖关系

要启用这个端口,选择上游国家限制参数。

其他人

终端状态,指定为一个向量长度的信号Nx。指定所需的终端状态约束,使这个输入端口。在运行时指定所需的终端状态通过这个输入端口,您必须指定的有限值TerminalState场的模型财产的nlmpcMultistage对象作为参数传递给。指定你不需要的国家限制终端价值。在运行时,块忽略任何值对应的输入信号值的对象。如果你不指定任何终值条件nlmpcMultistage对象,信号输入端口在运行时被忽略。

如果没有启用这个港口终端状态约束(如果存在)在运行时不会改变。

依赖关系

要启用这个端口,选择终端状态参数。

指定初始猜测决策变量向量,使这个输入端口。如果该端口被禁用,块使用决策变量序列计算在前面的控制区间作为初始猜测。良好的初始猜测是重要的,因为他们帮助解决者更快地收敛到一个解决方案。

z0是一个列向量的长度等于所有决策变量向量的长度之和为每个阶段。最初的猜测必须堆放如下。

阶段1(状态向量的估计;被控变量向量猜第一阶段;被控变量向量率猜第一阶段;%如果使用松弛变量向量猜第一阶段;%如果状态向量估计用于第二阶段;被控变量向量猜第二阶段;被控变量向量率猜第二阶段;%如果猜松弛变量向量用于第二阶段;%如果使用…阶段p状态向量的估计; manipulated variable vector guess for stage p; manipulated variable vector rate guess for stage p; % if used slack variable vector guess for stage p; % if used state vector guess for stage p+1; slack variable vector guess for stage p+1; % if used ]
有关更多信息,请参见nlmpcMultistagenlmpcmove

依赖关系

要启用这个端口,选择最初的猜测参数。

输出

全部展开

要求输出

最优操纵变量控制动作,输出为一个列向量长度的信号Nmv,在那里Nmv是操纵变量的数量。

如果解决收敛于局部最优的解决方案(nlp.status是积极的),然后呢mv包含最优解。

如果解算器达到最大迭代次数没有找到一个最佳的解决方案(nlp.status是零)和Optimization.UseSuboptimalSolution控制器的属性真正的,然后mv包含了次优的解决方案,否则,mv是一样的last_mv

如果解决失败(nlp.status是负的),然后呢mv是一样的last_mv

额外的输出

成本目标函数,输出为负的标量信号。成本量化程度控制器实现其目标。

成本价值时,才有意义nlp.status输出是负的。

依赖关系

要启用这个端口,选择最优成本参数。

堆叠松弛变量向量,用于约束软化。如果所有元素为零,那么所有软约束满足整个预测地平线。如果任何元素大于零,那么至少有一个软约束违反。

所有阶段堆积的松弛变量向量如下。

第一阶段(松弛变量向量;%如果松弛变量向量用于第二阶段;%如果使用…松弛变量向量阶段p + 1;%如果使用)

优化状态,输出是下列之一:

  • 正整数——解决者聚集到一个最优解

  • 0——最大迭代次数达到不收敛于最优解

  • 负整数,解算器失败

依赖关系

要启用这个端口,选择优化状态参数。

最优序列

最优操纵变量序列,作为一个矩阵信号返回p+ 1行和Nmv列,p预测地平线和吗Nmv是操纵变量的数量。

第一个pmv.seq包含从当前时间计算最优操纵变量值k时间k+p1。第一行的mv.seq包含当前的操纵变量值(输出mv)。由于控制器不计算最优控制移动k+p的最后两行mv.seq都是相同的。

依赖关系

要启用这个端口,选择最优控制序列参数。

最优预测模型状态序列,作为一个矩阵信号返回p+ 1行和Nx列,p预测地平线和吗Nx的状态数。

第一行的x.seq包含当前估计状态值,要么从内置的状态估计量或输入自定义状态估计的块x (k | k)。下一个px.seq包含计算最优状态值k+ 1,k+p

依赖关系

要启用这个端口,选择最优状态序列参数。

参数

全部展开

你必须提供一个nlmpcMultistage对象,定义了一个非线性MPC控制器。这样,输入的名称nlmpcMATLAB的工作区中对象。

编程使用

块参数:nlmpcobj
类型:字符串,特征向量
默认值:”“

选择该参数运行控制器使用相同的样品时间预测模型。使用不同的控制器样品时间,明确该参数,并指定样品时间使用使块运行在不同样品的时间参数。

限制决策变量的数量,提高计算效率,您可以运行控制器的样品时间不同于预测地平线。例如,考虑非线性MPC控制器的情况下运行在10赫兹。如果工厂和控制器样品时间匹配,预测植物的行为十秒钟需要预测地平线的长度为100,并产生大量的决策变量。减少决策变量的数量,你可以使用一个植物样本1秒的时间和长度的预测地平线10。

编程使用

块参数:UseObjectTs
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“上”

指定该参数运行控制器使用不同的采样时间预测模型。

依赖关系

要启用该参数,清除使用预测模型示例参数。

编程使用

块参数:TsControl
类型:字符串,特征向量
默认值:”“

选择这个参数来模拟控制器使用墨西哥人函数生成的使用buildMEX。这样做可以减少控制器的仿真时间。指定名称的墨西哥人功能,使用墨西哥人指定函数名参数。

编程使用

块参数:UseMEX
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

使用这个参数指定墨西哥人函数来模拟中使用的名称。创建墨西哥人功能,使用buildMEX函数。

依赖关系

要启用该参数,选择使用墨西哥人加快仿真速度参数。

编程使用

块参数:mexname
类型:字符串,特征向量
默认值:”“

General选项卡

如果你的控制器测量干扰,必须选择添加这个参数医学博士输出端口的块。

编程使用

块参数:md_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

如果您的预测模型使用可选参数,您必须选择添加这个参数state.param输入端口。

编程使用

块参数:stateparam_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

如果你的成本或约束函数使用的参数在任何阶段,你必须选择添加这个参数stage.param输入端口。

编程使用

块参数:stageparam_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数成本输出端口的块。

编程使用

块参数:cost_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数mv.seq输出端口的块。

编程使用

块参数:mvseq_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数x.seq输出端口的块。

编程使用

块参数:stateseq_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数松弛输出端口的块。

编程使用

块参数:slack_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数nlp.status输出端口的块。

编程使用

块参数:status_enabled
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

在线功能选项卡

选择要添加这个参数mv.min输入端口。

编程使用

块参数:mv_min
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数mv.max输入端口。

编程使用

块参数:mv_max
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数dmv.min输入端口。

编程使用

块参数:mvrate_min
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数dmv.max输入端口。

编程使用

块参数:mvrate_max
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数x.min输入端口。

编程使用

块参数:state_min
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数x.max输入端口。

编程使用

块参数:state_max
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数x.terminal输入端口。

编程使用

块参数:terminal_state
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

选择要添加这个参数z0输入端口。

请注意

默认情况下,Nonlinar MPC控制器块使用计算最优状态、操纵变量和松弛变量从一个控制区间作为初始猜测下一个控制间隔。

使初始猜测端口只有如果你需要为您的应用程序。

编程使用

块参数:nlp_initialize
类型:字符串,特征向量
价值观:“关闭”,“上”
默认值:“关闭”

扩展功能

另请参阅

|

主题

介绍了R2021a