属性
属性类常数包括优化模型相关和求解结果相关两类属性。本章节将介绍杉数求解器COPT提供的属性常数及其含义。章节内容构成如下:
优化模型相关属性
优化模型相关属性提供模型构成和描述的相关信息。
属性名 |
类型 |
属性含义 |
|---|---|---|
整数属性 |
变量(系数矩阵列)的个数 |
|
整数属性 |
二进制变量(列)的个数 |
|
整数属性 |
整数变量(列)的个数 |
|
整数属性 |
半定变量的个数 |
|
整数属性 |
约束(系数矩阵行)的个数 |
|
整数属性 |
Indicator约束的个数 |
|
整数属性 |
SOS约束的个数 |
|
整数属性 |
二阶锥约束的个数 |
|
整数属性 |
指数锥约束的个数 |
|
整数属性 |
仿射锥约束的个数 |
|
整数属性 |
二次约束的个数 |
|
整数属性 |
半定约束的个数 |
|
整数属性 |
LMI (Linear Matrix Inequalities,线性矩阵不等式)约束的个数 |
|
整数属性 |
模型中非线性表达式约束的数目 |
|
整数属性 |
系数矩阵中非零元素个数 |
|
整数属性 |
二次目标函数中非零二次项个数 |
|
整数属性 |
目标函数中半定项个数 |
|
整数属性 |
模型中非线性表达式目标项的数目 |
|
整数属性 |
模型中对称矩阵的个数 |
|
整数属性 |
多目标模型中目标函数的数目 |
|
整数属性 |
优化方向 |
|
浮点数属性 |
目标函数的常数部分 |
|
整数属性 |
模型的目标函数是否包含二次项 |
|
整数属性 |
模型的目标函数是否包含半定项 |
|
整数属性 |
模型的目标函数是否包含非线性项 |
|
整数属性 |
模型是否为整数规划模型 |
|
浮点数属性 |
线性约束系数矩阵中非零元素绝对值的最小值 |
|
浮点数属性 |
线性约束系数矩阵中非零元素绝对值的最大值 |
|
浮点数属性 |
变量非零边界绝对值的最小值 |
|
浮点数属性 |
变量非零边界绝对值的最大值 |
|
浮点数属性 |
线性约束非零边界(右端项)绝对值的最小值 |
|
浮点数属性 |
线性约束非零边界(右端项)绝对值的最大值 |
|
浮点数属性 |
线性目标函数中非零系数绝对值的最小值 |
|
浮点数属性 |
线性目标函数中非零系数绝对值的最大值 |
|
浮点数属性 |
二次约束中非零二次项系数绝对值的最小值 |
|
浮点数属性 |
二次约束中非零二次项系数绝对值的最大值 |
|
浮点数属性 |
二次约束中非零线性项系数绝对值的最小值 |
|
浮点数属性 |
二次约束中非零线性项系数绝对值的最大值 |
|
浮点数属性 |
二次约束非零右端项绝对值的最小值 |
|
浮点数属性 |
二次约束非零右端项绝对值的最大值 |
|
浮点数属性 |
二次目标函数中非零系数绝对值的最小值 |
|
浮点数属性 |
二次目标函数中非零系数绝对值的最大值 |
注意: Double这个词的准确翻译应是双精度浮点数。表格中和下文为了简便,称之为浮点数。
Cols整数属性。
变量(系数矩阵列)的个数。
Bins整数属性。
二进制变量(列)的个数。
Ints整数属性。
整数变量(列)的个数。
PSDCols整数属性。
半定变量的个数。
Rows整数属性。
约束(系数矩阵行)的个数。
Indicators整数属性。
Indicator约束的个数。
Soss整数属性。
SOS约束的个数。
Cones整数属性。
二阶锥约束的个数。
ExpCones整数属性。
指数锥约束的个数。
AffineCones整数属性。
仿射锥约束的个数。
QConstrs整数属性。
二次约束的个数。
PSDConstrs整数属性。
半定约束的个数。
LMIConstrs整数属性。
LMI (Linear Matrix Inequalities,线性矩阵不等式)约束的个数。
NLConstrs整数属性。
模型中非线性表达式约束的数目。
Elems整数属性。
系数矩阵中非零元素个数。
QElems整数属性。
二次目标函数中非零二次项个数。
PSDElems整数属性。
目标函数中半定项个数。
NLElems整数属性。
模型中非线性表达式目标项的数目。
SymMats整数属性。
模型中对称矩阵的个数。
MultiObjs整数属性。
多目标模型中目标函数的数目。
ObjSense整数属性。
优化方向。
ObjConst浮点数属性。
目标函数的常数部分。
HasQObj整数属性。
模型的目标函数是否包含二次项。
HasPSDObj整数属性。
模型的目标函数是否包含半定项。
HasNLObj整数属性。
模型的目标函数是否包含非线性项。
IsMIP整数属性。
模型是否为整数规划模型。
MinElem浮点数属性。
线性约束系数矩阵中非零元素绝对值的最小值。
MaxElem浮点数属性。
线性约束系数矩阵中非零元素绝对值的最大值。
MinBound浮点数属性。
变量非零边界绝对值的最小值。
取值为零的边界和无穷边界不参与统计。当边界绝对值达到求解器采用的 无穷边界值时,该边界将被视为无穷边界;该值默认为
1e30。
MaxBound
MinRHS浮点数属性。
线性约束非零边界(右端项)绝对值的最小值。
在 COPT 中,线性约束通过下界和上界定义,而不是通过单一右端项定义, 因此统计时会同时考虑两个边界,范围约束会贡献两个数值;而具有单一 约束方向的约束仅计入其有限边界。取值为零的边界和无穷边界不参与统计。
MaxRHS
MinCost浮点数属性。
线性目标函数中非零系数绝对值的最小值。
MaxCost浮点数属性。
线性目标函数中非零系数绝对值的最大值。
MinQElem
MaxQElem
MinQLElem浮点数属性。
二次约束中非零线性项系数绝对值的最小值。
MaxQLElem浮点数属性。
二次约束中非零线性项系数绝对值的最大值。
MinQRHS浮点数属性。
二次约束非零右端项绝对值的最小值。
与线性约束不同,二次约束由单一右端项和约束方向共同定义。 取值为零的右端项和无穷右端项不参与统计。
MaxQRHS
MinQCost浮点数属性。
二次目标函数中非零系数绝对值的最小值。
相关系数按照传入模型时的数值报告,不额外乘以任何因子。
MaxQCost
注意
从 MinElem 到 MaxQCost 的属性描述模型最近一次载入求解器时的状态。
由于模型修改操作采用缓冲机制,在模型首次载入求解器之前,这些属性均返回
0.0;此后如对模型进行修改但尚未重新载入,则返回修改前的属性值。
因此,查询这些属性前应先将模型载入求解器,例如对模型进行求解或更新。
当模型中不存在相应类型的元素时,相关属性同样返回 0.0。例如,对于既不含
二次约束、也不含二次目标函数的模型,所有上述二次相关属性均返回 0.0。
可通过 QConstrs 和 HasQObj 判断模型是否包含相应的二次结构。
这些属性基于原始模型计算。因此,其取值通常不同于求解日志中输出的系数范围; 日志中的系数范围对应经过预处理、缩放和重构后实际传递给求解器的模型。
求解结果相关属性
求解结果相关属性提供模型求解结果构成和描述的相关信息。
属性名 |
类型 |
属性含义 |
|---|---|---|
整数属性 |
优化问题的求解状态 |
|
整数属性 |
(不推荐使用)连续凸优化问题的求解状态 |
|
整数属性 |
(不推荐使用)整数规划或非凸优化问题的求解状态 |
|
整数属性 |
是否可以提供优化问题的解值 |
|
整数属性 |
(不推荐使用)是否可以提供线性规划的解值 |
|
整数属性 |
(不推荐使用)是否存在整数解 |
|
整数属性 |
是否可以提供线性规划的基 |
|
整数属性 |
是否存在线性规划的灵敏度分析结果 |
|
整数属性 |
当线性规划问题无可行解时,是否返回对偶Farkas(也叫做对偶极射线) |
|
整数属性 |
当线性规划问题无界时,是否返回主元射线(也叫做极射线) |
|
整数属性 |
是否存在可行化松弛结果 |
|
整数属性 |
是否存在IIS |
|
整数属性 |
计算出的IIS是否为极小 |
|
整数属性 |
组成IIS的变量边界的数目 |
|
整数属性 |
组成IIS的约束的数目 |
|
整数属性 |
组成IIS的SOS约束的数目 |
|
整数属性 |
组成IIS的Indicator约束的数目 |
|
整数属性 |
单纯形法迭代循环数 |
|
整数属性 |
内点法迭代循环数 |
|
整数属性 |
一阶算法(PDLP)迭代循环数 |
|
整数属性 |
分支定界搜索的节点数 |
|
整数属性 |
解池中的解的数目 |
|
整数属性 |
参数调优结果的数目 |
|
浮点数属性 |
当前最优目标函数值 |
|
浮点数属性 |
当前最优下界(最小化问题)或上界(最大化问题) |
|
浮点数属性 |
(不推荐使用)凸连续优化问题的最优目标函数值 |
|
浮点数属性 |
(不推荐使用)整数规划求解结束时当前最优目标函数值 |
|
浮点数属性 |
(不推荐使用)整数规划求解结束时当前最优下界(最小化问题)或上界(最大化问题) |
|
浮点数属性 |
整数规划当前最优相对间隙 |
|
浮点数属性 |
可行化松弛值 |
|
浮点数属性 |
求解所使用的时间(秒) |
|
浮点数属性 |
优化求解的内存使用峰值(MB) |
Status
LpStatus
MipStatus
HasSol整数属性。
是否可以提供优化问题的解值。
HasLpSol
HasMipSol
HasBasis整数属性。
是否可以提供线性规划的基。
HasSensitivity整数属性。
是否存在线性规划的灵敏度分析结果。
HasDualFarkas整数属性。
当线性规划问题无可行解时,是否返回对偶Farkas(也叫做对偶极射线)。
HasPrimalRay整数属性。
当线性规划问题无界时,是否返回主元射线(也叫做极射线)。
HasFeasRelaxSol整数属性。
是否存在可行化松弛结果。
HasIIS整数属性。
是否存在IIS。
IsMinIIS整数属性。
计算出的IIS是否为极小。
IISCols整数属性。
组成IIS的变量边界的数目。
IISRows整数属性。
组成IIS的约束的数目。
IISSOSs整数属性。
组成IIS的SOS约束的数目。
IISIndicators整数属性。
组成IIS的Indicator约束的数目。
SimplexIter整数属性。
单纯形法迭代循环数。
BarrierIter整数属性。
内点法迭代循环数。
PDLPIter整数属性。
一阶算法(PDLP)迭代循环数。
NodeCnt整数属性。
分支定界搜索的节点数。
PoolSols整数属性。
解池中的解的数目。
TuneResults整数属性。
参数调优结果的数目。
ObjVal浮点数属性。
当前最优目标函数值。当
Status为OPTIMAL时,该值即为最优目标函数值。
ObjBound浮点数属性。
当前最优下界(最小化问题)或上界(最大化问题)。
LpObjVal
BestObj
BestBnd
BestGap浮点数属性。
整数规划当前最优相对间隙。
FeasRelaxObj浮点数属性。
可行化松弛值。
SolvingTime浮点数属性。
求解所使用的时间(秒)。
MemPeak浮点数属性。
优化求解的内存使用峰值(MB)。
注意
对于上文标注 (不推荐使用) 的属性,建议统一使用 Status、 HasSol、 ObjVal 和 ObjBound 获取所有优化模型(包括线性规划、整数规划以及凸/非凸优化问题)的求解状态、判断是否存在解以及获取最优目标函数值。
属性获取方式
在不同的编程接口中,获取属性的方式略有差别,具体请参考:
C 接口:C API函数:获取属性章节
C++ 接口: C++ API参考手册:属性章节
C# 接口: C# API参考手册:属性章节
Java 接口: Java API参考手册:属性章节
Python 接口: Python API参考手册:属性章节