货币政策委员会
模型预测控制器
描述
模型预测控制器使用线性设备、干扰和噪声模型来估计控制器状态并预测未来设备输出。该控制器利用预测的设备输出,解决了二次规划优化问题来确定控制动作。
有关模型预测控制器结构的更多信息,请参见MPC预测模型.
创建
语法
描述
基于离散时间预测模型创建模型预测控制器对象mpcobj
= mpc (植物
)植物
.控制器,mpcobj
继承其控制间隔工厂。Ts
,其时间单位为工厂。TimeUnit
.所有其他控制器属性都是默认值。在创建MPC控制器之后,可以使用点表示法设置它的属性。
如果工厂。Ts=-1
,你必须设置Ts
在设计和模拟控制器之前,将控制器的属性设置为正值。
根据指定的设备模型创建模型预测控制器,并设置mpcobj
= mpc (植物
,ts
)Ts
属性。如果植物
是:
一个连续时间模型,然后控制器离散模型预测使用样本时间
ts
该控制器是一个具有指定采样时间的离散时间模型,利用采样时间对植物进行采样预测
ts
具有未指定样本时间的离散时间模型(
工厂。Ts
=1
),它继承了采样时间ts
当用于预测时。
输入参数
植物
- - - - - -植物预测模型
线性时不变模型|识别线性模型
工厂预测模型,指定为LTI模型或线性系统识别工具箱™模型。指定的植物对应于模型。植物
属性。
如果在创建控制器时不指定采样时间,植物
一定是离散时间模型。预测,植物
如果需要使用,是否进行离散化或重采样mpcobj。Ts
作为采样时间。如果存在延迟,则将其合并到结果离散时间模型中。
有关MPC预测模型的更多信息,请参见MPC预测模型.
请注意
直接馈通从操纵变量的任何输出植物
不支持。金宝app
例子:特遣部队(10、10 [1])
属性
Ts
- - - - - -控制器采样时间
积极的标量
控制器采样时间,指定为正的有限标量。该控制器采用具有采样时间的离散时间模型Ts
为预测。继承的时间单位工厂。TimeUnit
.
例子:mpcobj。Ts=0.1
PredictionHorizon
- - - - - -预测地平线
10
+依赖延迟的步骤(默认)|正整数
预测水平步长,指定为正整数。的乘积PredictionHorizon
而且Ts
为预测时间;也就是说,控制器预测未来的距离。
如果您指定的预测范围不大于覆盖所有输入输出通道中最长延迟所需的步骤数,Nd = max(mpcoj . model . plant . iodelay (:))/ mpcoj . ts . Nd = max(mpcoj . model . plant . iodelay (:)
,则软件自动将预测水平增加地板(Nd)
.
例子:mpcobj。PredictionHorizon = 15
ControlHorizon
- - - - - -控制层
2
(默认)|正整数|正整数向量
控制水平,指定为以下之一:
正整数,米之间,
1
而且p,其中p等于PredictionHorizon
.在这种情况下,控制器进行计算米有时会出现自由控制动作k通过k+米-1,并保持控制器输出恒定的剩余预测水平步距k+米通过k+p1。在这里,k是当前控制间隔。正整数向量[米1,米2,…],指定阻塞间隔的长度。默认情况下,控制器进行计算米方块的自由移动,在哪里米是阻塞间隔的数量。第一个自由动作适用于时间k通过k+米1-1,第二个自由移动适用于时间k+米1通过k+米1+米2-1,等等。使用块移动可以提高控制器的鲁棒性。中的值的和
ControlHorizon
必须匹配预测视界p.如果指定一个向量,其和为:小于预测水平,则控制器增加一个阻塞间隔。这个间隔的长度是这样的,以至于间隔长度的和是p.例如,如果p=
10
你指定一个控制视界ControlHorizon
=[1 2 3]
,则控制器使用四个具有长度的间隔[1 2 3 4]
.大于预测视界,则对区间进行截断,直到区间长度之和等于p.例如,如果p=
10
你指定一个控制视界ControlHorizon
=[1 2 3 6 7]
,则控制器使用四个具有长度的间隔[1 2 3 4]
.
有关操纵变量阻塞的更多信息,请参见操纵变量阻塞.
例子:mpcobj。ControlHorizon = 3
模型
- - - - - -预测模型和标称条件
结构
预测模型和标称条件,指定为具有以下字段的结构。有关MPC预测模型的更多信息,请参见MPC预测模型而且控制器状态估计.
植物
-植物预测模型
LTI模型|识别线性模型
工厂预测模型,指定为LTI模型或线性系统识别工具箱模型。
请注意
直接馈通从操纵变量的任何输出植物
不支持。金宝app
例子:mpcoj . model . plant = ss(- 1,1,0)
干扰
-描述预期不可测扰动的模型
线性时不变模型
描述预期不可测扰动的模型,指定为LTI模型。只有当设备有不可测量的干扰时,才需要这个模型。您可以直接使用点表示法或使用setindist
函数。
默认情况下,输入干扰被期望为集成白噪声。为了对信号建模,对每个未测量的输入扰动添加一个无量纲单位增益的积分器,除非添加导致控制器失去状态可观测性。在这种情况下,干扰被预期为白噪声,因此,一个无因次单位增益被添加到该信道中。
例子:mpcoj . model .扰动= tf(5,[1 5])
噪音
-描述预期输出测量噪声的模型
线性时不变模型
描述预期输出测量噪声的模型,指定为LTI模型。
默认情况下,测量噪声被期望为具有单位方差的白噪声。为了对信号建模,为每个被测信道添加一个无因次单位增益。
例子:mpcoj . model . noise = zpk(0,-1,1)
名义上的
-工厂模型线性化的标称工作点
结构
工厂模型线性化的标称工作点,指定为具有以下字段的结构。
场 | 描述 | 默认的 |
---|---|---|
X |
运行点的设备状态,指定为长度等于状态数的列向量 |
零向量 |
U |
操作点的设备输入,包括操作变量和测量的和未测量的干扰,指定为列向量,其长度等于输入的数量 |
零向量 |
Y |
操作点的设备输出,包括测量的和未测量的输出,指定为列向量,其长度等于在 |
零向量 |
DX |
对于连续时间模型, |
零向量 |
ManipulatedVariables
- - - - - -操纵变量信息、边界和比例因子
结构数组
的结构数组指定的可操作变量(MV)信息、边界和比例因子Nmv元素,Nmv是被操纵变量的数量。要访问此属性,可以使用别名MV
而不是ManipulatedVariables
.
请注意
房价参照差价Δu(k) =u(k) - - -u(k1)。基于导数的约束和权重du / dt的连续时间输入信号必须适当地重新表述离散时间差Δu(k),使用近似du / dt≅Δu(k) /T年代.
每个结构元素都有以下字段。
最小值
- MV下限
负
(默认)|标量|向量
指定为标量或向量的给定操作变量的下界。默认情况下,这个下界为负
.
若要在整个预测范围内使用相同的界限,请指定一个标量值。
随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(1)。最小值= -5
马克斯
- MV上限
正
(默认)|标量|向量
指定为标量或向量的给定操作变量的上界。缺省情况下,该上限为正
.
若要在整个预测范围内使用相同的界限,请指定一个标量值。
随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(1)。Max = 5
MinECR
- MV下界柔软度
0
(默认)|非负标量|向量
给定操纵变量的下界的柔软度。对松弛的同等关注(ECR)值越大表示约束越软,指定为非负标量或向量。默认情况下,MV下界是硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(1)。MinECR = 0.01
MaxECR
- MV上限
0
(默认)|非负标量|向量
给定操纵变量的上界的柔软性。对松弛的同等关注(ECR)值越大表示约束越软,指定为非负标量或向量。默认情况下,MV上界是硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(1)。MaxECR = 0.01
杀鼠灵
- MV变化率下限
负
(默认)|非正标量|向量
给定操作变量的变化率的下界,指定为非正标量或向量。MV变化率定义为MV(k) - - -MV(k1),k是当前时间。默认情况下,这个下界为负
.
若要在整个预测范围内使用相同的界限,请指定一个标量值。
随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(1)。RateMin = -2
RateMax
- MV变化率上限
正
(默认)|非负标量|向量
给定操作变量的变化率的上界,指定为非负标量或向量。MV变化率定义为MV(k) - - -MV(k1),k是当前时间。默认情况下,这个下界为正
.
若要在整个预测范围内使用相同的界限,请指定一个标量值。
随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(1)。RateMax = 2
RateMinECR
- MV变化率下界柔软度
0
(默认)|非负有限标量|向量
一个给定的操纵变量的变化率的下界的柔软性。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,MV变化率下界为硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最终ECR值用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(2)。RateMinECR = 0.01
RateMaxECR
- MV变化率上限柔软度
0
(默认)|非负有限标量|向量
一个给定的操纵变量的变化率的上界的柔软性。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,MV变化率上界为硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最终ECR值用于预测范围的其余步骤。
例子:mpcobj.ManipulatedVariables(2)。RateMaxECR = 0.01
目标
- MV目标
“名义”
(默认)|标量|向量
指定为标量、向量或的给定操作变量的目标“名义”
(默认)。当目标
是“名义”
,则所操作的变量目标对应于mpcobj.Model.Nominal.U
.
若要在整个预测范围内使用相同的目标,请指定一个标量值。
在预测范围内随时间改变目标k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的值用于预测范围的其余步骤。
当您的操作变量多于工厂的输出时,出于经济或操作原因,您可能希望为一些操作变量设置目标值,以及相应的非零成本函数权值。有关更多信息,请参见非方形装置MPC控制器设计而且为操纵变量设置目标.
例子:mpcobj.ManipulatedVariables(2)。目标= [0.3 0.2]
的名字
- MV名称
字符串|字符向量
给定操作变量的名称,指定为字符串或字符向量。这是一个只读属性。要修改操作变量的名称,请使用mpcobj.Model.Plant.InputName
.
例子:mpcobj.ManipulatedVariables (2) . name
单位
- MV单位
""
(默认)| string |字符向量
给定操作变量的单位,指定为字符串或字符向量。这是一个只读属性。要修改操作变量的单位,请使用mpcobj.Model.Plant.InputUnit
.
例子:mpcobj.ManipulatedVariables .Units (2)
ScaleFactor
- MV比例因子
1
(默认)|正有限标量
给定操作变量的比例因子,指定为正的有限标量。指定适当的比例因子可以改善优化的数值条件。一般情况下,使用操纵变量的操作范围的振幅。有关更多信息,请参见指定比例因子.
例子:mpcobj.ManipulatedVariables(1)。ScaleFactor = 10
类型
- MV型
“连续”
(默认)|“整数”
|“二元”
|向量
给定操作变量的类型,指定为:
“连续”
-这表示操作的变量是连续的。“二元”
-这将限制操作变量为0或1。“整数”
-这限制操作变量为整数。包含所有可能值的向量——例如,这将操作变量限制为指定的值
mpcobj.MV(1)。类型=[-1,0,0.5,1,2];
.
缺省情况下,该类型设置为“连续”
.
有关更多信息,请参见离散控制集MPC.
例子:mpcobj.ManipulatedVariables(1)。Type = 'binary'
OutputVariables
- - - - - -输出变量信息、边界和比例因子
结构数组
的结构数组指定的输出变量(OV)信息、边界和比例因子Ny元素,Ny是输出变量的个数。要访问此属性,可以使用别名机汇
而不是OutputVariables
.
每个结构元素都有以下字段。
最小值
- OV下界
负
(默认)|标量|向量
给定输出变量的下界,指定为标量或向量。默认情况下,这个下界为负
.
若要在整个预测范围内使用相同的界限,请指定一个标量值。
随时间改变预测视界的范围k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。
例子:mpcobj.OutputVariables(1)。最小值= -10
马克斯
- OV上限
正
(默认)|标量|向量
指定为标量或向量的给定输出变量的上界。缺省情况下,该上限为正
.
若要在整个预测范围内使用相同的界限,请指定一个标量值。
随时间改变预测视界的范围k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。
例子:mpcobj.OutputVariables(1)。Max = 10
MinECR
- OV下界柔软度
1
(默认)|非负有限标量|向量
给定输出变量的下界的柔软度。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,OV上界是软约束。
为了避免在运行时产生不可行的优化问题,最好使用软OV边界。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。
例子:mpcobj.OutputVariables(1)。MinECR = 5
MaxECR
- OV上界柔软度
1
(默认)|非负有限标量|向量
给定输出变量的上界的柔软度。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,OV下界为软约束。
为了避免在运行时产生不可行的优化问题,最好使用软OV边界。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。
例子:mpcobj.OutputVariables(1)。MaxECR = 10
的名字
- OV名称
字符串|字符向量
给定输出变量的名称,指定为字符串或字符向量。这是一个只读属性。要修改输出变量的名称,请使用mpcobj.Model.Plant.OutputName
例子:mpcobj.OutputVariables (2) . name
单位
- OV单位
""
(默认)| string |字符向量
给定输出变量的单位,指定为字符串或字符向量。这是一个只读属性。要修改输出变量的名称,请使用mpcobj.Model.Plant.OutputUnit
.
例子:mpcobj.OutputVariables .Units (2)
ScaleFactor
- OV比例因子
1
(默认)|正有限标量
给定输出变量的比例因子,指定为一个正的有限标量。指定适当的比例因子可以改善优化的数值条件。一般情况下,使用输出变量的操作范围。有关更多信息,请参见指定比例因子.
例子:mpcobj.OutputVariables(1)。ScaleFactor = 20
DisturbanceVariables
- - - - - -输入扰动变量信息和尺度因子
结构数组
扰动变量(DV)信息和尺度因子,指定为具有Nd元素,Nd是已测扰动输入和未测扰动输入的总数。内部干扰信号的顺序DisturbanceVariables
以下是第一个吗N医学博士最后一项与测量的输入干扰有关Nud条目与未测量的输入干扰有关。
要访问此属性,可以使用别名DV
而不是DisturbanceVariables
.
每个结构元素都有以下字段。
的名字
- DV名称
字符串|字符向量
DV名称,指定为字符串或字符向量。这是一个只读属性。若要修改扰动变量的名称,请使用mpcobj.Plant.Inputname
.
例子:mpcobj.DisturbanceVariables (1) . name
单位
- OV单位
""
(默认)| string |字符向量
OV单位,指定为字符串或字符向量。这是一个只读属性。要修改干扰变量的单位,使用mpcobj.Model.Plant.InputUnit
.
例子:mpcobj.DisturbanceVariables (1) .Units
ScaleFactor
- DV比例因子
1
(默认)|正有限标量
DV比例因子,指定为正的有限标量。指定适当的比例因子可以改善优化的数值条件。有关更多信息,请参见指定比例因子.
例子:mpcobj.DisturbanceVariables(1)。ScaleFactor = 15
权重
- - - - - -标准成本函数调优权重
结构
标准成本函数调优权值,指定为结构。控制器将这些权重应用到缩放变量上。因此,调优权值为无量纲值。
的格式OutputWeights
格式必须匹配权重。OutputVariables
属性。例如,您不能在控制器对象中指定横跨预测范围的恒定权重,然后使用mpcmoveopt
.
权重
具有以下字段。这些字段的值取决于您使用的是标准成本函数还是替代成本函数。有关这些成本函数的更多信息,请参见优化问题.
ManipulatedVariables
-操纵变量调优权重
行向量|数组
操纵变量调优权值,用于惩罚偏离MV目标的情况,指定为行向量或非负值的数组。所有被操作变量的默认权重为0
.
若要在整个预测水平面上使用相同的权值,请指定长度的行向量Nmv,在那里Nmv是被操纵变量的数量。
在预测范围内随时间变化调整权重k时间k+p-1,指定一个数组Nmv列及以下p行。在这里,k当前时间是和p为预测视界。每行包含一个预测水平步的操纵变量调优权值。如果指定小于p行,最后一行中的权重用于预测水平的其余步骤。
如果使用替代成本函数,请指定权重。米anipulatedVariables
作为单元格数组,其中包含Nmv——- - - - - -NmvRu矩阵。例如,mpcoj . weights . manipulation variables = {Ru}
.Ru一定是正半定矩阵。改变Ru不支持跨预测视界的矩阵。金宝app有关更多信息,请参见替代成本函数.
例子:mpcoj . weights . manipulation variables = [0.1 0.2]
ManipulatedVariablesRate
-操纵变量率调整权重
行向量|数组|单元格数组
操纵的可变率调优权值,它惩罚控制移动中的较大更改,指定为行向量或非负值的数组。所有操纵变量的默认权重为0.1
.
若要在整个预测水平面上使用相同的权值,请指定长度的行向量Nmv,在那里Nmv是被操纵变量的数量。
在预测范围内随时间变化调整权重k时间k+p-1,指定一个数组Nmv列及以下p行。在这里,k当前时间是和p为预测视界。每行包含一个预测水平步的操纵变量率调谐权值。如果指定小于p行,最后一行中的权重用于预测水平的其余步骤。
请注意
最好的做法是使用非零操纵变量率权值。如果所有操纵的变量率权重都是严格正的,则得到的QP问题是严格凸的。如果某些权值为零,则QP Hessian可以是正半定的。为了使QP问题严格凸,当条件数为Hessian矩阵时KΔU大于1012,数量10 * sqrt (eps)
加到每个对角线项上。看到成本函数.
如果使用替代成本函数,请指定权重。米anipulatedVariablesRate
作为单元格数组,其中包含Nmv——- - - - - -NmvRΔu矩阵。例如,mpcoj . weights . manipulation variablesrate = {Rdu}
.RΔu一定是正半定矩阵。改变RΔu不支持跨预测视界的矩阵。金宝app有关更多信息,请参见替代成本函数.
例子:mpcoj . weights . manipulation variablesrate = [0.1 0.1]
OutputVariables
-输出可变调优权值
向量|数组
输出变量调优权值,它惩罚偏离输出引用的情况,指定为行向量或非负值的数组。所有输出变量的默认权重为1
.
若要在整个预测水平面上使用相同的权值,请指定长度的行向量Ny,在那里Ny是输出变量的个数。
在预测范围内随时间变化调整权重k+1到时间k+p,指定一个数组Ny列及以下p行。在这里,k当前时间是和p为预测视界。每行包含一个预测水平步的输出变量调优权重。如果指定小于p行,最后一行中的权重用于预测水平的其余步骤。
如果使用替代成本函数,请指定权重。OutputVariables
作为单元格数组,其中包含Ny——- - - - - -Ny问矩阵。例如,mpcoj . weights . outputvariables = {Q}
.问一定是正半定矩阵。改变问不支持跨预测视界的矩阵。金宝app有关更多信息,请参见替代成本函数.
例子:mpcoj . weights . outputvariables = [1 1]
ECR
-松弛变量调整权重
1 e5
(默认)|阳性标量
松弛变量调优权值,指定为正标量。增加或减少等效松弛关注(ECR)权值,分别使所有软约束变硬或变软。
例子:mpcoj . weights . ecr = 1e4
优化器
- - - - - -QP优化参数
结构
QP优化参数,指定为具有以下字段的结构。前四个领域,算法
,ActiveSetOptions
,InteriorPointOptions
而且MixedIntegerOptions
,都与内置求解器有关。如果您选择使用自定义求解器进行模拟(通过设置CustomSolver
来真正的
)这四个字段在模拟时被忽略。同样,如果您选择使用自定义求解器进行代码生成(通过设置CustomSolverCodeGen
来真正的
)这四个字段在代码生成时被忽略。
有关支持的QP求解器的更多信息,请参见金宝appQP解决者.
算法
- QP求解算法
“激活集”
(默认)|“内点”
QP求解算法,指定为以下之一:
“激活集”
—使用KWIK active-set算法解决QP问题。“内点”
-使用带Mehrotra预测校正器的原对偶内点算法解决QP问题。
对于需要解决QP问题的应用程序,还可以使用mpcActiveSetSolver
而且mpcInteriorPointSolver
函数,分别。
例子:mpcoco . optimizer . algorithm = ' inner -point'
ActiveSetOptions
-主动设置QP求解器设置
结构
主动设置QP求解器设置,指定为一个结构。这些设置仅适用于以下情况算法
是“激活集”
,以及类型
所有被操作变量的性质是“连续”
.
您可以指定以下活动设置优化器设置。
MaxIterations
-最大迭代次数
“默认”
(默认)|正整数
计算QP解时允许的最大迭代次数,指定为以下之一:
“默认”
—MPC控制器自动计算QP求解器的最大迭代次数为 ,地点:nc是横跨预测视界的约束的总数。
nv是控制范围内优化变量的总数。
默认的
MaxIterations
值的下界为120
.正整数——QP求解器在指定的迭代次数后停止。如果在最后迭代中求解器不能收敛,则控制器:
如果冻结控制器的移动
UseSuboptimalSolution
是假
.应用在最后迭代之后得到的次优解,如果
UseSuboptimalSolution
是真正的
.
请注意
默认的MaxIterations
对于某些控制器配置,例如具有较大预测和控制范围的控制器,值可能非常大。在模拟这样的控制器时,如果QP求解器不能找到一个可行的解,模拟可能会停止响应,因为求解器会继续寻找一个解,直到迭代次数达到MaxIterations
.
例子:mpcoj . optimizer . activesetoptions . maxiterations = 2000
ConstraintTolerance
-公差用于验证不等式约束是否满足
1 e-6
(默认)|阳性标量
公差用于验证不等式约束由指定为正标量的最优解满足。一个更大的ConstraintTolerance
值允许更大的约束违反。
例子:mpcoco . optimizer . activesetoptions . constraintolerance = 1e-5
UseWarmStart
-选项指示是否热启动每个QP求解迭代
真正的
(默认)|假
选项,指示是否温暖的开始每个QP求解器迭代通过传入来自前一个迭代的活动不等式列表,指定为一个逻辑值。当不等式的等分为真时,不等式是活跃的。
例子:mpcoj . optimizer . activesetoptions . usewarmstart = true
InteriorPointOptions
-内点QP求解器设置
结构
内点QP求解器设置,指定为一个结构。这些设置仅适用于以下情况算法
是“内点”
,以及类型
所有被操作变量的性质是“连续”
.
您可以指定以下内部点优化器设置。
MaxIterations
-最大迭代次数
50
(默认)|正整数
计算QP解时允许的最大迭代次数,指定为正整数。QP求解器在指定的迭代次数之后停止。如果在最后迭代中求解器不能收敛,则控制器:
如果冻结控制器的移动
UseSuboptimalSolution
是假
.应用在最后迭代之后得到的次优解,如果
UseSuboptimalSolution
是真正的
.
例子:mpcoco . optimizer . internorpointoptions . maxiterations = 30
ConstraintTolerance
-容忍度用于验证满足平等和不平等约束
1 e-6
(默认)|阳性标量
公差用于验证最优解满足等式和不等式约束,指定为正标量。一个更大的ConstraintTolerance
值允许更大的约束违反。
例子:mpcoco . optimizer . internorpointoptions . constraintolerance = 1e-5
OptimalityTolerance
-一阶最优性的终止公差(KKT对偶残差)
1 e-6
(默认)|阳性标量
一阶最优性(KKT对偶残差)的终止公差,指定为正标量。
例子:mpcoco . optimizer . internorpointoptions . optimalitytolerance = 1e-5
ComplementarityTolerance
-一阶最优性的终止容忍(KKT平均互补残差)
1 e-8
(默认)|阳性标量
一阶最优性的终止容忍(KKT平均互补残差),指定为正标量。增加这个值可以提高健壮性,而减少这个值可以提高准确性。
例子:mpcoj . optimizer . interiorpointoptions . complementary aritytolerance = 1e-6
StepTolerance
-决策变量的终止公差
1 e-8
(默认)|阳性标量
决策变量的终止公差,指定为正标量。
例子:mpcoj . optimizer . internorpointoptions . steptolerance = 1e-7
MixedIntegerOptions
-混合整数QP求解器设置
结构
混合整数QP求解器设置,指定为结构。当任何被操作的变量具有类型
不是财产“连续”
.在本例中,使用了一个构建的混合整数KWIK算法,该算法实现了分支和定界方法。
可以指定以下混合整数QP优化器设置。
MaxIterations
-最大迭代次数
1000
(默认)|正整数
计算混合整数QP解时允许的最大迭代次数,指定为正整数。混合整数QP求解器在指定次数的迭代之后停止。如果在最后迭代中求解器不能收敛,则控制器:
如果冻结控制器的移动
UseSuboptimalSolution
是假
.应用在最后迭代之后得到的次优解,如果
UseSuboptimalSolution
是真正的
.
例子:mpcoj . optimizer . mixedintegeroptions . maxiterations = 500
ConstraintTolerance
-容忍度用于验证满足平等和不平等约束
1 e-6
(默认)|阳性标量
公差用于验证最优解满足等式和不等式约束,指定为正标量。一个更大的ConstraintTolerance
值允许更大的约束违反。
例子:mpcoj . optimizer . mixedintegeroptions . constraintolerance = 1e-5
DiscreteConstraintTolerance
-公差用于验证对离散操作变量的约束是否满足
1 e-6
(默认)|阳性标量
公差用于验证离散操作变量中的约束由指定为正标量的最优解满足。一个更大的DiscreteConstraintTolerance
值允许更大的约束违反。
例子:mpcoj . optimizer . mixedintegeroptions . discrete teconstraintolerance = 1e-5
RoundingAtRootNode
-选项四舍五入的解决方案在根节点
1
(默认)| 0
选项在根节点(指定为布尔值)处舍入解决方案。当RoundingAtRootNode
=1
,求解器对在搜索树的根节点上求解的松弛QP问题的解舍入,从而满足离散约束。然后,一个附加的QP是相对于剩余的(连续的)变量求解的。如果这种QP存在可行解,则将其对应的代价作为原混合整数问题最优解的有效上界。拥有这样的上界可以在求解器的其余执行过程中消除整个子树,并加速解决以下QP松弛问题。除非迭代的次数MaxIterations
是小,它值得设置吗RoundingAtRootNode
=1
.否则,设置RoundingAtRootNode
=0
避免解决额外的QP。
例子:mpcoj . optimizer . mixedintegeroptions . roundingatrootnode = true
MaxPendingNodes
—最大待挂节点数
1000
(默认)|阳性标量
这是可存储的挂起QP松弛的最大数量。它决定了分配给存储所有挂起的QP松弛的内存,它与(2*)成正比米+ 3 *Nd) *MaxPendingNodes
,在那里米不等式的数量是否限制,和Nd是离散变量的个数。如果挂起的松弛次数超过MaxPendingNodes
然后用状态码停止求解器3
,4
或5
.
例子:mpcoj . optimizer . mixedintegeroptions . maxpendingnodes = 2000
MinOutputECR
-输出约束ECR值允许的最小值
0
(默认)|非负标量
允许输出约束同等关注弛豫(ECR)值的最小值,指定为非负标量。的值0
指示允许硬输出约束。如果OutputVariables。MinECR
或OutputVariables。MaxECR
MPC控制器的属性小于MinOutputECR
,显示警告,并将值提升为MinOutputECR
在计算。
例子:mpcoj . optimizer . minoutputecr = 1e-10
UseSuboptimalSolution
—次优解决方案是否可接受的选项
假
(默认)|真正的
选项,指示是否可接受次优解决方案,指定为逻辑值。当QP求解器达到迭代的最大次数而没有找到一个解决方案时(退出选项是0
),控制器:
冻结MV值如果
UseSuboptimalSolution
是假
应用求解器在最后迭代后发现的次优解
UseSuboptimalSolution
是真正的
的值来指定最大迭代次数算法
,使用任意一种ActiveSetOptions。MaxIterations
或InteriorPointOptions。MaxIterations
.
例子:mpcoj . optimizer . usesuboptimalsolution = true
CustomSolver
-选项,指示是否使用自定义QP求解器进行模拟
假
(默认)|真正的
选项,指示是否使用自定义QP求解器进行模拟,指定为逻辑值。如果CustomSolver
是真正的
时,用户必须提供mpcCustomSolver
MATLAB上的函数®路径。
此自定义求解器不用于代码生成。若要为具有自定义求解器的控制器生成代码,请使用CustomSolverCodeGen
.
如果CustomSolver
是真正的
,该控制器不需要自定义求解器尊重其中的设置ActiveSetOptions
或InteriorPointOptions
.
您也可以使用该函数setCustomSolver
自动配置mpcobj
的活动集算法quadprog
(优化工具箱)作为一个定制的QP求解器,用于模拟和代码生成。
有关使用自定义QP求解器的更多信息,请参见QP解决者.
例子:mpcoj . optimizer . customsolver = true
CustomSolverCodeGen
-选项,指示是否使用自定义QP求解器进行代码生成
假
(默认)|真正的
选项,指示是否使用自定义QP求解器进行代码生成,指定为逻辑值。如果CustomSolverCodeGen
是真正的
时,用户必须提供mpcCustomSolverCodeGen
函数在MATLAB路径上。
此自定义求解器不用于模拟。若要用自定义求解器模拟控制器,请使用CustomSolver
.
您也可以使用该函数setCustomSolver
自动配置mpcobj
的活动集算法quadprog
(优化工具箱)作为一个定制的QP求解器,用于模拟和代码生成。
有关使用自定义QP求解器的更多信息,请参见QP解决者.
例子:mpcoco . optimizer . customsolvercodegen = true
笔记
- - - - - -用户的笔记
{}
(默认)|字符向量的单元格数组
与MPC控制器关联的用户注释,指定为字符向量的单元格数组。
例子:mpcobj。笔记={'Longitudinal Controller'; 'Version 2.1'}
用户数据
- - - - - -用户数据
[]
(默认)|任何MATLAB数据
与MPC控制器相关联的用户数据,指定为任何MATLAB数据,如单元阵列或结构。
例子:mpcobj。使用rData = {'Parameters',0.2,[3 4]'}
历史
- - - - - -控制器的创建日期和时间
向量
此属性是只读的。
控制器的创建日期和时间,指定为具有以下元素的向量:
(1)历史
年(2)历史
每月(3)历史
天(4)历史
- - - - - -小时(5)历史
- - - - - -分钟(6)历史
- - - - - -秒
使用datestr (mpcobj.History)
将控制器创建日期显示为字符向量。
例子:mpcobj。历史=datevec(now)
对象的功能
审查 |
检查MPC控制器的设计错误和运行时的稳定性问题 |
mpcmove |
计算最优控制动作并更新控制器状态 |
sim卡 |
用线性装置在闭环中模拟MPC控制器 |
mpcstate |
MPC控制器状态 |
getCodeGenerationData |
创建数据结构mpcmoveCodeGeneration |
generateExplicitMPC |
将隐式MPC控制器转换为显式MPC控制器 |
例子
创建MPC控制器与指定的预测和控制范围
创建一个带有传递函数的植物模型 .
植物= tf([1 1],[1 2 0]);
该工厂是SISO,因此它的输入必须是一个被操纵的变量,它的输出必须被测量。一般来说,最好的做法是使用setmpcsignals
命令,或LTIInputGroup
而且OutputGroup
属性。
为控制器指定一个采样时间。
Ts = 0.1;
定义被操作变量的边界, ,以致于 .
MV = struct(“最小值”, 1“马克斯”1);
MV
只包含被操作变量的上界和下界。通常,您可以指定其他MV属性。如果不指定其他属性,则应用它们的默认值。
指定20间隔的预测水平和3间隔的控制水平。
P = 20;M = 3;
使用指定值创建MPC控制器。第五个输入参数为空,因此应用默认的调优权重。
MPCobj = mpc(Plant,Ts,p,m,[],MV);
- - - >“权重。米anipulatedVariables" property is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000.
算法
为了减少计算开销,模型预测控制器的创建分为两个阶段。第一个发生在创建当您使用货币政策委员会
函数,或者在更改控制器属性时。创建包括基本的有效性和一致性检查,如信号维度和权重的非负性。
第二阶段是初始化,当你在模拟或分析过程中第一次使用该对象时,就会发生这种情况。初始化计算高效数值性能所需的所有常量属性,例如定义最优控制问题和状态估计增益的矩阵。另外,在初始化过程中会进行诊断检查,例如验证控制器状态是否可见。
默认情况下,这两个阶段都在命令窗口中显示信息消息。控件可以打开或关闭这些消息mpcverbosity
函数。
选择功能
方法还可以创建模型预测控制器MPC设计师应用程序。
版本历史
R2006a之前介绍过R2018b:金宝app不再支持使用线性MPC控制器实现经济MPC
金宝app不再支持使用线性MPC控制器实现经济MPC。使用非线性MPC控制器来实现经济的MPC。有关非线性MPC控制器的更多信息,请参见非线性MPC.
如果您之前保存了一个配置了自定义代价或约束函数的线性MPC对象,那么该软件将在加载对象时生成警告,在模拟对象时生成错误。为了抑制错误和警告消息并继续使用你的线性MPC控制器,mpcobj
,没有定制成本和约束,设置IsEconomicMPC
选项假
.
mpcobj。IsEconomicMPC = false;
使用非线性MPC对象实现你的经济MPC控制器:
创建一个
nlmpc
对象。将您的自定义成本函数转换为非线性MPC所需的格式。有关非线性MPC成本函数的更多信息,请参见指定非线性MPC的代价函数.
将自定义约束函数转换为非线性MPC所需的格式。有关非线性MPC约束的更多信息,请参见为一般非线性MPC指定约束条件.
使用状态和输出函数实现您的线性预测模型。有关非线性MPC预测模型的更多信息,请参见指定非线性MPC预测模型.
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。