Does SCIP.jl use PaPILO for presolve by default?

I’m using SCIP and JuMP to solve a MILP and I’m interested in using PaPILO to see if it can help to strengthen my formulation. I’ve never used PaPILO before.

SCIP’s solve output shows a presolve step, but I’m unsure what it is using to carry out the presolve – is it using an another set of presolve routines specific to SCIP or is it internally passing the problem to PaPILO? I’m aware that PaPILO is integrated within the SCIP optimization suite, but if I’m using SCIP from JuMP, does it still get used?

Hi @convexhull, welcome to the forum.

if I’m using SCIP from JuMP, does it still get used?

On Linux and macOS, yes (assuming you use the default install).

On Windows, it depends how you installed SCIP (GitHub - scipopt/SCIP.jl: Julia interface to SCIP solver)

Here’s the bit where we choose whether to use PaPILO:

@mbesancon is the resident SCIP.jl expert, so he might be able to say more.

2 Likes

That’s great, thanks, @odow. Very interesting!
Yes, I’m using macOS.

1 Like

@odow’s answer is complete on the version of SCIP with/without PaPILO. I would just add that if you compile SCIP yourself, you can also override the SCIP library used either with the package artifacts or with an environment variable.

is it using an another set of presolve routines specific to SCIP or is it internally passing the problem to PaPILO

Both happen. PaPILO is one of the presolving plugins integrated in SCIP under the name presolving_milp. Other presolving techniques occur, even if your problem is just a MIP.

What can work to deactivate papilo presolving only is setting the parameter presolving/milp/maxrounds to 0, while leaving the rest of the presolving untouched.

2 Likes