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

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

如何解决使用 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)

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