使用 JumP 获取不可约的不一致子系统 (IIS) - Julia

问题描述

我正在尝试获取包含在 IIS 中的约束,例如遇到以下不可行的问题

using JuMP,Gurobi
model = direct_model(Gurobi.Optimizer())

# defining variables
@variable(model,z)
@variable(model,x1[a=1:10,b=1:5] => 0)
@variable(model,x2[a=1:10,b=1:5,c=1:7] => 0)
# and so on...

# objective and constraints

@objective(model,Max,z)

@constraint(model,const1[a=1:10,c=1:7],equation1)
@constraint(model,const2[b=1:5,equation2)
# and so on...

optimize!(model)

if termination_status(model) == MOI.INFEASIBLE_OR_UNBOUNDED
    @assert termination_status(model) == MOI.INFEASIBLE_OR_UNBOUNDED
    compute_conflict!(model)
    MOI.get(model,MOI.ConstraintConflictStatus(),const1)
end

然而,它总是返回一个错误

MethodError: no method matching get(::Model,::MathOptInterface.ConstraintConflictStatus,::Array{ConstraintRef{Model,MathOptInterface.ConstraintIndex{MathOptInterface.ScalaraffineFunction{Float64},MathOptInterface.EqualTo{Float64}},Scalarshape},3})

我这样做对吗?

我使用的是 JuliaPro_v1.53-1、JuMP v0.21.6、Gurobi v0.9.11

感谢任何帮助或建议。

提前致谢

解决方法

在社区论坛上回答:https://discourse.julialang.org/t/obtaining-irreducible-inconsistent-subsystem-iis-with-jump-gurobi/58491/2

const1 是一个数组。使用广播:

MOI.get.(model,MOI.ConstraintConflictStatus(),const1)