setconstraint

用于模型预测控制器组混合输入/输出限制

描述

setconstraint(MPCobjËFG指定以下形式为MPC控制器的混合输入/输出限制,MPCobj

Ëüķ+Ĵ|ķ)+Fÿķ+Ĵ|ķ)≤G+ε

欲了解更多信息,请参阅混合型输入/输出限制

setconstraint(MPCobjËFGV增加了以下形式的约束:

Ëüķ+Ĵ|ķ)+Fÿķ+Ĵ|ķ)≤G+εV

使用此语法指定硬自定义约束,或者更改默认约束软化。

setconstraint(MPCobjËFGV小号增加了以下形式的约束:

Ëüķ+Ĵ|ķ)+Fÿķ+Ĵ|ķ)+小号vķ+Ĵ|ķ)≤G+εV

如果您的混合输入/输出约束条件包括测量的扰动,请使用此语法。

setconstraint(MPCobj去除MPC控制器全部混合输入/输出限制。

例子

全部收缩

指定形式的约束 0 ü 2 - 2 ü 3 + ÿ 2 1 上MPC控制器。

创建具有三个操纵变量和两个测量的输出三阶工厂模型。

植物= RSS(3,2,3);plant.D = 0;

创建这家工厂的MPC控制器。

MPCobj = MPC(植物,0.1);
- >“MPC”对象的“PredictionHorizo​​n”属性是空的。试图PredictionHorizo​​n = 10  - >的“MPC”对象的“ControlHorizo​​n”属性是空的。假设2。 - >“MPC”对象的“We​​ights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“We​​ights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“We​​ights.OutputVariables”属性是空的。假设默认1.00000。

制定的所需形式的约束:

[ 0 - 1 2 0 1 - 2 ] [ ü 1 ü 2 ü 3 ] + [ 0 - 1 0 1 ] [ ÿ 1 ÿ 2 ] [ 0 1 ] + ε [ 1 1 ]

指定约束矩阵。

E = [0 -1 2 0 1 -2];F = [0 -1 0 1];G = [0; 15];

坐落在MPC控制器的约束。

setconstraint(MPCobj,E,F,G)

创建具有两个操纵变量和两个测量的输出三阶工厂模型。

植物= RSS(3,2,2);plant.D = 0;

创建这家工厂的MPC控制器。

MPCobj = MPC(植物,0.1);
- >“MPC”对象的“PredictionHorizo​​n”属性是空的。试图PredictionHorizo​​n = 10  - >的“MPC”对象的“ControlHorizo​​n”属性是空的。假设2。 - >“MPC”对象的“We​​ights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“We​​ights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“We​​ights.OutputVariables”属性是空的。假设默认1.00000。

假设你有两个硬约束。

ü 1 + ü 2 ÿ 1 + ÿ 2 1 0

指定约束矩阵。

E = [1 1;0 0];F = [0 0;1 1];G = [5; 10];

指定约束硬的设置V零供双方的约束。

V = [0; 0];

坐落在MPC控制器的约束。

setconstraint(MPCobj,E,F,G,V)

创建具有两个操纵变量,两个测量的干扰,以及两个测量的输出三阶工厂模型。

植物= RSS(3,2,4);plant.D = 0;植物= setmpcsignals(植物,'MV'[1 2],'MD'[3 4]);

创建这家工厂的MPC控制器。

MPCobj = MPC(植物,0.1);
- >“MPC”对象的“PredictionHorizo​​n”属性是空的。试图PredictionHorizo​​n = 10  - >的“MPC”对象的“ControlHorizo​​n”属性是空的。假设2。 - >“MPC”对象的“We​​ights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“We​​ights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“We​​ights.OutputVariables”属性是空的。假设默认1.00000。

假设你有三个软约束。

ü 1 + ü 2 ÿ 1 + v 1 1 0 ÿ 2 + v 2 1 2

指定约束矩阵。

E = [1 1;0 0;0 0];F = [0 0;1 0;0 1];G = [5; 10; 12]。S = [0 0;1 0;0 1];

设置使用默认值在MPC控制器的限制V

setconstraint(MPCobj,E,F,G,[],S)

定义工厂模型和创建MPC控制器。

植物= RSS(3,2,2);plant.D = 0;MPCobj = MPC(植物,0.1);
- >“MPC”对象的“PredictionHorizo​​n”属性是空的。试图PredictionHorizo​​n = 10  - >的“MPC”对象的“ControlHorizo​​n”属性是空的。假设2。 - >“MPC”对象的“We​​ights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“We​​ights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“We​​ights.OutputVariables”属性是空的。假设默认1.00000。

定义控制器自定义的约束。

E = [-1 2;1 -2];F = [0 1;0 -1];G = [0;10];setconstraint(MPCobj,E,F,G)

删除自定义的约束。

setconstraint(MPCobj)
- >卸下混合输入/输出限制。

输入参数

全部收缩

模型预测控制器,指定为MPC控制器对象。要创建MPC控制器,使用MPC

操纵变量约束恒定,指定为ñC-通过-ñMV阵列,其中ñC是约束的数量,和ñMV是操纵变量的数量。

控制的输出约束恒定,指定为ñC-通过-ñÿ阵列,其中ñÿ是受控输出的数目(测定和不可测量)。

混合输入/输出约束恒定,指定为长度的列向量ñC

约束软化常数表示用于松弛(ECR)的同样关注,指定为长度的列向量ñC

如果V未指定,默认值为1适用于所有约束不平等和所有的约束是软的。此行为是一样的输出范围的默认行为,如在标准成本函数

为了使一世硬约束,指定V一世)= 0

为了使一世软约束,指定V一世)> 0与约束违反幅度可以容忍一致。大小违反取决于所涉及的约束变量的数值规模。

在一般情况下,V一世)减小,所述控制器通过减小约束违反被允许硬化的约束。

注意

如果约束是难以满足,降低其V一世)值,使其更难可能会适得其反。这样做可能导致不稳定的控制动作,不稳定,或QP求解器,其确定控制动作的故障。

测量的干扰约束不变,指定为ñC-通过-ñMD阵列,其中ñMD是测量的扰动的数目。

提示

  • 输出,ÿ正被使用模型预测。如果模型是不完美的,没有保证的约束可以得到满足。

  • 由于MPC控制器不优化üķ+p|ķ在补时的最后约束ķ+p假设üķ+p|ķ)=üķ+p-1 |ķ

  • 当模拟MPC控制器,你可以更新ËFG小号在运行时约束阵列。欲了解更多信息,请参阅在运行时更新约束

算法

全部收缩

混合型输入/输出限制

的混合输入/输出限制的一般形式是:

Ëüķ+Ĵ)+Fÿķ+Ĵ)+小号vķ+Ĵ)≤G+εV

这里,Ĵ= 0,...,p和:

  • p是预测范围。

  • ķ是当前时间索引。

  • ü是操纵变量的列向量。

  • ÿ是所有植物输出变量的一个列向量。

  • v是测量的干扰变量的列向量。

  • ε使用标量的松弛变量为约束软化(如在标准成本函数)。

  • ËFGV小号是常数矩阵。

介绍了在R2011a