From ab2cee91bb0c63ccfe76e75e16e29755ef80efcf Mon Sep 17 00:00:00 2001 From: rafabench Date: Fri, 8 Jul 2022 19:24:56 -0300 Subject: [PATCH 1/5] fix setters and getters for constraint names --- src/ParametricOptInterface.jl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ParametricOptInterface.jl b/src/ParametricOptInterface.jl index 167a73fc..f31fb872 100644 --- a/src/ParametricOptInterface.jl +++ b/src/ParametricOptInterface.jl @@ -484,7 +484,13 @@ function MOI.set( c::MOI.ConstraintIndex, name::String, ) - MOI.set(model.optimizer, attr, c, name) + if typeof(c).parameters[1] == MathOptInterface.ScalarQuadraticFunction{Float64} + MOI.set(model.optimizer, attr, model.quadratic_added_cache[c], name) + elseif typeof(c).parameters[1] == MathOptInterface.ScalarAffineFunction{Float64} + MOI.set(model.optimizer, attr, model.affine_added_cache[c], name) + else + MOI.set(model.optimizer, attr, c, name) + end return end @@ -493,7 +499,13 @@ function MOI.get( attr::MOI.ConstraintName, c::MOI.ConstraintIndex, ) - return MOI.get(model.optimizer, attr, c) + if typeof(c).parameters[1] == MathOptInterface.ScalarQuadraticFunction{Float64} + return MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) + elseif typeof(c).parameters[1] == MathOptInterface.ScalarAffineFunction{Float64} + return MOI.get(model.optimizer, attr, model.affine_added_cache[c]) + else + return MOI.get(model.optimizer, attr, c) + end end function MOI.get( From 9725c02a080a1272af223f4aa412ca4464ef5343 Mon Sep 17 00:00:00 2001 From: rafabench Date: Fri, 8 Jul 2022 19:26:18 -0300 Subject: [PATCH 2/5] fix format --- src/ParametricOptInterface.jl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ParametricOptInterface.jl b/src/ParametricOptInterface.jl index f31fb872..97a5a601 100644 --- a/src/ParametricOptInterface.jl +++ b/src/ParametricOptInterface.jl @@ -484,9 +484,11 @@ function MOI.set( c::MOI.ConstraintIndex, name::String, ) - if typeof(c).parameters[1] == MathOptInterface.ScalarQuadraticFunction{Float64} + if typeof(c).parameters[1] == + MathOptInterface.ScalarQuadraticFunction{Float64} MOI.set(model.optimizer, attr, model.quadratic_added_cache[c], name) - elseif typeof(c).parameters[1] == MathOptInterface.ScalarAffineFunction{Float64} + elseif typeof(c).parameters[1] == + MathOptInterface.ScalarAffineFunction{Float64} MOI.set(model.optimizer, attr, model.affine_added_cache[c], name) else MOI.set(model.optimizer, attr, c, name) @@ -499,9 +501,11 @@ function MOI.get( attr::MOI.ConstraintName, c::MOI.ConstraintIndex, ) - if typeof(c).parameters[1] == MathOptInterface.ScalarQuadraticFunction{Float64} + if typeof(c).parameters[1] == + MathOptInterface.ScalarQuadraticFunction{Float64} return MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) - elseif typeof(c).parameters[1] == MathOptInterface.ScalarAffineFunction{Float64} + elseif typeof(c).parameters[1] == + MathOptInterface.ScalarAffineFunction{Float64} return MOI.get(model.optimizer, attr, model.affine_added_cache[c]) else return MOI.get(model.optimizer, attr, c) From 58a46cff0df111efced15b3c009f0444341f26f2 Mon Sep 17 00:00:00 2001 From: rafabench Date: Fri, 8 Jul 2022 19:55:34 -0300 Subject: [PATCH 3/5] check if has key in constraint get/set name --- src/ParametricOptInterface.jl | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ParametricOptInterface.jl b/src/ParametricOptInterface.jl index 97a5a601..7030644f 100644 --- a/src/ParametricOptInterface.jl +++ b/src/ParametricOptInterface.jl @@ -485,10 +485,12 @@ function MOI.set( name::String, ) if typeof(c).parameters[1] == - MathOptInterface.ScalarQuadraticFunction{Float64} + MathOptInterface.ScalarQuadraticFunction{Float64} && + haskey(model.quadratic_added_cache, c) MOI.set(model.optimizer, attr, model.quadratic_added_cache[c], name) elseif typeof(c).parameters[1] == - MathOptInterface.ScalarAffineFunction{Float64} + MathOptInterface.ScalarAffineFunction{Float64} && + haskey(model.affine_added_cache, c) MOI.set(model.optimizer, attr, model.affine_added_cache[c], name) else MOI.set(model.optimizer, attr, c, name) @@ -502,10 +504,12 @@ function MOI.get( c::MOI.ConstraintIndex, ) if typeof(c).parameters[1] == - MathOptInterface.ScalarQuadraticFunction{Float64} + MathOptInterface.ScalarQuadraticFunction{Float64} && + haskey(model.quadratic_added_cache, c) return MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) elseif typeof(c).parameters[1] == - MathOptInterface.ScalarAffineFunction{Float64} + MathOptInterface.ScalarAffineFunction{Float64} && + haskey(model.affine_added_cache, c) return MOI.get(model.optimizer, attr, model.affine_added_cache[c]) else return MOI.get(model.optimizer, attr, c) From db866c10b8f2ad53d9ba232f541d11497283b9f3 Mon Sep 17 00:00:00 2001 From: rafabench Date: Wed, 13 Jul 2022 20:48:16 -0300 Subject: [PATCH 4/5] change type inference --- src/ParametricOptInterface.jl | 71 ++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/src/ParametricOptInterface.jl b/src/ParametricOptInterface.jl index 7030644f..05e174ad 100644 --- a/src/ParametricOptInterface.jl +++ b/src/ParametricOptInterface.jl @@ -481,16 +481,24 @@ end function MOI.set( model::Optimizer, attr::MOI.ConstraintName, - c::MOI.ConstraintIndex, + c::MOI.ConstraintIndex{F,S}, name::String, -) - if typeof(c).parameters[1] == - MathOptInterface.ScalarQuadraticFunction{Float64} && - haskey(model.quadratic_added_cache, c) +) where {S<:MOI.AbstractSet,F<:MOI.ScalarQuadraticFunction{T}} where {T} + if haskey(model.quadratic_added_cache, c) MOI.set(model.optimizer, attr, model.quadratic_added_cache[c], name) - elseif typeof(c).parameters[1] == - MathOptInterface.ScalarAffineFunction{Float64} && - haskey(model.affine_added_cache, c) + else + MOI.set(model.optimizer, attr, c, name) + end + return +end + +function MOI.set( + model::Optimizer, + attr::MOI.ConstraintName, + c::MOI.ConstraintIndex{F,S}, + name::String, +) where {S<:MOI.AbstractSet,F<:MOI.ScalarAffineFunction{T}} where {T} + if haskey(model.affine_added_cache[c], c) MOI.set(model.optimizer, attr, model.affine_added_cache[c], name) else MOI.set(model.optimizer, attr, c, name) @@ -498,22 +506,49 @@ function MOI.set( return end -function MOI.get( +function MOI.set( model::Optimizer, attr::MOI.ConstraintName, c::MOI.ConstraintIndex, + name::String, ) - if typeof(c).parameters[1] == - MathOptInterface.ScalarQuadraticFunction{Float64} && - haskey(model.quadratic_added_cache, c) - return MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) - elseif typeof(c).parameters[1] == - MathOptInterface.ScalarAffineFunction{Float64} && - haskey(model.affine_added_cache, c) - return MOI.get(model.optimizer, attr, model.affine_added_cache[c]) + MOI.set(model.optimizer, attr, c, name) + return +end + +function MOI.get( + model::Optimizer, + attr::MOI.ConstraintName, + c::MOI.ConstraintIndex{F,S}, +) where {S<:MOI.AbstractSet,F<:MOI.ScalarQuadraticFunction{T}} where {T} + if haskey(model.quadratic_added_cache, c) + MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) + else + MOI.get(model.optimizer, attr, c) + end + return +end + +function MOI.get( + model::Optimizer, + attr::MOI.ConstraintName, + c::MOI.ConstraintIndex{F,S}, +) where {S<:MOI.AbstractSet,F<:MOI.ScalarAffineFunction{T}} where {T} + if haskey(model.affine_added_cache[c], c) + MOI.get(model.optimizer, attr, model.affine_added_cache[c]) else - return MOI.get(model.optimizer, attr, c) + MOI.get(model.optimizer, attr, c) end + return +end + +function MOI.get( + model::Optimizer, + attr::MOI.ConstraintName, + c::MOI.ConstraintIndex, +) + MOI.set(model.optimizer, attr, c, name) + return end function MOI.get( From 115ae923319d8aedaf2926d8c9b4c0838e479a96 Mon Sep 17 00:00:00 2001 From: rafabench Date: Wed, 13 Jul 2022 21:40:30 -0300 Subject: [PATCH 5/5] fix ambiguous type and name getter --- src/ParametricOptInterface.jl | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/ParametricOptInterface.jl b/src/ParametricOptInterface.jl index 05e174ad..d776ce4c 100644 --- a/src/ParametricOptInterface.jl +++ b/src/ParametricOptInterface.jl @@ -481,9 +481,9 @@ end function MOI.set( model::Optimizer, attr::MOI.ConstraintName, - c::MOI.ConstraintIndex{F,S}, + c::MOI.ConstraintIndex{MOI.ScalarQuadraticFunction{T},S}, name::String, -) where {S<:MOI.AbstractSet,F<:MOI.ScalarQuadraticFunction{T}} where {T} +) where {T,S<:MOI.AbstractSet} if haskey(model.quadratic_added_cache, c) MOI.set(model.optimizer, attr, model.quadratic_added_cache[c], name) else @@ -495,10 +495,10 @@ end function MOI.set( model::Optimizer, attr::MOI.ConstraintName, - c::MOI.ConstraintIndex{F,S}, + c::MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},S}, name::String, -) where {S<:MOI.AbstractSet,F<:MOI.ScalarAffineFunction{T}} where {T} - if haskey(model.affine_added_cache[c], c) +) where {T,S<:MOI.AbstractSet} + if haskey(model.affine_added_cache, c) MOI.set(model.optimizer, attr, model.affine_added_cache[c], name) else MOI.set(model.optimizer, attr, c, name) @@ -519,27 +519,25 @@ end function MOI.get( model::Optimizer, attr::MOI.ConstraintName, - c::MOI.ConstraintIndex{F,S}, -) where {S<:MOI.AbstractSet,F<:MOI.ScalarQuadraticFunction{T}} where {T} + c::MOI.ConstraintIndex{MOI.ScalarQuadraticFunction{T},S}, +) where {T,S<:MOI.AbstractSet} if haskey(model.quadratic_added_cache, c) - MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) + return MOI.get(model.optimizer, attr, model.quadratic_added_cache[c]) else - MOI.get(model.optimizer, attr, c) + return MOI.get(model.optimizer, attr, c) end - return end function MOI.get( model::Optimizer, attr::MOI.ConstraintName, - c::MOI.ConstraintIndex{F,S}, -) where {S<:MOI.AbstractSet,F<:MOI.ScalarAffineFunction{T}} where {T} - if haskey(model.affine_added_cache[c], c) - MOI.get(model.optimizer, attr, model.affine_added_cache[c]) + c::MOI.ConstraintIndex{MOI.ScalarAffineFunction{T},S}, +) where {T,S<:MOI.AbstractSet} + if haskey(model.affine_added_cache, c) + return MOI.get(model.optimizer, attr, model.affine_added_cache[c]) else - MOI.get(model.optimizer, attr, c) + return MOI.get(model.optimizer, attr, c) end - return end function MOI.get( @@ -547,8 +545,7 @@ function MOI.get( attr::MOI.ConstraintName, c::MOI.ConstraintIndex, ) - MOI.set(model.optimizer, attr, c, name) - return + return MOI.get(model.optimizer, attr, c) end function MOI.get(