8.9.2. model¶
- class model¶
待优化的模型
属性
线性约束矩阵
二次目标矩阵
约束名
指数约束
约束的左侧值或或约束的比较符
模型的名称
模型的优化方向
线性目标项
目标函数中的常量偏移
Psd约束
Psd变量
二次约束
线性约束的右侧值
特殊序列集 (SOS) 约束
变量名
变量的类型
- 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’。