Skip to content

Error in optimize! for a POI optimizer #19

@caioluke

Description

@caioluke

When trying to optimize! the model below, I get an error message that says

MathOptInterface.UnsupportedConstraint{MathOptInterface.SingleVariable, Main.ParametricOptInterface.Parameter}: `MathOptInterface.SingleVariable`-in-`Main.ParametricOptInterface.Parameter` constraint is not supported by the model.

Stacktrace:
  [1] bridge_type(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Main.ParametricOptInterface.ParametricOptimizer{Float64, GLPK.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}}}, S::Type{Main.ParametricOptInterface.Parameter})
    @ MathOptInterface.Bridges ~\.julia\packages\MathOptInterface\YDdD3\src\Bridges\lazy_bridge_optimizer.jl:423
  [2] concrete_bridge_type
    @ ~\.julia\packages\MathOptInterface\YDdD3\src\Bridges\Variable\bridge.jl:248 [inlined]
  [3] add_constrained_variable(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Main.ParametricOptInterface.ParametricOptimizer{Float64, GLPK.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}}}, set::Main.ParametricOptInterface.Parameter)
    @ MathOptInterface.Bridges ~\.julia\packages\MathOptInterface\YDdD3\src\Bridges\bridge_optimizer.jl:1679
  [4] copy_single_variable(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Main.ParametricOptInterface.ParametricOptimizer{Float64, GLPK.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}}}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}, idxmap::MathOptInterface.Utilities.IndexMap, S::Type{Main.ParametricOptInterface.Parameter}, copy_constrained_variable::typeof(MathOptInterface.add_constrained_variable))
    @ MathOptInterface.Utilities ~\.julia\packages\MathOptInterface\YDdD3\src\Utilities\copy.jl:376
  [5] try_constrain_variables_on_creation(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Main.ParametricOptInterface.ParametricOptimizer{Float64, GLPK.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}}}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}, idxmap::MathOptInterface.Utilities.IndexMap, copy_constrained_variables::typeof(MathOptInterface.add_constrained_variables), copy_constrained_variable::typeof(MathOptInterface.add_constrained_variable))
    @ MathOptInterface.Utilities ~\.julia\packages\MathOptInterface\YDdD3\src\Utilities\copy.jl:630
  [6] default_copy_to(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Main.ParametricOptInterface.ParametricOptimizer{Float64, GLPK.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}}}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}, copy_names::Bool, filter_constraints::Nothing)
    @ MathOptInterface.Utilities ~\.julia\packages\MathOptInterface\YDdD3\src\Utilities\copy.jl:691
  [7] #automatic_copy_to#127
    @ ~\.julia\packages\MathOptInterface\YDdD3\src\Utilities\copy.jl:24 [inlined]
  [8] #copy_to#4
    @ ~\.julia\packages\MathOptInterface\YDdD3\src\Bridges\bridge_optimizer.jl:401 [inlined]
  [9] attach_optimizer(model::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}})
    @ MathOptInterface.Utilities ~\.julia\packages\MathOptInterface\YDdD3\src\Utilities\cachingoptimizer.jl:185
 [10] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.GenericModel{Float64, MathOptInterface.Utilities.ModelFunctionConstraints{Float64}}}})
    @ MathOptInterface.Utilities ~\.julia\packages\MathOptInterface\YDdD3\src\Utilities\cachingoptimizer.jl:248
 [11] optimize!(model::Model, optimizer_factory::Nothing; bridge_constraints::Bool, ignore_optimize_hook::Bool, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ JuMP ~\.julia\packages\JuMP\Xrr7O\src\optimizer_interface.jl:185
 [12] optimize! (repeats 2 times)
    @ ~\.julia\packages\JuMP\Xrr7O\src\optimizer_interface.jl:157 [inlined]
 [13] top-level scope
    @ In[9]:1
 [14] eval
    @ .\boot.jl:360 [inlined]
 [15] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
    @ Base .\loading.jl:1094

What must be added for this type of model to be supported in optimize?

model = Model(() -> POI.ParametricOptimizer(GLPK.Optimizer()))

@variable(model, x[i=1:2] >= 0)

@variable(model, y in POI.Parameter(0))
@variable(model, w in POI.Parameter(0))
@variable(model, z in POI.Parameter(0))

@constraint(model, 2*x[1] + x[2] + y <= 4)
@constraint(model, x[1] + 2*x[2] + z <= 4)
@constraint(model, y >= 2)

@objective(model, Max, sum(c[i]*x[i] for i=1:2) + w)

optimize!(model)

PS: If the model is declared like

model = direct_model( POI.ParametricOptimizer(GLPK.Optimizer()) )

optimize! works just fine

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions