-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Description
I'm on latest JuMP and MOI. This occurred running MOIPajarito's soc2 test here https://github.com/chriscoey/MOIPajarito.jl/blob/336edcf24cb3ee18dddbfaa955e9071a562848c9/test/JuMP_tests.jl#L87.
_soc2: Error During Test at /home/coey/.julia/dev/MOIPajarito/test/JuMP_tests.jl:29
Got exception outside of a @test
In `MathOptInterface.ScalarAffineFunction{Float64}`-in-`MathOptInterface.EqualTo{Float64}` constraint: Constant 2.5 of the function is not zero. The function constant should be moved to the set. You can use `MOI.Utilities.normalize_and_add_constraint` which does this automatically.
Stacktrace:
[1] throw_if_scalar_and_constant_not_zero
@ ~/.julia/packages/MathOptInterface/hcTsY/src/constraints.jl:95 [inlined]
[2] bridged_constraint_function
@ ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:1925 [inlined]
[3] add_constraint(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, f::MathOptInterface.ScalarAffineFunction{Float64}, s::MathOptInterface.EqualTo{Float64})
@ MathOptInterface.Bridges ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:1533
[4] bridge_constraint(#unused#::Type{MathOptInterface.Bridges.Constraint.ScalarSlackBridge{Float64, MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.Integer}}, model::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, f::MathOptInterface.ScalarAffineFunction{Float64}, s::MathOptInterface.Integer)
@ MathOptInterface.Bridges.Constraint ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/Constraint/slack.jl:182
[5] add_bridged_constraint(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, BridgeType::Type, f::MathOptInterface.ScalarAffineFunction{Float64}, s::MathOptInterface.Integer)
@ MathOptInterface.Bridges ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:1469
[6] add_constraint(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, f::MathOptInterface.ScalarAffineFunction{Float64}, s::MathOptInterface.Integer)
@ MathOptInterface.Bridges ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:1544
[7] bridge_constraint(#unused#::Type{MathOptInterface.Bridges.Constraint.ScalarFunctionizeBridge{Float64, MathOptInterface.Integer}}, model::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, f::MathOptInterface.VariableIndex, s::MathOptInterface.Integer)
@ MathOptInterface.Bridges.Constraint ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/Constraint/functionize.jl:20
[8] add_bridged_constraint(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, BridgeType::Type, f::MathOptInterface.VariableIndex, s::MathOptInterface.Integer)
@ MathOptInterface.Bridges ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:1469
[9] add_constraint(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, f::MathOptInterface.VariableIndex, s::MathOptInterface.Integer)
@ MathOptInterface.Bridges ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:1521
[10] _copy_constraints(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}, index_map::MathOptInterface.Utilities.IndexMap, cis_src::Vector{MathOptInterface.ConstraintIndex{MathOptInterface.VariableIndex, MathOptInterface.Integer}})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/hcTsY/src/Utilities/copy.jl:248
[11] _pass_constraints(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}, index_map::MathOptInterface.Utilities.IndexMap, variable_constraints_not_added::Vector{Any})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/hcTsY/src/Utilities/copy.jl:303
[12] default_copy_to(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/hcTsY/src/Utilities/copy.jl:442
[13] #copy_to#7
@ ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:421 [inlined]
[14] copy_to
@ ~/.julia/packages/MathOptInterface/hcTsY/src/Bridges/bridge_optimizer.jl:421 [inlined]
[15] optimize!
@ ~/.julia/packages/MathOptInterface/hcTsY/src/MathOptInterface.jl:80 [inlined]
[16] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{MOIPajarito.Optimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/hcTsY/src/Utilities/cachingoptimizer.jl:285
[17] optimize!(model::JuMP.Model, optimizer_factory::Nothing; bridge_constraints::Bool, ignore_optimize_hook::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ JuMP ~/.julia/packages/JuMP/2IF9U/src/optimizer_interface.jl:195
[18] optimize! (repeats 2 times)
@ ~/.julia/packages/JuMP/2IF9U/src/optimizer_interface.jl:167 [inlined]
[19] _soc2(opt::MathOptInterface.OptimizerWithAttributes)
@ Main.TestJuMP ~/.julia/dev/MOIPajarito/test/JuMP_tests.jl:87
Not sure how to get an MWE. I don't understand what is going on, but it seems like it is trying to bridge a VariableIndex in Integer to a ScalarAffineFunction in Integer, which doesn't make sense.