Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods for presolver plugins

Modules

 Special Methods
 methods commonly used for presolving
 

Functions

SCIP_EXPORT SCIP_DECL_SORTPTRCOMP (SCIPpresolComp)
 
SCIP_EXPORT SCIP_DECL_SORTPTRCOMP (SCIPpresolCompName)
 
SCIP_EXPORT SCIP_PRESOLDATASCIPpresolGetData (SCIP_PRESOL *presol)
 
SCIP_EXPORT void SCIPpresolSetData (SCIP_PRESOL *presol, SCIP_PRESOLDATA *presoldata)
 
SCIP_EXPORT const char * SCIPpresolGetName (SCIP_PRESOL *presol)
 
SCIP_EXPORT const char * SCIPpresolGetDesc (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetPriority (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetMaxrounds (SCIP_PRESOL *presol)
 
SCIP_EXPORT SCIP_PRESOLTIMING SCIPpresolGetTiming (SCIP_PRESOL *presol)
 
SCIP_EXPORT void SCIPpresolSetTiming (SCIP_PRESOL *presol, SCIP_PRESOLTIMING timing)
 
SCIP_EXPORT SCIP_Bool SCIPpresolIsInitialized (SCIP_PRESOL *presol)
 
SCIP_EXPORT SCIP_Real SCIPpresolGetSetupTime (SCIP_PRESOL *presol)
 
SCIP_EXPORT SCIP_Real SCIPpresolGetTime (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNFixedVars (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNAggrVars (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNChgVarTypes (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNChgBds (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNAddHoles (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNDelConss (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNAddConss (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNUpgdConss (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNChgCoefs (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNChgSides (SCIP_PRESOL *presol)
 
SCIP_EXPORT int SCIPpresolGetNCalls (SCIP_PRESOL *presol)
 
SCIP_EXPORT 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_EXPORT 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_EXPORT SCIP_RETCODE SCIPsetPresolCopy (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLCOPY((*presolcopy)))
 
SCIP_EXPORT SCIP_RETCODE SCIPsetPresolFree (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLFREE((*presolfree)))
 
SCIP_EXPORT SCIP_RETCODE SCIPsetPresolInit (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINIT((*presolinit)))
 
SCIP_EXPORT SCIP_RETCODE SCIPsetPresolExit (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXIT((*presolexit)))
 
SCIP_EXPORT 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_EXPORT SCIP_PRESOLSCIPfindPresol (SCIP *scip, const char *name)
 
SCIP_EXPORT SCIP_PRESOL ** SCIPgetPresols (SCIP *scip)
 
SCIP_EXPORT int SCIPgetNPresols (SCIP *scip)
 
SCIP_EXPORT SCIP_RETCODE SCIPsetPresolPriority (SCIP *scip, SCIP_PRESOL *presol, int priority)
 

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

SCIP_EXPORT 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_EXPORT 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()

SCIP_EXPORT 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 512 of file presol.c.

References NULL, and SCIP_Presol::presoldata.

Referenced by SCIP_DECL_PRESOLFREE().

◆ SCIPpresolGetName()

◆ SCIPpresolGetDesc()

SCIP_EXPORT const char* SCIPpresolGetDesc ( SCIP_PRESOL presol)

gets description of presolver

Parameters
presolpresolver

Definition at line 599 of file presol.c.

References SCIP_Presol::desc, and NULL.

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

◆ SCIPpresolGetPriority()

SCIP_EXPORT int SCIPpresolGetPriority ( SCIP_PRESOL presol)

gets priority of presolver

Parameters
presolpresolver

Definition at line 609 of file presol.c.

References NULL, and SCIP_Presol::priority.

Referenced by presolveRound(), and SCIP_DECL_DIALOGEXEC().

◆ SCIPpresolGetMaxrounds()

SCIP_EXPORT int SCIPpresolGetMaxrounds ( SCIP_PRESOL presol)

gets round limit of presolver

Parameters
presolpresolver

Definition at line 619 of file presol.c.

References SCIP_Presol::maxrounds, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPpresolGetTiming()

SCIP_EXPORT SCIP_PRESOLTIMING SCIPpresolGetTiming ( SCIP_PRESOL presol)

gets the timing mask of the presolver

Parameters
presolpresolver

Definition at line 643 of file presol.c.

References NULL, and SCIP_Presol::timing.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPpresolSetTiming()

SCIP_EXPORT 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 653 of file presol.c.

References NULL, and SCIP_Presol::timing.

◆ SCIPpresolIsInitialized()

SCIP_EXPORT SCIP_Bool SCIPpresolIsInitialized ( SCIP_PRESOL presol)

is presolver initialized?

Parameters
presolpresolver

Definition at line 665 of file presol.c.

References SCIP_Presol::initialized, and NULL.

◆ SCIPpresolGetSetupTime()

SCIP_EXPORT 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 687 of file presol.c.

References NULL, SCIPclockGetTime(), and SCIP_Presol::setuptime.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetTime()

SCIP_EXPORT SCIP_Real SCIPpresolGetTime ( SCIP_PRESOL presol)

gets time in seconds used in this presolver

Parameters
presolpresolver

Definition at line 697 of file presol.c.

References NULL, SCIP_Presol::presolclock, and SCIPclockGetTime().

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNFixedVars()

SCIP_EXPORT int SCIPpresolGetNFixedVars ( SCIP_PRESOL presol)

gets number of variables fixed in presolver

Parameters
presolpresolver

Definition at line 707 of file presol.c.

References SCIP_Presol::nfixedvars, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNAggrVars()

SCIP_EXPORT int SCIPpresolGetNAggrVars ( SCIP_PRESOL presol)

gets number of variables aggregated in presolver

Parameters
presolpresolver

Definition at line 717 of file presol.c.

References SCIP_Presol::naggrvars, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNChgVarTypes()

SCIP_EXPORT int SCIPpresolGetNChgVarTypes ( SCIP_PRESOL presol)

gets number of variable types changed in presolver

Parameters
presolpresolver

Definition at line 727 of file presol.c.

References SCIP_Presol::nchgvartypes, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNChgBds()

SCIP_EXPORT int SCIPpresolGetNChgBds ( SCIP_PRESOL presol)

gets number of bounds changed in presolver

Parameters
presolpresolver

Definition at line 737 of file presol.c.

References SCIP_Presol::nchgbds, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNAddHoles()

SCIP_EXPORT int SCIPpresolGetNAddHoles ( SCIP_PRESOL presol)

gets number of holes added to domains of variables in presolver

Parameters
presolpresolver

Definition at line 747 of file presol.c.

References SCIP_Presol::naddholes, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNDelConss()

SCIP_EXPORT int SCIPpresolGetNDelConss ( SCIP_PRESOL presol)

gets number of constraints deleted in presolver

Parameters
presolpresolver

Definition at line 757 of file presol.c.

References SCIP_Presol::ndelconss, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNAddConss()

SCIP_EXPORT int SCIPpresolGetNAddConss ( SCIP_PRESOL presol)

gets number of constraints added in presolver

Parameters
presolpresolver

Definition at line 767 of file presol.c.

References SCIP_Presol::naddconss, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNUpgdConss()

SCIP_EXPORT int SCIPpresolGetNUpgdConss ( SCIP_PRESOL presol)

gets number of constraints upgraded in presolver

Parameters
presolpresolver

Definition at line 777 of file presol.c.

References NULL, and SCIP_Presol::nupgdconss.

◆ SCIPpresolGetNChgCoefs()

SCIP_EXPORT int SCIPpresolGetNChgCoefs ( SCIP_PRESOL presol)

gets number of coefficients changed in presolver

Parameters
presolpresolver

Definition at line 787 of file presol.c.

References SCIP_Presol::nchgcoefs, and NULL.

Referenced by SCIP_DECL_PRESOLEXEC(), and SCIPprintPresolverStatistics().

◆ SCIPpresolGetNChgSides()

SCIP_EXPORT int SCIPpresolGetNChgSides ( SCIP_PRESOL presol)

gets number of constraint sides changed in presolver

Parameters
presolpresolver

Definition at line 797 of file presol.c.

References SCIP_Presol::nchgsides, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPpresolGetNCalls()

SCIP_EXPORT int SCIPpresolGetNCalls ( SCIP_PRESOL presol)

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

Parameters
presolpresolver

Definition at line 807 of file presol.c.

References SCIP_Presol::ncalls, and NULL.

Referenced by SCIPprintPresolverStatistics().

◆ SCIPincludePresol()

SCIP_EXPORT 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 51 of file scip_presol.c.

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

Referenced by SCIPincludeObjPresol().

◆ SCIPincludePresolBasic()

SCIP_EXPORT 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 94 of file scip_presol.c.

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

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

◆ SCIPsetPresolCopy()

◆ SCIPsetPresolFree()

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

◆ SCIPsetPresolInit()

SCIP_EXPORT 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 161 of file scip_presol.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPpresolSetInit(), and TRUE.

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

◆ SCIPsetPresolExit()

SCIP_EXPORT 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 177 of file scip_presol.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPpresolSetExit(), and TRUE.

Referenced by SCIPincludePresolSymbreak(), and SCIPincludePresolSymmetry().

◆ SCIPsetPresolInitpre()

SCIP_EXPORT 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 193 of file scip_presol.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPpresolSetInitpre(), and TRUE.

Referenced by SCIPincludePresolSymbreak().

◆ 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 209 of file scip_presol.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPpresolSetExitpre(), and TRUE.

Referenced by SCIPincludePresolSymbreak().

◆ SCIPfindPresol()

SCIP_EXPORT 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 225 of file scip_presol.c.

References NULL, SCIPsetFindPresol(), and Scip::set.

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

◆ SCIPgetPresols()

SCIP_EXPORT SCIP_PRESOL** SCIPgetPresols ( SCIP scip)

returns the array of currently available presolvers

Parameters
scipSCIP data structure

Definition at line 238 of file scip_presol.c.

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

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

◆ SCIPgetNPresols()

SCIP_EXPORT int SCIPgetNPresols ( SCIP scip)

returns the number of currently available presolvers

Parameters
scipSCIP data structure

Definition at line 251 of file scip_presol.c.

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

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

◆ SCIPsetPresolPriority()

SCIP_EXPORT 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 262 of file scip_presol.c.

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

Referenced by SCIP_DECL_PARAMCHGD().