# Does SCIP.jl use PaPILO for presolve by default?

**URL:** <https://discourse.julialang.org/t/does-scip-jl-use-papilo-for-presolve-by-default/104046>\
**Category:** Optimization (Mathematical)\
**Tags:** question, jump\
**Created:** [September 20, 2023, 2:25am UTC](https://discourse.julialang.org/t/does-scip-jl-use-papilo-for-presolve-by-default/104046 "2023-09-20T02:25:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![convexhull](https://avatars.discourse-cdn.com/v4/letter/c/b2d939/32.png) [@convexhull](https://discourse.julialang.org/u/convexhull)\
**Post date:** [September 20, 2023, 2:25am UTC](https://discourse.julialang.org/t/does-scip-jl-use-papilo-for-presolve-by-default/104046/1 "2023-09-20T02:25:30Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [September 20, 2023, 3:05am UTC](https://discourse.julialang.org/t/does-scip-jl-use-papilo-for-presolve-by-default/104046/2 "2023-09-20T03:05:31Z")

</div>

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](https://github.com/scipopt/SCIP.jl#installation))

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

> <https://github.com/scipopt/SCIP.jl/blob/a6b146213901c7a264823fd11c046c29c7ee39e9/src/init.jl#L8C5-L14>

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

---

<div class="post-metadata">

**Author:** ![convexhull](https://avatars.discourse-cdn.com/v4/letter/c/b2d939/32.png) [@convexhull](https://discourse.julialang.org/u/convexhull)\
**Post date:** [September 20, 2023, 5:27am UTC](https://discourse.julialang.org/t/does-scip-jl-use-papilo-for-presolve-by-default/104046/3 "2023-09-20T05:27:14Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mbesancon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbesancon/32/6528_2.png) [@mbesancon](https://discourse.julialang.org/u/mbesancon)\
**Post date:** [September 20, 2023, 6:20am UTC](https://discourse.julialang.org/t/does-scip-jl-use-papilo-for-presolve-by-default/104046/4 "2023-09-20T06:20:40Z")

</div>

@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.
