-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Labels
Milestone
Description
The ConstraintSet is mangled somewhere:
julia> import MathOptInterface
julia> const MOI = MathOptInterface
MathOptInterface
julia> MOI.Utilities.@product_of_sets(Cones, MOI.PowerCone{T})
julia> const OptimizerCache{T} = MOI.Utilities.GenericModel{
Cdouble,
MOI.Utilities.ObjectiveContainer{Cdouble},
MOI.Utilities.VariablesContainer{Cdouble},
MOI.Utilities.MatrixOfConstraints{
Cdouble,
MOI.Utilities.MutableSparseMatrixCSC{
Cdouble,
T,
MOI.Utilities.ZeroBasedIndexing,
},
Vector{Cdouble},
Cones{Cdouble},
},
}
MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ObjectiveContainer{Float64}, MathOptInterface.Utilities.VariablesContainer{Float64}, MathOptInterface.Utilities.MatrixOfConstraints{Float64, MathOptInterface.Utilities.MutableSparseMatrixCSC{Float64, T, MathOptInterface.Utilities.ZeroBasedIndexing}, Vector{Float64}, Cones{Float64}}} where T
julia> model = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
julia> x = MOI.add_variables(model, 3)
3-element Vector{MathOptInterface.VariableIndex}:
MathOptInterface.VariableIndex(1)
MathOptInterface.VariableIndex(2)
MathOptInterface.VariableIndex(3)
julia> f = MOI.Utilities.operate(vcat, Float64, 1.0 .* x...)
MathOptInterface.VectorAffineFunction{Float64}(MathOptInterface.VectorAffineTerm{Float64}[MathOptInterface.VectorAffineTerm{Float64}(1, MathOptInterface.ScalarAffineTerm{Float64}(1.0, MathOptInterface.VariableIndex(1))), MathOptInterface.VectorAffineTerm{Float64}(2, MathOptInterface.ScalarAffineTerm{Float64}(1.0, MathOptInterface.VariableIndex(2))), MathOptInterface.VectorAffineTerm{Float64}(3, MathOptInterface.ScalarAffineTerm{Float64}(1.0, MathOptInterface.VariableIndex(3)))], [0.0, 0.0, 0.0])
julia> c = MOI.add_constraint(model, f, MOI.PowerCone(0.2))
MathOptInterface.ConstraintIndex{MathOptInterface.VectorAffineFunction{Float64}, MathOptInterface.PowerCone{Float64}}(1)
julia> cache = OptimizerCache{Int}()
MOIU.GenericModel{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.MatrixOfConstraints{Float64, MOIU.MutableSparseMatrixCSC{Float64, Int64, MOIU.ZeroBasedIndexing}, Vector{Float64}, Cones{Float64}}}
julia> index_map = MOI.copy_to(cache, model)
MathOptInterface.Utilities.IndexMap with 4 entries:
VariableIndex(1) => VariableIndex(1)
VariableIndex(2) => VariableIndex(2)
VariableIndex(3) => VariableIndex(3)
ConstraintIndex{VectorAffineFunction{Float64}, PowerCone{Float64}}(1) => ConstraintIndex{VectorAffineFunction{Float64}, PowerCone{Float64}}(1)
julia> c_new = index_map[c]
MathOptInterface.ConstraintIndex{MathOptInterface.VectorAffineFunction{Float64}, MathOptInterface.PowerCone{Float64}}(1)
julia> MOI.get(cache, MOI.ConstraintSet(), c_new)
MathOptInterface.PowerCone{Float64}(3.0)
This is causing failures in SCS:
https://github.com/jump-dev/SCS.jl/blob/7150274b37f15490db23318c93c99eef476407d0/test/MOI_wrapper.jl#L73-L77