mpcmoveopt
描述
指定选项mpcmove
,mpcmoveAdaptive
,mpcmoveMultiple
功能,使用一个mpcmoveopt
对象。
使用这个对象,您可以指定运行时的值为控制器的属性的一个子集,如优化权重和约束。如果你不指定一个值之一mpcmoveopt
属性,使用相应的控制器选项的值。
属性
OutputWeights
- - - - - -输出变量调整权重
[]
(默认)|向量|数组
输出变量优化权重取代Weights.OutputVariables
控制器的属性在运行时指定为一个向量或负的值的数组。
使用相同的权重预测地平线,指定一个行向量的长度Ny,在那里Ny输出变量的数量。
不同的调优权重预测地平线k+ 1,k+p,指定数组Ny列和p行。在这里,k当前时间和吗p是预测地平线。每行包含一个预测地平线步骤的输出变量优化权重。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。
的格式OutputWeights
必须匹配的格式吗Weights.OutputVariables
控制器的属性对象。例如,你不能指定恒定重量在预测地平线在控制器对象,然后指定使用时变权重mpcmoveopt
。
MVWeights
- - - - - -被控变量优化权重
[]
(默认)|向量|数组
被控变量优化权重取代Weights.ManipulatedVariables
控制器的属性在运行时指定为一个向量或负的值的数组。
使用相同的权重预测地平线,指定一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。
不同的调优权重预测地平线k时间k+p1、指定数组Nmv列和p行。在这里,k当前时间和吗p是预测地平线。每行包含操纵变量优化权重预测地平线的一步。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。
的格式MVWeights
必须匹配的格式吗Weights.ManipulatedVariables
控制器的属性对象。例如,你不能指定恒定重量在预测地平线在控制器对象,然后指定使用时变权重mpcmoveopt
。
MVRateWeights
- - - - - -被控变量率优化权重
[]
(默认)|向量|数组
被控变量率优化权重取代Weights.ManipulatedVariablesRate
控制器的属性在运行时指定为一个向量或负的值的数组。
使用相同的权重预测地平线,指定一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。
不同的调优权重预测地平线k时间k+p1、指定数组Nmv列和p行。在这里,k当前时间和吗p是预测地平线。每行包含被控变量率优化权重预测地平线的一步。如果你指定不到p行,最后一行的权重是用于预测地平线的其余步骤。
的格式MVRateWeights
必须匹配的格式吗Weights.ManipulatedVariablesRate
控制器的属性对象。例如,你不能指定恒定重量在预测地平线在控制器对象,然后指定使用时变权重mpcmoveopt
。
ECRWeight
- - - - - -松弛变量优化重量
[]
(默认)|积极的标量
松弛变量优化重量,取代了Weights.ECR
控制器的属性在运行时指定为一个积极的标量。
OutputMin
- - - - - -输出变量下界
[]
(默认)|行向量|矩阵
输出变量下界,指定为一个行向量的长度Ny或者是一个矩阵Ny列,Ny输出变量的数量。
如果你没有指定OutputVariables .Min(我)
财产的货币政策委员会
对象,然后指定OutputMin
导致一个错误,当你执行mpcmove
。
改变的范围预测地平线k+ 1,k+p,指定一个矩阵Ny列和p行。在这里,Ny是植物的数量输出,k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。
OutputMin(:,我)
取代了OutputVariables .Min(我)
财产的货币政策委员会
在运行时对象。替代行为取决于这两个变量的维度。
标量OutputVariables .Min(我)
在货币政策委员会
对象(一个常数绑定的我
th植物输出用于预测所有步骤)
OutputMin 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
向量OutputVariables .Min(我)
在货币政策委员会
对象(一个时变的我
th植物有不同的值在不同的预测步骤的输出)
OutputMin 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
OutputMax
- - - - - -输出变量上界
[]
(默认)|行向量|矩阵
输出变量上界,指定为一个行向量的长度Ny或者是一个矩阵Ny列,Ny输出变量的数量。
如果你没有指定OutputVariables .Max(我)
财产的货币政策委员会
对象,然后指定OutputMax
导致一个错误,当你执行mpcmove
。
改变的范围预测地平线k+ 1,k+p,指定一个矩阵Ny列和p行。在这里,Ny是植物的数量输出,k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。
OutputMax(:,我)
取代了OutputVariables .Max(我)
财产的货币政策委员会
在运行时对象。替代行为取决于这两个变量的维度。
标量OutputVariables .Max(我)
在货币政策委员会
对象(一个常数绑定的我
th植物输出用于预测所有步骤)
OutputMax 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
向量OutputVariables .Max(我)
在货币政策委员会
对象(一个时变的我
th植物有不同的值在不同的预测步骤的输出)
OutputMax 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
MVMin
- - - - - -被控变量下界
[]
(默认)|行向量|矩阵
操纵变量下界,指定为一个行向量的长度Nmv或者是一个矩阵Nmv列,Nmv输出变量的数量。
如果你没有指定ManipulatedVariables .Min(我)
财产的货币政策委员会
对象,然后指定MVMin
导致一个错误,当你执行mpcmove
。
改变的范围预测地平线k时间k+p1,指定一个矩阵Nmv列和p行。在这里,Nmv是操纵变量的数量k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。
MVMin(:,我)
取代了ManipulatedVariables .Min(我)
财产的货币政策委员会
在运行时对象。替代行为取决于这两个变量的维度。
标量ManipulatedVariables .Min(我)
在货币政策委员会
对象(一个常数绑定的我
th操纵变量应用到所有预测步骤)
MVMin 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
向量ManipulatedVariables .Min(我)
在货币政策委员会
对象(一个时变的我
th操纵变量不同的值在不同的预测步骤)
MVMin 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
MVMax
- - - - - -被控变量上界
[]
(默认)|行向量|矩阵
操纵变量上界,指定为一个行向量的长度Nmv或者是一个矩阵Nmv列,Nmv输出变量的数量。
如果你没有指定ManipulatedVariables .Max(我)
财产的货币政策委员会
对象,然后指定MVMax
导致一个错误,当你执行mpcmove
。
改变的范围预测地平线k时间k+p1,指定一个矩阵Nmv列和p行。在这里,Nmv是操纵变量的数量k是当前时间,p是预测地平线。每一行包含一个预测地平线的界限一步。如果你指定不到p行,最后一行的界限是用于预测地平线的其余步骤。
MVMax(:,我)
取代了ManipulatedVariables .Max(我)
财产的货币政策委员会
在运行时对象。替代行为取决于这两个变量的维度。
标量ManipulatedVariables .Max(我)
在货币政策委员会
对象(一个常数绑定的我
th操纵变量应用到所有预测步骤)
MVMax 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
向量ManipulatedVariables .Max(我)
在货币政策委员会
对象(一个时变的我
th操纵变量不同的值在不同的预测步骤)
MVMax 维 |
替换行为 |
---|---|
标量 |
|
列向量 |
|
行向量 |
|
矩阵 |
|
CustomConstraint
- - - - - -自定义输入/输出混合约束
[]
(默认)|结构
自定义输入/输出混合约束指定为以下字段的结构。这些约束取代混合输入/输出约束之前设置使用setconstraint
。
E
——被控变量约束常数
0(默认)|的数组Nc——- - - - - -Nmv数组
被控变量约束常数,指定为一个Nc——- - - - - -Nmv数组,Nc的数量限制,Nmv是操纵变量的数量。
F
——控制输出约束常数
0(默认)|的数组Nc——- - - - - -Ny数组
控制输出约束常数,指定为一个Nc——- - - - - -Ny数组,Ny的数量控制输出(测量和无边无际的)。
G
——混合输入/输出约束常数
0(默认)|列向量的列向量的长度Nc
混合输入/输出约束常数,指定为一个列向量的长度Nc。
年代
——测量扰动约束常数
0(默认)|的数组Nc——- - - - - -N医学博士数组
测量扰动约束常数,指定为一个Nc——- - - - - -N医学博士数组,N医学博士是测量扰动的数量。
MVused
- - - - - -操纵变量值中使用的植物在前面的控制区间
[]
(默认)|行向量
操纵变量值中使用的植物在前面的控制区间,指定为一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。如果你不指定MVused
,mpvmove
使用LastMove
财产的电流控制器状态输入参数,x
。
MVTarget
- - - - - -被控变量的目标
[]
(默认)|行向量
被控变量的目标,指定为一个行向量的长度Nmv,在那里Nmv是操纵变量的数量。MVTarget(我)
取代了ManipulatedVariables .Target(我)
在运行时控制器的属性。
PredictionHorizon
- - - - - -预测地平线
[]
(默认)|正整数
预测地平线,取代了PredictionHorizon
控制器的属性在运行时指定为一个正整数。如果您指定PredictionHorizon
,您还必须指定ControlHorizon
。
指定PredictionHorizon
改变了:
返回的行数的最优序列
mpcmove
和mpcmoveAdaptive
功能最大的尺寸
植物
和名义上的
输入参数的mpcmoveAdaptive
这个参数被忽略的mpcmoveMultiple
函数。
ControlHorizon
- - - - - -控制层
[]
(默认)|正整数|向量的正整数
控制层,取代了ControlHorizon
控制器的属性在运行时指定为以下之一:
正整数,米之间,
1
和p、包容,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))
从情节,你可以观察到原始的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
MATLAB명령
다음MATLAB명령에해당하는링크를클릭했습니다。
명령을실행하려면MATLAB명령창에입력하십시오。웹브라우저는MATLAB명령을지원하지않습니다。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。