主要内容

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

松弛变量调优权重,取代权重。ECR属性,指定为正标量。

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

如果没有指定OutputVariables(我)。最小值的属性货币政策委员会对象,然后指定OutputMin在执行时导致错误mpcmove

从时间上改变预测视界的边界k+1到时间k+p,指定一个矩阵Ny列和至p行。在这里,Ny是工厂产出的数量,k是当前时间,和p是预测视界。每行包含一个预测水平步的边界。如果你指定小于p行,最后一行中的边界用于预测范围的其余步骤。

OutputMin(:,我)取代了OutputVariables(我)。最小值的属性货币政策委员会对象。替换行为取决于两个变量的维度。

标量OutputVariables(我)。最小值货币政策委员会对象的常量边界植物产量应用于所有预测步骤)

OutputMin 替换行为
标量OutputMin(单输出,常数界) OutputMin中定义的常量边界OutputVariables(我)。最小值
列向量OutputMin(单输出,时变界) OutputMin中定义的常量边界OutputVariables(我)。最小值有一个时变的边界。
行向量OutputMin(多输出,常量边界) OutputMin(我)中定义的常量边界OutputVariables(我)。最小值
矩阵OutputMin(多输出,时变边界) OutputMin(:,我)中定义的常量边界OutputVariables(我)。最小值有一个时变的边界。

向量OutputVariables(我)。最小值货币政策委员会对象的时变边界不同预测步骤下不同值的植株产量)

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

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

如果没有指定OutputVariables(我)。马克斯的属性货币政策委员会对象,然后指定OutputMax在执行时导致错误mpcmove

从时间上改变预测视界的边界k+1到时间k+p,指定一个矩阵Ny列和至p行。在这里,Ny是工厂产出的数量,k是当前时间,和p是预测视界。每行包含一个预测水平步的边界。如果你指定小于p行,最后一行中的边界用于预测范围的其余步骤。

OutputMax(:,我)取代了OutputVariables(我)。马克斯的属性货币政策委员会对象。替换行为取决于两个变量的维度。

标量OutputVariables(我)。马克斯货币政策委员会对象的常量边界植物产量应用于所有预测步骤)

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

向量OutputVariables(我)。马克斯货币政策委员会对象的时变边界不同预测步骤下不同值的植株产量)

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

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

如果没有指定ManipulatedVariables(我)。最小值的属性货币政策委员会对象,然后指定MVMin在执行时导致错误mpcmove

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

MVMin(:,我)取代了ManipulatedVariables(我)。最小值的属性货币政策委员会对象。替换行为取决于两个变量的维度。

标量ManipulatedVariables(我)。最小值货币政策委员会对象的常量边界应用于所有预测步骤的被操纵变量)

MVMin 替换行为
标量MVMin(单输出,常数界) MVMin中定义的常量边界ManipulatedVariables(我)。最小值
列向量MVMin(单输出,时变界) MVMin中定义的常量边界ManipulatedVariables(我)。最小值有一个时变的边界。
行向量MVMin(多输出,常量边界) MVMin(我)中定义的常量边界ManipulatedVariables(我)。最小值
矩阵MVMin(多输出,时变边界) MVMin(:,我)中定义的常量边界ManipulatedVariables(我)。最小值有一个时变的边界。

向量ManipulatedVariables(我)。最小值货币政策委员会对象的时变边界在不同的预测步骤中有不同值的操纵变量)

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

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

如果没有指定ManipulatedVariables(我)。马克斯的属性货币政策委员会对象,然后指定MVMax在执行时导致错误mpcmove

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

MVMax(:,我)取代了ManipulatedVariables(我)。马克斯的属性货币政策委员会对象。替换行为取决于两个变量的维度。

标量ManipulatedVariables(我)。马克斯货币政策委员会对象的常量边界应用于所有预测步骤的被操纵变量)

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

向量ManipulatedVariables(我)。马克斯货币政策委员会对象的时变边界在不同的预测步骤中有不同值的操纵变量)

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

自定义混合输入/输出约束,指定为具有以下字段的结构。这些约束取代了之前设置的混合输入/输出约束setconstraint

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

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

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

测量的扰动约束常数,指定为Nc——- - - - - -N医学博士数组,N医学博士是测量扰动的数量。

方法中仅返回代价函数的值信息返回的输出结构的解决方案细节mpcmove.将其指定为以下之一:

  • 0- - - - - -mpcmove在第二个输出参数中返回所有详细的解决方案信息。

  • 1- - - - - -mpcmove只返回代价函数的预测值。这节省了一些计算工作,因为预测的最佳植物状态和输出序列不需要计算。注意,如果mpcmove不使用第二个输出参数调用,这些序列也不计算。

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

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

预测水平,取代PredictionHorizon属性,指定为正整数。如果你指定PredictionHorizon,您还必须指定ControlHorizon

指定PredictionHorizon改变了:

  • 方法返回的最佳序列中的行数mpcmove而且mpcmoveAdaptive功能

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

方法忽略此参数mpcmoveMultiple函数。

控件的水平,该控件将替换ControlHorizon控制器在运行时的属性,指定为以下之一:

  • 正整数,之间,1而且p,包括,其中p等于PredictionHorizon.在这种情况下,控制器进行计算自由控制动作时有发生k通过k+-1,并保持从剩下的预测水平步长的控制器输出不变k+通过k+p1。在这里,k当前控制间隔。求最优轨迹规划集等于p

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

如果你指定ControlHorizon,您还必须指定PredictionHorizon

方法忽略此参数mpcmoveMultiple函数。

对象的功能

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

例子

全部折叠

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

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

Ts = 2;Plant = absorbDelay(c2d(ss(tf(0.8,[5 1],“InputDelay”4)、Ts));MPCobj = mpc(Plant,Ts);
——>“PredictionHorizon”属性为空。假设默认为10。“ControlHorizon”属性为空。假设默认2。- - - >“权重。米anipulatedVariables" property is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property 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 is empty. Assuming white noise on each measured output.

使用mpcmove模拟如下:

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

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

R = 1;i = 1:N y(i) =植物。c *x.植物;如果T (i) >= 10个选项。MVMax = 1;结束[u(i),Info] = mpcmove(MPCobj,x,y(i),r,v,options);结束

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

绘制模拟结果图。

[Ts,us] =楼梯(t,u);情节(Ts、美国、“b -”、t、y,的r -)传说(“MV”机汇的)包含(sprintf (, % s的, Plant.TimeUnit))

图中包含一个轴对象。axis对象包含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。

下面的命令产生与前面图相同的结果。OV约束从来不是活动的,因为它随着设定值而变化,r

x = mpcstate(MPCobj);
假设添加到测量输出通道#1的输出扰动是集成白噪声。——>”模式。Noise" property is empty. Assuming white noise on each measured output.
OPTobj = mpcmoveopt;i = 1:N y(i) =植物。c *x.植物;如果t(i) >= 10 OPTobj。MVMax = 1;结束OPTobj。输出max = 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中引入