主要内容

mpcmoveopt

选项设置mpcmove函数

自从R2018b

描述

指定选项mpcmove,mpcmoveAdaptive,mpcmoveMultiple功能,使用一个mpcmoveopt对象。

使用这个对象,您可以指定运行时的值为控制器的属性的一个子集,如优化权重和约束。如果你不指定一个值之一mpcmoveopt属性,使用相应的控制器选项的值。

创建

描述

例子

选项= mpcmoveopt创建一个默认的选项设置mpcmove函数。修改属性值,使用点符号。

属性

全部展开

输出变量优化权重取代Weights.OutputVariables控制器的属性在运行时指定为一个向量或负的值的数组。

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

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

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

被控变量优化权重取代Weights.ManipulatedVariables控制器的属性在运行时指定为一个向量或负的值的数组。

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

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

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

被控变量率优化权重取代Weights.ManipulatedVariablesRate控制器的属性在运行时指定为一个向量或负的值的数组。

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

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

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

松弛变量优化重量,取代了Weights.ECR控制器的属性在运行时指定为一个积极的标量。

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

如果你没有指定OutputVariables .Min(我)财产的货币政策委员会对象,然后指定OutputMin导致一个错误,当你执行mpcmove

改变的范围预测地平线k+ 1,k+p,指定一个矩阵Ny列和p行。在这里,Ny是植物的数量输出,k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。

OutputMin(:,我)取代了OutputVariables .Min(我)财产的货币政策委员会在运行时对象。替代行为取决于这两个变量的维度。

标量OutputVariables .Min(我)货币政策委员会对象(一个常数绑定的th植物输出用于预测所有步骤)

OutputMin 替换行为

标量OutputMin(单输出,常数绑定)

OutputMin替换绑定中定义的常数OutputVariables .Min(我)

列向量OutputMin(单输出时变约束)

OutputMin替换绑定中定义的常数OutputVariables .Min(我)时变约束。

行向量OutputMin(多个输出恒定的范围)

OutputMin(我)替换绑定中定义的常数OutputVariables .Min(我)

矩阵OutputMin(多个输出时变边界)

OutputMin(:,我)替换绑定中定义的常数OutputVariables .Min(我)时变约束。

向量OutputVariables .Min(我)货币政策委员会对象(一个时变的th植物有不同的值在不同的预测步骤的输出)

OutputMin 替换行为

标量OutputMin(单输出,常数绑定)

OutputMin替换第一个有限的进入OutputVariables.Min和剩余的条目OutputVariables.Min转变与相同数量的上下位移保留配置文件定义的原始OutputVariables.Min向量。

列向量OutputMin(单输出时变约束)

OutputMin取代了时变绑定中定义OutputVariables .Min(我),原绑定配置文件就会被丢弃。

行向量OutputMin(多个输出恒定的范围)

OutputMin(我)替换第一个有限的进入OutputVariables .Min(我)和剩余的条目OutputVariables .Min(我)转变与相同数量的上下位移保留配置文件定义的原始OutputVariables .Min(我)向量。

矩阵OutputMin(多个输出时变边界)。

OutputMin(:,我)取代了时变绑定中定义OutputVariables .Min(我),原绑定配置文件就会被丢弃。

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

如果你没有指定OutputVariables .Max(我)财产的货币政策委员会对象,然后指定OutputMax导致一个错误,当你执行mpcmove

改变的范围预测地平线k+ 1,k+p,指定一个矩阵Ny列和p行。在这里,Ny是植物的数量输出,k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。

OutputMax(:,我)取代了OutputVariables .Max(我)财产的货币政策委员会在运行时对象。替代行为取决于这两个变量的维度。

标量OutputVariables .Max(我)货币政策委员会对象(一个常数绑定的th植物输出用于预测所有步骤)

OutputMax 替换行为

标量OutputMax(单输出,常数绑定)

OutputMax替换绑定中定义的常数OutputVariables .Max(我)

列向量OutputMax(单输出时变约束)

OutputMax替换绑定中定义的常数OutputVariables .Max(我)时变约束。

行向量OutputMax(多个输出恒定的范围)

OutputMax(我)替换绑定中定义的常数OutputVariables .Max(我)

矩阵OutputMax(多个输出时变边界)

OutputMax(:,我)替换绑定中定义的常数OutputVariables .Max(我)时变约束。

向量OutputVariables .Max(我)货币政策委员会对象(一个时变的th植物有不同的值在不同的预测步骤的输出)

OutputMax 替换行为

标量OutputMax(单输出,常数绑定)

OutputMax替换第一个有限的进入OutputVariables.Max和剩余的条目OutputVariables.Max转变与相同数量的上下位移保留配置文件定义的原始OutputVariables.Max向量。

列向量OutputMax(单输出时变约束)

OutputMax取代了时变绑定中定义OutputVariables .Max(我),原绑定配置文件就会被丢弃。

行向量OutputMax(多个输出恒定的范围)

OutputMax(我)替换第一个有限的进入OutputVariables .Max(我)和剩余的条目OutputVariables .Max(我)转变与相同数量的上下位移保留配置文件定义的原始OutputVariables .Max(我)向量。

矩阵OutputMax(多个输出时变边界)。

OutputMax(:,我)取代了时变绑定中定义OutputVariables .Max(我),原绑定配置文件就会被丢弃。

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

如果你没有指定ManipulatedVariables .Min(我)财产的货币政策委员会对象,然后指定MVMin导致一个错误,当你执行mpcmove

改变的范围预测地平线k时间k+p1,指定一个矩阵Nmv列和p行。在这里,Nmv是操纵变量的数量k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。

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

标量ManipulatedVariables .Min(我)货币政策委员会对象(一个常数绑定的th操纵变量应用到所有预测步骤)

MVMin 替换行为

标量MVMin(单输出,常数绑定)

MVMin替换绑定中定义的常数ManipulatedVariables .Min(我)

列向量MVMin(单输出时变约束)

MVMin替换绑定中定义的常数ManipulatedVariables .Min(我)时变约束。

行向量MVMin(多个输出恒定的范围)

MVMin(我)替换绑定中定义的常数ManipulatedVariables .Min(我)

矩阵MVMin(多个输出时变边界)

MVMin(:,我)替换绑定中定义的常数ManipulatedVariables .Min(我)时变约束。

向量ManipulatedVariables .Min(我)货币政策委员会对象(一个时变的th操纵变量不同的值在不同的预测步骤)

MVMin 替换行为

标量MVMin(单输出,常数绑定)

MVMin替换第一个有限的进入ManipulatedVariables.Min和剩余的条目ManipulatedVariables.Min转变与相同数量的上下位移保留配置文件定义的原始ManipulatedVariables.Min向量。

列向量MVMin(单输出时变约束)

MVMin取代了时变绑定中定义ManipulatedVariables .Min(我),原绑定配置文件就会被丢弃。

行向量MVMin(多个输出恒定的范围)

MVMin(我)替换第一个有限的进入ManipulatedVariables .Min(我)和剩余的条目ManipulatedVariables .Min(我)转变与相同数量的上下位移保留配置文件定义的原始ManipulatedVariables .Min(我)向量。

矩阵MVMin(多个输出时变边界)。

MVMin(:,我)取代了时变绑定中定义ManipulatedVariables .Min(我),原绑定配置文件就会被丢弃。

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

如果你没有指定ManipulatedVariables .Max(我)财产的货币政策委员会对象,然后指定MVMax导致一个错误,当你执行mpcmove

改变的范围预测地平线k时间k+p1,指定一个矩阵Nmv列和p行。在这里,Nmv是操纵变量的数量k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。

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

标量ManipulatedVariables .Max(我)货币政策委员会对象(一个常数绑定的th操纵变量应用到所有预测步骤)

MVMax 替换行为

标量MVMax(单输出,常数绑定)

MVMax替换绑定中定义的常数ManipulatedVariables .Max(我)

列向量MVMax(单输出时变约束)

MVMax替换绑定中定义的常数ManipulatedVariables .Max(我)时变约束。

行向量MVMax(多个输出恒定的范围)

MVMax(我)替换绑定中定义的常数ManipulatedVariables .Max(我)

矩阵MVMax(多个输出时变边界)

MVMax(:,我)替换绑定中定义的常数ManipulatedVariables .Max(我)时变约束。

向量ManipulatedVariables .Max(我)货币政策委员会对象(一个时变的th操纵变量不同的值在不同的预测步骤)

MVMax 替换行为

标量MVMax(单输出,常数绑定)

MVMax替换第一个有限的进入ManipulatedVariables.Max和剩余的条目ManipulatedVariables.Max转变与相同数量的上下位移保留配置文件定义的原始ManipulatedVariables.Max向量。

列向量MVMax(单输出时变约束)

MVMax取代了时变绑定中定义ManipulatedVariables .Max(我),原绑定配置文件就会被丢弃。

行向量MVMax(多个输出恒定的范围)

MVMax(我)替换第一个有限的进入ManipulatedVariables .Max(我)和剩余的条目ManipulatedVariables .Max(我)转变与相同数量的上下位移保留配置文件定义的原始ManipulatedVariables .Max(我)向量。

矩阵MVMax(多个输出时变边界)。

MVMax(:,我)取代了时变绑定中定义ManipulatedVariables .Max(我),原绑定配置文件就会被丢弃。

自定义输入/输出混合约束指定为以下字段的结构。这些约束取代混合输入/输出约束之前设置使用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 .Target(我)在运行时控制器的属性。

预测地平线,取代了PredictionHorizon控制器的属性在运行时指定为一个正整数。如果您指定PredictionHorizon,您还必须指定ControlHorizon

指定PredictionHorizon改变了:

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

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

这个参数被忽略的mpcmoveMultiple函数。

控制层,取代了ControlHorizon控制器的属性在运行时指定为以下之一:

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

  • 向量的正整数,1,2…],整数之和等于预测地平线,p。在这种情况下,控制器计算块的自由移动,的长度吗ControlHorizon向量。第一次自由移动适用于时间k通过k+11,第二个免费的移动应用k+1通过k+1+21,等等。使用块运动可以提高控制器的鲁棒性比默认情况下。

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

这个参数被忽略的mpcmoveMultiple函数。

对象的功能

mpcmove 计算最优控制行动和更新控制器的状态
mpcmoveAdaptive 计算最优控制与预测模型更新
mpcmoveMultiple 计算增益调度MPC控制动作一次

例子

全部折叠

在模拟不同操纵变量上界。

定义植物,其中包括4秒输入延迟。转换到delay-free,离散,利用状态空间模型想控制间隔。创建相应的默认的控制器,并指定MV范围+ / 2。

Ts = 2;工厂= absorbDelay(汇集(ss (tf (0.8, 1 [5], InputDelay = 4)), Ts));mpcobj = mpc(植物、Ts);
- - >“PredictionHorizon”是空的。假设默认10。- - >“ControlHorizon”是空的。假设默认2。- - >“权重。米anipulatedVariables" is empty. Assuming default 0.00000. -->"Weights.ManipulatedVariablesRate" is empty. Assuming default 0.10000. -->"Weights.OutputVariables" 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" is empty. Assuming white noise on each measured output.

使用mpcmove模拟如下:

  • 引用(定位点)阶跃变化的初始条件r= 0r= 1(伺服响应)

  • 从2减少到1 MV上界一步,发生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,选项);结束

循环执行的价值options.MVMax重置为1对所有迭代后出现的t= 10。在此之前迭代,options.MVMax是空的。因此,控制器的值MVMax使用,mpcobj.MV (1)。Max = 2

模拟的结果。

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

图包含一个坐标轴对象。坐标轴对象包含时间,秒包含2线类型的对象。这些对象代表MV,机汇。

从情节,你可以观察到原始的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];

这是一个horizon-varying约束。已知的控制器的输入延迟不可能满足一个OV约束第三prediction-horizon步骤之前。因此,一个有限的约束在前两个步骤将可怜的实践。为了说明这个观点,前面的约束也能减少从0.4在步骤5和步骤3到0.2。

以下命令产生相同的结果显示在前面的情节。OV约束从来不是积极的,因为它是不同的与设定值一致,r

x = mpcstate (mpcobj);
- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。Noise" is empty. Assuming white noise on each measured output.
OPTobj = mpcmoveopt;i = 1: N y (i) = Plant.C * x.Plant;如果t(我)> = 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