主要内容

mpcmoveopt

选项设置mpcmove函数

描述

要指定的选项,请执行以下操作:mpcmovempcmoveAdaptive,mpcmoveMultiple函数,使用mpcmoveopt对象。

使用此对象,您可以为控制器属性的子集指定运行时值,例如调优权重和约束。方法之一的值如果没有指定mpcmoveopt属性时,将使用相应控制器选项的值。

创造

描述

例子

选择权= mpcmoveopt为对象创建一组默认选项mpcmove函数。要修改属性值,请使用点表示法。

性质

全部展开

的输出变量调优权重权重。OutputVariables运行时控制器的属性,指定为向量或非负值数组。

要在整个预测范围内使用相同的权重,请指定长度的行向量Ny哪里Ny为输出变量的个数。

在预测范围内随时间改变调优权值k+ 1,k+p,指定一个数组Ny列,直到p行。在这里,k当前的时间是和p是预测视界。每行包含一个预测水平步骤的输出变量调优权值。如果指定小于p行,最后一行中的权重用于预测范围的剩余步骤。

格式OutputWeights必须匹配权重。OutputVariables属性。例如,您不能在控制器对象的预测范围内指定常数权值,然后使用mpcmoveopt

的操作变量调优权重权重。米anipulatedVariables运行时控制器的属性,指定为向量或非负值数组。

要在整个预测范围内使用相同的权重,请指定长度的行向量Nmv哪里Nmv为被操纵变量的个数。

在预测范围内随时间改变调优权值k按时k+p-1,指定一个具有Nmv列,直到p行。在这里,k当前的时间是和p是预测范围。每行包含一个预测范围步骤的操纵变量调整权重。如果指定小于p行,最后一行中的权重用于预测范围的剩余步骤。

格式MVWeights必须匹配权重。米anipulatedVariables属性。例如,您不能在控制器对象的预测范围内指定常数权值,然后使用mpcmoveopt

操作的可变速率调优权代替权重。米anipulatedVariablesRate运行时控制器的属性,指定为向量或非负值数组。

要在整个预测范围内使用相同的权重,请指定长度的行向量Nmv哪里Nmv为被操纵变量的个数。

在预测范围内随时间改变调优权值k按时k+p-1,指定一个具有Nmv列,直到p行。在这里,k当前的时间是和p是预测范围。每行包含一个预测范围步骤的操纵变量率调整权重。如果指定的值小于p行,最后一行中的权重用于预测范围的剩余步骤。

格式MVRateWeights必须匹配权重。米anipulatedVariablesRate属性。例如,您不能在控制器对象的预测范围内指定常数权值,然后使用mpcmoveopt

松弛可变调整权重,用于替换重量运行时控制器的属性,指定为正标量。

输出变量下限,指定为长度的行向量Ny或者作为一个矩阵Ny列,其中Ny为输出变量的个数。

如果没有指定输出变量(i).Min财产mpc对象,然后指定OutputMin在执行时导致错误mpcmove

从时间上改变预测范围k+ 1,k+p,指定一个矩阵Ny列,直到p行。在这里,Ny为植物产量,k是当前时间,并且p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测范围的剩余步骤。

OutputMin(:,我)取代了输出变量(i).Min财产mpc对象在运行时。替换行为取决于两个变量的维度。

标量输出变量(i).Minmpc对象的边界常量应用于所有预测步骤的电厂输出)

OutputMin 替代行为
标量OutputMin(单个输出,常量绑定) OutputMin替换中定义的常量边界输出变量(i).Min
列向量OutputMin(单输出,时变界) OutputMin替换中定义的常量边界输出变量(i).Min有一个时变的界限。
行向量OutputMin(多个输出,常量边界) OutputMin(我)替换中定义的常量边界输出变量(i).Min
矩阵OutputMin(多输出,时变边界) OutputMin(:,我)替换中定义的常量边界输出变量(i).Min有一个时变的界限。

向量输出变量(i).Minmpc对象的时变边界不同预测步骤下不同值的工厂产量)

OutputMin 替代行为
标量OutputMin(单个输出,常量绑定) OutputMin替换中的第一个有限项OutputVariables。最小值剩下的项OutputVariables。最小值以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓OutputVariables。最小值向量。
列向量OutputMin(单输出,时变界) OutputMin替换中定义的时变界限输出变量(i).Min,原有绑定的配置文件将被丢弃。
行向量OutputMin(多个输出,常量边界) OutputMin(我)替换中的第一个有限项输出变量(i).Min剩下的项输出变量(i).Min以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓输出变量(i).Min向量。
矩阵OutputMin(多个输出,时变边界)。 OutputMin(:,我)替换中定义的时变界限输出变量(i).Min,原有绑定的配置文件将被丢弃。

输出变量上界,指定为长度的行向量Ny或者作为一个矩阵Ny列,其中Ny为输出变量的个数。

如果没有指定OutputVariables(我)。马克斯财产mpc对象,然后指定OutputMax在执行时导致错误mpcmove

从时间上改变预测范围k+ 1,k+p,指定一个矩阵Ny列,直到p行。在这里,Ny为植物产量,k是当前时间,并且p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测范围的剩余步骤。

OutputMax(:,我)取代了OutputVariables(我)。马克斯财产mpc对象在运行时。替换行为取决于两个变量的维度。

标量OutputVariables(我)。马克斯mpc对象的边界常量应用于所有预测步骤的电厂输出)

OutputMax 替代行为
标量OutputMax(单个输出,常量绑定) OutputMax替换中定义的常量边界OutputVariables(我)。马克斯
列向量OutputMax(单输出,时变界) OutputMax替换中定义的常量边界OutputVariables(我)。马克斯有一个时变的界限。
行向量OutputMax(多个输出,常量边界) OutputMax(我)替换中定义的常量边界OutputVariables(我)。马克斯
矩阵OutputMax(多输出,时变边界) OutputMax(:,我)替换中定义的常量边界OutputVariables(我)。马克斯有一个时变的界限。

向量OutputVariables(我)。马克斯mpc对象的时变边界不同预测步骤下不同值的工厂产量)

OutputMax 替代行为
标量OutputMax(单个输出,常量绑定) OutputMax替换中的第一个有限项OutputVariables。马克斯剩下的项OutputVariables。马克斯以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓OutputVariables。马克斯向量。
列向量OutputMax(单输出,时变界) OutputMax替换中定义的时变界限OutputVariables(我)。马克斯,原有绑定的配置文件将被丢弃。
行向量OutputMax(多个输出,常量边界) OutputMax(我)替换中的第一个有限项OutputVariables(我)。马克斯剩下的项OutputVariables(我)。马克斯以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓OutputVariables(我)。马克斯向量。
矩阵OutputMax(多个输出,时变边界)。 OutputMax(:,我)替换中定义的时变界限OutputVariables(我)。马克斯,原有绑定的配置文件将被丢弃。

操纵变量下界,指定为长度的行向量Nmv或者作为一个矩阵Nmv列,其中Nmv为输出变量的个数。

如果没有指定操纵变量(i).Min财产mpc对象,然后指定MVMin在执行时导致错误mpcmove

从时间上改变预测范围k按时k+p-1,指定一个矩阵Nmv列,直到p行。在这里,Nmv为被操纵变量的个数,k是当前时间,并且p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测范围的剩余步骤。

MVMin(:,我)取代了操纵变量(i).Min财产mpc对象在运行时。替换行为取决于两个变量的维度。

标量操纵变量(i).Minmpc对象的边界常量用于所有预测步骤的操纵变量)

MVMin 替代行为
标量MVMin(单个输出,常量绑定) MVMin替换中定义的常量边界操纵变量(i).Min
列向量MVMin(单输出,时变界) MVMin替换中定义的常量边界操纵变量(i).Min有一个时变的界限。
行向量MVMin(多个输出,常量边界) MVMin(i)替换中定义的常量边界操纵变量(i).Min
矩阵MVMin(多输出,时变边界) MVMin(:,我)替换中定义的常量边界操纵变量(i).Min有一个时变的界限。

向量操纵变量(i).Minmpc对象的时变边界在不同的预测步骤中具有不同值的操纵变量)

MVMin 替代行为
标量MVMin(单个输出,常量绑定) MVMin替换中的第一个有限项操纵变量。Min剩下的项操纵变量。Min以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓操纵变量。Min向量。
列向量MVMin(单输出,时变界) MVMin替换中定义的时变界限操纵变量(i).Min,原有绑定的配置文件将被丢弃。
行向量MVMin(多个输出,常量边界) MVMin(i)替换中的第一个有限项操纵变量(i).Min剩下的项操纵变量(i).Min以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓操纵变量(i).Min向量。
矩阵MVMin(多个输出,时变边界)。 MVMin(:,我)替换中定义的时变界限操纵变量(i).Min,原有绑定的配置文件将被丢弃。

操纵变量上界,指定为长度的行向量Nmv或者作为一个矩阵Nmv列,其中Nmv为输出变量的个数。

如果没有指定ManipulatedVariables(我)。马克斯财产mpc对象,然后指定MVMax在执行时导致错误mpcmove

从时间上改变预测范围k按时k+p-1,指定一个矩阵Nmv列,直到p行。在这里,Nmv为被操纵变量的个数,k是当前时间,并且p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测范围的剩余步骤。

MVMax(:,i)取代了ManipulatedVariables(我)。马克斯财产mpc对象在运行时。替换行为取决于两个变量的维度。

标量ManipulatedVariables(我)。马克斯mpc对象的边界常量用于所有预测步骤的操纵变量)

MVMax 替代行为
标量MVMax(单个输出,常量绑定) MVMax替换中定义的常量边界ManipulatedVariables(我)。马克斯
列向量MVMax(单输出,时变界) MVMax替换中定义的常量边界ManipulatedVariables(我)。马克斯有一个时变的界限。
行向量MVMax(多个输出,常量边界) MVMax(i)替换中定义的常量边界ManipulatedVariables(我)。马克斯
矩阵MVMax(多输出,时变边界) MVMax(:,i)替换中定义的常量边界ManipulatedVariables(我)。马克斯有一个时变的界限。

向量ManipulatedVariables(我)。马克斯mpc对象的时变边界在不同的预测步骤中具有不同值的操纵变量)

MVMax 替代行为
标量MVMax(单个输出,常量绑定) MVMax替换中的第一个有限项操纵变量剩下的项操纵变量以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓操纵变量向量。
列向量MVMax(单输出,时变界) MVMax替换中定义的时变界限ManipulatedVariables(我)。马克斯,原有绑定的配置文件将被丢弃。
行向量MVMax(多个输出,常量边界) MVMax(i)替换中的第一个有限项ManipulatedVariables(我)。马克斯剩下的项ManipulatedVariables(我)。马克斯以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓ManipulatedVariables(我)。马克斯向量。
矩阵MVMax(多个输出,时变边界)。 MVMax(:,i)替换中定义的时变界限ManipulatedVariables(我)。马克斯,原有绑定的配置文件将被丢弃。

自定义混合输入/输出约束,指定为具有以下字段的结构。这些约束替换先前使用setconstraint

操纵变量约束常量,指定为Nc-借-Nmv数组,Nc是约束的数量,和Nmv为被操纵变量的个数。

受控输出约束常量,指定为Nc-借-Ny数组,Ny是受控输出的数量(已测量和未测量)。

混合输入/输出约束常数,指定为长度的列向量Nc

测量的干扰约束常数,指定为Nc-借-N医学博士数组,N医学博士为被测扰动的个数。

表示是否计算最优控制顺序的标志,指定为:

  • 0-控制器除了返回目标函数成本值外,还返回预测的最优控制移动。

  • 1-控制器只返回目标函数成本,节省计算时间。

在上一个控制间隔期间,在工厂中使用的操纵变量值,指定为长度的行向量Nmv哪里Nmv为被操纵变量的个数。如果没有指定MVused,mpvmove使用最后一步属性的当前控制器状态输入参数,x

操纵变量目标,指定为长度的行向量Nmv哪里Nmv为被操纵变量的个数。MVTarget(我)取代了ManipulatedVariables(我)。目标属性在运行时。

预测地平线,它取代了预测视野属性,指定为正整数。如果您指定预测视野,您还必须指定ControlHorizon

指定预测视野改变了:

  • 返回的最佳序列中的行数mpcmovempcmoveAdaptive功能

  • 最大尺寸植物名义上的的输入参数mpcmoveAdaptive

此参数将被忽略mpcmoveMultiple函数。

控件地平线,它代替ControlHorizon属性,指定为以下属性之一:

  • 正整数,之间1p、包容,p等于预测视野.在这种情况下,控制器计算自由控制动作时有发生k通过k+-1,并保持控制器输出不变的剩余预测视界步骤k+通过k+p-1.这里,k为当前控制间隔。为最优轨迹规划集等于p

  • 正整数向量[12,其中整数的和等于预测视界,p.在这种情况下,控制器计算方块自由移动,哪里长度是多少ControlHorizon向量。第一个自由动作适用于时代k通过k+1-1、第二次自由移动随时适用k+1通过k+1+2-1,以此类推。与默认情况相比,使用块移动可以提高控制器的鲁棒性。

如果您指定ControlHorizon,您还必须指定预测视野

此参数将被忽略mpcmoveMultiple函数。

对象的功能

mpcmove 计算最优控制动作并更新控制器状态
mpcmoveAdaptive 用预测模型更新计算最优控制
mpcmoveMultiple 计算增益调度MPC控制动作在一个单一的时间瞬间

例子

全部折叠

在模拟过程中改变操纵变量的上界。

定义设备,包括4秒输入延迟。使用2秒控制间隔转换为无延迟、离散的状态空间模型。创建相应的默认控制器,并指定+/-2处的MV边界。

Ts = 2;Plant = absorbDelay(c2d(ss(tf(0.8,[5 1])),“InputDelay”4)、Ts));MPCobj = mpc(植物、Ts);
mpc对象的“PredictionHorizon”属性是空的。尝试PredictionHorizon = 10。mpc对象的"ControlHorizon"属性为空。假设2。- - - >“权重。米anipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.
MPCobj.MV(1).Min=-2;MPCobj.MV(1).Max=2;

创建一个空的mpcmoveopt对象。在仿真过程中,可以通过设置对象的属性来指定控制器参数。

选择= mpcmoveopt;

预分配存储并初始化控制器状态。

v = [];t = [0: Ts: 20);N =长度(t);y = 0 (N, 1);u = 0 (N, 1);x = mpcstate (MPCobj);
——>假设添加到测量输出通道#1的输出扰动为集成白噪声。——>”模式。Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

使用mpcmove模拟如下:

  • 参考(设定值)的步骤从初始条件改变r=0至r= 1(伺服响应)

  • MV上限阶跃从2减小到1,发生在t= 10

r=1;i=1:ny(i)=Plant.C*x.Plant;如果T (i) >= 10个选项。MVMax = 1;结束[u (i),信息]= mpcmove (MPCobj x, y (i), r, v,选项);结束

当循环执行时,options.MVMax之后发生的所有迭代是否都重置为1t=10.在该迭代之前,options.MVMax是空的。因此,控制器的值为MVMax使用,MPCobj.MV(1)。Max = 2

绘制仿真结果。

[Ts,us]=楼梯(t,u);绘图(Ts,us,“b-”,t,y,的r -)传奇(“MV”机汇的)xlabel(sprintf)(, % s的, Plant.TimeUnit))

图中包含一个轴对象。轴对象包含2个line类型的对象。这些对象表示MV,OV。

从图中,您可以观察到原始MV上限处于活动状态,直到t= 4。输入延时4秒后,输出变量(OV)平滑地移动到它的新目标r= 1。达到目标t= 10。新的MV界限强加于t= 10立即生效。这迫使OV低于它的目标,在输入延迟过后。

现在假设您想在相对于OV目标的指定位置施加一个OV上界。考虑以下约束设计命令:

MPCobj.OV(1).Max=[Inf,Inf,0.4,0.3,0.2];

这是一个水平变化的约束。已知的输入延迟使得控制器无法在第三步预测视界之前满足OV约束。因此,在前两个步骤中使用有限的约束不是很好的做法。为了便于说明,前面的约束也从步骤3的0.4减小到步骤5的0.2以及之后的0.2。

下面的命令产生的结果与前一个图中显示的结果相同。OV约束永远不会是活动的,因为它是与设定值一致变化的,r

x = mpcstate (MPCobj);
——>假设添加到测量输出通道#1的输出扰动为集成白噪声。——>”模式。Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
OPTobj = mpcmoveopt;i=1:ny(i)=Plant.C*x.Plant;如果t(i) >= 10MVMax = 1;结束OPTobj.OutputMax=r+0.4;[u(i),Info]=mpcmove(MPCobj,x,y(i),r,v,OPTobj);结束

标量值r的第一个有限值MPCobj.OV (1) .Max向量,其余的有限值进行调整以保持原始轮廓,即这些值之间的数值差不变。r= 1为模拟,所以之前使用的mpcmoveopt对象相当于命令

MPCobj.OV (1) .Max= [Inf, Inf, 1.4, 1.3, 1.2];

然而,使用mpcmoveopt对象涉及的计算开销要少得多。

提示

  • 如果变量在初始控制器设计中不受约束,则不能使用mpcmoveopt.控制器忽略任何这样的规格。

  • 无法从初始控制器设计中受约束的变量中删除约束。但是,可以将其更改为大(或小)值,使其不太可能变为活动状态。

介绍了R2018b