MATLAB - mpcobj = mpc(model,ts,P,M,W,MV,OV,DV) 函数

系列文章目录


前言


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

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


一、语法

mpcobj = mpc(plant)
mpcobj = mpc(plant,ts)
mpcobj = mpc(plant,ts,P,M,W,MV,OV,DV)
mpcobj = mpc(plant)
mpcobj = mpc(plant,ts)
mpcobj = mpc(plant,ts,P,M,W,MV,OV,DV)

 

二、创建

2.1 说明

        mpcobj = mpc(plant) 根据离散时间预测模型 plant 创建模型预测控制器对象。控制器 mpcobj 的控制间隔继承自 plant.Ts,时间单位继承自 plant.TimeUnit。所有其他控制器属性均为默认值。创建 MPC 控制器后,可以使用点符号设置其属性。

        如果 plant.Ts =-1,则在设计和仿真控制器之前,必须将控制器的 Ts 属性设置为正值。

        mpcobj = mpc(plant,ts) 根据指定的工厂模型创建模型预测控制器,并设置控制器的 Ts 属性。如果工厂是

  • 连续时间模型,则控制器使用采样时间 ts 对模型进行离散预测
  • 具有指定采样时间的离散时间模型,则控制器使用采样时间 ts 对工厂进行重新采样以进行预测
  • 未指定采样时间的离散时间模型(plant.Ts =-1),用于预测时将继承采样时间 ts。

2.1.1 示例

        mpcobj = mpc(plant,ts,P,M,W,MV,OV,DV) 指定了以下控制器属性。如果省略或为空,则使用默认值。

  • P 设置 PredictionHorizon 属性。
  • M 设置 ControlHorizon 属性。
  • W 设置权重属性。
  • MV 设置 ManipulatedVariables(操纵变量)属性。
  • OV 设置输出变量属性。
  • DV 设置干扰变量属性。

        mpcobj = mpc(model)根据指定的预测模型集创建模型预测控制器对象,预测模型集包括工厂、输入干扰和测量噪声模型,以及获取模型的标称条件。如果没有指定采样时间,工厂模型 model.Plant 必须是离散时间模型。此语法设置控制器的模型属性。

        mpcobj = mpc(model,ts) 根据指定的工厂模型创建模型预测控制器,并将控制器的 Ts 属性设置为 ts。如果 model.Plant 是一个未指定采样时间的离散时间 LTI 模型(model.Plant.Ts =-1),则在用于预测时将继承采样时间 ts。

        mpcobj = mpc(model,ts,P,M,W,MV,OV,DV)指定了额外的控制器属性。如果省略或为空,则使用默认值。

2.2 输入参数

plant - 工厂预测模型 —— LTI 线性时不变模型 | 辨识线性模型

  • 工厂预测模型,可指定为 LTI 模型或线性系统识别工具箱(System Identification Toolbox™)模型。指定的工厂与控制器的 Model.Plant 属性相对应。
  • 如果在创建控制器时没有指定采样时间,则工厂必须是离散时间模型。在预测时,如果需要,将使用 mpcobj.Ts 作为采样时间对工厂进行离散化或重新采样。如果存在延迟,则将延迟纳入生成的离散时间模型中。

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

注释:不支持从操纵变量直接馈通到工厂中的任何输出。

        示例:TF(10,[1 10])

model - 预测模型 —— 结构

  • 预测模型,以结构形式指定,格式与控制器的模型属性相同。如果在创建控制器时没有指定采样时间,则 model.Plant 必须是离散时间模型。

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

三、属性

Ts - 控制器采样时间 —— 正标量

  • 控制器采样时间,指定为正有限标量。控制器使用采样时间为 Ts 的离散时间模型进行预测。时间单位继承自 plant.TimeUnit。

示例:mpcobj.Ts = 0.1

PredictionHorizon - 预测范围 —— 10 + 与延迟有关的步长(默认) | 正整数

  • 预测范围步数,指定为正整数。PredictionHorizon 和 Ts 的乘积就是预测时间,即控制器对未来的预测时间。
  • 如果指定的预测范围不大于覆盖所有输入输出通道中最长延迟所需的步数,即 Nd = max(mpcobj.Model.Plant.IODelay(:))/mpcobj.Ts ,则软件会自动按 floor(Nd) 增加预测范围。

示例:mpcobj.PredictionHorizon = 15

ControlHorizon - 控制范围 —— 2(默认) | 正整数 | 正整数向量


        控制范围,指定为以下之一:

  • 介于 1 和 p 之间的正整数 m,其中 p 等于 PredictionHorizon。在这种情况下,控制器会在 k 至 k+m-1 的时间段内计算 m 次自由控制移动,并在 k+m 至 k+p-1 的剩余预测时间段内保持控制器输出不变。这里,k 是当前的控制区间。
  • 正整数向量 [m1,m2,...],指定阻塞区间的长度。默认情况下,控制器会计算 M 个自由移动区间,其中 M 是阻塞区间的个数。第一次自由移动适用于时间 k 至 k+m1-1,第二次自由移动适用于时间 k+m1 至 k+m1+m2-1,以此类推。使用分块移动可以提高控制器的鲁棒性。ControlHorizon 中的值之和必须与预测范围 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

Model - 预测模型和标称条件 —— 结构体


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

  • Plant - 工厂预测模型 —— LTI 模型 | 识别线性模型

        工厂预测模型,指定为 LTI 模型或线性系统识别工具箱模型。

注意

        不支持从操作变量直接馈通到工厂中的任何输出。

示例:mpcobj.Model.Plant = ss(-1,1,1,0)


  • Disturbance - 描述预期未测量干扰的模型 —— LTI 模型

        描述预期未测量干扰的模型,指定为 LTI 模型。只有当设备存在未测量干扰时才需要该模型。您可以使用点符号或 setindist 函数直接设置该扰动模型。

        默认情况下,输入扰动应为积分白噪声。为建立信号模型,会为每个未测量的输入干扰添加一个无量纲统一增益的积分器,除非添加该积分器会导致控制器失去状态可观测性。在这种情况下,预计扰动将是白噪声,因此会为该通道添加一个无量纲统一增益。

        示例:mpcobj.Model.Disturbance = tf(5,[1 5])


  • Noise - 描述预期输出测量噪声的模型 —— LTI 模型

        描述预期输出测量噪声的模型,指定为 LTI 模型。

        默认情况下,测量噪声是具有单位方差的白噪声。为建立信号模型,每个测量通道都会添加一个无量纲统一增益。

        示例:mpcobj.Model.Noise = zpk(0,-1,1)


  • Nominal - 设备模型线性化时的标称运行点 —— 结构体

        设备模型线性化时的标称运行点,以结构形式指定,包含以下字段。

FieldDescriptionDefault
X运行点的设备状态,指定为长度等于 Model.Plant 中状态个数的列向量。zero vector
U运行点上的设备输入,包括操纵变量、测量到的和未测量到的干扰,指定为长度等于 Model.Plant 中输入个数的列向量。zero vector
Y运行点的设备输出(包括已测量和未测量的输出),以列向量形式指定,长度等于 Model.Plant 中的输出数。zero vector
DX对于连续时间模型,DX 是运行点的状态导数: DX=f(X,U)。对于离散时间模型,DX=x(k+1)-x(k)=f(X,U)-X。指定 DX 为列向量,其长度等于 Model.Plant 中的状态数。zero vector

ManipulatedVariables - 受操纵的变量信息、边界和比例因子 —— 结构体数组


        被操纵变量(MV)的信息、边界和比例因子,指定为一个包含 Nmv 元素的结构数组,其中 Nmv 是被操纵变量的个数。要访问此属性,可以使用别名 MV 代替 ManipulatedVariables。

        注释

        速率指的是差值 Δu(k)=u(k)-u(k-1). 对于离散时间差 Δu(k),必须使用近似值 du/dt ≅ Δu(k)/Ts,对基于连续时间输入信号导数 du/dt 的约束条件和权重进行适当的重新表述。

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

  • Min - MV 下限 —— -Inf(默认) | 标量 | 向量

        指定操作变量的下限,以标量或向量形式指定。默认情况下,该下限为 -Inf。

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

        若要在时间 k 至时间 k+p-1 的预测范围内改变约束,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终约束将用于预测范围的剩余步骤。

        示例:mpcobj.ManipulatedVariables(1).Min = -5


  • Max - MV 上限 —— Inf (默认) | 标量 | 向量

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

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

        若要在时间 k 至时间 k+p-1 的预测范围内改变上限,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终约束将用于预测范围的剩余步骤。

        示例:mpcobj.ManipulatedVariables(1).Max = 5


  • MinECR - MV 软下限 —— 0(默认) | 非负标量 | 向量

        给定操作变量软下限。等价松弛(ECR)值越大,表示约束越软,可以指定为非负标量或向量。默认情况下,MV 下限为硬约束。

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

        若要在时间 k 至时间 k+p-1 的预测范围内改变 ECR 值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终 ECR 值将用于预测时间跨度的剩余步骤。

        示例:mpcobj.ManipulatedVariables(1).MinECR = 0.01


  • MaxECR - MV 上限 —— 0(默认) | 非负标量 | 向量

        给定操作变量上限的柔性。等价松弛(ECR)值越大,表示约束越软,可以指定为非负标量或向量。默认情况下,MV 上限为硬约束。

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

        若要在时间 k 至时间 k+p-1 的预测范围内改变 ECR 值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终 ECR 值将用于预测时间跨度的剩余步骤。

        示例:mpcobj.ManipulatedVariables(1).MaxECR = 0.01


  • RateMin - MV 变化率下限 —— -无穷大(默认) | 非正标量 | 向量

        指定受控变量变化率的下限,以非正标量或向量形式指定。MV 变化率定义为 MV(k) - MV(k-1),其中 k 为当前时间。默认情况下,该下限为-Inf。

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

        若要改变从时间 k 到时间 k+p-1 的预测范围内的界限,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终约束将用于预测范围的剩余步骤。

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


  • RateMax - MV 变化率上限 —— Inf(默认) | 非负标量 | 矢量

        给定操作变量变化率的上限,指定为非负标量或向量。MV 变化率定义为 MV(k) - MV(k-1),其中 k 为当前时间。默认情况下,该下限为 Inf。

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

        若要改变从时间 k 到时间 k+p-1 的预测范围内的界限,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终约束将用于预测范围的剩余步骤。

        示例:mpcobj.ManipulatedVariables(1).RateMax = 2


  • RateMinECR - MV 变化率软下限 —— 0(默认值) | 非负有限标量 | 向量

        给定操作变量变化率软下限。等价松弛(ECR)值越大,表示约束越软,可以指定为非负有限标量或矢量。默认情况下,MV 变化率下限为硬约束。

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

        若要在时间 k 至时间 k+p-1 的预测范围内改变 ECR 值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终 ECR 值将用于预测时间跨度的剩余步骤。

        示例:mpcobj.ManipulatedVariables(2).RateMinECR = 0.01


  • RateMaxECR - MV 变化率软上限 —— 0(默认值) | 非负有限标量 | 向量

        给定操作变量变化率软上限。等价松弛(ECR)值越大,表示约束越软,可以指定为非负有限标量或矢量。默认情况下,MV 变化率上限为硬约束。

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

        若要在时间 k 至时间 k+p-1 的预测范围内改变 ECR 值,请指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终 ECR 值将用于预测时间跨度的剩余步骤。

        示例:mpcobj.ManipulatedVariables(2).RateMaxECR = 0.01


  • Target - MV 目标 —— 标量 | 矢量

        给定操作变量的目标,指定为标量、向量或 "标称"(默认)。当 Target 为 "标称 "时,操纵变量的目标与 mpcobj.Model.Nominal.U 对应。

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

        要在时间 k 到时间 k+p-1 的预测范围内改变目标值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,则在预测范围的剩余步骤中使用最终值。

        出于经济或运行原因,当操作变量多于设备输出时,您可能需要为某些操作变量设置目标值以及相应的非零成本函数权重。更多信息,请参阅 "为非方形工厂设计 MPC 控制器 "和 "为受控变量设置目标值"。

        示例:mpcobj.ManipulatedVariables(2).Target = [0.3 0.2]


  • Name - MV 名称 —— 字符串 | 字符向量

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

        示例:mpcobj.ManipulatedVariables(2).Name


  • Unit - MV 单位 —— ""(默认) | 字符串 | 字符向量

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

        示例: mpcobj.ManipulatedVariables(2).Units

  • ScaleFactor - MV 比例因子 —— 1(默认) | 正有限标量

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

        示例:mpcobj.ManipulatedVariables(1).ScaleFactor = 10


  • Type - MV 类型 —— 连续"(默认) | "整数" | "二进制" | 向量

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

               'continuous' —— 表示操作变量是连续的。

                'binary' —— 表示被操作变量只能是 0 或 1。

    'integer' —— 表示操作变量为整数。

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

        默认情况下,类型设置为 "连续"。

        更多信息,请参阅有限控制集 MPC。

        示例:mpcobj.ManipulatedVariables(1).Type = 'binary' (二进制变量)

OutputVariables - 输出变量信息、边界和比例因子 —— 结构数组


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

        每个结构元素都包含以下字段

  • Min - OV 下限 —— -Inf(默认) | 标量 | 向量

        给定输出变量的下限,指定为标量或向量。默认情况下,该下限为 -Inf。

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

        若要在时间 k+1 到时间 k+p 的预测范围内改变下限值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终约束将用于预测范围的剩余步骤。

        示例:mpcobj.OutputVariables(1).Min = -10


  • Max - OV 上限 —— Inf (默认) | 标量 | 向量

        给定输出变量的上限,指定为标量或向量。默认情况下,该上限为 Inf。

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

        若要在时间 k+1 到时间 k+p 的预测范围内改变上限,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,最终约束将用于预测范围的剩余步骤。

        示例:mpcobj.OutputVariables(1).Max = 10


  • MinECR - OV 软下限 —— 1(默认) | 非负有限标量 | 向量

        给定输出变量软下限。等价松弛(ECR)值越大,表示约束越软,指定为非负有限标量或向量。默认情况下,OV 上限为柔性约束。

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

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

        要在时间 k+1 到时间 k+p 的预测范围内改变 ECR 值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,则最终 ECR 值将用于预测时间跨度的剩余步骤。

        示例:mpcobj.OutputVariables(1).MinECR = 5


  • MaxECR - OV 软上界 —— 1(默认) | 非负有限标量 | 向量

        给定输出变量软上限。等价松弛(ECR)值越大,表示约束越软,指定为非负有限标量或向量。默认情况下,OV 下限为柔性约束。

        为避免在运行时产生不可行的优化问题,最好使用柔性 OV 下限。

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

        要在时间 k+1 到时间 k+p 的预测范围内改变 ECR 值,可指定一个最多包含 p 个值的向量。这里,k 是当前时间,p 是预测范围。如果指定的值少于 p,则最终 ECR 值将用于预测时间跨度的剩余步骤。

        示例:mpcobj.OutputVariables(1).MaxECR = 10


  • Name - OV 名称 —— 字符串 | 字符向量

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

        示例:mpcobj.OutputVariables(2).Name


  • Unit - OV 单位 —— "" (默认) | 字符串 | 字符向量

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

        示例:mpcobj.OutputVariables(2).Units


  • ScaleFactor - OV 比例因子 —— 1(默认) | 正有限标量

        给定输出变量的比例因子,指定为正有限标量。指定适当的比例因子可以改善优化的数值调节。一般来说,应使用输出变量的工作范围。更多信息,请参阅指定比例因子。

        示例:mpcobj.OutputVariables(1).ScaleFactor = 20

DisturbanceVariables - 输入干扰变量信息和比例因子 —— 结构体数组


        扰动变量(DV)信息和比例因子,指定为具有 Nd 个元素的结构数组,其中 Nd 为已测量和未测量扰动输入的总数。扰动变量(DisturbanceVariables)中扰动信号的顺序如下:前 Nmd 项与测量输入扰动有关,后 Nud 项与未测量输入扰动有关。

        要访问此属性,可以使用别名 DV 代替 DisturbanceVariables。

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

  • Name - DV 名称 —— 字符串 | 字符向量

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

        示例: mpcobj.DisturbanceVariables(1).Name


  • Unit - OV 单位 —— ""(默认) | 字符串 | 字符向量

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

        示例:mpcobj.DisturbanceVariables(1).Units


  • ScaleFactor - DV 比例因子 —— 1(默认) | 正有限标量

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

        示例:mpcobj.DisturbanceVariables(1).ScaleFactor = 15

Weights - 标准成本函数调整权重 —— 结构体


        以结构形式指定的标准代价函数调整权重。控制器将这些权重应用于比例变量。因此,调整权重是无量纲值。

        输出权重的格式必须与控制器对象的 Weights.OutputVariables 属性的格式一致。例如,不能在控制器对象中指定整个预测范围内的恒定权重,然后再使用 mpcmoveopt 指定随时间变化的权重。

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


  • ManipulatedVariables - 受操纵的变量调整权重 —— 行向量数组

        操纵变量调整权重,用于惩罚偏离 MV 目标的变量,指定为非负值行向量或数组。所有操纵变量的默认权重都是 0。

        如果要在整个预测范围内使用相同的权重,可以指定一个长度为 Nmv 的行向量,其中 Nmv 是操纵变量的个数。

        要在时间 k 到时间 k+p-1 的预测范围内改变调整权重,可指定一个 Nmv 列、最多 p 行的数组。这里,k 是当前时间,p 是预测范围。每行包含一个预测跨度步长的受控变量调整权重。如果指定的行数少于 p,最后一行的权重将用于预测跨度的剩余步长。

        如果使用替代代价函数,请将 Weights.ManipulatedVariables 指定为包含 Nmv-by-Nmv Ru 矩阵的单元格数组。例如,mpcobj.Weights.ManipulatedVariables = {Ru}。Ru 必须是正半inite 矩阵。不支持在整个预测范围内改变 Ru 矩阵。更多信息,请参阅替代成本函数。

        示例:mpcobj.Weights.ManipulatedVariables = [0.1 0.2] (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) 的量。参见成本函数。

        如果使用替代代价函数,请将 Weights.ManipulatedVariablesRate 指定为包含 Nmv-by-Nmv RΔu 矩阵的单元格数组。例如,mpcobj.Weights.ManipulatedVariablesRate = {Rdu}。RΔu 必须是正半定量矩阵。不支持在整个预测范围内改变 RΔu 矩阵。更多信息,请参阅替代成本函数。

        示例:mpcobj.Weights.ManipulatedVariablesRate = [0.1 0.1]


  • OutputVariables - 输出变量调整权重 —— 向量 | 数组

        输出变量调整权重,用于惩罚偏离输出参考值的行为,指定为非负值的行向量或数组。所有输出变量的默认权重都是 1。

        要在整个预测范围内使用相同的权重,可以指定一个长度为 Ny 的行向量,其中 Ny 是输出变量的个数。

        要在时间 k+1 到时间 k+p 的预测范围内改变调整权重,可指定一个 Ny 列、最多 p 行的数组。这里,k 是当前时间,p 是预测范围。每行包含一个预测跨度步长的输出变量调整权重。如果指定的行数少于 p,最后一行的权重将用于预测跨度的剩余步长。

        如果使用替代代价函数,请将 Weights.OutputVariables 指定为包含 Ny-by-Ny Q 矩阵的单元格数组。例如,mpcobj.Weights.OutputVariables = {Q}。Q 必须是正半inite 矩阵。不支持在整个预测范围内改变 Q 矩阵。更多信息,请参阅替代成本函数。

        示例:mpcobj.Weights.OutputVariables = [1 1]


  • ECR - 松弛变量调整权重 —— 1e5(默认值) | 正标量

        松弛变量调整权重,指定为正标量。增大或减小等量松弛(ECR)权重,分别使所有柔性约束变硬或变软。

        示例:mpcobj.Weights.ECR = 1e4

Optimizer - 优化信息 —— 结构体


        优化信息是一个包含以下字段的结构。前三个字段(OptimizationType、Solver 和 SolverOptions)只与内置求解器有关。如果使用自定义求解器进行仿真(将 CustomSolver 设置为 true),仿真时将忽略这三个字段。同样,如果使用自定义求解器进行代码生成(将 CustomSolverCodeGen 设置为 true),代码生成时也会忽略这三个字段。

        有关支持的 QP 求解器的更多信息,请参阅 QP 求解器。

  • OptimizationType - 优化类型—— "QP"(默认) | "MIQP

        此属性为只读。

        优化类型,对于连续问题,返回 "QP";对于有限集问题,返回 "MIQP"。该属性由软件根据 mpc 对象的 ManipulatedVariables.Type 属性自动选择。有关有限集 MPC 的更多信息,请参阅有限控制集 MPC。

        示例:"MIQP"


  • Solver - 求解器算法 —— "主动集"(默认) | "内点" | "admm" | "分支边界"

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

                "主动集"- 使用 KWIK 主动集算法求解 QP 问题。

                "内点"- 使用带有 Mehrotra 预测校正器的原始双内部点算法求解 QP 问题。

                "admm"--使用一阶交替乘法(ADMM)求解器求解 QP 问题。

                "分支与边界"- 使用带分支与边界的 KWIK 算法解决 MIQP 问题。当任何操作变量的类型属性设置为 "连续 "以外的其他属性时,将自动选择此方法。

        对于需要解决 QP 问题的自定义应用程序,还可以分别使用 mpcActiveSetSolver 和 mpcInteriorPointSolver 函数访问主动集算法和内点算法。

        示例:mpcobj.Optimizer.Solver = "interior-point"


  • SolverOptions - 求解器选项 —— ActiveSet 对象(默认) | InteriorPoint 对象 | ADMM 对象 | BranchBound 对象

        以 ActiveSet、InteriorPoint、ADMM 或 BranchBound 选项对象形式指定的求解器选项。适用的选项对象与优化器属性的求解器字段中选择的求解器相对应。更多信息,请参阅优化问题和 QP 求解器。


  • MinOutputECR - 输出约束 ECR 值允许的最小值 —— 0(默认) | 非负标量

        允许的输出约束等同松弛(ECR)值的最小值,指定为非负标量。值为 0 表示允许硬输出约束。如果 MPC 控制器的 OutputVariables.MinECR 或 OutputVariables.MaxECR 属性中的任何一个小于 MinOutputECR,则会显示警告,并在计算过程中将该值提高到 MinOutputECR。

        示例:mpcobj.Optimizer.MinOutputECR = 1e-10


  • UseSuboptimalSolution - 表示是否接受次优解的选项 —— 假(默认) | 真

        表示是否接受次优解的选项,以逻辑值指定。当 QP 求解器迭代次数达到最大值但未找到解决方案时(退出选项为 0),控制器会:

        如果使用次优解为假,则冻结 MV 值

        如果使用次优解为 true,则在最后一次迭代后应用求解器找到的次优解

        要根据算法值指定最大迭代次数,请使用 ActiveSetOptions.MaxIterations 或 InteriorPointOptions.MaxIterations。

        示例:mpcobj.Optimizer.UseSuboptimalSolution = true


  • CustomSolver - 表示是否使用自定义 QP 求解器进行仿真的选项 —— false(默认) | true

        表示是否使用自定义 QP 求解器进行仿真的选项,以逻辑值指定。如果 CustomSolver 为 true,用户必须在 MATLAB® 路径上提供 mpcCustomSolver 函数。

        该自定义求解器不用于生成代码。要使用自定义求解器为控制器生成代码,请使用 CustomSolverCodeGen。

        如果 CustomSolver 为真,控制器会忽略仿真的 OptimizationType、Solver 和 SolverOptions 属性。

        您还可以使用函数 setCustomSolver 自动配置 mpcobj,将 quadprog(优化工具箱)的 active-set 算法用作仿真和代码生成的自定义 QP 求解器。

        有关使用自定义 QP 求解器的更多信息,请参阅 QP 求解器。

        示例:mpcobj.Optimizer.CustomSolver = true


  • CustomSolverCodeGen - 表示是否使用自定义 QP 求解器生成代码的选项 —— false(默认) | true

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

        此自定义求解器不用于仿真。要使用自定义求解器仿真控制器,请使用 CustomSolver。

        您还可以使用函数 setCustomSolver 自动配置 mpcobj,将 quadprog(优化工具箱)的 active-set 算法用作仿真和代码生成的自定义 QP 求解器。

        有关使用自定义 QP 求解器的更多信息,请参阅 QP 求解器。

        示例:mpcobj.Optimizer.CustomSolverCodeGen = true

Notes - 用户备注 —— {}(默认) | 单元字符向量数组
        与 MPC 控制器相关的用户注释,以字符矢量单元数组的形式指定。

        示例:mpcobj.Notes = {'纵向控制器'; '版本 2.1'}

UserData - 用户数据 —— [](默认) | 任何 MATLAB 数据
        与 MPC 控制器相关的用户数据,指定为任何 MATLAB 数据,如单元数组或结构。

        示例:mpcobj.UserData = {'参数',0.2,[3 4]'}

History - 控制器创建日期和时间 —— 矢量
        此属性为只读。

        控制器创建日期和时间,指定为包含以下元素的向量:

                History(1) - 年

                History(2) - 月

                历史记录(3) - 日

                History(4) - 小时

                历史记录(5) - 分钟

                历史记录(6) - 秒

        使用 datestr(mpcobj.History) 以字符向量形式显示控制器创建日期。

        示例: mpcobj.History = datevec(now)

四、对象函数 

buildMEX建立 MEX 文件,解决 MPC 控制问题
cloffset从输出干扰到测量输出计算闭环直流增益,假定约束在稳态时无效
compare比较两个 MPC 对象
generateExplicitMPC将隐式 MPC 控制器转换为显式 MPC 控制器
generatePlotParametersplotSection 的参数
generateExplicitOptions显式 MPC 生成的优化选项
generateExplicitRange显式 MPC 控制法参数的约束
get从 MPC 对象获取属性值
getCodeGenerationData为 mpcmoveCodeGeneration 创建数据结构
getEstimator为估计器设计获取卡尔曼增益和模型
getconstraint从模型预测控制器获取混合输入/输出约束条件
getindist检索未测量的输入干扰模型
getname从 MPC 工厂模型中检索 I/O 信号名称
getoutdist检索未测量的输出干扰模型
mpcmove计算最优控制操作并更新控制器状态
mpcmoveAdaptive计算最佳控制,更新预测模型
plot绘制 MPC 仿真生成的响应图
review在运行时检查 MPC 控制器是否存在设计错误和稳定性问题
sensitivity计算性能指标值及其对 MPC 控制器对角线权重的敏感性
set设置或修改 MPC 对象属性
setCustomSolver将 MPC 对象配置为使用优化工具箱中的 QP 求解器作为自定义求解器
setEstimator修改模型预测控制器的状态估计器
setconstraint为模型预测控制器设置混合输入/输出约束条件
setindist修改未测量的输入干扰模型
setname在 MPC 工厂模型中设置 I/O 信号名称
setoutdist修改未测量的输出干扰模型
setterminal终端权重和约束
sim用线性工厂仿真闭环中的 MPC 控制器
sizeMPC 控制器的大小和阶数
ss将无约束 MPC 控制器转换为状态空间线性系统形式
tf将无约束 MPC 控制器转换为线性传递函数形式
trim针对给定的输入和输出,计算 MPC 控制器工厂模型状态的稳态值

五、示例

        创建具有指定预测和控制范围的 MPC 控制器
        创建具有传递函数的工厂模型 (s+1)/(s^{2}+2s)

Plant = tf([1 1],[1 2 0]);

        该设备是 SISO 设备,因此其输入必须是可操作的变量,输出必须是可测量的。一般来说,好的做法是使用 setmpcsignals 命令或 LTI InputGroup 和 OutputGroup 属性指定所有工厂信号类型。

        指定控制器的采样时间。

Ts = 0.1;

        定义被操作变量的边界,u,-1\leq u\leq1

MV = struct(Min=-1,Max=1);

        MV 仅包含被操作变量的上下限。一般来说,您可以指定其他 MV 属性。如果不指定其他属性,则将使用默认值。

        指定 20 步预测跨度和 3 步控制跨度。

p = 20;
m = 3;

        使用指定值创建 MPC 控制器。第五个输入参数为空,因此使用默认的调整权重。

mpcobj = mpc(Plant,Ts,p,m,[],MV);
-->"Weights.ManipulatedVariables" is empty. Assuming default 0.00000.
-->"Weights.ManipulatedVariablesRate" is empty. Assuming default 0.10000.
-->"Weights.OutputVariables" is empty. Assuming default 1.00000.

六、算法

        为尽量减少计算开销,模型预测控制器的创建分为两个阶段。第一个阶段是在使用 mpc 函数或更改控制器属性时创建控制器。创建包括基本的有效性和一致性检查,如信号维度和权重的非负性。

        第二个阶段是初始化,即在仿真或分析程序中首次使用对象时进行初始化。初始化会计算高效数值计算所需的所有常量属性,如定义最优控制问题的矩阵和状态估计增益。初始化过程中还会进行其他诊断性检查,例如验证控制器状态是否可观测。

        默认情况下,这两个阶段都会在命令窗口中显示信息消息。您可以使用 mpcverbosity 函数打开或关闭这些消息。

七、其他功能

        您还可以使用 MPC Designer 应用程序创建模型预测控制器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/522307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC--概述 / 入门

目录 1. SpringMVC简介 2. 配置&入门 2.1. 开发环境 2.2. 创建maven工程 2.3. 手动创建 web.xml 2.4. 配置web.xml 2.4.1. 默认配置方式 2.4.2. 扩展配置方式 2.5. 创建请求控制器 2.6. 创建springMVC的配置文件 2.7. 测试 HelloWorld 2.7.1. 实现对首页的访问…

OJ在线比赛系统(人员管理、赛题发布、在线提交、题目审核、成绩录入)

系统功能设计 技术栈:springboot,jdk8,vue3,element-plus,mybatis-plus 1.java后端系统 首先需要学生通过前端注册页面和java后端系统将个人信息写入数据库,包含学号、姓名、班级以及需要爬取网站的相关信息(例如AtCoder账号信…

智谱清言 HTTP调用 + postman使用

官方教程 接口鉴权 非SDK用户鉴权 官方网站 第一步 获取您的 API Key 第二步 使用 JWT 组装 用户端需引入对应 JWT 相关工具类,并按以下方式组装 JWT 中 header、payload 部分 1、header 具体示例 {“alg”:“HS256”,“sign_type”:“SIGN”} alg : 属性表…

批量导入svg文件作为图标使用(vue3)vite-plugin-svg-icons插件的具体应用

目录 需求svg使用简述插件使用简述实现安装插件1、配置vite.config.ts2、src/main.ts引入注册脚本3、写个icon组件4、使用组件 需求 在vue3项目中,需要批量导入某个文件夹内数量不确定的svg文件用来作为图标,开发完成后能够通过增减文件夹内的svg文件&a…

ICLR 2024 | 联邦学习后门攻击的模型关键层

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 联邦学习使多个参与方可以在数据隐私得到保护的情况下训练机器学习模型。但是由于服务器无法…

论文阅读——MVDiffusion

MVDiffusion: Enabling Holistic Multi-view Image Generation with Correspondence-Aware Diffusion 文生图模型 用于根据给定像素到像素对应关系的文本提示生成一致的多视图图像。 MVDiffusion 会在给定任意每个视图文本的情况下合成高分辨率真实感全景图像,或将…

亚信安慧AntDB:开启数据洞察的新视野

AntDB一直秉承着“技术生态”的理念,不断进行技术创新和功能增强,以保持与先进数据库系统的竞争力。作为一款致力于提升数据库处理性能和稳定性的系统,AntDB在技术上始终保持敏锐的洞察力,不断汲取国内外先进技术的精华&#xff0…

Scala大数据开发

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Scala简述 在此,简要介绍 Scala 的基本信息和情况。 Scala释义 Scala 源自于英语单词scalable,表示可伸缩的、可扩展的含义。 Scala作者 Scala编…

tomcat 结构目录

bin 启动,关闭和其他脚本。这些 .sh文件(对于Unix系统)是这些.bat文件的功能副本(对于Windows系统)。由于Win32命令行缺少某些功能,因此此处包含一些其他文件。比如说:windows下启动tomcat用的是…

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.0版已发布

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持 UDP 、TCP 、WebSocket 三种协议,支持 iOS、Android、H5、标准Java、小程序、Uniapp,服务端基于Netty编写。 工程…

如何不编程用 ChatGPT 爬取网站数据?

敢于大胆设想,才能在 AI 时代提出好问题。 需求 很多小伙伴,都需要为研究获取数据。从网上爬取数据,是其中关键一环。以往,这都需要编程来实现。 可最近,一位星友在知识星球提问: 这里涉及到一些个人隐私&a…

【VMware Workstation】启动虚拟机报错“此主机支持 AMD-V,但 AMD-V 处于禁用状态”

问题出现步骤: 打开虚拟机: 然后报错: “此主机支持 AMD-V,但 AMD-V 处于禁用状态。 如果已在 BIOS/固件设置中禁用 AMD-V,或主机自更改此设置后从未重新启动,则 AMD-V 可能被禁用。 (1) 确认 BIOS/固件设…

吴恩达2022机器学习专项课程(一) 第二周课程实验:多元线性回归(Lab_02)

1.训练集 使用Numpy数组存储数据集。 2.打印数组 打印两个数组的形状和数据。 3.初始化w,b 为了演示,w,b预设出接近最优解的值。w是一个一维数组,w个数对应特征个数。 4.非向量化计算多元线性回归函数 使用for循环&…

泰迪·南通师范大数据智能工作室挂牌签约仪式圆满结束

为促进毕业生高质量就业,拓宽就业渠道,加强校企合作,4月2日,泰迪智能科技股份有限公司上海分公司总经理彭艳昆一行来校出席南通师范高等专科学校“泰迪科技南通师范大数据智能工作室”签约揭牌仪式。学校党委副书记陈玉君、科技处…

LabVIEW数控磨床振动分析及监控系统

LabVIEW数控磨床振动分析及监控系统 在现代精密加工中,数控磨床作为关键设备之一,其加工质量直接影响到产品的精度与性能。然而,磨削过程中的振动是影响加工质量的主要因素之一,不仅会导致工件表面质量下降,还可能缩短…

41.基于SpringBoot + Vue实现的前后端分离-校园网上店铺管理系统(项目 + 论文PPT)

项目介绍 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。本课题研究和开发校园网上店铺,让安装在计算机上的该系统变成管理人员的小帮手,提高校园店铺商品销售信息处…

Open3D (C++) 计算点云的特征值特征向量

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 针对整个点云 P = { p i } i

RabbitMQ3.13.x之六_RabbitMQ使用场景

RabbitMQ3.13.x之六_RabbitMQ使用场景 文章目录 RabbitMQ3.13.x之六_RabbitMQ使用场景1. 为什么选择 RabbitMQ?1. 可互操作2. 灵活3. 可靠 2. 常见用户案例1. 服务解耦2. 远程过程调用3. 流处理4. 物联网 1. 为什么选择 RabbitMQ? RabbitMQ 是一个可靠且…

SAP FICO应收票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

效果展示 应收票据 应收汇票录入界面创建 应收汇票录入界面更改 应收汇票录入界面显示 应收票据批量上载 <

基于Spring Boot的简历系统设计与开发

基于Spring Boot的简历系统设计与开发 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 部分系统展示 前台首页界面 简历模板管理界面 用户管理界面 管理员登录界…