8.9.2. model

class model

待优化的模型

属性

A

线性约束矩阵

Q

二次目标矩阵

constrnames

约束名

genconind

指数约束

lhsorsense

约束的左侧值或或约束的比较符

modelname

模型的名称

modelsense

模型的优化方向

obj

线性目标项

objcon

目标函数中的常量偏移

psdcon

Psd约束

psdvar

Psd变量

quadcon

二次约束

rhs

线性约束的右侧值

sos

特殊序列集 (SOS) 约束

varnames

变量名

vtype

变量的类型

A

线性约束矩阵。可选属性,如果存在,则必须为MATLAB稀疏矩阵。矩阵中的每一列表示一个变量,每一行表示一个线性约束。

Q

二次目标矩阵。可选属性,如果存在,则必须为MATLAB稀疏矩阵。Q必须是一个方阵,其行数和列数必须与A的列数相等。在Q中,Q[i][j] 和 Q[j][i] 的意义是一致的。对于目标表达式 x^2 + xy + y^2 ,Q的值为[1 0.5; 0.5 1;]和[1 1; 0 1;]时是等价的。

constrnames

约束名。可选属性,如果存在,则必须是由char数组组成的元胞数组。当存在时,此向量的每个元素定义约束的名称。其长度应与线性约束矩阵A中的行数相同。

genconind

指数约束。可选属性,如果存在,则其必须为一个结构体数组,数组中的每一个结构体代表一条指示约束。结构体中需要包含以下属性。

  • model.genconind(i).binvar

隐含的二进制变量的索引。其应该为整数,且范围在1至模型变量数之间。默认值为0。

  • model.genconind(i).binval

二进制变量的取值。此变量必须取0或1。默认值为0。

  • model.genconind(i).a

参与隐含线性约束的变量系数向量。您可以为矩阵A的每一列指定一个值(dense vector),或者传递一个稀疏向量(n-by-1 sparse)。默认为空。

  • model.genconind(i).rhs

隐含线性约束的右侧值。其类型为 double。默认值为0。

  • model.genconind(i).sense

隐含线性约束的比较符。必须为’<’、’>’或’=’。默认值为’<’。

  • model.genconind(i).name

隐含的线性约束的名称。可选属性,如果存在,则其必须为一个char数组。默认为空。

lhsorsense

约束的左侧值或或约束的比较符。当提供的类型为double array时,该值表示为线性约束的 LHS。它的长度应与线性约束矩阵 A 的行数相同;当提供的类型为char array时,该值表示为线性约束的方向,字符可以是 ‘<’、’>’ 或 ‘=’。此外,它也可以是一个单一字符,以指定所有约束具有相同的比较符。默认值为’<’。

modelname

模型的名称。可选属性,如果存在,必须是char数组。

modelsense

模型的优化方向。可选属性,如果存在,必须是char数组。允许的值为’Max’或者’Min’。缺省时,默认值为’Min’。

obj

线性目标项。必须提供且类型为数组。其长度应该和线性约束矩阵A的列数相同。缺省时,每一个变量的目标系数默认为0。

objcon

目标函数中的常量偏移。可选属性,如果存在,则其类型必须为double。如果不存在,则默认值为0。

psdcon

Psd约束。可选属性,如果存在,则其类型必须是结构数组。psdcon中的每个元素定义单个psd约束。此外,quadcon可以包括以下属性:

  • model.psdcon(i).psdmats

Psd约束矩阵。它必须是一个一维元胞数组,包含几个MATLAB稀疏矩阵,并且每个矩阵必须是对称的。

  • model.psdcon(i).indices

PSD约束矩阵的相应PSD变量的索引。它的类型必须是一维数组,并且其长度必须与psdmats中的矩阵数相同。数组中的索引表示对应的PSD约束矩阵,而数组中的值表示与该约束矩阵相关联的PSD变量。数组中的值不得大于PSD变量的数量,并且对应的PSD约束矩阵的大小必须与PSD变量的目标矩阵的大小相同。

  • model.psdcon(i).linearterm

psdcon中的线性部分。可选属性,如果存在,则必须是数组或 n*1 稀疏矩阵。其长度应与约束矩阵中的列数相同。

  • model.psdcon(i).name

psd约束的名称。可选属性,如果存在,则必须是char数组。

  • model.psdcon(i).lhsorsense

它可以是LHS或sense。当提供的类型为double时,该值表示为psd约束的LHS。当提供的类型是字符时,该值表示为psd约束的比较符,并且该字符可以是 ‘<’ 、 ‘>’ 或 ‘=’。默认值为’<’。

  • 型号.psdcon(i).rhs

psd约束的右侧值。类型必须为double。默认值为0。

psdvar

Psd变量。可选属性,如果存在,则其类型必须是结构数组。padvar中的每个元素定义一个psd变量。此外,psdvar可以包括以下属性:

  • model.psdvar(i).obj

PSD变量的目标矩阵。其必须是MATLAB稀疏矩阵,并且要求是实对称矩阵。

  • model.psdvar(i).name

psd变量的名称。可选属性,如果存在,则类型必须是char数组。

quadcon

二次约束。可选属性,如果存在,其为一个结构体数组。quadcon 中的每一个元素定义了一条单独的二次约束。二次约束矩阵有两种传入方式,分别对应于 MATLAB 的稀疏矩阵(sparse)和坐标格式稀疏矩阵(coo sparse)。在 quadcon 中的每个元素中,你可以任选一种方式传入二次约束矩阵。

  • matlab sparse

通过 model.quadcon(i).Qc 传入 quadcon 矩阵。Qc 应当为 MATLAB sparse 格式,且必须是一个方矩,其行数和列数应等于 A 中列的数量。

  • coo sparse

通过 model.quadcon(i).Qrow 和 model.quadcon(i).Qcol 传入 quadcon matrix 中非零值的行索引和列索引,通过 model.quadcon(i).Qval 传入非零值。它们均应当是数组且长度相同。

此外,quadcon还可以包含以下属性:

  • model.quadcon(i).q

二次约束中的线性部分。可选属性。其类型可以为数组或者 n*1 的sparse vector。其长度应该和约束矩阵的列数相同。

  • model.quadcon(i).rhs

二次约束的右侧值。其类型为 double。默认值为0。

  • model.quadcon(i).lhsorsense

二次约束的左侧值或或约束的比较符。当提供的类型为double时,该值表示为二次约束的 LHS;当提供的类型为char时,该值表示为二次约束的比较符,字符可以是 ‘<’、’>’ 或 ‘=’。默认值为’<’。

  • model.quadcon(i).name

二次约束的名字。可选属性,如果存在,则其必须为一个char数组。

rhs

线性约束的右侧值。必须提供且类型为数组,其长度应该和线性约束矩阵A的行数相同。缺省时,所有的右侧值默认为0。

sos

特殊序列集 (SOS) 约束。其为一个结构体数组。sos 中的每个条目定义一个单独的 SOS 约束。结构体中需要包含以下属性。

  • model.sos(i).type

SOS 约束的类型。它可以是 1 型或 2 型。1 型 SOS 约束是一组变量,其中最多只有一个变量可以取非零值。2 型 SOS 约束是一个有序的变量集,其中最多有两个变量可以取非零值。如果有两个变量取非零值,它们必须在有序集合中相邻。

  • model.sos(i).index

SOS 约束的成员通过放置其索引来指定。其类型为数组。

  • model.sos(i).weight

SOS 约束的成员的权重。其类型为数组。

varnames

变量名。可选属性,如果存在,则必须是由char数组组成的元胞数组。当存在时,此向量的每个元素定义约束的名称。其长度应与线性约束矩阵A中的列数相同。

vtype

变量的类型。可选属性,如果存在,char数组中的每个值表示相应位置的变量类型。这些值可以是 ‘C’ (连续) 、 ‘B’ (二进制) 、 ‘I’ (整数) 、 ‘S’ (半连续) 或 ‘N’ (半整数)。连续表示实数变量,二进制表示只能取值0或1的二进制变量,整数表示整数变量,半连续可以在下限和上限或0内取实数值,半整数可以在下限和上限或0内取整数值。当不存在时,变量的类型默认为 ‘C’。