SCIP.jl: how to add a new parameter?

Hello,

I am trying to use SCIP.jl with a custom branch of SCIP (exact-rational branch). I managed to compile this branch and to pass the install dir to SCIP.jl in my ENV[“SCIPOPTDIR”]. As indicated on the Readme of the branch (see GitHub - scipopt/scip at exact-rational), it is required to set the parameter exact/exact_enabled.

However, when I try to set the parameter with set_attribute(model, "exact/exact_enabled", "TRUE")

I obtain:

ERROR: LoadError: Unrecognized parameter: exact/exact_enabled
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] set_parameter(scipd::SCIP.SCIPData, name::String, value::String)
    @ SCIP ~/.julia/packages/SCIP/S9mBb/src/scip_data.jl:123
  [3] set
    @ ~/.julia/packages/SCIP/S9mBb/src/MOI_wrapper.jl:179 [inlined]
  [4] set
    @ ~/.julia/packages/MathOptInterface/gBojA/src/Bridges/bridge_optimizer.jl:955 [inlined]
  [5] set(model::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{SCIP.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, attr::MathOptInterface.RawOptimizerAttribute, value::String)
    @ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/gBojA/src/Utilities/cachingoptimizer.jl:1059
  [6] set(m::Model, attr::MathOptInterface.RawOptimizerAttribute, value::String)
    @ JuMP ~/.julia/packages/JuMP/as6Ji/src/optimizer_interface.jl:794
  [7] set_attribute
    @ ~/.julia/packages/JuMP/as6Ji/src/optimizer_interface.jl:1023 [inlined]
  [8] set_attribute
    @ ~/.julia/packages/JuMP/as6Ji/src/optimizer_interface.jl:1032 [inlined]
  [9] iabtree_throughput(G::MetaDiGraph{Int64, Float64}, json_comm::Vector{Any}, gap::Float64, continuous_ue_links::Bool, maxtime::Float64, scaling_caps::Int64)
    @ Main /home/IABEnergySavingJournal/solver/model.jl:70
 [10] macro expansion
    @ ./timing.jl:279 [inlined]
 [11] main(method::String, data::Dict{String, Any}, result_name::String)
    @ Main /home/IABEnergySavingJournal/solver/test_json.jl:75
 [12] top-level scope
    @ /home/IABEnergySavingJournal/solver/test_json.jl:107
in expression starting at /home/IABEnergySavingJournal/solver/test_json.jl:107

I also tried set_attribute(model, "exact/exact_enabled", true) and set_attribute(model, "exact/exact_enabled", 1) with the same outcome. I suspect I need to implement something regarding this parameter within SCIP.jl but am unsure what to change.

@mbesancon ?

The way you call the interface seems correct. Looking at the source code of the rational branch, it seems the parameter is now named:
exact/enabled instead of exact/exact_enabled, with the README lagging behind. I’ll notify this to the exact team, thank you for the feedback!

1 Like