Scippy

SCIP

Solving Constraint Integer Programs

Interface changes between SCIP 2.1 and SCIP 3.0

New and changed callbacks

  • Conflict Analysis:

    • Added parameter "relaxedbds" to conflict handler callback method SCIP_DECL_CONFLICTEXEC(). This array contains bounds which are sufficient to create a valid conflict
  • Constraint Handler:

    • New optional callback methods in constraint handlers: SCIP_DECL_CONSGETVARS and SCIP_DECL_CONSGETNVARS. These callbacks, if implemented, should return an array of all variables and the number of all variables used by the given constraint, respectively. (This method might, e.g., be called by a presolver)
    • Added a propagation timing parameter "proptiming" to SCIP_DECL_CONSPROP(), giving the current timing at which this method is called
    • Added a parameter 'restart' to the SCIP_DECL_CONSEXITSOL() callback method, indicating whether this call was triggered by a restart.
    • Added a parameter 'relaxedbd' to SCIP_DECL_CONSRESPROP() callback method. If explaining a given bound change (index), it is sufficient to explain the reason for reaching the 'relaxedbd' value, see above
    • Removed parameters "isunbounded", "isinfeasible" and "result" from SCIP_DECL_CONSINITPRE() and SCIP_DECL_CONSEXITPRE() callback methods. It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
  • Presolving:

    • Removed parameters "isunbounded", "isinfeasible" and "result" from SCIP_DECL_PRESOLINITPRE() and SCIP_DECL_PRESOLSEXITPRE(). It is not allowed to determine unboundedness or infeasibility in these callbacks, anymore.
  • Propagator:

    • Added a propagation timing parameter "proptiming" to SCIP_DECL_PROPEXEC(), giving the current timing at which this method is called.
    • Added a parameter 'restart' to SCIP_DECL_PROPEXITSOL() callback method, indicating whether this call was triggered by a restart.
    • Added a parameter 'relaxedbd' to SCIP_DECL_PROPRESPROP() callback method. If explaining a given bound change (index), it is sufficient to explain the reason for reaching the 'relaxedbd' value.
    • Removed parameters "isunbounded", "isinfeasible" and "result" from SCIP_DECL_PROPINITPRE() and SCIP_DECL_PROPEXITPRE() callback methods. It is not allowed to determined unboundedness or infeasibility in these callbacks, anymore.


Changed interface methods

  • Constraint Handlers:

  • Problem:

    • Added basic creation methods SCIPcreateVarBasic() and SCIPcreateProbBasic() and setter functions
    • Added method SCIPisPresolveFinished() which returns whether the presolving process would be stopped after the current presolving round, given no further reductions will be found.
    • Forbid problem modifications in SCIP_STAGE_{INIT,EXIT}PRESOLVE (see pre-conditions for corresponding methods in scip.h).
  • Message Handler:

    • Changed the message handler system within SCIP heavily such that it is thread-safe. SCIPcreateMessagehdlr() in scip.{c,h} was replaced by SCIPmessagehdlrCreate() in pub_message.h/message.c with a changed parameter list.
    • Error messages (SCIPerrorMessage()) are not handled via the message handler anymore; per default the error message is written to stderr.
  • LP interface:

    • SCIPlpiCreate() got a new parameter 'messagehdlr'.
    • SoPlex LPI supports setting of SCIP_LPPAR_DUALFEASTOL when using SoPlex version 1.6.0.5 and higher.
  • Nonlinear expressions, relaxation, and solver interface:

    • Renamed SCIPmarkNonlinearitiesPresent() to SCIPenableNLP() and SCIPhasNonlinearitiesPresent() to SCIPisNLPEnabled().
    • Method SCIPexprtreeRemoveFixedVars() is not public anymore.


Miscellaneous

  • Replaced SCIPparamSet*() by SCIPchg*Param() (where * is either Bool, Int, Longint, Real, Char, or String).
  • New parameter in SCIPcopy() and SCIPcopyPlugins() to indicate whether the message handler from the source SCIP should be passed to the target SCIP (only the pointer is copied and the usage counter of the message handler is increased).
  • SCIPprintCons() does not print termination symbol ";\n" anymore; if wanted, use SCIPinfoMessage() to print ";\n" manually
  • All objscip *.h file now use the default SCIP interface macros.
  • The methods SCIPsortedvecInsert*() have an additional parameter which can be used to receive the position where the new element was inserted.
  • New macro SCIPdebugPrintCons() to print constraint only if SCIP_DEBUG flag is set.


For further information we refer to the Release notes and the Changelog.