主要内容

货币政策委员会

模型预测控制器

描述

模型预测控制器使用线性设备、干扰和噪声模型来估计控制器状态并预测未来设备输出。该控制器利用预测的设备输出,解决了二次规划优化问题来确定控制动作。

有关模型预测控制器结构的更多信息,请参见MPC预测模型

创建

描述

mpcobj= mpc (植物基于离散时间预测模型创建模型预测控制器对象植物.控制器,mpcobj继承其控制间隔工厂。Ts,其时间单位为工厂。TimeUnit.所有其他控制器属性都是默认值。在创建MPC控制器之后,可以使用点表示法设置它的属性。

如果工厂。Ts=-1,你必须设置Ts在设计和模拟控制器之前,将控制器的属性设置为正值。

mpcobj= mpc (植物ts根据指定的设备模型创建模型预测控制器,并设置Ts属性。如果植物是:

  • 一个连续时间模型,然后控制器离散模型预测使用样本时间ts

  • 该控制器是一个具有指定采样时间的离散时间模型,利用采样时间对植物进行采样预测ts

  • 具有未指定样本时间的离散时间模型(工厂。Ts1),它继承了采样时间ts当用于预测时。

例子

mpcobj= mpc (植物tsPWMV机汇DV指定以下控制器属性。如果省略其中任何值或为空,则应用默认值。

  • P设置PredictionHorizon财产。

  • 设置ControlHorizon财产。

  • W设置权重财产。

  • MV设置ManipulatedVariables财产。

  • 机汇设置OutputVariables财产。

  • DV设置DisturbanceVariables财产。

mpcobj= mpc (模型基于指定的预测模型集创建模型预测控制器对象,该模型集包括设备、输入扰动和测量噪声模型以及获得模型时的标称条件。当你不指定采样时间,植物模型,模型。植物,一定是离散时间模型。此语法设置模型属性。

mpcobj= mpc (模型ts根据指定的设备模型创建模型预测控制器,并设置Ts属性的值ts.如果模型。植物是一个具有未指定样本时间的离散时间LTI模型(model.Plant.Ts1),它继承了采样时间ts当用于预测时。

mpcobj= mpc (模型tsPWMV机汇DV指定额外的控制器属性。如果省略其中任何值或为空,则应用默认值。

输入参数

全部展开

工厂预测模型,指定为LTI模型或线性系统识别工具箱™模型。指定的植物对应于模型。植物属性。

如果在创建控制器时不指定采样时间,植物一定是离散时间模型。预测,植物如果需要使用,是否进行离散化或重采样mpcobj。Ts作为采样时间。如果存在延迟,则将其合并到结果离散时间模型中。

有关MPC预测模型的更多信息,请参见MPC预测模型

请注意

直接馈通从操纵变量的任何输出植物不支持。金宝app

例子:特遣部队(10、10 [1])

的格式指定为结构的预测模型模型属性。如果在创建控制器时不指定采样时间,模型。植物一定是离散时间模型。

有关MPC预测模型的更多信息,请参见MPC预测模型

属性

全部展开

控制器采样时间,指定为正的有限标量。该控制器采用具有采样时间的离散时间模型Ts为预测。继承的时间单位工厂。TimeUnit

例子:mpcobj。Ts=0.1

预测水平步长,指定为正整数。的乘积PredictionHorizon而且Ts为预测时间;也就是说,控制器预测未来的距离。

如果您指定的预测范围不大于覆盖所有输入输出通道中最长延迟所需的步骤数,Nd = max(mpcoj . model . plant . iodelay (:))/ mpcoj . ts . Nd = max(mpcoj . model . plant . iodelay (:),则软件自动将预测水平增加地板(Nd)

例子:mpcobj。PredictionHorizon = 15

控制水平,指定为以下之一:

  • 正整数,之间,1而且p,其中p等于PredictionHorizon.在这种情况下,控制器进行计算有时会出现自由控制动作k通过k+-1,并保持控制器输出恒定的剩余预测水平步距k+通过k+p1。在这里,k是当前控制间隔。

  • 正整数向量[12,…],指定阻塞间隔的长度。默认情况下,控制器进行计算方块的自由移动,在哪里是阻塞间隔的数量。第一个自由动作适用于时间k通过k+1-1,第二个自由移动适用于时间k+1通过k+1+2-1,等等。使用块移动可以提高控制器的鲁棒性。中的值的和ControlHorizon必须匹配预测视界p.如果指定一个向量,其和为:

    • 小于预测水平,则控制器增加一个阻塞间隔。这个间隔的长度是这样的,以至于间隔长度的和是p.例如,如果p10你指定一个控制视界ControlHorizon[1 2 3],则控制器使用四个具有长度的间隔[1 2 3 4]

    • 大于预测视界,则对区间进行截断,直到区间长度之和等于p.例如,如果p10你指定一个控制视界ControlHorizon[1 2 3 6 7],则控制器使用四个具有长度的间隔[1 2 3 4]

    有关操纵变量阻塞的更多信息,请参见操纵变量阻塞

例子:mpcobj。ControlHorizon = 3

预测模型和标称条件,指定为具有以下字段的结构。有关MPC预测模型的更多信息,请参见MPC预测模型而且控制器状态估计

工厂预测模型,指定为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

对于连续时间模型,DX为工作点处的状态导数:DXfXU).对于离散时间模型,DXxk+ 1) -xk) =fXU) - - -X.指定DX作为一个列向量它的长度等于状态的个数模型。植物

零向量

的结构数组指定的可操作变量(MV)信息、边界和比例因子Nmv元素,Nmv是被操纵变量的数量。要访问此属性,可以使用别名MV而不是ManipulatedVariables

请注意

房价参照差价Δuk) =uk) - - -uk1)。基于导数的约束和权重du / dt的连续时间输入信号必须适当地重新表述离散时间差Δuk),使用近似du / dt≅Δuk) /T年代

每个结构元素都有以下字段。

指定为标量或向量的给定操作变量的下界。默认情况下,这个下界为

若要在整个预测范围内使用相同的界限,请指定一个标量值。

随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(1)。最小值= -5

指定为标量或向量的给定操作变量的上界。缺省情况下,该上限为

若要在整个预测范围内使用相同的界限,请指定一个标量值。

随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(1)。Max = 5

给定操纵变量的下界的柔软度。对松弛的同等关注(ECR)值越大表示约束越软,指定为非负标量或向量。默认情况下,MV下界是硬约束。

要在整个预测范围内使用相同的ECR值,请指定一个标量值。

在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(1)。MinECR = 0.01

给定操纵变量的上界的柔软性。对松弛的同等关注(ECR)值越大表示约束越软,指定为非负标量或向量。默认情况下,MV上界是硬约束。

要在整个预测范围内使用相同的ECR值,请指定一个标量值。

在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(1)。MaxECR = 0.01

给定操作变量的变化率的下界,指定为非正标量或向量。MV变化率定义为MVk) - - -MVk1),k是当前时间。默认情况下,这个下界为

若要在整个预测范围内使用相同的界限,请指定一个标量值。

随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(1)。RateMin = -2

给定操作变量的变化率的上界,指定为非负标量或向量。MV变化率定义为MVk) - - -MVk1),k是当前时间。默认情况下,这个下界为

若要在整个预测范围内使用相同的界限,请指定一个标量值。

随时间改变预测视界的范围k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(1)。RateMax = 2

一个给定的操纵变量的变化率的下界的柔软性。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,MV变化率下界为硬约束。

要在整个预测范围内使用相同的ECR值,请指定一个标量值。

在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最终ECR值用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(2)。RateMinECR = 0.01

一个给定的操纵变量的变化率的上界的柔软性。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,MV变化率上界为硬约束。

要在整个预测范围内使用相同的ECR值,请指定一个标量值。

在预测范围内随时间变化ECR值k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最终ECR值用于预测范围的其余步骤。

例子:mpcobj.ManipulatedVariables(2)。RateMaxECR = 0.01

指定为标量、向量或的给定操作变量的目标“名义”(默认)。当目标“名义”,则所操作的变量目标对应于mpcobj.Model.Nominal.U

若要在整个预测范围内使用相同的目标,请指定一个标量值。

在预测范围内随时间改变目标k时间k+p-1,指定一个向量p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的值用于预测范围的其余步骤。

当您的操作变量多于工厂的输出时,出于经济或操作原因,您可能希望为一些操作变量设置目标值,以及相应的非零成本函数权值。有关更多信息,请参见非方形装置MPC控制器设计而且为操纵变量设置目标

例子:mpcobj.ManipulatedVariables(2)。目标= [0.3 0.2]

给定操作变量的名称,指定为字符串或字符向量。这是一个只读属性。要修改操作变量的名称,请使用mpcobj.Model.Plant.InputName

例子:mpcobj.ManipulatedVariables (2) . name

给定操作变量的单位,指定为字符串或字符向量。这是一个只读属性。要修改操作变量的单位,请使用mpcobj.Model.Plant.InputUnit

例子:mpcobj.ManipulatedVariables .Units (2)

给定操作变量的比例因子,指定为正的有限标量。指定适当的比例因子可以改善优化的数值条件。一般情况下,使用操纵变量的操作范围的振幅。有关更多信息,请参见指定比例因子

例子:mpcobj.ManipulatedVariables(1)。ScaleFactor = 10

给定操作变量的类型,指定为:

  • “连续”-这表示操作的变量是连续的。

  • “二元”-这将限制操作变量为0或1。

  • “整数”-这限制操作变量为整数。

  • 包含所有可能值的向量——例如,这将操作变量限制为指定的值mpcobj.MV(1)。类型=[-1,0,0.5,1,2];

缺省情况下,该类型设置为“连续”

有关更多信息,请参见离散控制集MPC

例子:mpcobj.ManipulatedVariables(1)。Type = 'binary'

的结构数组指定的输出变量(OV)信息、边界和比例因子Ny元素,Ny是输出变量的个数。要访问此属性,可以使用别名机汇而不是OutputVariables

每个结构元素都有以下字段。

给定输出变量的下界,指定为标量或向量。默认情况下,这个下界为

若要在整个预测范围内使用相同的界限,请指定一个标量值。

随时间改变预测视界的范围k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。

例子:mpcobj.OutputVariables(1)。最小值= -10

指定为标量或向量的给定输出变量的上界。缺省情况下,该上限为

若要在整个预测范围内使用相同的界限,请指定一个标量值。

随时间改变预测视界的范围k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的界限用于预测范围的其余步骤。

例子:mpcobj.OutputVariables(1)。Max = 10

给定输出变量的下界的柔软度。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,OV上界是软约束。

为了避免在运行时产生不可行的优化问题,最好使用软OV边界。

要在整个预测范围内使用相同的ECR值,请指定一个标量值。

在预测范围内随时间变化ECR值k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。

例子:mpcobj.OutputVariables(1)。MinECR = 5

给定输出变量的上界的柔软度。更大的同等松弛关注(ECR)值表示一个更软的约束,指定为一个非负的有限标量或向量。默认情况下,OV下界为软约束。

为了避免在运行时产生不可行的优化问题,最好使用软OV边界。

要在整个预测范围内使用相同的ECR值,请指定一个标量值。

在预测范围内随时间变化ECR值k+1到时间k+p,指定一个向量为p值。在这里,k当前时间是和p为预测视界。如果指定小于p值,最后的ECR值用于预测范围的其余步骤。

例子:mpcobj.OutputVariables(1)。MaxECR = 10

给定输出变量的名称,指定为字符串或字符向量。这是一个只读属性。要修改输出变量的名称,请使用mpcobj.Model.Plant.OutputName

例子:mpcobj.OutputVariables (2) . name

给定输出变量的单位,指定为字符串或字符向量。这是一个只读属性。要修改输出变量的名称,请使用mpcobj.Model.Plant.OutputUnit

例子:mpcobj.OutputVariables .Units (2)

给定输出变量的比例因子,指定为一个正的有限标量。指定适当的比例因子可以改善优化的数值条件。一般情况下,使用输出变量的操作范围。有关更多信息,请参见指定比例因子

例子:mpcobj.OutputVariables(1)。ScaleFactor = 20

扰动变量(DV)信息和尺度因子,指定为具有Nd元素,Nd是已测扰动输入和未测扰动输入的总数。内部干扰信号的顺序DisturbanceVariables以下是第一个吗N医学博士最后一项与测量的输入干扰有关Nud条目与未测量的输入干扰有关。

要访问此属性,可以使用别名DV而不是DisturbanceVariables

每个结构元素都有以下字段。

DV名称,指定为字符串或字符向量。这是一个只读属性。若要修改扰动变量的名称,请使用mpcobj.Plant.Inputname

例子:mpcobj.DisturbanceVariables (1) . name

OV单位,指定为字符串或字符向量。这是一个只读属性。要修改干扰变量的单位,使用mpcobj.Model.Plant.InputUnit

例子:mpcobj.DisturbanceVariables (1) .Units

DV比例因子,指定为正的有限标量。指定适当的比例因子可以改善优化的数值条件。有关更多信息,请参见指定比例因子

例子:mpcobj.DisturbanceVariables(1)。ScaleFactor = 15

标准成本函数调优权值,指定为结构。控制器将这些权重应用到缩放变量上。因此,调优权值为无量纲值。

的格式OutputWeights格式必须匹配权重。OutputVariables属性。例如,您不能在控制器对象中指定横跨预测范围的恒定权重,然后使用mpcmoveopt

权重具有以下字段。这些字段的值取决于您使用的是标准成本函数还是替代成本函数。有关这些成本函数的更多信息,请参见优化问题

操纵变量调优权值,用于惩罚偏离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]

操纵的可变率调优权值,它惩罚控制移动中的较大更改,指定为行向量或非负值的数组。所有操纵变量的默认权重为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]

输出变量调优权值,它惩罚偏离输出引用的情况,指定为行向量或非负值的数组。所有输出变量的默认权重为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)权值,分别使所有软约束变硬或变软。

例子:mpcoj . weights . ecr = 1e4

QP优化参数,指定为具有以下字段的结构。前四个领域,算法ActiveSetOptionsInteriorPointOptions而且MixedIntegerOptions,都与内置求解器有关。如果您选择使用自定义求解器进行模拟(通过设置CustomSolver真正的)这四个字段在模拟时被忽略。同样,如果您选择使用自定义求解器进行代码生成(通过设置CustomSolverCodeGen真正的)这四个字段在代码生成时被忽略。

有关支持的QP求解器的更多信息,请参见金宝appQP解决者

QP求解算法,指定为以下之一:

  • “激活集”—使用KWIK active-set算法解决QP问题。

  • “内点”-使用带Mehrotra预测校正器的原对偶内点算法解决QP问题。

对于需要解决QP问题的应用程序,还可以使用mpcActiveSetSolver而且mpcInteriorPointSolver函数,分别。

例子:mpcoco . optimizer . algorithm = ' inner -point'

主动设置QP求解器设置,指定为一个结构。这些设置仅适用于以下情况算法“激活集”,以及类型所有被操作变量的性质是“连续”

您可以指定以下活动设置优化器设置。

计算QP解时允许的最大迭代次数,指定为以下之一:

  • “默认”—MPC控制器自动计算QP求解器的最大迭代次数为 4 n c + n v ,地点:

    • nc是横跨预测视界的约束的总数。

    • nv是控制范围内优化变量的总数。

    默认的MaxIterations值的下界为120

  • 正整数——QP求解器在指定的迭代次数后停止。如果在最后迭代中求解器不能收敛,则控制器:

    • 如果冻结控制器的移动UseSuboptimalSolution

    • 应用在最后迭代之后得到的次优解,如果UseSuboptimalSolution真正的

请注意

默认的MaxIterations对于某些控制器配置,例如具有较大预测和控制范围的控制器,值可能非常大。在模拟这样的控制器时,如果QP求解器不能找到一个可行的解,模拟可能会停止响应,因为求解器会继续寻找一个解,直到迭代次数达到MaxIterations

例子:mpcoj . optimizer . activesetoptions . maxiterations = 2000

公差用于验证不等式约束由指定为正标量的最优解满足。一个更大的ConstraintTolerance值允许更大的约束违反。

例子:mpcoco . optimizer . activesetoptions . constraintolerance = 1e-5

选项,指示是否温暖的开始每个QP求解器迭代通过传入来自前一个迭代的活动不等式列表,指定为一个逻辑值。当不等式的等分为真时,不等式是活跃的。

例子:mpcoj . optimizer . activesetoptions . usewarmstart = true

内点QP求解器设置,指定为一个结构。这些设置仅适用于以下情况算法“内点”,以及类型所有被操作变量的性质是“连续”

您可以指定以下内部点优化器设置。

计算QP解时允许的最大迭代次数,指定为正整数。QP求解器在指定的迭代次数之后停止。如果在最后迭代中求解器不能收敛,则控制器:

  • 如果冻结控制器的移动UseSuboptimalSolution

  • 应用在最后迭代之后得到的次优解,如果UseSuboptimalSolution真正的

例子:mpcoco . optimizer . internorpointoptions . maxiterations = 30

公差用于验证最优解满足等式和不等式约束,指定为正标量。一个更大的ConstraintTolerance值允许更大的约束违反。

例子:mpcoco . optimizer . internorpointoptions . constraintolerance = 1e-5

一阶最优性(KKT对偶残差)的终止公差,指定为正标量。

例子:mpcoco . optimizer . internorpointoptions . optimalitytolerance = 1e-5

一阶最优性的终止容忍(KKT平均互补残差),指定为正标量。增加这个值可以提高健壮性,而减少这个值可以提高准确性。

例子:mpcoj . optimizer . interiorpointoptions . complementary aritytolerance = 1e-6

决策变量的终止公差,指定为正标量。

例子:mpcoj . optimizer . internorpointoptions . steptolerance = 1e-7

混合整数QP求解器设置,指定为结构。当任何被操作的变量具有类型不是财产“连续”.在本例中,使用了一个构建的混合整数KWIK算法,该算法实现了分支和定界方法。

可以指定以下混合整数QP优化器设置。

计算混合整数QP解时允许的最大迭代次数,指定为正整数。混合整数QP求解器在指定次数的迭代之后停止。如果在最后迭代中求解器不能收敛,则控制器:

  • 如果冻结控制器的移动UseSuboptimalSolution

  • 应用在最后迭代之后得到的次优解,如果UseSuboptimalSolution真正的

例子:mpcoj . optimizer . mixedintegeroptions . maxiterations = 500

公差用于验证最优解满足等式和不等式约束,指定为正标量。一个更大的ConstraintTolerance值允许更大的约束违反。

例子:mpcoj . optimizer . mixedintegeroptions . constraintolerance = 1e-5

公差用于验证离散操作变量中的约束由指定为正标量的最优解满足。一个更大的DiscreteConstraintTolerance值允许更大的约束违反。

例子:mpcoj . optimizer . mixedintegeroptions . discrete teconstraintolerance = 1e-5

选项在根节点(指定为布尔值)处舍入解决方案。当RoundingAtRootNode1,求解器对在搜索树的根节点上求解的松弛QP问题的解舍入,从而满足离散约束。然后,一个附加的QP是相对于剩余的(连续的)变量求解的。如果这种QP存在可行解,则将其对应的代价作为原混合整数问题最优解的有效上界。拥有这样的上界可以在求解器的其余执行过程中消除整个子树,并加速解决以下QP松弛问题。除非迭代的次数MaxIterations是小,它值得设置吗RoundingAtRootNode1.否则,设置RoundingAtRootNode0避免解决额外的QP。

例子:mpcoj . optimizer . mixedintegeroptions . roundingatrootnode = true

这是可存储的挂起QP松弛的最大数量。它决定了分配给存储所有挂起的QP松弛的内存,它与(2*)成正比+ 3 *Nd) *MaxPendingNodes,在那里不等式的数量是否限制,和Nd是离散变量的个数。如果挂起的松弛次数超过MaxPendingNodes然后用状态码停止求解器345

例子:mpcoj . optimizer . mixedintegeroptions . maxpendingnodes = 2000

允许输出约束同等关注弛豫(ECR)值的最小值,指定为非负标量。的值0指示允许硬输出约束。如果OutputVariables。MinECROutputVariables。MaxECRMPC控制器的属性小于MinOutputECR,显示警告,并将值提升为MinOutputECR在计算。

例子:mpcoj . optimizer . minoutputecr = 1e-10

选项,指示是否可接受次优解决方案,指定为逻辑值。当QP求解器达到迭代的最大次数而没有找到一个解决方案时(退出选项是0),控制器:

  • 冻结MV值如果UseSuboptimalSolution

  • 应用求解器在最后迭代后发现的次优解UseSuboptimalSolution真正的

的值来指定最大迭代次数算法,使用任意一种ActiveSetOptions。MaxIterationsInteriorPointOptions。MaxIterations

例子:mpcoj . optimizer . usesuboptimalsolution = true

选项,指示是否使用自定义QP求解器进行模拟,指定为逻辑值。如果CustomSolver真正的时,用户必须提供mpcCustomSolverMATLAB上的函数®路径。

此自定义求解器不用于代码生成。若要为具有自定义求解器的控制器生成代码,请使用CustomSolverCodeGen

如果CustomSolver真正的,该控制器不需要自定义求解器尊重其中的设置ActiveSetOptionsInteriorPointOptions

您也可以使用该函数setCustomSolver自动配置mpcobj的活动集算法quadprog(优化工具箱)作为一个定制的QP求解器,用于模拟和代码生成。

有关使用自定义QP求解器的更多信息,请参见QP解决者

例子:mpcoj . optimizer . customsolver = true

选项,指示是否使用自定义QP求解器进行代码生成,指定为逻辑值。如果CustomSolverCodeGen真正的时,用户必须提供mpcCustomSolverCodeGen函数在MATLAB路径上。

此自定义求解器不用于模拟。若要用自定义求解器模拟控制器,请使用CustomSolver

您也可以使用该函数setCustomSolver自动配置mpcobj的活动集算法quadprog(优化工具箱)作为一个定制的QP求解器,用于模拟和代码生成。

有关使用自定义QP求解器的更多信息,请参见QP解决者

例子:mpcoco . optimizer . customsolvercodegen = true

与MPC控制器关联的用户注释,指定为字符向量的单元格数组。

例子:mpcobj。笔记={'Longitudinal Controller'; 'Version 2.1'}

与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控制器

例子

全部折叠

创建一个带有传递函数的植物模型 年代 + 1 / 年代 2 + 2 年代

植物= tf([1 1],[1 2 0]);

该工厂是SISO,因此它的输入必须是一个被操纵的变量,它的输出必须被测量。一般来说,最好的做法是使用setmpcsignals命令,或LTIInputGroup而且OutputGroup属性。

为控制器指定一个采样时间。

Ts = 0.1;

定义被操作变量的边界, u ,以致于 - 1 u 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之前介绍过

全部展开