[Scip] Ensuring a presolver runs last

Martin Bergner bergner at or.rwth-aachen.de
Thu Jan 27 17:44:07 MET 2011


Hi all,

I want to ensure that the presolver I use runs as the "last" presolver.
The reason for this is that it is extremely expensive and I want to
profit from SCIP's other presolvers. I thought I can achieve that by
giving it an extremely low priority (lower then any of the presolvers
included in scip) and setting PRESOL_DELAY to TRUE in order that it gets
delayed if other presolver found reductions. 

However, I discovered that SCIP runs other presolver after my presolver
has run. This is not what I want, since my presolver actually doesn't do
anything, it justs collects information. The collected information is
useless once SCIP performs some kind of presolving and I would have to
do the rather expensive collection again.

It doesn't matter whether I return SCIP_DIDNOTFIND or SCIP_SUCCESS,
whether I set presolving/maxrounds = 1. SCIP always runs 2 rounds and my
presolver is not the last. What did I forget? 

Can I at least find out that SCIP wants to do something after my
presolver so that I can delay it by myself? I need to be sure however,
that SCIP really runs my presolver again. On most of the instances, this
behaviour does not occur, but there are some where it does. It has been
present with SCIP 1.2.* as well and I'm currently using 2.0.1.

Regards,
Martin



More information about the Scip mailing list