主要内容

mpcmoveopt.

选项设置mpcmove功能

描述

为。指定选项mpcmovempcmoveAdaptive, 和mpcmovemultiple功能,使用一个mpcmoveopt.目的。

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

创建

描述

例子

选项= mpcmoveopt属性的默认选项集mpcmove函数。要修改属性值,请使用点表示法。

属性

全部展开

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

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

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

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

操纵可变调谐重量,取代权重.manipuldvariables.属性,指定为非负值的向量或数组。

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

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

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

操作的可变速率调优权代替权重.manipuldvariables.Rate属性,指定为非负值的向量或数组。

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

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

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

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

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

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

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

Outputmin(:,i)取代OutputVariables(我)。最小值财产的货币政策委员会对象在运行时。替换行为取决于两个变量的维度。

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

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

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

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

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

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

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

outputmax(:,i)取代OutputVariables(我)。马克斯财产的货币政策委员会对象在运行时。替换行为取决于两个变量的维度。

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

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

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

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

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

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

从时间改变预测地平线上的界限k时间k+p-1,指定一个矩阵Nm列,直到p行。在这里,Nm为被操纵变量的个数,k是当前时间吗p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测视界的其余步骤。

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

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

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(我)。最小值,原有绑定的配置文件将被丢弃。

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

如果您没有指定Manipulatedvariables(i).max财产的货币政策委员会对象,然后指定MVMax在执行时导致错误mpcmove

从时间改变预测地平线上的界限k时间k+p-1,指定一个矩阵Nm列,直到p行。在这里,Nm为被操纵变量的个数,k是当前时间吗p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测视界的其余步骤。

MVMax(:,我)取代Manipulatedvariables(i).max财产的货币政策委员会对象在运行时。替换行为取决于两个变量的维度。

标量Manipulatedvariables(i).max货币政策委员会对象的边界常量TH操纵变量以应用于所有预测步骤)

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

向量Manipulatedvariables(i).max货币政策委员会对象(对象的时变界限在不同的预测步骤中具有不同值的操纵变量)

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

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

操纵变量约束常数,指定为Nc——- - - - - -Nm阵列,其中Nc是约束的数量,和Nm为被操纵变量的个数。

控制输出约束常数,指定为Nc——- - - - - -Ny阵列,其中Ny是受控输出(已测量和未测量)的数量。

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

测量的扰动约束常数,指定为Nc——- - - - - -Nm阵列,其中Nm是测量干扰的数量。

标志指示是否计算最佳控制序列,指定为以下之一:

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

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

在上一个控制间隔期间,被操作的变量值,指定为长度的行向量Nm,在那里Nm为被操纵变量的个数。如果您未指定MVused,MPVMOVE.用来LastMove属性的当前控制器状态输入参数,x

被操纵的变量目标,指定为长度的行向量Nm,在那里Nm为被操纵变量的个数。MVTarget(我)取代Manipulatedvariables(i).target运行时控制器的属性。

预测视界,它取代了PredictionHorizon属性,指定为正整数。如果您指定PredictionHorizon,您还必须指定ControlHorizo​​n.

指定PredictionHorizon更改:

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

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

该参数将被忽略mpcmovemultiple函数。

控制地平线,取代ControlHorizo​​n.运行时控制器的属性,指定为以下之一:

  • 正整数,之间,1p、包容,p等于PredictionHorizon.此时,由控制器进行计算自由控制动作时有发生k通过k+-1,并保存控制器输出常数,用于剩余的预测地平线步骤k+通过k+p-1.在这里,k是当前的控制间隔。用于最佳轨迹规划集等于p

  • 正整数向量,[12,其中整数的和等于预测视界,p.此时,由控制器进行计算自由移动块,在哪里长度是ControlHorizo​​n.向量。第一个免费移动适用于时间k通过k+1-1,第二个自由移动适用于时间k+1通过k+1+2-1,等等。与默认情况相比,使用块移动可以提高控制器的稳健性。

如果您指定ControlHorizo​​n.,您还必须指定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(植物,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 =零(n,1);U =零(n,1);x = mpcstate (MPCobj);
——>假设添加到测量输出通道#1的输出扰动为集成白噪声。——>”模式。Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

mpcmove要模拟以下内容:

  • 参考(设定值)从初始条件发生变化r= 0r= 1(伺服响应)

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

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

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

绘制模拟结果。

(Ts,美国)=楼梯(t, u);情节(Ts、美国、“b -”、t、y,的r -)传说('mv''ov')包含(sprintf ('时间,%s',plant.timeUnit)))

图中包含一个轴对象。轴对象包含两个类型为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约束。因此,前两个步骤期间的有限约束将是糟糕的实践。出于说明性目的,在步骤5和此后,先前的约束也在步骤3至0.2下降0.4。

以下命令在上一个绘图中产生相同的结果。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:N y(i) = Plant.C*x.Plant;如果T(i)> = 10 optobj.mvmax = 1;结束OPTobj。OutputMax = r + 0.4;[u (i),信息]= mpcmove (MPCobj x, y (i), r, v, OPTobj);结束

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

mpcobj.ov(1).max = [INF,INF,1.4,1.3,1.2];

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

提示

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

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

介绍了R2018b