scip

How to completeley disable presolve in scip


As the titles says, how can you completely disable presolve in scip. I need this because otherwise SCIPgetDualSolVal and SCIPgetVarRedcost don't return be the (correct) values.

I tried the following parameters:

lp/presolving = false
concurrent/presolvebefore = false
presolving/maxrounds = 0

Especially the last one mostly helps but not completely.

Following model for example:

Minimize
 Obj: +1 COLONE +3 COLTWO +6.24 COLTHREE +0.1 COLFOUR
Subject to
 THISROW: +78.26 COLTWO +2.9 COLFOUR >= +92.3
 THATROW: +0.24 COLONE +11.31 COLTHREE <= +14.8
 LASTROW: -1 COLTHREE <= -0.1
Bounds
 0.6 <= COLONE
 18 <= COLFOUR <= 31.5
End

Is still translated to:

Minimize
 Obj: +1 t_COLONE +3 t_COLTWO +6.24 t_COLTHREE +0.1 t_COLFOUR
Subject to
 THISROW: +78.26 t_COLTWO +2.9 t_COLFOUR >= +92.3
Bounds
 0.6 <= t_COLONE <= 0.6
 0.0121390237669308 <= t_COLTWO <= 100000.45
 0.1 <= t_COLTHREE <= 0.1
 18 <= t_COLFOUR <= 31.5
End

Is there a way completely disable presolve in scip?

Thank you.


Solution

  • You can disable all presolving by calling (from the interactive shell) set presolving emphasis off. If you want to save this to a settings file you can afterwards call set diffsave <filename>

    Edit: I checked the small problem example that you gave and after presolving the problem did not get changed, but rather during the solution process. If you do not want that you also have do disable propagation with

    propagating/maxrounds = 0
    propagating/maxroundsroot = 0