主要内容

mpcmoveopt

选项集mpcmove功能

描述

为。指定选项mpcmove,mpcmoveAdaptive,及多重移动功能,使用一个mpcmoveopt对象

使用此对象,可以为控制器属性的子集指定运行时值,例如调整权重和约束。如果未为其中一个指定值mpcmoveopt属性,则使用相应控制器选项的值。

创建

描述

例子

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

属性

全部展开

输出可变调整权重,以替换权重。OutputVariables属性,指定为非负值的向量或数组。

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

在预测范围内随时改变调整权重K+一对一K+P,指定一个具有NY列和最多P行,这里,K是当前的时间和时间P这是预测范围。每行包含一个预测地平线步骤的输出可变调整权重。如果指定小于P行,最后一行中的权重用于预测视界的其余步骤。

的格式输出权重必须与文件的格式匹配权重。OutputVariables控制器对象的属性。例如,不能在控制器对象中跨预测范围指定恒定权重,然后使用指定时变权重mpcmoveopt

操纵可变调整权重,替换权重。操纵变量属性,指定为非负值的向量或数组。

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

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

的格式MVWeights必须与文件的格式匹配权重。操纵变量控制器对象的属性。例如,不能在控制器对象中跨预测范围指定恒定权重,然后使用指定时变权重mpcmoveopt

操纵可变速率调整权重,替换权重.操纵变量速率属性,指定为非负值的向量或数组。

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

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

的格式MVRateWeights必须与文件的格式匹配权重.操纵变量速率控制器对象的属性。例如,不能在控制器对象中跨预测范围指定恒定权重,然后使用指定时变权重mpcmoveopt

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

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

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

随时更改预测范围的边界K+一对一K+P,指定一个带有NY列和最多P行,这里,NY是工厂输出的数量,K是当前时间吗P是预测范围。每行包含一个预测范围步骤的范围。如果指定的范围小于P行,最后一行中的边界用于预测视界的其余步骤。

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

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

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

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

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

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

如果您没有指定输出变量(i).Max财产的货币政策委员会对象,然后指定输出最大值执行时会导致错误mpcmove

随时更改预测范围的边界K+一对一K+P,指定一个带有NY列和最多P行,这里,NY是工厂输出的数量,K是当前时间吗P是预测范围。每行包含一个预测范围步骤的范围。如果指定的范围小于P行,最后一行中的边界用于预测视界的其余步骤。

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

标量输出变量(i).Max货币政策委员会对象(对象的常量边界)用于所有预测步骤的工厂产量)

输出最大值 替换行为
标量输出最大值(单输出,常数范围) 输出最大值中定义的常量边界输出变量(i).Max
列向量输出最大值(单输出,时变界) 输出最大值中定义的常量边界输出变量(i).Max具有时变界。
行向量输出最大值(多输出,恒定边界) 输出最大值(i)中定义的常量边界输出变量(i).Max
矩阵输出最大值(多输出,时变边界) 输出最大值(:,i)中定义的常量边界输出变量(i).Max具有时变界。

矢量输出变量(i).Max货币政策委员会对象(对象的时变边界)th不同预测步骤下具有不同值的工厂产量)

输出最大值 替换行为
标量输出最大值(单输出,常数范围) 输出最大值替换第一个有限项OutputVariables.Max以及OutputVariables.Max以相同的位移量向上或向下移动,以保持原始轮廓OutputVariables.Max向量。
列向量输出最大值(单输出,时变界) 输出最大值代替中定义的时变边界输出变量(i).Max,并放弃原始绑定的配置文件。
行向量输出最大值(多输出,恒定边界) 输出最大值(i)替换第一个有限项输出变量(i).Max以及输出变量(i).Max以相同的位移量向上或向下移动,以保持原始轮廓输出变量(i).Max向量。
矩阵输出最大值(多个输出,时变边界)。 输出最大值(:,i)代替中定义的时变边界输出变量(i).Max,并放弃原始绑定的配置文件。

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

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

随时更改预测范围的边界K时间K+P-1,指定一个带有Nmv列和最多P行,这里,Nmv是操纵变量的数量,K是当前时间吗P是预测范围。每行包含一个预测范围步骤的范围。如果指定的范围小于P行,最后一行中的边界用于预测视界的其余步骤。

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

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

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

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

MVMin 替换行为
标量MVMin(单输出,常数范围) MVMin替换第一个有限项ManipulatedVariables。最小值以及ManipulatedVariables。最小值以相同的位移量向上或向下移动,以保持原始轮廓ManipulatedVariables。最小值向量。
列向量MVMin(单输出,时变界) MVMin代替中定义的时变边界ManipulatedVariables(我)。最小值,并放弃原始绑定的配置文件。
行向量MVMin(多输出,恒定边界) MVMin(我)替换第一个有限项ManipulatedVariables(我)。最小值以及ManipulatedVariables(我)。最小值以相同的位移量向上或向下移动,以保持原始轮廓ManipulatedVariables(我)。最小值向量。
矩阵MVMin(多个输出,时变边界)。 MVMin(:,i)代替中定义的时变边界ManipulatedVariables(我)。最小值,并放弃原始绑定的配置文件。

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

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

随时更改预测范围的边界K时间K+P-1,指定一个带有Nmv列和最多P行,这里,Nmv是操纵变量的数量,K是当前时间吗P是预测范围。每行包含一个预测范围步骤的范围。如果指定的范围小于P行,最后一行中的边界用于预测视界的其余步骤。

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

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

MVMax 替换行为
标量MVMax(单输出,常数范围) MVMax中定义的常量边界操纵变量(i).Max
列向量MVMax(单输出,时变界) MVMax中定义的常量边界操纵变量(i).Max具有时变界。
行向量MVMax(多输出,恒定边界) MVMax(我)中定义的常量边界操纵变量(i).Max
矩阵MVMax(多输出,时变边界) MVMax(:,我)中定义的常量边界操纵变量(i).Max具有时变界。

矢量操纵变量(i).Max货币政策委员会对象(对象的时变边界)th(在不同的预测步骤中具有不同值的操纵变量)

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

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

操纵变量约束常数,指定为NC——- - - - - -Nmv数组,在哪里NC是约束的数量,以及Nmv是操纵变量的数量。

控制输出约束常数,指定为NC——- - - - - -NY数组,在哪里NY是受控输出(已测量和未测量)的数量。

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

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

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

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

  • 1.-控制器仅返回目标函数成本,这节省了计算工作量。

在上一个控制间隔期间,被操作的变量值,指定为长度的行向量Nmv,在那里Nmv是操纵变量的数量。如果您没有指定MVUse这个MPV移动使用LastMove其当前控制器状态输入参数的属性,x

被操纵的变量目标,指定为长度的行向量Nmv,在那里Nmv是操纵变量的数量。目标(一)取代操纵变量(i).目标运行时控制器的属性。

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

指定PredictionHorizon更改:

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

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

该参数将被忽略多重移动功能。

控制地平线,它取代了控制地平线运行时控制器的属性,指定为以下内容之一:

  • 正整数,M之间,1.P,包括在内,在哪里P等于PredictionHorizon.此时,由控制器进行计算M有时发生的自由控制移动K通过K+M-1,并为从K+M通过K+P-1.在这里,K是当前控制间隔。最优轨迹规划集的求解M等于P

  • 正整数向量,[M1.,M2.,…],其中整数之和等于预测范围,P.此时,由控制器进行计算M自由移动块,其中M长度是控制地平线矢量。第一个自由移动适用于时间K通过K+M1.-1,第二个自由移动适用于时间K+M1.通过K+M1.+M2.-1,等等。与默认情况相比,使用块移动可以提高控制器的鲁棒性。

如果您指定控制地平线,您还必须指定PredictionHorizon

该参数将被忽略多重移动功能。

目标函数

mpcmove 计算最优控制动作并更新控制器状态
mpcmoveAdaptive 计算最优控制与预测模型更新
多重移动 在单个时刻计算增益调度MPC控制动作

例子

全部崩溃

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

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

Ts=2;植物=吸收层(c2d)ss(tf(0.8,[5 1],“输入延迟”,4),Ts);MPCobj=mpc(工厂,Ts);
-->“mpc”对象的“PredictionHorizon”属性为空。正在尝试PredictionHorizon=10。-->“mpc”对象的“ControlHorizon”属性为空。假设2。-->“mpc”对象的“Weights.ManufacturedVariables”属性为空。假设默认值为0.00000。-->“mpc”的“Weights.ManufacturedVariablesRate”属性对象为空。假设默认值为0.10000。-->“mpc”对象的“Weights.OutputVariables”属性为空。假设默认值为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的输出干扰是集成白噪声。-->“mpc”对象的“Model.noise”属性为空。假设每个测量输出通道上都存在白噪声。

使用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),Info]=mpcmove(MPCobj,x,y(i),r,v,options);结束

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

绘制模拟结果。

(Ts,美国)=楼梯(t, u);情节(Ts、美国、“b -”、t、y,“r-”)传说(“MV”,“OV”)包含(sprintf ('时间,%s',植物。时间单位)

图形包含一个轴。轴包含2个线型对象。这些对象表示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的输出干扰是集成白噪声。-->“mpc”对象的“Model.noise”属性为空。假设每个测量输出通道上都存在白噪声。
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对象等价于命令

Max=[Inf,Inf,1.4,1.3,1.2];

但是,使用mpcmoveopt对象涉及的计算开销要小得多。

提示

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

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

在R2018b中引入