Skip to content

reset_optimizer attempts to pass RawParameters between models #1220

Closed
@odow

Description

@odow

When changing the optimizer, CachingOptimizer attempts to set MOI.RawParameters:

for attr in MOI.get(m.model_cache, MOI.ListOfOptimizerAttributesSet())
value = MOI.get(m.model_cache, attr)
optimizer_value = map_indices(m.model_to_optimizer_map, value)
MOI.set(m.optimizer, attr, optimizer_value)
end

We should probably just skip any RawParameters, or not include them in the list of optimizer parameters set.

julia> using JuMP, Clp, Cbc
[ Info: Precompiling JuMP [4076af6c-e467-56ae-b986-b466b2749572]

julia> model = Model(Cbc.Optimizer)
A JuMP Model
Feasibility problem with:
Variables: 0
Model mode: AUTOMATIC
CachingOptimizer state: EMPTY_OPTIMIZER
Solver name: COIN Branch-and-Cut (Cbc)

julia> set_optimizer_attribute(model, "ratioGap", 0.001)
0.001

julia> set_optimizer(model, Clp.Optimizer)
ERROR: MathOptInterface.UnsupportedAttribute{MathOptInterface.RawParameter}: Attribute MathOptInterface.RawParameter("ratioGap") is not supported by the model.
Stacktrace:
 [1] set(::Clp.Optimizer, ::MathOptInterface.RawParameter, ::Float64) at /Users/oscar/.julia/packages/Clp/NUuKQ/src/MOI_wrapper/MOI_wrapper.jl:147
 [2] set(::MathOptInterface.Utilities.CachingOptimizer{Clp.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.RawParameter, ::Float64) at /Users/oscar/.julia/packages/MathOptInterface/ZJFKw/src/Utilities/cachingoptimizer.jl:665
 [3] set(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Clp.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.RawParameter, ::Float64) at /Users/oscar/.julia/packages/MathOptInterface/ZJFKw/src/Bridges/bridge_optimizer.jl:621
 [4] reset_optimizer(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Clp.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}) at /Users/oscar/.julia/packages/MathOptInterface/ZJFKw/src/Utilities/cachingoptimizer.jl:105
 [5] reset_optimizer(::Model, ::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Clp.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::Bool) at /Users/oscar/.julia/packages/JuMP/qhoVb/src/optimizer_interface.jl:17
 [6] reset_optimizer(::Model, ::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Clp.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}) at /Users/oscar/.julia/packages/JuMP/qhoVb/src/optimizer_interface.jl:16
 [7] set_optimizer(::Model, ::Type{T} where T; bridge_constraints::Bool) at /Users/oscar/.julia/packages/JuMP/qhoVb/src/optimizer_interface.jl:73
 [8] set_optimizer(::Model, ::Type{T} where T) at /Users/oscar/.julia/packages/JuMP/qhoVb/src/optimizer_interface.jl:61
 [9] top-level scope at REPL[6]:1

x-ref: https://discourse.julialang.org/t/solving-fixed-milp-problem/51749

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions