SCIP solver presolve

SCIP presolve incorrectly returns some MILP and MINLP problems as infeasible or it gets stuck on presolving. I am trying to turn off presolve, but I am not sure which parameter to use. I have tried concurrent_presolvebefore and lp_presolving, but it still presolves the problem. Does anyone know how to turn off the presolve?

You could try:

set_optimizer_attribute(model, "presolving/maxrounds", 0)

See

However:

SCIP presolve incorrectly returns some MILP and MINLP problems as infeasible

Do you have a reproducible example? This is a correctness bug in SCIP that should be reported and fixed. How do you know it is incorrect?

For the MILP, you can write an MPS file using JuMP.write_to_file(model, "bug.mps"). (The next version of JuMP will have an NL writer, but it isn’t released yet.)

cc @mbesancon

Thanks. This resolves the issue for MILP.

Other solvers are able to provide a feasible solution. After turning off presolve using presolve/maxrounds parameter, it provides a feasible solution. However, on a pure NLP on which it was getting stuck on presolve, it struggles to find a solution even after hours when I turn-off presolve. IPOPT was able to solve that problem in few seconds.

Unfortunately, issue arises on data which I can’t share and running the same model with dummy data does not reproduces that error.

It looks like similar issues have been reported in the past as in the stackoverflow post and on SCIP mailing list:
integer programming - SCIP infeasibility detection with a MINLP - Stack Overflow
[Scip] SCIP doesn’t start the solution process after presolving (zib.de)