信息¶
信息常数描述了模型构成要素(目标函数、约束条件和决策变量)、求解结果以及可行化松弛计算结果等的相关信息。本章节将介绍杉数求解器COPT提供的信息常数及其含义。章节内容构成如下:
信息名 |
类型 |
信息含义 |
|---|---|---|
浮点数信息 |
变量(列)的目标函数系数 |
|
浮点数信息 |
变量(列)或者约束(行)的下界 |
|
浮点数信息 |
变量(列)或者约束(行)的上界 |
|
浮点数信息 |
变量(列)的取值 |
|
浮点数信息 |
松弛变量的取值,也叫做约束的活跃程度(activities),仅适用于线性规划模型 |
|
浮点数信息 |
对偶变量的取值,仅适用于线性规划模型 |
|
浮点数信息 |
变量的Reduced cost,仅适用于线性规划模型 |
|
浮点数信息 |
对偶Farkas(也叫做对偶极射线),适用于线性规划模型,无可行解或无界情况 |
|
浮点数信息 |
主元射线(也叫做极射线),适用于线性规划模型,无可行解或无界情况 |
|
浮点数信息 |
当前最优目标函数值 |
|
浮点数信息 |
当前最优目标下界 |
|
整数信息 |
当前是否有最优可行解 |
|
浮点数信息 |
当前可行解对应的目标函数值 |
|
浮点数信息 |
当前LP松弛问题的目标函数值 |
|
浮点数信息 |
变量(列)或者约束(行)下界的可行化松弛量 |
|
浮点数信息 |
变量(列)或者约束(行)上界的可行化松弛量 |
|
浮点数信息 |
可行化松弛模型中原始模型变量(列)的解 |
|
整数信息 |
当前节点LP松弛问题的求解状态 |
注意: Double这个词的准确翻译应是双精度浮点数。表格中和下文为了简便,称之为浮点数。
模型相关信息¶
Obj浮点数信息。
变量(列)的目标函数系数。
LB浮点数信息。
变量(列)或者约束(行)的下界。
UB浮点数信息。
变量(列)或者约束(行)的上界。
求解结果相关信息¶
Value浮点数信息。
变量(列)的取值。
Slack浮点数信息。
松弛变量的取值,也叫做约束的活跃程度(activities)。仅适用于线性规划模型。
Dual浮点数信息。
对偶变量的取值。仅适用于线性规划模型。
RedCost浮点数信息。
变量的Reduced cost。仅适用于线性规划模型。
对偶Farkas和主元射线¶
进阶话题。
当线性规划问题无可行解或者无界时, 求解器可以返回对偶Farkas(也叫做对偶极射线) 或者主元射线(也叫做极射线)作为证明。
DualFarkas浮点数信息。
线性规划问题无可行解时,线性约束的对偶Farkas(也叫做对偶极射线)。 请设置
"ReqFarkasRay"这一参数, 以确保求解器可以返回对偶Farkas。对偶Farkas的作用可以用形如 \(Ax = 0 \text{ and } l \leq x \leq u\) 的线性规划约束解释。 当该线性规划无可行解时,使用对偶Farkas向量 \(y\) 可以证明线性约束系统存在冲突: \(\max y^TAx < y^T b = 0\)。 如何计算 \(\max y^TAx\): 使用向量 \(\hat{a} = y^TA\),当 \(\hat{a}_i < 0\) 时选择 \(x_i = l_i\) 或者 \(\hat{a}_i > 0\) 时选择 \(x_i = u_i\) , 可以计算出表达式 \(y^TAx\) 的最大可能取值。
有些应用依赖于另一种等价的线性系统冲突证明: \(\min \bar{y}^TAx > \bar{y}^T b = 0\)。 对于此种情况,可以对求解器返回的对偶Farkas取负值实现,即 \(\bar{y}=-y\)。
在极端情况下,求解器可能无法返回有效的对偶Farkas。 例如当线性规划问题的不可行性微乎其微时。 此时,我们建议用FeasRelax功能研究或者修复线性规划的不可行性。
PrimalRay浮点数信息。
线性规划问题无界时,变量的主元射线(也叫做极射线)。 请设置
"ReqFarkasRay"这一参数,以确保求解器可以返回主元射线。对于一个求解最小值的线性规划问题 \(\min c^T x, Ax = b \text{ and } x \geq 0\), 主元射线向量 \(r\) 满足以下条件: \(r \geq 0, Ar = 0\) 以及 \(c^T r < 0\)。
可行化松弛结果相关信息¶
RelaxLB浮点数信息。
变量(列)或者约束(行)下界的可行化松弛量。
RelaxUB浮点数信息。
变量(列)或者约束(行)上界的可行化松弛量。
RelaxValue浮点数信息。
可行化松弛模型中原始模型变量(列)的解。
Callback相关信息¶
Callback相关信息包括可以在回调函数中获取到的信息。
BestObj浮点数信息。
当前最优目标函数值。
BestBnd浮点数信息。
当前最优目标下界。
HasIncumbent整数信息。
当前是否有最优可行解。
MipCandObj浮点数信息。
当前可行解对应的目标函数值。
RelaxSolObj浮点数信息。
当前LP松弛问题的目标函数值。
NodeStatus整数信息。
当前节点LP松弛问题的求解状态。可取值请参考:一般常数章节:解状态(部分) ,除去
NODELIMIT,UNSTARTED,INF_OR_UNB,其他均为其可能取值。
信息获取方式¶
在不同的编程接口中,获取信息的方式略有差别,具体请参考:
C 接口:C API函数:获取模型信息章节
C# 接口: C# API参考手册:信息章节
Java 接口: Java API参考手册:信息章节
Python 接口: Python API参考手册:信息章节