主要内容

货币政策委员会

模型预测控制器

描述

使用线性模型预测控制器,干扰和噪声模型来估计控制器输出状态和预测未来工厂。使用预测植物输出,控制器解决了二次规划优化问题,以确定控制措施。

更多信息的结构模型预测控制器,明白了货币政策委员会预测模型

创建

描述

mpcobj= mpc (植物)创建一个模型预测控制器对象基于离散时间预测模型植物。控制器,mpcobj,继承了其控制区间plant.Ts,它的时间单位plant.TimeUnit。所有其他控制器属性的默认值。在您创建MPC控制器,你可以设置它的属性使用点符号。

如果plant.Ts=- - - - - -1,你必须设置Ts财产的控制器设计和模拟控制器之前积极的价值。

mpcobj= mpc (植物,ts)创建一个模型预测控制器模型并设置根据指定的工厂Ts控制器的属性。如果植物是:

  • 连续时间模型,控制器可使用样本时间预测模型ts

  • 离散时间模型与指定的样品时间,预测控制器重新取样装置使用样品时间ts

  • 一个离散时间模型与一个未指明的样本时间(plant.Ts=1),它继承了样品的时间ts当用于预测。

例子

mpcobj= mpc (植物,ts,P,,W,MV,机汇,DV)指定以下控制器的属性。如果这些值省略或空,默认值适用。

  • P设置PredictionHorizon财产。

  • 设置ControlHorizon财产。

  • W设置权重财产。

  • MV设置ManipulatedVariables财产。

  • 机汇设置OutputVariables财产。

  • DV设置DisturbanceVariables财产。

mpcobj= mpc (模型)创建一个模型预测控制器对象根据指定的预测模型,包括植物、输入扰动和测量噪声模型连同名义条件的模型。当你不指定一个样品,工厂模型,model.Plant,必须是一个离散时间模型。这个语法设置模型控制器的属性。

mpcobj= mpc (模型,ts)创建一个模型预测控制器模型并设置根据指定的工厂Ts控制器的属性ts。如果model.Plant是一个离散时间线性时不变模型与一个未指明的样品时间(model.Plant.Ts=1),它继承了样品的时间ts当用于预测。

mpcobj= mpc (模型,ts,P,,W,MV,机汇,DV)属性指定额外的控制器。如果这些值省略或空,默认值适用。

输入参数

全部展开

植物预测模型,指定为一个线性时不变模型或者一个线性系统辨识工具箱™模型。对应于指定的工厂Model.Plant控制器的属性。

如果你不指定一个样本时间在创建你的控制器,植物必须是一个离散时间模型。预测,植物如果需要使用离散或重新取样mpcobj.Ts作为示例。延迟,如果存在,是包含在生成的离散时间模型。

MPC预测模型的更多信息,请参阅货币政策委员会预测模型

请注意

直接从操纵变量的任何输出引线植物不支持。金宝app

例子:特遣部队(10、10 [1])

预测模型,指定为一个结构相同的格式模型控制器的属性。如果你不指定一个样本时间在创建你的控制器,model.Plant必须是一个离散时间模型。

MPC预测模型的更多信息,请参阅货币政策委员会预测模型

属性

全部展开

控制器样品时间,指定为一个积极的有限的标量。控制器使用离散时间模型与样本Ts为预测。时间单位是遗传的plant.TimeUnit

例子:mpcobj.Ts=0.1

预测地平线步骤,指定为一个正整数。的产物PredictionHorizonTs预测的时间;也就是说,控制器看起来在未来多远。

如果您指定一个预测地平线的数量不超过必要步骤覆盖最长的延迟在所有输入输出通道,Nd = max (mpcobj.Model.Plant.IODelay (:)) / mpcobj.Ts,那么软件自动增加预测地平线地板(Nd)

例子:mpcobj。PredictionHorizon = 15

控制层,指定为以下之一:

  • 正整数,之间,1p、包容,p等于PredictionHorizon。在这种情况下,控制器计算自由控制动作发生k通过k+1,保持着剩下的预测地平线的控制器输出恒定的步骤k+通过k+p1。在这里,k是当前控制间隔。

  • 向量的正整数(1,2,…),指定阻塞时间间隔的长度。默认情况下,控制器计算块的自由移动,是阻塞的数量的间隔。第一次自由移动适用于时间k通过k+11,第二个免费的移动应用k+1通过k+1+21,等等。使用块运动可以提高控制器的鲁棒性。中的值的总和ControlHorizon必须匹配预测地平线p。如果您指定一个向量的总和:

    • 小于预测地平线,那么控制器添加一个阻塞时间间隔。这个区间的长度是间隔长度的总和p。例如,如果p=10你指定一个控制层ControlHorizon=(1 2 3),然后控制器使用四个区间长度(1 2 3 4)

    • 大于预测地平线,然后间隔是截断直到区间长度之和等于p。例如,如果p=10你指定一个控制层ControlHorizon=(1 2 3 6 7),然后控制器使用四个区间长度(1 2 3 4)

    有关被控变量的更多信息阻塞,明白了被控变量阻塞

例子:mpcobj。ControlHorizon = 3

预测模型和名义条件,指定为以下字段的结构。MPC预测模型的更多信息,请参阅货币政策委员会预测模型控制器状态估计

植物预测模型,指定为一个线性时不变模型或者一个线性系统辨识工具箱模型。

请注意

直接从操纵变量的任何输出引线植物不支持。金宝app

例子:mpcobj.Model。植物=党卫军(- - - - - -1,1,1,0)

模型描述预期的无边无际的干扰,指定为一个线性时不变模型。这个模型是必需的,只有当植物不可测量的干扰。你可以设置这个扰动模型直接使用点符号或使用setindist函数。

默认情况下,输入扰动将集成的白噪声。信号模型,添加一个积分器与无因次单位增益为每一个无边无际的输入扰动,除非增加导致控制器失去状态可观测性。在这种情况下,将白噪声干扰,因此,添加了一个无量纲单位增益的通道。

例子:mpcobj.Model。干扰=特遣部队(5,[1 5])

模型描述预期的输出测量噪声,指定为一个线性时不变模型。

默认情况下,测量噪声将白噪声与单位方差。信号模型,添加了一个无量纲单位增益为每一个测量通道。

例子:mpcobj.Model。噪音=zpk(0,-1,1)

名义操作点植物模型线性化,用以下字段指定为一个结构。

描述 默认的
X

植物状态的操作点,指定为一个列向量长度等于国家的数量Model.Plant

零向量
U

植物输入操作点,包括操纵变量和测量和不可测量的干扰,指定为一个列向量的长度等于输入的数量Model.Plant

零向量
Y

植物输出操作点,包括测量和不可测量的输出,指定为一个列向量的长度等于输出的数量Model.Plant

零向量
DX

对于连续时间模型,DX是导数在操作点:DX=f(X,U)。对于离散时间模型,DX=x(k+ 1)-x(k)=f(X,U)- - -X。指定DX作为一个列向量长度等于国家的数量Model.Plant

零向量

操纵变量(MV)信息、范围和规模因素,指定为一个结构数组Nmv元素,Nmv是操纵变量的数量。要访问该属性,您可以使用别名MV而不是ManipulatedVariables

请注意

利率是指Δ的区别u(k)=u(k)- - -u(k1)。约束和基于衍生品的重量du / dt的连续输入信号必须得到适当的新配方Δ离散时间的差异u(k),使用近似du / dt≅Δu(k)/T年代

每个结构元素有以下字段。

下界为给定的操纵变量指定为一个标量或矢量。默认情况下,这个下界

使用相同的绑定在预测地平线,指定一个标量值。

不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (1)。最小值= 5

上界为给定的操纵变量指定为一个标量或矢量。默认情况下,这个上限

使用相同的绑定在预测地平线,指定一个标量值。

不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (1)。Max = 5

柔软的下界为给定的操纵变量。一个更大的平等的关心放松(ECR)值表示一种软约束,指定为负的标量或矢量。默认情况下,MV下界是硬约束。

使用相同的ECR值预测地平线,指定一个标量值。

改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (1)。MinECR = 0.01

柔软的上界为给定的操纵变量。一个更大的平等的关心放松(ECR)值表示一种软约束,指定为负的标量或矢量。默认情况下,MV上界是硬约束。

使用相同的ECR值预测地平线,指定一个标量值。

改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (1)。MaxECR = 0.01

下界为给定的操纵变量的变化率,指定为负值的标量或矢量。MV的改变被定义为MV(k)- - -MV(k1),k是当前时间。默认情况下,这个下界

使用相同的绑定在预测地平线,指定一个标量值。

不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (1)。杀鼠灵= 2

上限为给定的操纵变量的变化率,指定为负的标量或矢量。MV的改变被定义为MV(k)- - -MV(k1),k是当前时间。默认情况下,这个下界

使用相同的绑定在预测地平线,指定一个标量值。

不同的绑定预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (1)。RateMax = 2

柔软的变化率下界的一个给定的被控变量。一个更大的平等的关心放松(ECR)值表示一种软约束,指定为非负有限标量或矢量。默认情况下,MV变化率下界是硬约束。

使用相同的ECR值预测地平线,指定一个标量值。

改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后使用ECR值预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (2)。RateMinECR = 0.01

柔软的上界给定被控变量的变化率。一个更大的平等的关心放松(ECR)值表示一种软约束,指定为非负有限标量或矢量。默认情况下,MV变化率上界是硬约束。

使用相同的ECR值预测地平线,指定一个标量值。

改变ECR值对预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后使用ECR值预测地平线的其余步骤。

例子:mpcobj.ManipulatedVariables (2)。RateMaxECR = 0.01

目标对于一个给定的操纵变量指定为一个标量,矢量,或“名义”(默认)。当目标“名义”,然后操纵变量对应的目标mpcobj.Model.Nominal.U

在预测地平线,使用相同的目标指定一个标量值。

不同目标的预测地平线k时间k+p1、指定的向量p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最终值是用来预测地平线的其余步骤。

你可能想要为一些操纵变量设定目标值,连同对应的非零成本函数的权重,对经济或操作原因,每当你比植物更有操纵变量输出。有关更多信息,请参见设计MPC控制器Nonsquare植物设定目标的操纵变量

例子:mpcobj.ManipulatedVariables (2)。目标= (0.3 - 0.2)

一个给定的被控变量的名称,指定为一个字符串或字符向量。这是一个只读属性。修改操作变量的名称,使用mpcobj.Model.Plant.InputName

例子:mpcobj.ManipulatedVariables (2) . name

单位的一个给定的被控变量,指定为字符串或字符向量。这是一个只读属性。修改单位的操纵变量,使用mpcobj.Model.Plant.InputUnit

例子:mpcobj.ManipulatedVariables .Units (2)

比例因子的一个给定的操纵变量指定为积极有限的标量。指定合适的比例因子可以提高数值条件优化。一般来说,使用操作的振幅范围的操纵变量。有关更多信息,请参见指定规模因素

例子:mpcobj.ManipulatedVariables (1)。ScaleFactor = 10

给定的被控变量,类型指定为:

  • “连续”——这表明操纵变量是连续的。

  • “二元”——这个限制了操纵变量是0或1。

  • “整数”——这限制了操纵变量是整数。

  • 一个向量包含所有可能的值,这限制了操纵变量指定的值,例如mpcobj.MV (1)。类型=[-1,0,0.5,1,2];

默认情况下,设置为类型“连续”

有关更多信息,请参见货币政策委员会有限控制设置

例子:mpcobj.ManipulatedVariables (1)。类型=“二进制”

输出变量(OV)信息、范围和规模因素,指定为一个结构数组Ny元素,Ny输出变量的数量。要访问该属性,您可以使用别名机汇而不是OutputVariables

每个结构元素有以下字段。

下界对于一个给定的输出变量,指定为一个标量或矢量。默认情况下,这个下界

使用相同的绑定在预测地平线,指定一个标量值。

不同的绑定预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。

例子:mpcobj.OutputVariables (1)。最小值= -10

上限对于一个给定的输出变量,指定为一个标量或矢量。默认情况下,这个上限

使用相同的绑定在预测地平线,指定一个标量值。

不同的绑定预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后必然是用于预测地平线的其余步骤。

例子:mpcobj.OutputVariables (1)。Max = 10

柔软的下界为给定的输出变量。一个更大的平等的关心放松(ECR)值表示一种软约束,指定为非负有限标量或矢量。默认情况下,OV上界是软约束。

为了避免创建一个不可行的优化问题在运行时,最佳实践是使用软OV界限。

使用相同的ECR值预测地平线,指定一个标量值。

改变ECR值对预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。

例子:mpcobj.OutputVariables (1)。MinECR = 5

柔软的上界为给定的输出变量。一个更大的平等的关心放松(ECR)值表示一种软约束,指定为非负有限标量或矢量。默认情况下,OV下界是软约束。

为了避免创建一个不可行的优化问题在运行时,最佳实践是使用软OV界限。

使用相同的ECR值预测地平线,指定一个标量值。

改变ECR值对预测地平线k+ 1,k+p,指定一个向量的p值。在这里,k当前时间和吗p是预测地平线。如果你指定不到p值,最后ECR值用于预测地平线的其余步骤。

例子:mpcobj.OutputVariables (1)。MaxECR = 10

一个给定的输出变量的名称,指定为字符串或字符向量。这是一个只读属性。修改输出变量的名称,使用mpcobj.Model.Plant.OutputName

例子:mpcobj.OutputVariables (2) . name

单位的一个给定的输出变量,指定为字符串或字符向量。这是一个只读属性。修改输出变量的名称,使用mpcobj.Model.Plant.OutputUnit

例子:mpcobj.OutputVariables .Units (2)

指定的一个给定的输出变量,比例因子是一个积极的有限的标量。指定合适的比例因子可以提高数值条件优化。一般来说,使用操作范围的输出变量。有关更多信息,请参见指定规模因素

例子:mpcobj.OutputVariables (1)。ScaleFactor = 20

扰动变量(DV)信息和规模因素,指定为一个结构数组Nd元素,Nd是测量的总数和无边无际的干扰输入。干扰信号的顺序DisturbanceVariables如下:第一N医学博士条目与测量输入干扰,最后一次Nud条目与无边无际的输入扰动。

要访问该属性,您可以使用别名DV而不是DisturbanceVariables

每个结构元素有以下字段。

DV名称指定为字符串或字符向量。这是一个只读属性。修改的名字扰动变量,使用mpcobj.Plant.Inputname

例子:mpcobj.DisturbanceVariables (1) . name

OV单位,指定为字符串或字符向量。这是一个只读属性。修改扰动变量的单位使用mpcobj.Model.Plant.InputUnit

例子:mpcobj.DisturbanceVariables (1) .Units

DV比例因子,指定为一个积极的有限的标量。指定合适的比例因子可以提高数值条件优化。有关更多信息,请参见指定规模因素

例子:mpcobj.DisturbanceVariables (1)。ScaleFactor = 15

标准成本优化权重函数,指定为一个结构。控制器适用于这些权重比例变量。因此,优化权重是无量纲值。

的格式OutputWeights必须匹配的格式吗Weights.OutputVariables控制器的属性对象。例如,你不能指定恒定重量在预测地平线在控制器对象,然后指定使用时变权重mpcmoveopt

权重有以下字段。这些字段的值取决于你使用的标准或替代成本函数。这些成本函数的更多信息,请参阅优化问题

被控变量优化权重,这惩罚MV的偏离目标,指定为一个行向量或负的值的数组。所有操纵变量的默认重量0

使用相同的权重预测地平线,指定一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。

不同的调优权重预测地平线k时间k+p1、指定数组Nmv列和p行。在这里,k当前时间和吗p是预测地平线。每行包含操纵变量优化权重预测地平线的一步。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。

如果你使用另一种成本函数,指定Weights.ManipulatedVariables作为一个单元阵列包含Nmv——- - - - - -NmvRu矩阵。例如,mpcobj.Weights。米anipulatedVariables = {Ru}Ru必须是半正定矩阵。改变Ru不支持矩阵在预测地平线。金宝app有关更多信息,请参见替代成本函数

例子:mpcobj.Weights。米anipulatedVariables = [0.1 0.2]

操纵可变利率调整权重,这惩罚发生巨大变化,控制措施,指定为一个行向量或负的值的数组。所有被控变量的默认体重率0.1

使用相同的权重预测地平线,指定一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。

不同的调优权重预测地平线k时间k+p1、指定数组Nmv列和p行。在这里,k当前时间和吗p是预测地平线。每行包含被控变量率优化权重预测地平线的一步。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。

请注意

最佳实践是使用非零操纵变量率权重。如果被控变量率权重都是严格正的,由此产生的QP问题是严格凸。如果一些权重为零,QP黑森半正定。保持QP问题严格凸,当海赛矩阵的条件数KΔU大于1012,数量10 * sqrt (eps)是添加到每个对角线项。看到成本函数

如果你使用另一种成本函数,指定Weights.ManipulatedVariablesRate作为一个单元阵列包含Nmv——- - - - - -NmvRΔu矩阵。例如,mpcobj.Weights。米anipulatedVariablesRate = {Rdu}RΔu必须是半正定矩阵。改变RΔu不支持矩阵在预测地平线。金宝app有关更多信息,请参见替代成本函数

例子:mpcobj.Weights。米anipulatedVariablesRate = [0.1 0.1]

输出变量优化权重,这惩罚偏离输出引用指定为一个行向量或负的值的数组。所有输出变量的默认重量1

使用相同的权重预测地平线,指定一个行向量的长度Ny,在那里Ny输出变量的数量。

不同的调优权重预测地平线k+ 1,k+p,指定数组Ny列和p行。在这里,k当前时间和吗p是预测地平线。每行包含一个预测地平线步骤的输出变量优化权重。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。

如果你使用另一种成本函数,指定Weights.OutputVariables作为一个单元阵列包含Ny——- - - - - -Ny矩阵。例如,mpcobj.Weights。OutputVariables={Q}必须是半正定矩阵。改变不支持矩阵在预测地平线。金宝app有关更多信息,请参见替代成本函数

例子:mpcobj.Weights。OutputVariables=[1 1]

松弛变量调整体重,指定为一个积极的标量。增加或减少放松(ECR)重量相等的担忧让所有软约束困难或柔软,分别。

例子:mpcobj.Weights。ECR = 1 e4

QP优化参数,指定为以下字段的结构。第一个四个字段,算法,ActiveSetOptions,InteriorPointOptionsMixedIntegerOptions建在解决有关。如果你选择使用一个定制的模拟解算器(通过设置CustomSolver真正的为模拟)这四个字段被忽略。同样地,如果你选择使用一个自定义代码生成的解算器(通过设置CustomSolverCodeGen真正的为代码生成)这四个字段被忽略。

支持解决QP的更多信息,请参阅金宝appQP解决者

QP算法求解,指定为以下之一:

  • “激活集”使用KWIK -解决QP问题有效集算法。

  • “内点”——解决QP问题用内点算法Mehrotra预估。

对于需要解决QP问题的应用程序,您还可以使用访问激活集和内点算法mpcActiveSetSolvermpcInteriorPointSolver函数,分别。

例子:mpcobj.Optimizer。算法=“内点”

激活集QP解算器设置,指定为一个结构。这些设置仅适用于当算法“激活集”,类型财产的操纵变量“连续”

您可以指定下列激活集优化器设置。

最大数量的迭代允许计算QP的解决方案时,指定为以下之一:

  • “默认”- MPC控制器自动计算QP解算器迭代的最大数量 4 ( n c + n v ) ,地点:

    • nc约束的总数在预测地平线。

    • nv优化变量的总数在控制层。

    默认的MaxIterations值的下界120年

  • 正整数- QP解算器停止后指定的迭代次数。如果解决失败在最后的迭代收敛,控制器:

    • 控制器运动如果结冰UseSuboptimalSolution

    • 应用后的次优的解决方案达成最终的迭代UseSuboptimalSolution真正的

请注意

默认的MaxIterations价值可以为一些非常大的控制器配置,如那些有大量预测和控制的视野。当模拟控制器,如果QP解算器无法找到一个可行的解决方案,仿真可以出现停止响应,自解算器继续寻找一个解决方案,直到迭代次数达到MaxIterations

例子:mpcobj.Optimizer.ActiveSetOptions。MaxIterations = 2000

公差用于验证满足不等式约束的最优解决方案,指定为一个积极的标量。一个更大的ConstraintTolerance值允许更大的约束违反。

例子:mpcobj.Optimizer.ActiveSetOptions。ConstraintTolerance = 1 e-5

选项指示是否温暖的开始列表中的每个QP解算器迭代通过活跃的不平等从先前的迭代中,指定为一个逻辑值。不平等是活跃的,当他们相等的部分是正确的。

例子:mpcobj.Optimizer.ActiveSetOptions。UseWarmStart = true

内点QP解算器设置,指定为一个结构。这些设置仅适用于当算法“内点”,类型财产的操纵变量“连续”

您可以指定以下内点优化器设置。

最大数量的迭代允许计算QP的解决方案时,指定为一个正整数。QP解算器停止后指定的迭代次数。如果解决失败在最后的迭代收敛,控制器:

  • 控制器运动如果结冰UseSuboptimalSolution

  • 应用后的次优的解决方案达成最终的迭代UseSuboptimalSolution真正的

例子:mpcobj.Optimizer.InteriorPointOptions。MaxIterations = 30

宽容等式和不等式约束用于验证是通过最优解决方案,指定为一个积极的标量。一个更大的ConstraintTolerance值允许更大的约束违反。

例子:mpcobj.Optimizer.InteriorPointOptions。ConstraintTolerance = 1 e-5

终止对一阶最优性(马双残留),指定为一个积极的标量。

例子:mpcobj.Optimizer.InteriorPointOptions。OptimalityTolerance = 1 e-5

终止对一阶最优性(马平均互补残余),指定为一个积极的标量。增加这个值可以提高鲁棒性,同时降低这个值增加准确性。

例子:mpcobj.Optimizer.InteriorPointOptions。ComplementarityTolerance = 1 e-6

终止对决策变量,指定为一个积极的标量。

例子:mpcobj.Optimizer.InteriorPointOptions。StepTolerance = 1 e -

混合整数QP解算器设置,指定为一个结构。这个设置适用于任何操纵变量时类型财产不“连续”。在这种情况下,建立了混合整数KWIK算法,实现了一个分支定界法。

您可以指定下列整数QP优化器设置。

最大数量的迭代允许计算整数QP的解决方案时,指定为一个正整数。整数QP解算器停止后指定的迭代次数。如果解决失败在最后的迭代收敛,控制器:

  • 控制器运动如果结冰UseSuboptimalSolution

  • 应用后的次优的解决方案达成最终的迭代UseSuboptimalSolution真正的

例子:mpcobj.Optimizer.MixedIntegerOptions。MaxIterations = 500

宽容等式和不等式约束用于验证是通过最优解决方案,指定为一个积极的标量。一个更大的ConstraintTolerance值允许更大的约束违反。

例子:mpcobj.Optimizer.MixedIntegerOptions。ConstraintTolerance = 1 e-5

公差用于验证约束的离散控制变量是通过最优解决方案,指定为一个积极的标量。一个更大的DiscreteConstraintTolerance值允许更大的约束违反。

例子:mpcobj.Optimizer.MixedIntegerOptions。DiscreteConstraintTolerance = 1 e-5

选择根节点的解决方案,指定为一个布尔值。当RoundingAtRootNode=1轻松的解决方案,解决轮QP问题解决了搜索树的根节点,所以离散约束得到满足。然后,额外的QP解决剩下的(连续的)变量。如果这样的QP可行解,相应的成本作为一个有效的上限最初的整数问题的最优解。有这样一个上限可能消除其他地区的整个子树求解程序的执行,加快解决以下QP放松方式。除非迭代的数量MaxIterations很小,值得吗RoundingAtRootNode=1。否则,设置RoundingAtRootNode=0避免解决额外的QP。

例子:mpcobj.Optimizer.MixedIntegerOptions。RoundingAtRootNode = true

这是等待QP放松方式的最大数量,可以存储。它决定了分配的内存来存储所有未决QP风头,成正比(2 *+ 3 *Nd)*MaxPendingNodes,在那里不等式约束的数量,Nd是离散变量的数量。如果等待风头超过的数量MaxPendingNodes解算器是停止状态代码3,45

例子:mpcobj.Optimizer.MixedIntegerOptions。MaxPendingNodes = 2000

最小值允许输出约束等于关心放松(ECR)值,指定为负的标量。的值0表明输出硬约束是允许的。如果的OutputVariables.MinECROutputVariables.MaxECR不到MPC控制器的属性MinOutputECR时,会显示一个警告和价值提高MinOutputECR在计算。

例子:mpcobj.Optimizer。MinOutputECR=1e-10

指定的选项指示是否一个理想的解决方案是可以接受的,作为一个逻辑值。当QP解算器达到最大迭代次数(退出选项是没有找到一个解决方案0),控制器:

  • MV值如果结冰UseSuboptimalSolution

  • 应用的理想解决方案解决者最后的迭代后如果发现UseSuboptimalSolution真正的

指定的最大迭代数,根据的价值算法,使用ActiveSetOptions.MaxIterationsInteriorPointOptions.MaxIterations

例子:mpcobj.Optimizer。使用SuboptimalSolution = true

选项指示是否使用一个定制的QP仿真解算器,指定为一个逻辑值。如果CustomSolver真正的,用户必须提供一个mpcCustomSolver在MATLAB函数®路径。

这个习俗解决不用于代码生成。生成一个控制器和一个自定义代码解算器,使用CustomSolverCodeGen

如果CustomSolver真正的,控制器不需要自定义的能手荣誉中的设置ActiveSetOptionsInteriorPointOptions

您还可以使用函数setCustomSolver自动配置mpcobj使用的有效集算法quadprog(优化工具箱)作为模拟和一个定制的QP解算器代码生成。

有关使用自定义QP解算器的更多信息见,QP解决者

例子:mpcobj.Optimizer。CustomSolver=真正的

选项指示是否使用一个定制的QP解决代码生成,指定为一个逻辑值。如果CustomSolverCodeGen真正的,用户必须提供一个mpcCustomSolverCodeGen在MATLAB函数路径。

这个习俗解决不用于模拟。与定制解决模拟控制器,使用CustomSolver

您还可以使用函数setCustomSolver自动配置mpcobj使用的有效集算法quadprog(优化工具箱)作为模拟和一个定制的QP解算器代码生成。

有关使用自定义QP解算器的更多信息见,QP解决者

例子:mpcobj.Optimizer。CustomSolverCodeGen = true

用户与MPC控制器相关笔记,指定为一个单元阵列的特征向量。

例子:mpcobj。笔记={'Longitudinal Controller'; 'Version 2.1'}

用户数据与MPC控制器,指定为任何MATLAB数据,如细胞数组或结构。

例子:mpcobj。使用rData = {'Parameters',0.2,[3 4]'}

这个属性是只读的。

控制器创建日期和时间,指定为一个向量用以下元素:

  • (1)历史

  • (2)历史每月

  • (3)历史

  • (4)历史- - - - - -小时

  • (5)历史- - - - - -分钟

  • (6)历史- - - - - -秒

使用datestr (mpcobj.History)显示控制器创建日期作为特征向量。

例子:mpcobj。历史=datevec(now)

对象的功能

buildMEX 构建墨西哥人文件解决了MPC控制问题
cloffset 从输出干扰计算闭环直流增益测量输出假设在稳态约束是不活跃的
比较 比较两个MPC对象
generateExplicitMPC 隐式MPC控制器转换为明确MPC控制器
generatePlotParameters 参数plotSection
generateExplicitOptions 优化选项显式MPC的一代
generateExplicitRange 界限明确的MPC控制律参数
得到 从MPC对象获取属性值
getCodeGenerationData 创建数据结构mpcmoveCodeGeneration
getEstimator 获得卡尔曼估计收益和模型设计
getconstraint 从模型获得混合输入/输出约束预测控制器
getindist 检索无节制的输入扰动模型
getname 检索从MPC植物模型I / O信号名称
getoutdist 检索无节制的输出扰动模型
mpcmove 计算最优控制行动和更新控制器的状态
mpcmoveAdaptive 计算最优控制与预测模型更新
情节 情节反应生成的MPC模拟
审查 检查MPC控制器设计在运行时错误和稳定性问题
灵敏度 计算性能指标及其灵敏度的值的对角权重MPC控制器
设置或修改MPC对象属性
setCustomSolver 配置一个MPC对象使用QP解算器优化工具箱作为一个定制的解算器
setEstimator 修改模型预测控制器的状态估计
setconstraint 集混合模型预测控制器的输入/输出约束
setindist 修改不可测量的输入扰动模型
setname 组I / O信号名称MPC植物模型
setoutdist 修改无边无际的输出扰动模型
setterminal 终端权重和约束
sim卡 模拟一个MPC控制器在闭环线性植物
大小 大小和MPC控制器
党卫军 无约束MPC控制器转换为整数线性系统形式
特遣部队 无约束MPC控制器转换为线性传递函数形式
修剪 计算稳态的MPC控制器工厂模型状态值给定的输入和输出

例子

全部折叠

创建一个植物模型的传递函数 ( 年代 + 1 ) / ( 年代 2 + 2 年代 )

工厂=特遣部队([1],[1 2 0]);

植物的输出,因此它的输入必须是一个操纵变量及其输出必须测量。一般来说,是一种很好的做法指定所有植物信号类型使用setmpcsignals命令,或线性时不变InputGroupOutputGroup属性。

指定一个样本时间控制器。

t = 0.1;

定义范围被控变量, u ,这样 - - - - - - 1 u 1

MV =结构(Min = 1, Max = 1);

MV只包含被控变量的上下界。一般来说,您可以指定额外的MV属性。当你不指定其他属性,其默认值适用。

指定一个20-interval预测地平线,地平线3-interval控制。

p = 20;m = 3;

创建一个MPC控制器使用指定的值。第五个输入参数为空,所以应用默认的调整权重。

mpcobj = mpc(植物、t、p、m [], MV);
- - >“权重。米anipulatedVariables" is empty. Assuming default 0.00000. -->"Weights.ManipulatedVariablesRate" is empty. Assuming default 0.10000. -->"Weights.OutputVariables" is empty. Assuming default 1.00000.

算法

以减少计算开销,模型预测控制器创建发生在两个阶段。第一次发生在创建当你使用货币政策委员会函数,或者当你改变一个控制器财产。创建包含基本的有效性和一致性检查,如信号的维度和nonnegativity权重。

第二个阶段是初始化,当您使用对象第一次模拟或分析过程。初始化计算所需的所有常量属性有效数值性能,如矩阵定义的最优控制问题和状态估计收益。另外,诊断检查发生在初始化期间,如确认控制器状态可观测的。

默认情况下,这两个阶段在命令窗口中显示的消息。您可以开启或关闭使用这些信息mpcverbosity函数。

选择功能

您还可以创建模型预测控制器使用MPC设计师应用程序。

版本历史

之前介绍过的R2006a

全部展开