选项设置mpcmove
函数
要指定的选项,请执行以下操作:mpcmove
,mpcmoveAdaptive
,mpcmoveMultiple
函数,使用mpcmoveopt
对象。
使用此对象,您可以为控制器属性的子集指定运行时值,例如调优权重和约束。方法之一的值如果没有指定mpcmoveopt
属性时,将使用相应控制器选项的值。
OutputWeights
- - - - - -输出可变调谐权值[]
(默认)|向量|大堆的输出变量调优权重权重。OutputVariables
运行时控制器的属性,指定为向量或非负值数组。
要在整个预测范围内使用相同的权重,请指定长度的行向量Ny哪里Ny为输出变量的个数。
在预测范围内随时间改变调优权值k+ 1,k+p,指定一个数组Ny列,直到p行。在这里,k当前的时间是和p是预测视界。每行包含一个预测水平步骤的输出变量调优权值。如果指定小于p行,最后一行中的权重用于预测范围的剩余步骤。
格式OutputWeights
必须匹配权重。OutputVariables
属性。例如,您不能在控制器对象的预测范围内指定常数权值,然后使用mpcmoveopt
.
MVWeights
- - - - - -操纵可变调整权重[]
(默认)|向量|大堆的操作变量调优权重权重。米anipulatedVariables
运行时控制器的属性,指定为向量或非负值数组。
要在整个预测范围内使用相同的权重,请指定长度的行向量Nmv哪里Nmv为被操纵变量的个数。
在预测范围内随时间改变调优权值k按时k+p-1,指定一个具有Nmv列,直到p行。在这里,k当前的时间是和p是预测范围。每行包含一个预测范围步骤的操纵变量调整权重。如果指定小于p行,最后一行中的权重用于预测范围的剩余步骤。
格式MVWeights
必须匹配权重。米anipulatedVariables
属性。例如,您不能在控制器对象的预测范围内指定常数权值,然后使用mpcmoveopt
.
MVRateWeights
- - - - - -操纵可变速率调优权值[]
(默认)|向量|大堆操作的可变速率调优权代替权重。米anipulatedVariablesRate
运行时控制器的属性,指定为向量或非负值数组。
要在整个预测范围内使用相同的权重,请指定长度的行向量Nmv哪里Nmv为被操纵变量的个数。
在预测范围内随时间改变调优权值k按时k+p-1,指定一个具有Nmv列,直到p行。在这里,k当前的时间是和p是预测范围。每行包含一个预测范围步骤的操纵变量率调整权重。如果指定的值小于p行,最后一行中的权重用于预测范围的剩余步骤。
格式MVRateWeights
必须匹配权重。米anipulatedVariablesRate
属性。例如,您不能在控制器对象的预测范围内指定常数权值,然后使用mpcmoveopt
.
ECRWeight
- - - - - -松弛可变调谐权[]
(默认)|积极的标量松弛可变调整权重,用于替换重量
运行时控制器的属性,指定为正标量。
OutputMin
- - - - - -输出变量下界[]
(默认)|行向量|矩阵输出变量下限,指定为长度的行向量Ny或者作为一个矩阵Ny列,其中Ny为输出变量的个数。
如果没有指定输出变量(i).Min
财产mpc
对象,然后指定OutputMin
在执行时导致错误mpcmove
.
从时间上改变预测范围k+ 1,k+p,指定一个矩阵Ny列,直到p行。在这里,Ny为植物产量,k是当前时间,并且p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测范围的剩余步骤。
OutputMin(:,我)
取代了输出变量(i).Min
财产mpc
对象在运行时。替换行为取决于两个变量的维度。
标量输出变量(i).Min
在mpc
对象的边界常量我
应用于所有预测步骤的电厂输出)
OutputMin 维 |
替代行为 |
---|---|
标量OutputMin (单个输出,常量绑定) |
OutputMin 替换中定义的常量边界输出变量(i).Min |
列向量OutputMin (单输出,时变界) |
OutputMin 替换中定义的常量边界输出变量(i).Min 有一个时变的界限。 |
行向量OutputMin (多个输出,常量边界) |
OutputMin(我) 替换中定义的常量边界输出变量(i).Min |
矩阵OutputMin (多输出,时变边界) |
OutputMin(:,我) 替换中定义的常量边界输出变量(i).Min 有一个时变的界限。 |
向量输出变量(i).Min
在mpc
对象的时变边界我
不同预测步骤下不同值的工厂产量)
OutputMin 维 |
替代行为 |
---|---|
标量OutputMin (单个输出,常量绑定) |
OutputMin 替换中的第一个有限项OutputVariables。最小值 剩下的项OutputVariables。最小值 以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓OutputVariables。最小值 向量。 |
列向量OutputMin (单输出,时变界) |
OutputMin 替换中定义的时变界限输出变量(i).Min ,原有绑定的配置文件将被丢弃。 |
行向量OutputMin (多个输出,常量边界) |
OutputMin(我) 替换中的第一个有限项输出变量(i).Min 剩下的项输出变量(i).Min 以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓输出变量(i).Min 向量。 |
矩阵OutputMin (多个输出,时变边界)。 |
OutputMin(:,我) 替换中定义的时变界限输出变量(i).Min ,原有绑定的配置文件将被丢弃。 |
OutputMax
- - - - - -输出变量上界[]
(默认)|行向量|矩阵输出变量上界,指定为长度的行向量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(我)。马克斯 ,原有绑定的配置文件将被丢弃。 |
MVMin
- - - - - -操纵变量下界[]
(默认)|行向量|矩阵操纵变量下界,指定为长度的行向量Nmv或者作为一个矩阵Nmv列,其中Nmv为输出变量的个数。
如果没有指定操纵变量(i).Min
财产mpc
对象,然后指定MVMin
在执行时导致错误mpcmove
.
从时间上改变预测范围k按时k+p-1,指定一个矩阵Nmv列,直到p行。在这里,Nmv为被操纵变量的个数,k是当前时间,并且p是预测视界。每一行包含一个预测视界步骤的边界。如果指定小于p行,最后一行中的边界用于预测范围的剩余步骤。
MVMin(:,我)
取代了操纵变量(i).Min
财产mpc
对象在运行时。替换行为取决于两个变量的维度。
标量操纵变量(i).Min
在mpc
对象的边界常量我
用于所有预测步骤的操纵变量)
MVMin 维 |
替代行为 |
---|---|
标量MVMin (单个输出,常量绑定) |
MVMin 替换中定义的常量边界操纵变量(i).Min |
列向量MVMin (单输出,时变界) |
MVMin 替换中定义的常量边界操纵变量(i).Min 有一个时变的界限。 |
行向量MVMin (多个输出,常量边界) |
MVMin(i) 替换中定义的常量边界操纵变量(i).Min |
矩阵MVMin (多输出,时变边界) |
MVMin(:,我) 替换中定义的常量边界操纵变量(i).Min 有一个时变的界限。 |
向量操纵变量(i).Min
在mpc
对象的时变边界我
在不同的预测步骤中具有不同值的操纵变量)
MVMin 维 |
替代行为 |
---|---|
标量MVMin (单个输出,常量绑定) |
MVMin 替换中的第一个有限项操纵变量。Min 剩下的项操纵变量。Min 以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓操纵变量。Min 向量。 |
列向量MVMin (单输出,时变界) |
MVMin 替换中定义的时变界限操纵变量(i).Min ,原有绑定的配置文件将被丢弃。 |
行向量MVMin (多个输出,常量边界) |
MVMin(i) 替换中的第一个有限项操纵变量(i).Min 剩下的项操纵变量(i).Min 以相同的位移量向上或向下移动,以保留原始轮廓定义的轮廓操纵变量(i).Min 向量。 |
矩阵MVMin (多个输出,时变边界)。 |
MVMin(:,我) 替换中定义的时变界限操纵变量(i).Min ,原有绑定的配置文件将被丢弃。 |
MVMax
- - - - - -操纵变量上界[]
(默认)|行向量|矩阵操纵变量上界,指定为长度的行向量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
.
E
-操纵变量约束常数操纵变量约束常量,指定为Nc-借-Nmv数组,Nc是约束的数量,和Nmv为被操纵变量的个数。
F
-受控输出约束常数受控输出约束常量,指定为Nc-借-Ny数组,Ny是受控输出的数量(已测量和未测量)。
G
-混合输入/输出约束常数混合输入/输出约束常数,指定为长度的列向量Nc.
年代
-测量的扰动约束常数测量的干扰约束常数,指定为Nc-借-N医学博士数组,N医学博士为被测扰动的个数。
只有computecost
- - - - - -指示是否计算最佳控制顺序的标志0
(默认)|1
表示是否计算最优控制顺序的标志,指定为:
0
-控制器除了返回目标函数成本值外,还返回预测的最优控制移动。
1
-控制器只返回目标函数成本,节省计算时间。
MVused
- - - - - -在上一个控制间隔期间,在工厂中使用的操纵变量值[]
(默认)|行向量在上一个控制间隔期间,在工厂中使用的操纵变量值,指定为长度的行向量Nmv哪里Nmv为被操纵变量的个数。如果没有指定MVused
,mpvmove
使用最后一步
属性的当前控制器状态输入参数,x
.
MVTarget
- - - - - -被控变量的目标[]
(默认)|行向量操纵变量目标,指定为长度的行向量Nmv哪里Nmv为被操纵变量的个数。MVTarget(我)
取代了ManipulatedVariables(我)。目标
属性在运行时。
预测视野
- - - - - -预测地平线[]
(默认)|正整数预测地平线,它取代了预测视野
属性,指定为正整数。如果您指定预测视野
,您还必须指定ControlHorizon
.
指定预测视野
改变了:
返回的最佳序列中的行数mpcmove
和mpcmoveAdaptive
功能
最大尺寸植物
和名义上的
的输入参数mpcmoveAdaptive
此参数将被忽略mpcmoveMultiple
函数。
ControlHorizon
- - - - - -控制层[]
(默认)|正整数|正整数向量控件地平线,它代替ControlHorizon
属性,指定为以下属性之一:
正整数,米之间1
和p、包容,p等于预测视野
.在这种情况下,控制器计算米自由控制动作时有发生k通过k+米-1,并保持控制器输出不变的剩余预测视界步骤k+米通过k+p-1.这里,k为当前控制间隔。为最优轨迹规划集米等于p.
正整数向量[米1,米2,其中整数的和等于预测视界,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))
从图中,您可以观察到原始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
.控制器忽略任何这样的规格。
无法从初始控制器设计中受约束的变量中删除约束。但是,可以将其更改为大(或小)值,使其不太可能变为活动状态。
次の MATLABコマンドに対応するリンクがクリックされました。
コマンドを MATLABコマンド ウィンドウに入力して実行してください。网状物ブラウザーは MATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。