如何解决如何从JuMP / Gurobi获取基本变量列表?
我正在使用Gurobi作为求解器来解决Julia / JuMP中的LP。我想知道解决方案中的哪些变量是基本变量。如何获取此信息?
仅检查哪些变量非零是不够的,因为我们可能正在处理退化的解决方案(即基本变量等于零)。
我在网上发现了两个类似的问题,但是建议的解决方案似乎不再适用于当前版本的JuMP(或者我缺少什么吗?):
- https://discourse.julialang.org/t/how-to-obtain-a-basic-solution/1784
- https://groups.google.com/g/julia-opt/c/vJ6QuFBfPbw?pli=1
我正在寻找一个名为VBasis
(https://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 举报,一经查实,本站将立刻删除。