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

如何从JuMP / Gurobi获取基本变量列表?

如何解决如何从JuMP / Gurobi获取基本变量列表?

我正在使用Gurobi作为求解器来解决Julia / JuMP中的LP。我想知道解决方案中的哪些变量是基本变量。如何获取此信息?

仅检查哪些变量非零是不够的,因为我们可能正在处理退化的解决方案(即基本变量等于零)。

我在网上发现了两个类似的问题,但是建议的解决方案似乎不再适用于当前版本的JuMP(或者我缺少什么吗?):

  1. https://discourse.julialang.org/t/how-to-obtain-a-basic-solution/1784
  2. https://groups.google.com/g/julia-opt/c/vJ6QuFBfPbw?pli=1

我正在寻找一个名为VBasishttps://www.gurobi.com/documentation/9.0/refman/vbasis.html)的Gurobi属性,但我不知道如何访问它。

解决方法

此文档记录不充分,但是您可以看到哪些限制是基本的:

model = Model(Gurobi.Optimizer)
@variable(model,x >= 0)
@constraint(model,c,2x >= 1)
@objective(model,Min,x)
optimize!(model)

julia> MOI.get(model,MOI.ConstraintBasisStatus(),c)
NONBASIC::BasisStatusCode = 1

julia> MOI.get(model,LowerBoundRef(x))
BASIC::BasisStatusCode = 0

请注意,由于变量可以具有上下限,因此我们报告哪些约束是基本的,而不是哪些变量。

文档: https://jump.dev/MathOptInterface.jl/stable/apireference/#MathOptInterface.ConstraintBasisStatus https://jump.dev/MathOptInterface.jl/stable/apireference/#MathOptInterface.BasisStatusCode

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