SCIP solver

How do we set number of threads for integer problems (MINLP or MILP) in SCIP?
This code returns an error and I am not 100% sure that parallel_maxnthreads is the right parameter to use.

optimizer = SCIP.Optimizer(parallel_maxnthreads=4)
 model = Model(optimizer)

You probably need

model = Model(() -> SCIP.Optimizer(parallel_maxnthreads = 4))

# or 

model = Model() do
    SCIP.Optimizer(parallel_maxnthreads = 4)
end

JuMP.Model takes a function that creates an optimizer, not an instance of an optimizer.

Thank you. Are you sure one of the parallel_maxnthreads or parallel_minnthreads is the right parameter to use to set number of threads for integer programs? I have read to use more threads one need to start it in concurrent mode: parallel processing - Use of threads in SCIP - Stack Overflow

That’s a question for @mbesancon

I have not used SCIP in “concurrent mode”, but reading the answers in the linked Stack Overflow question, it looks like it’s not enough to set some parameters. Rather, a different C function call is required to start the optimization. This requires changes to the SCIP.jl code.

FiberSCIP (to parallelize the actual B&B search) is a different piece of software yet again, not covered by SCIP.jl.

2 Likes