模型预测控制器
模型预测控制器使用线性装置、扰动和噪声模型来估计控制器状态并预测未来装置输出。该控制器利用预测对象输出,求解二次规划优化问题以确定控制动作。
有关模型预测控制器结构的更多信息,请参见MPC预测模型.
基于离散时间预测模型创建模型预测控制器对象mpcobj
= mpc (植物
)植物
.控制器,mpcobj
,继承其控制间隔工厂。Ts
的时间单位工厂。TimeUnit
.所有其他控制器属性都是默认值。创建MPC控制器后,可以使用点表示法设置其属性。
如果工厂。Ts=-1
,则必须设置Ts
属性在设计和模拟控制器之前将控制器设置为正值。
基于指定的工厂模型创建模型预测控制器,并设置mpcobj
= mpc (植物
,ts
)Ts
属性。如果植物
是:
一种连续时间模型,然后控制器利用采样时间离散模型进行预测ts
一个具有指定采样时间的离散时间模型,控制器利用采样时间对工厂进行重新采样以进行预测ts
样本时间不确定的离散时间模型(工厂。Ts
=1
),则继承采样时间ts
用于预测时
Ts
- - - - - -控制器采样时间控制器采样时间,指定为正的有限标量。该控制器采用带有采样时间的离散时间模型Ts
为预测。
PredictionHorizon
- - - - - -预测地平线10
(默认)|正整数预测水平步长,指定为正整数。的乘积PredictionHorizon
而且Ts
为预测时间;也就是说,控制器对未来的展望有多远。
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]
.
有关操纵变量阻塞的更多信息,请参见操纵变量阻塞.
模型
- - - - - -预测模型和标称条件预测模型和标称条件,指定为具有以下字段的结构。有关MPC预测模型的更多信息,请参见MPC预测模型而且控制器状态估计.
植物
-植物预测模型植物预测模型,指定为LTI模型或线性系统识别工具箱模型。
请注意
直接馈通从操纵变量的任何输出植物
不支持。金宝app
干扰
-描述预期未测扰动的模型描述预期的不可测扰动的模型,指定为LTI模型。该模型仅在设备存在不可测量的干扰时才需要。可以直接使用点表示法或使用setindist
函数。
默认情况下,输入干扰被认为是集成白噪声。为了对信号建模,对每个未测量的输入扰动添加一个具有无因次单位增益的积分器,除非添加导致控制器失去状态可观测性。在这种情况下,扰动预计是白噪声,因此,一个无量纲的单位增益被添加到该信道。
噪音
-描述预期输出测量噪声的模型描述预期输出测量噪声的模型,指定为LTI模型。
缺省情况下,测量噪声被期望为单位方差的白噪声。为了对信号进行建模,为每个测量通道添加一个无量纲单位增益。
名义上的
-工厂模型线性化的标称工作点工厂模型线性化的标称工作点,指定为具有以下字段的结构。
场 | 描述 | 默认的 |
---|---|---|
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下界负
(默认)|标量|向量MV的下界,指定为标量或向量。默认情况下,这个下界是不受约束的。
若要在预测范围内使用相同的边界,请指定一个标量值。
随时间变化预测范围的范围k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终边界用于预测范围的其余步骤。
马克斯
- MV上限正
(默认)|标量|向量MV的上界,指定为标量或向量。默认情况下,这个上限是无约束的。
若要在预测范围内使用相同的边界,请指定一个标量值。
随时间变化预测范围的范围k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终边界用于预测范围的其余步骤。
MinECR
- MV下界柔软度0
(默认)|非负标量|向量MV下界柔软性,其中较大的相等关注松弛(ECR值)表示较软的约束,指定为非负标量或向量。默认情况下,MV下界是硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终的ECR值用于预测范围的其余步骤。
MaxECR
- MV上限0
(默认)|非负标量|向量MV上限柔软性,其中较大的相等关注松弛(ECR值)表示较软的约束,指定为非负标量或向量。默认情况下,MV上界是硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终的ECR值用于预测范围的其余步骤。
杀鼠灵
- MV变化率下限负
(默认)|非正标量|向量MV变化率下限,用非正标量或向量表示。MV变化率定义为MV(k) - - -MV(k1),k是当前时间。默认情况下,这个下界是不受约束的。
若要在预测范围内使用相同的边界,请指定一个标量值。
随时间变化预测范围的范围k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终边界用于预测范围的其余步骤。
RateMax
- MV变化率上限正
(默认)|非负标量|向量MV变化率的上限,指定为非负的标量或向量。MV变化率定义为MV(k) - - -MV(k1),k是当前时间。默认情况下,这个下界是不受约束的。
若要在预测范围内使用相同的边界,请指定一个标量值。
随时间变化预测范围的范围k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终边界用于预测范围的其余步骤。
RateMinECR
- MV变化率下限柔软度0
(默认)|非负有限标量|向量MV变化率下界柔软性,其中较大的相等关注松弛(ECR值)表示较软的约束,指定为非负的有限标量或向量。默认情况下,MV变化率的下界是硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值,最终的ECR值用于预测范围的其余步骤。
RateMaxECR
- MV变化率上限柔软度0
(默认)|非负有限标量|向量MV变化率上限柔软性,其中较大的相等关注松弛(ECR值)表示较软的约束,指定为非负的有限标量或向量。默认情况下,MV变化率上界是硬约束。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k时间k+p-1,指定一个到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值,最终的ECR值用于预测范围的其余步骤。
的名字
- MV名称MV名称,指定为字符串或字符向量。
单位
- MV单位""
(默认)| string |字符向量MV单位,指定为字符串或字符向量。
ScaleFactor
- MV比例因子1
(默认)|正有限标量MV比例因子,指定为正的有限标量。一般情况下,使用被操纵变量的操作范围。指定适当的比例因子可以改善优化的数值调节。有关更多信息,请参见指定比例因子.
类型
- MV型“连续”
(默认)|“整数”
|“二元”
|向量MV类型,指定为:
“连续”
—表示被操作的变量是连续的。
“二元”
-这限制被操纵的变量为0或1。
“整数”
—将被操作的变量限制为整数。
包含所有可能值的向量——例如,这将操作变量限制为指定的值mpcobj.MV (1) .Type =[1 0、0.5、1、2);
.
缺省情况下,类型为“连续”
.
有关更多信息,请参见离散控制集MPC.
OutputVariables
- - - - - -输出变量信息、边界和比例因子的结构数组指定的输出变量(OV)信息、边界和比例因子Ny元素,Ny是输出变量的个数。要访问此属性,可以使用别名机汇
而不是OutputVariables
.
每个结构元素都有以下字段。
最小值
- OV下界负
(默认)|标量|向量OV的下界,指定为标量或向量。默认情况下,这个下界是不受约束的。
若要在预测范围内使用相同的边界,请指定一个标量值。
随时间变化预测范围的范围k+1到时间k+p,指定到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终边界用于预测范围的其余步骤。
马克斯
- OV上限正
(默认)|标量|向量OV上限,指定为标量或向量。默认情况下,这个上限是无约束的。
若要在预测范围内使用相同的边界,请指定一个标量值。
随时间变化预测范围的范围k+1到时间k+p,指定到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终边界用于预测范围的其余步骤。
MinECR
- OV下界柔软度1
(默认)|非负有限标量|向量OV下界柔软性,其中较大的相等关注松弛(ECR值)表示较软的约束,指定为非负的有限标量或向量。默认情况下,OV上界是软约束。
为了避免在运行时产生不可行的优化问题,最好使用软OV边界。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k+1到时间k+p,指定到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终的ECR值用于预测范围的其余步骤。
MaxECR
- OV上限柔软度1
(默认)|非负有限标量|向量OV上限柔软性,其中较大的相等关注松弛(ECR值)表示较软的约束,指定为非负的有限标量或向量。默认情况下,OV下界是软约束。
为了避免在运行时产生不可行的优化问题,最好使用软OV边界。
要在整个预测范围内使用相同的ECR值,请指定一个标量值。
在预测范围内随时间变化ECR值k+1到时间k+p,指定到的向量p值。在这里,k当前时间和p是预测视界。如果你指定小于p值时,最终的ECR值用于预测范围的其余步骤。
的名字
- OV名称OV名称,指定为字符串或字符向量。
单位
- OV单位""
(默认)| string |字符向量OV单位,指定为字符串或字符向量。
ScaleFactor
- OV比例因子1
(默认)|正有限标量OV尺度因子,指定为正的有限标量。一般情况下,使用输出变量的操作范围。指定适当的比例因子可以改善优化的数值调节。有关更多信息,请参见指定比例因子.
DisturbanceVariables
- - - - - -输入扰动变量信息和尺度因子扰动变量(DV)信息和比例因子,指定为具有的结构数组Nd元素,Nd是测量的和未测量的扰动输入的总数。内部扰动信号的顺序DisturbanceVariables
以下是:第一个N医学博士最后一项与测量的输入扰动有关Nud条目与未测量的输入干扰有关。
要访问此属性,可以使用别名DV
而不是DisturbanceVariables
.
每个结构元素都有以下字段。
的名字
- DV名称DV名称,指定为字符串或字符向量。
单位
- OV单位""
(默认)| string |字符向量OV单位,指定为字符串或字符向量。
ScaleFactor
- DV比例因子1
(默认)|正有限标量DV尺度因子,指定为正的有限标量。指定适当的比例因子可以改善优化的数值调节。有关更多信息,请参见指定比例因子.
权重
- - - - - -标准成本函数调优权重标准成本函数调优权重,指定为结构。控制器将这些权重应用于缩放的变量。因此,调优权重是无量纲值。
的格式OutputWeights
必须匹配的格式权重。OutputVariables
属性。例如,您不能在控制器对象的预测范围内指定恒定权重,然后使用指定时变权重mpcmoveopt
.
权重
具有以下字段。这些字段的值取决于您使用的是标准成本函数还是替代成本函数。有关这些成本函数的更多信息,请参见优化问题.
ManipulatedVariables
-操纵可变调优权重操纵的可变调优权重,用于惩罚偏离MV目标的偏差,指定为行向量或非负值数组。所有操作变量的默认权重为0
.
若要在整个预测范围内使用相同的权重,请指定长度的行向量Nmv,在那里Nmv是被操纵变量的数量。
在预测范围内随时间变化调整权重k时间k+p-1,指定数组Nmv列和至p行。在这里,k当前时间和p是预测视界。每行包含一个预测水平步的操纵变量调优权重。如果你指定小于p行,最后一行中的权重用于预测范围的其余步骤。
如果使用替代成本函数,请指定权重。米anipulatedVariables
控件的单元格数组Nmv——- - - - - -NmvRu矩阵。例如,mpcobo . weights . manipulatedvariables = {Ru}
.Ru一定是正的半定矩阵。改变Ru不支持跨预测水平的矩阵。金宝app有关更多信息,请参见替代成本函数.
ManipulatedVariablesRate
-操纵可变率调整权重操纵的可变速率调优权重,用于惩罚控制移动中的较大变化,指定为行向量或非负值数组。所有被操纵的可变利率的默认权重为0.1
.
若要在整个预测范围内使用相同的权重,请指定长度的行向量Nmv,在那里Nmv是被操纵变量的数量。
在预测范围内随时间变化调整权重k时间k+p-1,指定数组Nmv列和至p行。在这里,k当前时间和p是预测视界。每行包含一个预测水平步骤的操纵变量率调优权重。如果你指定小于p行,最后一行中的权重用于预测范围的其余步骤。
请注意
使用非零操纵的可变率权重是最佳实践。
为了提高优化问题的数值鲁棒性,软件添加了数量10 * sqrt (eps)
到每个零值权重。
请注意
使用非零操纵的可变率权重是最佳实践。如果所有操纵的变量率权重都是严格正的,那么所得到的QP问题是严格凸的。如果某些权重为零,则QP黑森可以是正半定的。为了保持QP问题的严格凸性,当条件数为Hessian矩阵时KΔU大于1012,数量10 * sqrt (eps)
加到每一对角线项上。看到成本函数.
如果使用替代成本函数,请指定权重。米anipulatedVariablesRate
控件的单元格数组Nmv——- - - - - -NmvRΔu矩阵。例如,mpcobo . weights . manipulatedvariablesrate = {Rdu}
.RΔu一定是正的半定矩阵。改变RΔu不支持跨预测水平的矩阵。金宝app有关更多信息,请参见替代成本函数.
OutputVariables
-输出可变调优权重输出变量调优权重,用于惩罚与输出引用的偏差,指定为行向量或非负值数组。所有输出变量的默认权重为1
.
若要在整个预测范围内使用相同的权重,请指定长度的行向量Ny,在那里Ny是输出变量的个数。
在预测范围内随时间变化调整权重k+1到时间k+p,指定数组Ny列和至p行。在这里,k当前时间和p是预测视界。每行包含一个预测水平步的输出变量调优权重。如果你指定小于p行,最后一行中的权重用于预测范围的其余步骤。
如果使用替代成本函数,请指定权重。OutputVariables
控件的单元格数组Ny——- - - - - -Ny问矩阵。例如,mpcobo . weights . outputvariables = {Q}
.问一定是正的半定矩阵。改变问不支持跨预测水平的矩阵。金宝app有关更多信息,请参见替代成本函数.
ECR
-松弛可变调重1 e5
(默认)|正标量松弛变量调优权重,指定为正标量。增加或减少同等关注松弛(ECR)权重,分别使所有软约束更硬或更软。
优化器
- - - - - -QP优化参数QP优化参数,指定为具有以下字段的结构。前四个领域,算法
,ActiveSetOptions
,InteriorPointOptions
而且MixedIntegerOptions
,都与内置求解器有关。如果您选择使用自定义求解器进行模拟(通过设置CustomSolver
来真正的
)这四个字段在模拟时被忽略。同样,如果您选择使用自定义求解器进行代码生成(通过设置CustomSolverCodeGen
来真正的
)这四个字段在代码生成时被忽略。
有关支持的QP求解器的更多信息,请参见金宝appQP解决者.
算法
- QP求解算法“激活集”
(默认)|“内点”
QP求解算法,指定为以下之一:
“激活集”
—使用KWIK active-set算法解决QP问题。
“内点”
-使用带Mehrotra预测-校正器的原对偶内点算法解决QP问题。
对于需要解决QP问题的应用程序,还可以使用mpcActiveSetSolver
而且mpcInteriorPointSolver
函数,分别。
ActiveSetOptions
-主动设置QP求解器设置主动设置QP求解器设置,指定为结构。这些设置仅适用于算法
是“激活集”
,以及类型
所有被操纵变量的属性为“连续”
.
您可以指定以下活动设置优化器设置。
MaxIterations
-最大迭代次数“默认”
(默认值)|正整数计算QP解决方案时允许的最大迭代次数,指定为以下之一:
“默认”
—MPC控制器自动计算QP求解器迭代的最大次数为
,地点:
nc是横跨预测范围的约束的总数。
nv是控制范围内优化变量的总数。
默认的MaxIterations
值的下界为120
.
正整数——QP求解器在指定的迭代次数后停止。如果求解器在最终迭代中未能收敛,则控制器:
冻结控制器移动,如果UseSuboptimalSolution
是假
.
应用最终迭代后得到的次优解UseSuboptimalSolution
是真正的
.
请注意
默认的MaxIterations
对于某些控制器配置,例如具有较大预测和控制范围的控制器配置,值可能非常大。在模拟这类控制器时,如果QP求解器无法找到可行的解,则模拟可能会出现停止响应,因为求解器会继续搜索MaxIterations
迭代。
ConstraintTolerance
-用于验证满足不等式约束的公差1 e-6
(默认)|正标量公差用于验证不等式约束被最优解满足,指定为正标量。一个更大的ConstraintTolerance
值允许更大的约束违反。
UseWarmStart
-标记是否热启动每个QP求解器迭代真正的
(默认)|假
指示是否温暖的开始每次QP求解器迭代,通过传入前一次迭代的活动不等式列表,指定为逻辑值。当相等的部分为真时,不等式是有效的。
InteriorPointOptions
-内部点QP求解器设置内点QP求解器设置,指定为结构。这些设置仅适用于算法
是“内点”
,以及类型
所有被操纵变量的属性为“连续”
.
您可以指定以下内部点优化器设置。
MaxIterations
-最大迭代次数50
(默认值)|正整数计算QP解决方案时允许的最大迭代次数,指定为正整数。QP求解器在指定的迭代次数后停止。如果求解器在最终迭代中未能收敛,则控制器:
冻结控制器移动,如果UseSuboptimalSolution
是假
.
应用最终迭代后得到的次优解UseSuboptimalSolution
是真正的
.
ConstraintTolerance
-用于验证满足相等和不相等约束的公差1 e-6
(默认)|正标量公差用于验证最优解满足等式和不等式约束,指定为正标量。一个更大的ConstraintTolerance
值允许更大的约束违反。
OptimalityTolerance
-一阶最优性的终止容差(KKT双残差)1 e-6
(默认)|正标量一阶最优性(KKT双残差)的终止容差,指定为正标量。
ComplementarityTolerance
-一阶最优性的终止容差(KKT平均互补残差)1 e-8
(默认)|正标量一阶最优性的终止容差(KKT平均互补残差),指定为正标量。增加这个值可以提高健壮性,而减少这个值可以提高准确性。
StepTolerance
-决策变量的终止容忍度1 e-8
(默认)|正标量决策变量的终止容差,指定为正标量。
MixedIntegerOptions
-混合整数QP求解器设置混合整数QP求解器设置,指定为结构。此设置适用于任何被操作的变量类型
不属于“连续”
.在这种情况下,使用了内置的混合整数KWIK算法,实现了分支和绑定方法。
您可以指定以下混合整数QP优化器设置。
MaxIterations
-最大迭代次数1000
(默认值)|正整数计算混合整数QP解决方案时允许的最大迭代数,指定为正整数。混合整数QP求解器在指定的迭代次数后停止。如果求解器在最终迭代中未能收敛,则控制器:
冻结控制器移动,如果UseSuboptimalSolution
是假
.
应用最终迭代后得到的次优解UseSuboptimalSolution
是真正的
.
ConstraintTolerance
-用于验证满足相等和不相等约束的公差1 e-6
(默认)|正标量公差用于验证最优解满足等式和不等式约束,指定为正标量。一个更大的ConstraintTolerance
值允许更大的约束违反。
DiscreteConstraintTolerance
-用于验证满足离散操作变量约束的公差1 e-6
(默认)|正标量公差用于验证离散操作变量中的约束被最优解满足,指定为正标量。一个更大的DiscreteConstraintTolerance
值允许更大的约束违反。
RoundingAtRootNode
-标记在根节点上舍入解决方案1
(默认值)| 0标志,以在根节点上舍入解决方案,作为布尔值指定。当RoundingAtRootNode
=1
时,求解器对在搜索树的根节点上求解的松弛QP问题的解进行舍入,从而满足离散约束。然后,针对剩余的(连续的)变量,求解一个附加的QP。如果这样的QP存在可行解,则将相应的代价作为原始混合整数问题最优解的有效上限。拥有这样的上界可能会在求解器的其余执行中消除整个子树,并加速以下QP松弛的求解。除非迭代次数MaxIterations
是渺小,就值得设定吗RoundingAtRootNode
=1
.否则,设置RoundingAtRootNode
=0
避免解决额外的QP。
MaxPendingNodes
—最大待处理节点数1000
(默认)|正标量这是可以存储的待定QP松弛的最大数量。它决定了分配给存储所有未决QP松弛的内存,这与(2*成正比米+ 3 *Nd) *MaxPendingNodes
,在那里米不等式的个数是多少Nd是离散变量的个数。如果挂起的放松数量超过MaxPendingNodes
然后用状态码停止求解器3
,4
或5
.
MinOutputECR
-允许输出约束ECR值的最小值0
(默认)|非负标量允许输出约束相等关注松弛(ECR)值的最小值,指定为非负标量。值为0
表示允许硬输出约束。如果其中任何一个OutputVariables。MinECR
或OutputVariables。MaxECR
MPC控制器的特性小于MinOutputECR
时,显示警告,并将值提升为MinOutputECR
在计算。
UseSuboptimalSolution
—次优解决方案是否可接受的标志假
(默认)|真正的
标志,指示次优解决方案是否可接受,指定为逻辑值。当QP求解器达到最大迭代次数而没有找到解决方案时(退出标志为0
),控制器:
如果冻结MV值UseSuboptimalSolution
是假
应用求解器在最后迭代后发现的次优解,如果UseSuboptimalSolution
是真正的
的值指定最大迭代次数算法
,使用ActiveSetOptions。MaxIterations
或InteriorPointOptions。MaxIterations
.
CustomSolver
-是否使用自定义QP求解器进行模拟的标志假
(默认)|真正的
标志,指示是否使用自定义QP求解器进行模拟,指定为逻辑值。如果CustomSolver
是真正的
时,用户必须提供mpcCustomSolver
MATLAB函数®路径。
此自定义求解器不用于代码生成。要使用自定义求解器为控制器生成代码,请使用CustomSolverCodeGen
.
如果CustomSolver
是真正的
,控制器不需要自定义解算器来实现其中的设置ActiveSetOptions
或InteriorPointOptions
.
你也可以使用这个函数setCustomSolver
自动配置mpcobj
的active-set算法quadprog
(优化工具箱)作为模拟和代码生成的自定义QP求解器。
有关使用自定义QP求解器的更多信息,请参阅,QP解决者.
CustomSolverCodeGen
-是否使用自定义QP求解器进行代码生成的标志假
(默认)|真正的
标志,指示是否使用自定义QP求解器进行代码生成,指定为逻辑值。如果CustomSolverCodeGen
是真正的
时,用户必须提供mpcCustomSolverCodeGen
函数的MATLAB路径。
此自定义求解器不用于模拟。要使用自定义求解器模拟控制器,请使用CustomSolver
.
你也可以使用这个函数setCustomSolver
自动配置mpcobj
的active-set算法quadprog
(优化工具箱)作为模拟和代码生成的自定义QP求解器。
有关使用自定义QP求解器的更多信息,请参阅,QP解决者.
笔记
- - - - - -用户的笔记{}
(默认)|字符向量的单元格数组与MPC控制器相关联的用户注释,指定为字符向量的单元格数组。
用户数据
- - - - - -用户数据[]
(默认)|任意MATLAB数据与MPC控制器相关联的用户数据,指定为任何MATLAB数据,例如单元数组或结构。
历史
- - - - - -控制器创建日期和时间此属性是只读的。
控制器创建日期和时间,指定为具有以下元素的向量:
(1)历史
年
(2)历史
每月
(3)历史
天
(4)历史
- - - - - -小时
(5)历史
- - - - - -分钟
(6)历史
- - - - - -秒
审查 |
检查MPC控制器的设计错误和运行时的稳定性问题 |
mpcmove |
计算最优控制动作并更新控制器状态 |
sim卡 |
用线性装置在闭环中模拟MPC控制器 |
mpcstate |
MPC控制器状态 |
getCodeGenerationData |
创建数据结构mpcmoveCodeGeneration |
generateExplicitMPC |
将隐式MPC控制器转换为显式MPC控制器 |
创建带有传递函数的植物模型 .
Plant = tf([1 1],[1 20 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 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.
为了最小化计算开销,模型预测控制器的创建分为两个阶段。第一个发生在创建当你使用货币政策委员会
函数,或者在更改控制器属性时。创建包括基本的有效性和一致性检查,如信号维度和权重的非负性。
第二阶段是初始化,当您在模拟或分析过程中首次使用该对象时,就会发生这种情况。初始化计算高效数值性能所需的所有常量属性,例如定义最优控制问题的矩阵和状态估计器增益。此外,在初始化期间还会进行诊断检查,例如验证控制器状态是否可观察。
默认情况下,两个阶段都在命令窗口中显示信息消息。属性可以打开或关闭这些消息mpcverbosity
函数。
方法还可以创建模型预测控制器MPC设计师应用程序。
R2018b开始的错误
金宝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コマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。