微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Julia - 了解 JuMP Gurobi 输出 预求解节点当前节点目标界限工作

如何解决Julia - 了解 JuMP Gurobi 输出 预求解节点当前节点目标界限工作

我经常将 Gurobi 与 JuMP 一起使用,我注意到它的输出仍有部分我不理解。除非它被记录在某处并且该链接是最受欢迎的,否则您能帮助理解以下内容吗? :)

Found heuristic solution: objective 5820.0000000
Presolve removed 33 rows and 11 columns
Presolve time: 0.00s
Presolved: 607 rows,331 columns,2445 nonzeros
Variable types: 111 continuous,220 integer (220 binary)

Root relaxation: objective 1.157500e+03,64 iterations,0.00 seconds

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 1157.50000    0   25 5820.00000 1157.50000  80.1%     -    0s
H    0     0                    2535.0000000 1157.50000  54.3%     -    0s
     0     0 1236.00000    0   23 2535.00000 1236.00000  51.2%     -    0s
     0     0 1273.65351    0   41 2535.00000 1273.65351  49.8%     -    0s
     0     0 1274.59375    0   41 2535.00000 1274.59375  49.7%     -    0s
     0     0 1274.69841    0   42 2535.00000 1274.69841  49.7%     -    0s
     0     0 1309.98305    0   42 2535.00000 1309.98305  48.3%     -    0s
     0     0 1310.26027    0   42 2535.00000 1310.26027  48.3%     -    0s
     0     0 1340.01176    0   47 2535.00000 1340.01176  47.1%     -    0s
     0     0 1342.47826    0   49 2535.00000 1342.47826  47.0%     -    0s
     0     0 1342.60000    0   49 2535.00000 1342.60000  47.0%     -    0s
     0     0 1362.32468    0   50 2535.00000 1362.32468  46.3%     -    0s
     0     0 1363.08000    0   49 2535.00000 1363.08000  46.2%     -    0s
     0     0 1363.13077    0   49 2535.00000 1363.13077  46.2%     -    0s
     0     0 1370.79545    0   53 2535.00000 1370.79545  45.9%     -    0s
     0     0 1375.50000    0   52 2535.00000 1375.50000  45.7%     -    0s
     0     0 1375.50000    0   52 2535.00000 1375.50000  45.7%     -    0s
     0     0 1376.70025    0   52 2535.00000 1376.70025  45.7%     -    0s
     0     0 1376.70122    0   53 2535.00000 1376.70122  45.7%     -    0s
     0     0 1376.70122    0   53 2535.00000 1376.70122  45.7%     -    0s
     0     2 1376.98418    0   53 2535.00000 1376.98418  45.7%     -    0s
*  255   157              14    2457.0000000 1473.00000  40.0%  22.5    0s
H  407   223                    2397.0000000 1548.00000  35.4%  20.3    0s
* 1962   758              22    2355.0000000 1772.85714  24.7%  16.8    0s
*14326  2205              27    2343.0000000 2088.50000  10.9%  15.7    3s

根据我认为我已经知道的,按出现顺序:


预求解

  • 找到启发式解决方案:目标 5820,Gurobi 启动了预求解并找到了价值 5820 的解决方
  • Presolve 删除 33 个冗余或无用的变量以及 11 个约束?
  • 预求解:预求解模型的大小
  • 变量类型:有些是二元的,有些是连续的。
  • 根松弛:LP 松弛的目标是 1 157.5

节点

  • Expl (1): * 空或 H,我不知道有这些符号时的区别,但我注意到所有带有给定符号(H、* 或空)的行都会具有相同的输出
  • Expl 和 Unexpl 求解树中已探索节点和未探索节点的数量

当前节点

  • Obj:正在探索的当前节点的目标?
  • 深度:当前求解的树的深度
  • IntInf:我不知道这个

目标界限

  • 现有:找到的最佳有效解决方案的当前值
  • BestBd:当前找到的最佳下限
  • 差距:这可能是当前最佳解决方案和最佳界限之间的差距,但我无法推断出它是如何计算的。

工作

  • It/Node:这里我们需要找出什么是迭代
  • 时间:在那之前花在解决问题上的时间。

解决方法

详情请见https://www.gurobi.com/documentation/9.1/refman/mip_logging.html

让我引用那些回答你问题的人:

Nodes 部分(前两列)提供有关搜索进度的一般定量信息。第一列显示到该点已探索的分支和切割节点的数量,而第二列显示搜索树中仍未探索的叶节点的数量。有时,输出行的开头会有一个 H 或 * 字符。这表明通过 MIP 启发式 (H) 或分支 (*) 找到了新的可行解。

Current Node 部分提供有关在该点在分支剪切树中探索的特定节点的信息。它显示了相关松弛的目标、分支和切割树中该节点的深度以及在相关松弛中具有非整数值的整数变量的数量。

Objective Bounds 部分提供有关可行解决方案的最佳已知目标值(即当前在职者的目标值)以及由搜索树的叶节点提供的当前目标边界的信息。最佳目标值始终介于这两个值之间。本节中的第三列 (Gap) 显示了两个目标界限之间的相对差距。当此差距小于 MIPGap 参数时,优化终止。

日志的 Work 部分提供有关到该点已执行多少工作的信息。第一列显示分支切割树中每个节点执行的单纯形迭代的平均次数。最后一列显示自求解开始以来经过的时间。

查看您的日志,您很快就会接近最优,并且您可能在半分钟左右得到 Gap=0.01% 的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。