首页 > 解决方案 > 在 JuMP/Gurobi 中获取分支和绑定节点数

问题描述

我正在尝试使用 JuMP 接口和 Julia 中的 Gurobi 求解器来获取分支和绑定节点数。

我按照 JuMP 网站上的建议尝试了 getnodecount(m),但结果未定义。在做了更多的研究之后,我读到尝试: MathProgBase.getnodecount(m)

一个简单的例子:

using Gurobi
using JuMP
using MathProgBase

m = Model(with_optimizer(Gurobi.Optimizer))
@variable(m, x, Bin)
@variable(m, y >=0)
@objective(m, Min, x*y)

optimize!(m)
println(value(x))

# getnodecount(m)
MathProgBase.getnodecount(m)

我希望节点计数为 0,但出现此错误:

LoadError: MethodError: no method matching getnodecount(::Model)

Closest candidates are: getnodecount(!Matched::Gurobi.GurobiMathProgModel) at /uliapro/JuliaPro_v1.1.1.1/packages/Gurobi/dlJep/src/MPB_wrapper.jl:759

标签: juliagurobijulia-jump

解决方案


您似乎使用的是新的MathOptInterface而不是MathProgBase. 这就是为什么您没有得到 aGurobiMathProgModel并因此出现错误的原因。在MathOptInterface中,您可以执行以下操作来获取节点数。

MOI.get(model, MOI.NodeCount())

这将调用此处Gurobi.get_node_count(model::Model)实现的方法。有关其他属性,请参阅MOI API 参考。


推荐阅读