SCIP

Solving Constraint Integer Programs

Detailed Description

methods for presolver plugins

Modules

 Special Methods
 methods commonly used for presolving
 

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPpresolComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPpresolCompName)
 
SCIP_PRESOLDATA * SCIPpresolGetData (SCIP_PRESOL *presol)
 
void SCIPpresolSetData (SCIP_PRESOL *presol, SCIP_PRESOLDATA *presoldata)
 
const char * SCIPpresolGetName (SCIP_PRESOL *presol)
 
const char * SCIPpresolGetDesc (SCIP_PRESOL *presol)
 
int SCIPpresolGetPriority (SCIP_PRESOL *presol)
 
int SCIPpresolGetMaxrounds (SCIP_PRESOL *presol)
 
SCIP_PRESOLTIMING SCIPpresolGetTiming (SCIP_PRESOL *presol)
 
void SCIPpresolSetTiming (SCIP_PRESOL *presol, SCIP_PRESOLTIMING timing)
 
SCIP_Bool SCIPpresolIsInitialized (SCIP_PRESOL *presol)
 
SCIP_Real SCIPpresolGetSetupTime (SCIP_PRESOL *presol)
 
SCIP_Real SCIPpresolGetTime (SCIP_PRESOL *presol)
 
int SCIPpresolGetNFixedVars (SCIP_PRESOL *presol)
 
int SCIPpresolGetNAggrVars (SCIP_PRESOL *presol)
 
int SCIPpresolGetNChgVarTypes (SCIP_PRESOL *presol)
 
int SCIPpresolGetNChgBds (SCIP_PRESOL *presol)
 
int SCIPpresolGetNAddHoles (SCIP_PRESOL *presol)
 
int SCIPpresolGetNDelConss (SCIP_PRESOL *presol)
 
int SCIPpresolGetNAddConss (SCIP_PRESOL *presol)
 
int SCIPpresolGetNUpgdConss (SCIP_PRESOL *presol)
 
int SCIPpresolGetNChgCoefs (SCIP_PRESOL *presol)
 
int SCIPpresolGetNChgSides (SCIP_PRESOL *presol)
 
int SCIPpresolGetNCalls (SCIP_PRESOL *presol)
 
SCIP_RETCODE SCIPincludePresol (SCIP *scip, const char *name, const char *desc, int priority, int maxrounds, SCIP_PRESOLTIMING timing, SCIP_DECL_PRESOLCOPY((*presolcopy)), SCIP_DECL_PRESOLFREE((*presolfree)), SCIP_DECL_PRESOLINIT((*presolinit)), SCIP_DECL_PRESOLEXIT((*presolexit)), SCIP_DECL_PRESOLINITPRE((*presolinitpre)), SCIP_DECL_PRESOLEXITPRE((*presolexitpre)), SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
 
SCIP_RETCODE SCIPincludePresolBasic (SCIP *scip, SCIP_PRESOL **presolptr, const char *name, const char *desc, int priority, int maxrounds, SCIP_PRESOLTIMING timing, SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
 
SCIP_RETCODE SCIPsetPresolCopy (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLCOPY((*presolcopy)))
 
SCIP_RETCODE SCIPsetPresolFree (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLFREE((*presolfree)))
 
SCIP_RETCODE SCIPsetPresolInit (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINIT((*presolinit)))
 
SCIP_RETCODE SCIPsetPresolExit (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXIT((*presolexit)))
 
SCIP_RETCODE SCIPsetPresolInitpre (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINITPRE((*presolinitpre)))
 
SCIP_RETCODE SCIPsetPresolExitpre (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXITPRE((*presolexitpre)))
 
SCIP_PRESOL * SCIPfindPresol (SCIP *scip, const char *name)
 
SCIP_PRESOL ** SCIPgetPresols (SCIP *scip)
 
int SCIPgetNPresols (SCIP *scip)
 
SCIP_RETCODE SCIPsetPresolPriority (SCIP *scip, SCIP_PRESOL *presol, int priority)
 

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

SCIP_DECL_SORTPTRCOMP ( SCIPpresolComp  )

compares two presolvers w. r. to their priority

Definition at line 47 of file presol.c.

◆ SCIP_DECL_SORTPTRCOMP() [2/2]

SCIP_DECL_SORTPTRCOMP ( SCIPpresolCompName  )

comparison method for sorting presolvers w.r.t. to their name

Definition at line 53 of file presol.c.

References SCIPpresolGetName().

◆ SCIPpresolGetData()

◆ SCIPpresolSetData()

void SCIPpresolSetData ( SCIP_PRESOL *  presol,
SCIP_PRESOLDATA *  presoldata 
)

sets user data of presolver; user has to free old data in advance!

Parameters
presolpresolver
presoldatanew presolver user data

Definition at line 476 of file presol.c.

References SCIP_Presol::presoldata.

Referenced by SCIP_DECL_PRESOLFREE().

◆ SCIPpresolGetName()

◆ SCIPpresolGetDesc()

const char* SCIPpresolGetDesc ( SCIP_PRESOL *  presol)

gets description of presolver

Parameters
presolpresolver

Definition at line 563 of file presol.c.

References SCIP_Presol::desc.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPpresolGetPriority()

int SCIPpresolGetPriority ( SCIP_PRESOL *  presol)

gets priority of presolver

Parameters
presolpresolver

Definition at line 573 of file presol.c.

References SCIP_Presol::priority.

Referenced by presolveRound(), and SCIP_DECL_DIALOGEXEC().

◆ SCIPpresolGetMaxrounds()

int SCIPpresolGetMaxrounds ( SCIP_PRESOL *  presol)

gets round limit of presolver

Parameters
presolpresolver

Definition at line 583 of file presol.c.

References SCIP_Presol::maxrounds.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPpresolGetTiming()

SCIP_PRESOLTIMING SCIPpresolGetTiming ( SCIP_PRESOL *  presol)

gets the timing mask of the presolver

Parameters
presolpresolver

Definition at line 607 of file presol.c.

References SCIP_Presol::timing.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPpresolSetTiming()

void SCIPpresolSetTiming ( SCIP_PRESOL *  presol,
SCIP_PRESOLTIMING  timing 
)

sets the timing mask of the presolver

Parameters
presolpresolver
timingtiming mask of the presolver

Definition at line 617 of file presol.c.

References SCIP_Presol::timing.

◆ SCIPpresolIsInitialized()

SCIP_Bool SCIPpresolIsInitialized ( SCIP_PRESOL *  presol)

is presolver initialized?

Parameters
presolpresolver

Definition at line 629 of file presol.c.

References SCIP_Presol::initialized.

◆ SCIPpresolGetSetupTime()

SCIP_Real SCIPpresolGetSetupTime ( SCIP_PRESOL *  presol)

gets time in seconds used in this presolver for setting up for next stages

Parameters
presolpresolver

Definition at line 651 of file presol.c.

References SCIPclockGetTime(), and SCIP_Presol::setuptime.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetTime()

SCIP_Real SCIPpresolGetTime ( SCIP_PRESOL *  presol)

gets time in seconds used in this presolver

Parameters
presolpresolver

Definition at line 661 of file presol.c.

References SCIP_Presol::presolclock, and SCIPclockGetTime().

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNFixedVars()

int SCIPpresolGetNFixedVars ( SCIP_PRESOL *  presol)

gets number of variables fixed in presolver

Parameters
presolpresolver

Definition at line 671 of file presol.c.

References SCIP_Presol::nfixedvars.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNAggrVars()

int SCIPpresolGetNAggrVars ( SCIP_PRESOL *  presol)

gets number of variables aggregated in presolver

Parameters
presolpresolver

Definition at line 681 of file presol.c.

References SCIP_Presol::naggrvars.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNChgVarTypes()

int SCIPpresolGetNChgVarTypes ( SCIP_PRESOL *  presol)

gets number of variable types changed in presolver

Parameters
presolpresolver

Definition at line 691 of file presol.c.

References SCIP_Presol::nchgvartypes.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNChgBds()

int SCIPpresolGetNChgBds ( SCIP_PRESOL *  presol)

gets number of bounds changed in presolver

Parameters
presolpresolver

Definition at line 701 of file presol.c.

References SCIP_Presol::nchgbds.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNAddHoles()

int SCIPpresolGetNAddHoles ( SCIP_PRESOL *  presol)

gets number of holes added to domains of variables in presolver

Parameters
presolpresolver

Definition at line 711 of file presol.c.

References SCIP_Presol::naddholes.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNDelConss()

int SCIPpresolGetNDelConss ( SCIP_PRESOL *  presol)

gets number of constraints deleted in presolver

Parameters
presolpresolver

Definition at line 721 of file presol.c.

References SCIP_Presol::ndelconss.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNAddConss()

int SCIPpresolGetNAddConss ( SCIP_PRESOL *  presol)

gets number of constraints added in presolver

Parameters
presolpresolver

Definition at line 731 of file presol.c.

References SCIP_Presol::naddconss.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNUpgdConss()

int SCIPpresolGetNUpgdConss ( SCIP_PRESOL *  presol)

gets number of constraints upgraded in presolver

Parameters
presolpresolver

Definition at line 741 of file presol.c.

References SCIP_Presol::nupgdconss.

◆ SCIPpresolGetNChgCoefs()

int SCIPpresolGetNChgCoefs ( SCIP_PRESOL *  presol)

gets number of coefficients changed in presolver

Parameters
presolpresolver

Definition at line 751 of file presol.c.

References SCIP_Presol::nchgcoefs.

Referenced by SCIP_DECL_PRESOLEXEC(), and SCIPprintPresolverStatistics().

◆ SCIPpresolGetNChgSides()

int SCIPpresolGetNChgSides ( SCIP_PRESOL *  presol)

gets number of constraint sides changed in presolver

Parameters
presolpresolver

Definition at line 761 of file presol.c.

References SCIP_Presol::nchgsides.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNCalls()

int SCIPpresolGetNCalls ( SCIP_PRESOL *  presol)

gets number of times the presolver was called and tried to find reductions

Parameters
presolpresolver

Definition at line 771 of file presol.c.

References SCIP_Presol::ncalls.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPincludePresol()

SCIP_RETCODE SCIPincludePresol ( SCIP *  scip,
const char *  name,
const char *  desc,
int  priority,
int  maxrounds,
SCIP_PRESOLTIMING  timing,
SCIP_DECL_PRESOLCOPY((*presolcopy))  ,
SCIP_DECL_PRESOLFREE((*presolfree))  ,
SCIP_DECL_PRESOLINIT((*presolinit))  ,
SCIP_DECL_PRESOLEXIT((*presolexit))  ,
SCIP_DECL_PRESOLINITPRE((*presolinitpre))  ,
SCIP_DECL_PRESOLEXITPRE((*presolexitpre))  ,
SCIP_DECL_PRESOLEXEC((*presolexec))  ,
SCIP_PRESOLDATA *  presoldata 
)

creates a presolver and includes it in SCIP

Note
method has all presolver callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludePresolBasic() and setter functions if you seek for a method which is less likely to change in future releases

creates a presolver and includes it in SCIP.

Note
method has all presolver callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludePresolBasic() and setter functions if you seek for a method which is less likely to change in future releases
Parameters
scipSCIP data structure
namename of presolver
descdescription of presolver
prioritypriority of the presolver (>= 0: before, < 0: after constraint handlers)
maxroundsmaximal number of presolving rounds the presolver participates in (-1: no limit)
timingtiming mask of the presolver
presoldatapresolver data

Definition at line 6874 of file scip.c.

References checkStage(), FALSE, Scip::mem, Scip::messagehdlr, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPfindPresol(), SCIPpresolCreate(), SCIPsetIncludePresol(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludeObjPresol().

◆ SCIPincludePresolBasic()

SCIP_RETCODE SCIPincludePresolBasic ( SCIP *  scip,
SCIP_PRESOL **  presolptr,
const char *  name,
const char *  desc,
int  priority,
int  maxrounds,
SCIP_PRESOLTIMING  timing,
SCIP_DECL_PRESOLEXEC((*presolexec))  ,
SCIP_PRESOLDATA *  presoldata 
)

Creates a presolver and includes it in SCIP with its fundamental callback. All non-fundamental (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions. These are SCIPsetPresolCopy(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolExit(), SCIPsetPresolInitpre(), and SCIPsetPresolExitPre().

Note
if you want to set all callbacks with a single method call, consider using SCIPincludePresol() instead

creates a presolver and includes it in SCIP with its fundamental callback. All non-fundamental (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions. These are SCIPsetPresolCopy(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolExit(), SCIPsetPresolInitpre(), and SCIPsetPresolExitPre().

Note
if you want to set all callbacks with a single method call, consider using SCIPincludePresol() instead
Parameters
scipSCIP data structure
presolptrreference to presolver, or NULL
namename of presolver
descdescription of presolver
prioritypriority of the presolver (>= 0: before, < 0: after constraint handlers)
maxroundsmaximal number of presolving rounds the presolver participates in (-1: no limit)
timingtiming mask of the presolver
presoldatapresolver data

Definition at line 6917 of file scip.c.

References checkStage(), FALSE, Scip::mem, Scip::messagehdlr, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPfindPresol(), SCIPpresolCreate(), SCIPsetIncludePresol(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludePresolBoundshift(), SCIPincludePresolConvertinttobin(), SCIPincludePresolDomcol(), SCIPincludePresolDualagg(), SCIPincludePresolDualcomp(), SCIPincludePresolDualinfer(), SCIPincludePresolImplfree(), SCIPincludePresolImplics(), SCIPincludePresolInttobinary(), SCIPincludePresolQPKKTref(), SCIPincludePresolRedvub(), SCIPincludePresolSparsify(), SCIPincludePresolStuffing(), SCIPincludePresolSymbreak(), SCIPincludePresolSymmetry(), SCIPincludePresolTrivial(), and SCIPincludePresolTworowbnd().

◆ SCIPsetPresolCopy()

◆ SCIPsetPresolFree()

SCIP_RETCODE SCIPsetPresolFree ( SCIP *  scip,
SCIP_PRESOL *  presol,
SCIP_DECL_PRESOLFREE((*presolfree))   
)

◆ SCIPsetPresolInit()

SCIP_RETCODE SCIPsetPresolInit ( SCIP *  scip,
SCIP_PRESOL *  presol,
SCIP_DECL_PRESOLINIT((*presolinit))   
)

sets initialization method of presolver

Parameters
scipSCIP data structure
presolpresolver

Definition at line 6984 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPpresolSetInit(), and TRUE.

Referenced by SCIPincludePresolSparsify(), SCIPincludePresolSymbreak(), and SCIPincludePresolSymmetry().

◆ SCIPsetPresolExit()

SCIP_RETCODE SCIPsetPresolExit ( SCIP *  scip,
SCIP_PRESOL *  presol,
SCIP_DECL_PRESOLEXIT((*presolexit))   
)

sets deinitialization method of presolver

Parameters
scipSCIP data structure
presolpresolver

Definition at line 7000 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPpresolSetExit(), and TRUE.

Referenced by SCIPincludePresolSymbreak(), and SCIPincludePresolSymmetry().

◆ SCIPsetPresolInitpre()

SCIP_RETCODE SCIPsetPresolInitpre ( SCIP *  scip,
SCIP_PRESOL *  presol,
SCIP_DECL_PRESOLINITPRE((*presolinitpre))   
)

sets solving process initialization method of presolver

Parameters
scipSCIP data structure
presolpresolver

Definition at line 7016 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPpresolSetInitpre(), and TRUE.

Referenced by SCIPincludePresolSymbreak(), and SCIPincludePresolSymmetry().

◆ SCIPsetPresolExitpre()

SCIP_RETCODE SCIPsetPresolExitpre ( SCIP *  scip,
SCIP_PRESOL *  presol,
SCIP_DECL_PRESOLEXITPRE((*presolexitpre))   
)

sets solving process deinitialization method of presolver

Parameters
scipSCIP data structure
presolpresolver

Definition at line 7032 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPpresolSetExitpre(), and TRUE.

Referenced by SCIPincludePresolSymmetry().

◆ SCIPfindPresol()

SCIP_PRESOL* SCIPfindPresol ( SCIP *  scip,
const char *  name 
)

returns the presolver of the given name, or NULL if not existing

Parameters
scipSCIP data structure
namename of presolver

Definition at line 7048 of file scip.c.

References SCIPsetFindPresol(), and Scip::set.

Referenced by SCIPcopyConcurrentSolvingStats(), SCIPfindObjPresol(), SCIPgetGeneratorsSymmetry(), SCIPgetPermvarsObjSymmetry(), SCIPgetTimingSymmetry(), SCIPincludePresol(), SCIPincludePresolBasic(), and SCIPregisterSymmetry().

◆ SCIPgetPresols()

SCIP_PRESOL** SCIPgetPresols ( SCIP *  scip)

returns the array of currently available presolvers

Parameters
scipSCIP data structure

Definition at line 7061 of file scip.c.

References SCIP_Set::presols, SCIPsetSortPresols(), and Scip::set.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPgetNPresols()

int SCIPgetNPresols ( SCIP *  scip)

returns the number of currently available presolvers

Parameters
scipSCIP data structure

Definition at line 7074 of file scip.c.

References SCIP_Set::npresols, and Scip::set.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPsetPresolPriority()

SCIP_RETCODE SCIPsetPresolPriority ( SCIP *  scip,
SCIP_PRESOL *  presol,
int  priority 
)

sets the priority of a presolver

Parameters
scipSCIP data structure
presolpresolver
prioritynew priority of the presolver

Definition at line 7085 of file scip.c.

References SCIP_OKAY, SCIPpresolSetPriority(), and Scip::set.

Referenced by SCIP_DECL_PARAMCHGD().