首页 > 解决方案 > 为什么 GLPK Solver 在 JuMP 中不详细说明任何内容?

问题描述

我创建了这个简单的代码作为演示:

using GLPK
using JuMP
m = Model(GLPK.Optimizer)
@variable(m, y[i=1:100], Bin)
@objective(m, Min, sum(y))
@constraint(m, [j=5:50], sum([y[i] for i in j:j+10]) >= 5)
optimize!(m)

请注意,这个整数程序不代表任何东西,它只是举例。之前的代码没有输出任何内容,而我记得使用 Gurobi 甚至 GLPK 和 Julia JuMP 用于输出有关当前求解过程中位置的数据。已经处理了多少节点,算法已经运行了多长时间,当前的最佳界限等等。请注意,它与我的整数程序的大小无关,因为它在我使用更多约束和变量运行的更大程序上也不会输出任何内容。

我也试过:

julia> get_optimizer_attribute(m, MOI.Silent())
false

这与以下内容一致,不会改变任何内容:

julia> unset_silent(m)
false

我错过了什么吗?

我正在运行 Julia 1.5.2、JuMP v0.21.5 和 GLPK v0.14.4。

标签: juliaglpkjulia-jumpverbosity

解决方案


设置日志级别:

julia> set_optimizer_attribute(m, "msg_lev", GLPK.GLP_MSG_ALL)
3

julia> optimize!(m)
GLPK Simplex Optimizer, v4.64
46 rows, 100 columns, 506 non-zeros
     67: obj =  2.500000000e+001 inf =  2.000e+001 (5)
     74: obj =  2.600000000e+001 inf =  0.000e+000 (0)
*    77: obj =  2.500000000e+001 inf =  0.000e+000 (0)
OPTIMAL LP SOLUTION FOUND
GLPK Integer Optimizer, v4.64
46 rows, 100 columns, 506 non-zeros
100 integer variables, all of which are binary
Integer optimization begins...
+    77: mip =     not found yet >=              -inf        (1; 0)
+    77: >>>>>  2.500000000e+001 >=  2.500000000e+001   0.0% (1; 0)
+    77: mip =  2.500000000e+001 >=     tree is empty   0.0% (0; 1)
INTEGER OPTIMAL SOLUTION FOUND

推荐阅读