模拟非线性模型预测控制器
模型预测控制工具箱
这非线性MPC控制器Block模拟了一个非线性模型预测控制器。在每个控制区间,该模块通过求解一个非线性规划问题来计算最优控制动作。有关非线性MPC的更多信息,请参见非线性MPC.
要使用此块,必须先创建一个nlmpc
对象。®工作区。
没有一个非线性MPC控制器块参数是可调的。
X
——输入当前预测模型状态,指定为长度矢量信号NX,在那里NX为预测模型的状态数。由于非线性MPC控制器不执行状态估计,您必须在每个控制区间测量或估计当前的预测模型状态。
裁判
-模型输出参考值植物输出参考值,指定为行向量信号或矩阵信号。
要在整个预测范围内使用相同的参考值,请连接裁判的行向量信号Ny元素,Ny为输出变量的个数。每个元素指定一个输出变量的引用。
改变对预测地平线(预览)的引用K.+ 1,K.+P., 连接裁判与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每行包含一个预测地平线步骤的引用。如果您指定少于P.行,最终参考用于预测地平线的剩余步骤。
last_mv
-在以前的控制间隔内,工厂使用的控制信号在上一个控制间隔内的控制信号,指定为长度矢量信号Nmv,在那里Nmv为被操纵变量的个数。
笔记
连接last_mv在先前的控制间隔中实际应用于工厂的MV信号。通常,这些MV信号是控制器生成的值,但情况并非总是如此。例如,如果您的控制器脱机并以跟踪模式运行;也就是说,控制器输出不是驱动工厂,然后馈送实际控制信号到last_mv当控制器在线切换后,可以帮助实现无闷吸的转移。
医学博士
——输入如果您的控制器预测模型已经测量扰动,您必须启用这个端口,并将其连接到行向量或矩阵信号。
要在整个预测视界使用相同的测量扰动值,请连接医学博士的行向量信号N医学博士元素,N医学博士为被操纵变量的个数。每个元素都指定了测量扰动的值。
随时间改变在预测视界(预览)上的扰动K.时间K.+P., 连接医学博士与矩阵信号N医学博士列,直到P.+ 1行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步的扰动。如果您指定少于P.+1行,最后的扰动用于预测视界的其余步骤。
要启用该端口,请选择测量的干扰参数。
参数个数
-可选参数如果控制器在其预测模型中使用可选参数、自定义成本函数或自定义约束函数,请启用此输入端口,并连接参数总线信号NP.元素,NP.是参数的数量。有关创建参数总线信号的详细信息,请参阅createParameterBus
.控制器将这些参数传递给它的模型函数、代价函数、约束函数和雅可比函数。
如果控制器不使用可选参数,则必须禁用参数个数.
要启用该端口,请选择模型参数参数。
mv.target
-操纵变量目标要指定操纵变量目标,请启用此输入端口,并连接行向量或矩阵信号。要使定义的可操作可转换其指定的目标值,您还必须指定该变量的非零调整权重。
在整个预测范围内使用相同的操纵变量目标,连接mv.target的行向量信号Nmv元素,Nmv为被操纵变量的个数。每个元素指定被操纵变量的目标。
随着时间的推移,在预测视界(预览)范围内改变目标K.时间K.+P.1,连接mv.target与矩阵信号Nmv列,直到P.行。这里,K.是当前的时间和P.是预测视界。每行包含一个预测地平线步骤的目标。如果您指定少于P.行,最终目标用于预测视界的其余步骤。
要启用该端口,请选择操纵变量的目标参数。
y.min
-最小输出变量约束要指定运行时最小输出变量约束,请启用此输入端口。如果禁用此端口,则该块使用指定的下限outputvariables.min.
属性。
为了在预测范围内使用相同的边界,连接y.min的行向量信号Ny元素,Ny为输出数。每个元素指定输出变量的下界。
根据时间改变预测范围K.+ 1,K.+P., 连接y.min与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择低OV限制参数。
y.max
-最大输出变量约束要指定运行时最大输出变量约束,请启用此输入端口。如果该端口被禁用,则块将使用outputvariables.min.
属性。
为了在预测范围内使用相同的边界,连接y.max的行向量信号Ny元素,Ny为输出数。每个元素都指定了输出变量的上限。
根据时间改变预测范围K.+ 1,K.+P., 连接y.max与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择上ov限制参数。
mv.min.
-最小操纵变量约束要指定运行时最小操纵变量约束,请启用此输入端口。如果禁用此端口,则该块使用指定的下限ManipulatedVariables。最小值
属性。
为了在预测范围内使用相同的边界,连接mv.min.的行向量信号Nmv元素,Nmv为输出数。每个元素指定被操纵变量的下限。
根据时间改变预测范围K.时间K.+P.1,连接mv.min.与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择较低的MV限制参数。
mv.max
-最大操纵变量约束要指定运行时最大操纵变量约束,请启用此输入端口。如果该端口被禁用,则块将使用manipuldvariables.max.
属性。
为了在预测范围内使用相同的边界,连接mv.max的行向量信号Nmv元素,Nmv为输出数。每个元素都指定了被操纵变量的上限。
根据时间改变预测范围K.时间K.+P.1,连接mv.max与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择上层MV限制参数。
dmv.min
-最小操纵可变率约束要指定运行时最小操纵可变速率约束,请启用此输入端口。如果禁用此端口,则该块使用指定的下限ManipulatedVariable。杀鼠灵
属性。dmv.min边界必须是非正数。
为了在预测范围内使用相同的边界,连接dmv.min的行向量信号Nmv元素,Nmv为输出数。每个元素都指定操纵变量变化率的下限。
根据时间改变预测范围K.时间K.+P.1,连接dmv.min与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择低MVRate限制参数。
dmv.max
- 最大操纵变量限制要指定运行时最大操纵可变速率约束,请启用此输入端口。如果该端口被禁用,则块将使用ManipulatedVariables。RateMax
属性。dmv.max边界必须是非负的。
为了在预测范围内使用相同的边界,连接dmv.max的行向量信号Nmv元素,Nmv为输出数。每个元素指定用于操纵可变变化率的上限。
根据时间改变预测范围K.时间K.+P.1,连接dmv.max与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择上层MVRate限制参数。
x.min
-最小状态约束要指定运行时最小状态约束,请启用此输入端口。如果禁用此端口,则该块使用指定的下限州。最小值
属性。
为了在预测范围内使用相同的边界,连接x.min的行向量信号NX元素,NX为输出数。每个元素指定状态的下界。
根据时间改变预测范围K.+ 1,K.+P., 连接x.min与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择较低的状态限制参数。
x.max.
-最大状态约束要指定运行时最大状态约束,请启用此输入端口。如果该端口被禁用,则块将使用州。马克斯
属性。
为了在预测范围内使用相同的边界,连接x.max.的行向量信号NX元素,NX为输出数。每个元素都指定了状态的上限。
根据时间改变预测范围K.+ 1,K.+P., 连接x.max.与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测视界步骤的边界。如果您指定少于P.行,最后一行中的边界适用于预测视界的其余部分。
要启用该端口,请选择上州限制参数。
y.wt.
—输出可变调优权重要指定运行时输出变量调优权重,请启用此输入端口。如果该端口被禁用,则块将使用权重。输出Variables
属性。这些调整权重惩罚了输出引用的偏差。
如果MPC控制器对象在预测视界上使用恒定输出调整权重,则只能在运行时指定恒定的输出调谐权重。同样,如果MPC控制器对象使用输出调整权重,则可以在运行时仅在运行时仅指定时变输出调谐权重
要在预测范围内使用恒定的调优权重,请连接y.wt.的行向量信号Ny元素,Ny为输出数。每个元素为输出变量指定一个非负的调优权重。有关指定调谐权重的更多信息,请参阅调整权重.
从时间从预测地平线上改变调谐重量K.+ 1,K.+P., 连接y.wt.与矩阵信号Ny列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测水平步骤的调优权值。如果您指定少于P.行,最终行中的调谐重量适用于预测地平线的其余部分。有关预测地平线上不同权重的更多信息,请参阅时变权和约束.
要启用该端口,请选择OV权重参数。
mv.wt
-操纵变量调优权重要指定运行时操作变量调整权重,请启用此输入端口。如果该端口被禁用,则块将使用权重。ManipulatedVariables
属性。这些调整权重惩罚了MV目标的偏差。
要在预测范围内使用相同的调优权重,请连接mv.wt的行向量信号Nmv元素,Nmv为被操纵变量的个数。每个元素指定被操纵变量的非负调整权重。有关指定调谐权重的更多信息,请参阅调整权重.
从时间从预测地平线上改变调谐重量K.时间K.+P.1,连接mv.wt与矩阵信号Nmv列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测水平步骤的调优权值。如果您指定少于P.行,最终行中的调谐重量适用于预测地平线的其余部分。有关预测地平线上不同权重的更多信息,请参阅时变权和约束.
要启用该端口,请选择MV权重参数。
dmv.wt
-操纵可变率调优权重要指定运行时操纵的可变速率调优权重,请启用此输入端口。如果该端口被禁用,则块将使用权重.ManipuldVariablesRate.
属性。这些调优权重会对控制移动中的较大更改进行惩罚。
要在预测范围内使用相同的调优权重,请连接dmv.wt的行向量信号Nmv元素,Nmv为被操纵变量的个数。每个元素都为受控的可变速率指定一个非负的调优权重。有关指定调谐权重的更多信息,请参阅调整权重.
从时间从预测地平线上改变调谐重量K.时间K.+P.1,连接dmv.wt与矩阵信号Nmv列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测水平步骤的调优权值。如果您指定少于P.行,最终行中的调谐重量适用于预测地平线的其余部分。有关预测地平线上不同权重的更多信息,请参阅时变权和约束.
要启用该端口,请选择MVRate权重参数。
ecr.wt
-松弛可变调优权重要指定运行时松弛可变调谐重量,请启用此输入端口并连接标量信号。如果禁用此端口,则该块使用指定的调谐重量权重..
属性。
松弛变量调优权值没有效果,除非控制器对象定义了软约束,其相关的ECR值是非零。如果存在软约束,则增加ecr.wt价值使得这些约束相对困难。然后,控制器将优先考虑最小化预测的最坏情况约束违背的大小。
要启用该端口,请选择ECR重量参数。
mv.init.
-最优操纵变量解的初始猜测金宝搏官方网站要指定最优操纵变量解决方案的初始猜测,请启用此输入端口。金宝搏官方网站如果该端口被禁用,块将使用在前一个控制间隔中计算的最优控制序列作为初始猜测。
在预测地平线上使用相同的初始猜测,连接mv.init.到一个矢量信号Nmv元素,Nmv为被操纵变量的个数。每个元素指定用于操纵变量的初始猜测。
在时间内改变预测地平线上的最初猜测K.时间K.+P.1,连接mv.init.与矩阵信号Nmv列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测水平步骤的初始猜测。如果您指定少于P.行,最后一行中的猜测适用于预测视界的其余部分。
要启用该端口,请选择最初的猜测参数。
X.Init.
- 最佳状态变量解决方案的初始猜测金宝搏官方网站要指定最佳状态解决方案的初始猜测,请启用此输入端口。金宝搏官方网站如果该端口被禁用,块将使用在前一个控制间隔中计算的最优状态序列作为初始猜测。
在预测地平线上使用相同的初始猜测,连接X.Init.到一个矢量信号NX元素,NX是州的数量。每个元素指定一个状态的初始猜测。
在时间内改变预测地平线上的最初猜测K.时间K.+P.1,连接X.Init.与矩阵信号NX列,直到P.行。这里,K.是当前的时间和P.是预测视界。每一行包含一个预测水平步骤的初始猜测。如果您指定少于P.行,最后一行中的猜测适用于预测视界的其余部分。
要启用该端口,请选择最初的猜测参数。
E.Init.
-松弛变量在解处的初始猜测为了指定松弛变量在解决方案的初始猜测,启用这个输入端口并连接一个非负标量信号。如果该端口被禁用,则块使用的初始猜测值为0.
.
要启用该端口,请选择最初的猜测参数。
mv
-最优操纵变量控制动作最佳操作变量控制动作,输出作为长度的柱矢量信号Nmv,在那里Nmv为被操纵变量的个数。
如果求解器会聚到局部最佳解决方案(nlp.status是积极的),然后呢mv包含最优解。
如果求解器达到最大迭代次数而未找到最优解(nlp.status是零)和优化。UseSuboptimalSolution
属性为:
真正的
, 然后mv包含次优解
假
, 然后mv是一样的last_mv
如果求解器失败(nlp.status是负的),然后呢mv是一样的last_mv.
成本
- 目标函数成本客观函数成本,输出作为非负标量信号。成本量化了控制器实现了目标的程度。
成本值只有在nlp.status输出是非负的。
要启用该端口,请选择最优成本参数。
松弛
- - - - - -松弛变量松弛变量ε,用于约束软化,输出为0.
或正标量值。
ε = 0 -在整个预测视界内,所有软约束均得到满足。
ε > 0 -至少违反了一个软约束。当违反多个约束时,ε表示最坏情况的软约束违反(按每个约束的ECR值缩放)。
要启用该端口,请选择松弛变量参数。
nlp.status
——优化状态优化状态,输出为如下之一:
正整数-求解器收敛到一个最优解
0.
-不收敛到最优解的最大迭代次数
负整数-求解失败
要启用该端口,请选择优化状态参数。
mv.seq
- 最佳操纵变量序列最优操纵变量序列,作为矩阵信号返回P.+1行和Nmv列,其中P.是预测的地平线和Nmv为被操纵变量的个数。
第一个P.行mv.seq包含当前时间的计算的最佳操纵变量值K.时间K.+P.1。第一行mv.seq包含当前受操纵的变量值(输出)mv).由于控制器不会在时间计算最佳控制K.+P.,最后两排mv.seq是相同的。
要启用该端口,请选择最优控制序列参数。
x.seq
-最优预测模型状态序列最优预测模型状态序列,作为矩阵信号返回P.+1行和NX列,其中P.是预测的地平线和NX是州的数量。
第一个P.行x.seq包含从当前时间计算的最佳状态值K.时间K.+P.1。第一行x.seq包含当前估计的状态值。由于控制器不会在时间计算最佳状态K.+P.,最后两排x.seq是相同的。
要启用该端口,请选择最优状态序列参数。
Y.Seq.
- 最佳输出变量序列最优输出可变序列,以矩阵信号的形式返回P.+1行和Ny列,其中P.是预测的地平线和Ny为输出变量的个数。
第一个P.行Y.Seq.包含从当前时间计算的最佳输出值K.时间K.+P.1。第一行Y.Seq.基于当前估计的状态和当前测量的干扰来计算(第一行输入医学博士).由于控制器不计算最佳输出值时K.+P.,最后两排Y.Seq.是相同的。
要启用该端口,请选择最优输出序列参数。
非线性MPC控制器
——控制器对象nlmpc
对象名称使用预测模型采样时间
-使用预测模型样本时间标志选择此参数以使用与预测模型相同的样本时间运行控制器。若使用不同控制器的采样时间,请清除此参数,并使用使块在不同的示例时间运行参数。
为了限制决策变量的数量并提高计算效率,您可以使用与预测地平线不同的采样时间运行控制器。例如,考虑在10 Hz运行的非线性MPC控制器的情况。如果植物和控制器采样时间匹配,预测植物行为为十秒钟需要长度100的预测地平线,这产生了大量的决策变量。为了减少决策变量的数量,您可以使用1秒的植物采样时间和长度10的预测地平线。
块参数:UseObjectTs |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“上” |
使块在不同的示例时间运行
-控制器采样时间指定此参数以使用与其预测模型不同的采样时间运行控制器。
要启用此参数,请清除使用预测模型采样时间参数。
块参数:TsControl |
类型:字符串,特征向量 |
默认:“ |
使用MEX加速模拟
-模拟控制器使用MEX功能的标志使用生成的MEX函数来模拟控制器buildMEX
.这样做减少了控制器的仿真时间。要指定MEX函数的名称,请使用指定MEX函数名称参数。
块参数:UseMEX |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
指定MEX函数名称
- 控制器MEX函数名称使用此参数指定要在模拟期间使用的MEX函数的名称。要创建MEX函数,请使用buildMEX
功能。
要启用此参数,请选择使用MEX加速模拟参数。
块参数:mexname |
类型:字符串,特征向量 |
默认:“ |
测量的干扰
-添加被测干扰输入端口如果你的控制器已经测量到扰动,你必须选择这个参数来添加医学博士输出端口到块。
块参数:md_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
操纵变量的目标
-添加操作变量目标输入端口选择此参数以添加mv.target块的输入端口。
块参数:mvtarget_enabled. |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
模型参数
- 添加型号参数输入端口如果您的控制器使用可选参数,则必须选择此参数以添加参数个数输出端口到块。
有关创建参数总线信号的详细信息,请参阅createParameterBus
.
块参数:param_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
最优成本
-添加最优成本输出端口选择此参数以添加成本输出端口到块。
块参数:cost_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
最优控制序列
—增加最优控制顺序输出端口选择此参数以添加mv.seq输出端口到块。
块参数:mvseq_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
最优状态序列
- 添加最佳状态序列输出端口选择此参数以添加x.seq输出端口到块。
块参数:stateseq_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
最优输出序列
-增加最佳输出顺序输出端口选择此参数以添加Y.Seq.输出端口到块。
块参数:ovseq_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
松弛变量
—添加松弛变量输出端口选择此参数以添加松弛输出端口到块。
块参数:slack_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
优化状态
- 添加优化状态输出端口选择此参数以添加nlp.status输出端口到块。
块参数:status_enabled |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
低OV限制
-增加最小OV约束输入端口选择此参数以添加ov.min块的输入端口。
块参数:OV_MIN. |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
上ov限制
- 添加最大OV约束输入端口选择此参数以添加ov.max块的输入端口。
块参数:ov_max |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
较低的MV限制
-添加最小MV约束输入端口选择此参数以添加mv.min.块的输入端口。
块参数:mv_min |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
上层MV限制
-增加最大MV约束输入端口选择此参数以添加mv.max块的输入端口。
块参数:mv_max |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
低MVRate限制
-增加最小MV速率限制输入端口选择此参数以添加dmv.min块的输入端口。
块参数:mvrate_min |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
上层MVRate限制
-增加最大MV速率限制输入端口选择此参数以添加dmv.max块的输入端口。
块参数:mvrate_max |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
较低的状态限制
- 添加最小状态约束输入端口选择此参数以添加x.min块的输入端口。
块参数:state_min |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
上州限制
—添加最大状态约束输入端口选择此参数以添加x.max.块的输入端口。
块参数:state_max |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
OV权重
—增加OV调优权值输入端口选择此参数以添加y.wt.块的输入端口。
块参数:ov_weight |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
MV权重
- 添加MV调谐重量输入端口选择此参数以添加mv.wt块的输入端口。
块参数:mv_weight |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
MVRate权重
- 添加MV Rate调整权重输入端口选择此参数以添加dmv.wt块的输入端口。
块参数:mvrate_weight |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
ECR重量
- 添加ECR调谐重量输入端口选择此参数以添加ecr.wt块的输入端口。
块参数:ecr_weight |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
最初的猜测
-添加初始猜测输入端口选择此参数以添加mv.init.那X.Init.,E.Init.块的输入端口。
笔记
默认情况下,Nonlinar MPC控制器块使用从一个控制区间计算出的最优操纵变量和状态轨迹作为下一个控制区间的初始猜测。
仅在应用程序需要时启用初始猜测端口。
块参数:nlp_initialize. |
类型:字符串,特征向量 |
价值观:“关闭” 那“上” |
默认:“关闭” |
使用注意事项及限制:
这非线性MPC控制器块支持仅针对金宝app使用默认值的非线性MPC控制器生成代码fmincon
用SQP算法求解。
当用于代码生成时,非线性MPC控制器不支持预测模型的匿名函数、自定义成本函数或自定义约束函数。金宝app
如果控制器使用可选参数,则还必须为总线的创造者连接到参数个数输入端口。要做到这一点,放置非线性MPC控制器和总线的创造者块在子系统中,并为该子系统生成代码。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。