SCIP Doxygen Documentation
Loading...
Searching...
No Matches

Detailed Description

methods for presolvers

Author
Tobias Achterberg
Timo Berthold

Definition in file presol.c.

#include <assert.h>
#include <string.h>
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/set.h"
#include "scip/clock.h"
#include "scip/paramset.h"
#include "scip/scip.h"
#include "scip/pub_misc.h"
#include "scip/presol.h"
#include "scip/struct_presol.h"

Go to the source code of this file.

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPpresolComp)
 SCIP_DECL_SORTPTRCOMP (SCIPpresolCompName)
static SCIP_DECL_PARAMCHGD (paramChgdPresolPriority)
SCIP_RETCODE SCIPpresolCopyInclude (SCIP_PRESOL *presol, SCIP_SET *set)
static SCIP_RETCODE doPresolCreate (SCIP_PRESOL **presol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, 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 SCIPpresolCreate (SCIP_PRESOL **presol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, 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 SCIPpresolFree (SCIP_PRESOL **presol, SCIP_SET *set)
SCIP_RETCODE SCIPpresolInit (SCIP_PRESOL *presol, SCIP_SET *set)
SCIP_RETCODE SCIPpresolExit (SCIP_PRESOL *presol, SCIP_SET *set)
SCIP_RETCODE SCIPpresolInitpre (SCIP_PRESOL *presol, SCIP_SET *set)
SCIP_RETCODE SCIPpresolExitpre (SCIP_PRESOL *presol, SCIP_SET *set)
SCIP_RETCODE SCIPpresolExec (SCIP_PRESOL *presol, SCIP_SET *set, SCIP_PRESOLTIMING timing, int nrounds, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
SCIP_PRESOLDATASCIPpresolGetData (SCIP_PRESOL *presol)
void SCIPpresolSetData (SCIP_PRESOL *presol, SCIP_PRESOLDATA *presoldata)
void SCIPpresolSetCopy (SCIP_PRESOL *presol,)
void SCIPpresolSetFree (SCIP_PRESOL *presol,)
void SCIPpresolSetInit (SCIP_PRESOL *presol,)
void SCIPpresolSetExit (SCIP_PRESOL *presol,)
void SCIPpresolSetInitpre (SCIP_PRESOL *presol,)
void SCIPpresolSetExitpre (SCIP_PRESOL *presol,)
const char * SCIPpresolGetName (SCIP_PRESOL *presol)
const char * SCIPpresolGetDesc (SCIP_PRESOL *presol)
int SCIPpresolGetPriority (SCIP_PRESOL *presol)
int SCIPpresolGetMaxrounds (SCIP_PRESOL *presol)
void SCIPpresolSetPriority (SCIP_PRESOL *presol, SCIP_SET *set, int priority)
SCIP_PRESOLTIMING SCIPpresolGetTiming (SCIP_PRESOL *presol)
void SCIPpresolSetTiming (SCIP_PRESOL *presol, SCIP_PRESOLTIMING timing)
SCIP_Bool SCIPpresolIsInitialized (SCIP_PRESOL *presol)
void SCIPpresolEnableOrDisableClocks (SCIP_PRESOL *presol, SCIP_Bool enable)
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)

Function Documentation

◆ SCIP_DECL_PARAMCHGD()

SCIP_DECL_PARAMCHGD ( paramChgdPresolPriority )
static

method to call, when the priority of a presolver was changed

Definition at line 70 of file presol.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetPresolPriority().

◆ SCIPpresolCopyInclude()

SCIP_RETCODE SCIPpresolCopyInclude ( SCIP_PRESOL * presol,
SCIP_SET * set )

copies the given presolver to a new scip

Parameters
presolpresolver
setSCIP_SET of SCIP to copy to

Definition at line 84 of file presol.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPpresolGetName(), and SCIPsetDebugMsg.

Referenced by SCIPsetCopyPlugins().

◆ doPresolCreate()

SCIP_RETCODE doPresolCreate ( SCIP_PRESOL ** presol,
SCIP_SET * set,
SCIP_MESSAGEHDLR * messagehdlr,
BMS_BLKMEM * blkmem,
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 )
static

internal method for creating a presolver

Parameters
presolpointer to store presolver
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
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 103 of file presol.c.

References assert(), BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_DECL_PRESOLCOPY, SCIP_DECL_PRESOLEXEC, SCIP_DECL_PRESOLEXIT, SCIP_DECL_PRESOLFREE, SCIP_DECL_PRESOLINIT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIP_PRESOLTIMING_EXHAUSTIVE, SCIP_PRESOLTIMING_FAST, SCIP_PRESOLTIMING_FINAL, SCIP_PRESOLTIMING_MAX, SCIP_PRESOLTIMING_MEDIUM, SCIPclockCreate(), SCIPmessagePrintError(), SCIPsetAddIntParam(), SCIPsnprintf(), and TRUE.

Referenced by SCIPpresolCreate().

◆ SCIPpresolCreate()

SCIP_RETCODE SCIPpresolCreate ( SCIP_PRESOL ** presol,
SCIP_SET * set,
SCIP_MESSAGEHDLR * messagehdlr,
BMS_BLKMEM * blkmem,
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

Parameters
presolpointer to store presolver
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
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 180 of file presol.c.

References assert(), doPresolCreate(), NULL, SCIP_CALL_FINALLY, SCIP_DECL_PRESOLCOPY, SCIP_DECL_PRESOLEXEC, SCIP_DECL_PRESOLEXIT, SCIP_DECL_PRESOLFREE, SCIP_DECL_PRESOLINIT, SCIP_OKAY, and SCIPpresolFree().

Referenced by SCIPincludePresol(), and SCIPincludePresolBasic().

◆ SCIPpresolFree()

SCIP_RETCODE SCIPpresolFree ( SCIP_PRESOL ** presol,
SCIP_SET * set )

frees memory of presolver

Parameters
presolpointer to presolver data structure
setglobal SCIP settings

Definition at line 212 of file presol.c.

References assert(), BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().

Referenced by SCIPpresolCreate().

◆ SCIPpresolInit()

◆ SCIPpresolExit()

SCIP_RETCODE SCIPpresolExit ( SCIP_PRESOL * presol,
SCIP_SET * set )

deinitializes presolver

Parameters
presolpresolver
setglobal SCIP settings

Definition at line 298 of file presol.c.

References assert(), FALSE, SCIP_Presol::initialized, SCIP_Presol::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Presol::setuptime.

◆ SCIPpresolInitpre()

◆ SCIPpresolExitpre()

SCIP_RETCODE SCIPpresolExitpre ( SCIP_PRESOL * presol,
SCIP_SET * set )

informs presolver that the presolving process is finished

Parameters
presolpresolver
setglobal SCIP settings

Definition at line 364 of file presol.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Presol::setuptime.

◆ SCIPpresolExec()

SCIP_RETCODE SCIPpresolExec ( SCIP_PRESOL * presol,
SCIP_SET * set,
SCIP_PRESOLTIMING timing,
int nrounds,
int * nfixedvars,
int * naggrvars,
int * nchgvartypes,
int * nchgbds,
int * naddholes,
int * ndelconss,
int * naddconss,
int * nupgdconss,
int * nchgcoefs,
int * nchgsides,
SCIP_RESULT * result )

executes presolver

Parameters
presolpresolver
setglobal SCIP settings
timingcurrent presolving timing
nroundsnumber of presolving rounds already done
nfixedvarspointer to total number of variables fixed of all presolvers
naggrvarspointer to total number of variables aggregated of all presolvers
nchgvartypespointer to total number of variable type changes of all presolvers
nchgbdspointer to total number of variable bounds tightened of all presolvers
naddholespointer to total number of domain holes added of all presolvers
ndelconsspointer to total number of deleted constraints of all presolvers
naddconsspointer to total number of added constraints of all presolvers
nupgdconsspointer to total number of upgraded constraints of all presolvers
nchgcoefspointer to total number of changed coefficients of all presolvers
nchgsidespointer to total number of changed left/right hand sides of all presolvers
resultpointer to store the result of the callback method

Definition at line 388 of file presol.c.

References assert(), SCIP_Presol::lastnaddconss, SCIP_Presol::lastnaddholes, SCIP_Presol::lastnaggrvars, SCIP_Presol::lastnchgbds, SCIP_Presol::lastnchgcoefs, SCIP_Presol::lastnchgsides, SCIP_Presol::lastnchgvartypes, SCIP_Presol::lastndelconss, SCIP_Presol::lastnfixedvars, SCIP_Presol::lastnupgdconss, SCIP_Presol::maxrounds, SCIP_Presol::naddconss, SCIP_Presol::naddholes, SCIP_Presol::naggrvars, SCIP_Presol::name, SCIP_Presol::ncalls, SCIP_Presol::nchgbds, SCIP_Presol::nchgcoefs, SCIP_Presol::nchgsides, SCIP_Presol::nchgvartypes, SCIP_Presol::ndelconss, SCIP_Presol::nfixedvars, NULL, SCIP_Presol::nupgdconss, SCIP_Presol::presolclock, result, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_SUCCESS, SCIP_UNBOUNDED, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPsetDebugMsg, and SCIP_Presol::timing.

Referenced by presolveRound().

◆ SCIPpresolSetCopy()

void SCIPpresolSetCopy ( SCIP_PRESOL * presol)

sets copy method of presolver

Parameters
presolpresolver copy method of presolver or NULL if you don't want to copy your plugin into sub-SCIPs

Definition at line 533 of file presol.c.

References assert(), NULL, and SCIP_DECL_PRESOLCOPY.

Referenced by SCIPsetPresolCopy().

◆ SCIPpresolSetFree()

void SCIPpresolSetFree ( SCIP_PRESOL * presol)

sets destructor method of presolver

Parameters
presolpresolver destructor of presolver

Definition at line 544 of file presol.c.

References assert(), NULL, and SCIP_DECL_PRESOLFREE.

Referenced by SCIPsetPresolFree().

◆ SCIPpresolSetInit()

void SCIPpresolSetInit ( SCIP_PRESOL * presol)

sets initialization method of presolver

Parameters
presolpresolver initialize presolver

Definition at line 555 of file presol.c.

References assert(), NULL, and SCIP_DECL_PRESOLINIT.

Referenced by SCIPsetPresolInit().

◆ SCIPpresolSetExit()

void SCIPpresolSetExit ( SCIP_PRESOL * presol)

sets deinitialization method of presolver

Parameters
presolpresolver deinitialize presolver

Definition at line 566 of file presol.c.

References assert(), NULL, and SCIP_DECL_PRESOLEXIT.

Referenced by SCIPsetPresolExit().

◆ SCIPpresolSetInitpre()

void SCIPpresolSetInitpre ( SCIP_PRESOL * presol)

sets solving process initialization method of presolver

Parameters
presolpresolver solving process initialization method of presolver

Definition at line 577 of file presol.c.

References assert(), NULL, and SCIP_DECL_PRESOLINITPRE.

Referenced by SCIPsetPresolInitpre().

◆ SCIPpresolSetExitpre()

void SCIPpresolSetExitpre ( SCIP_PRESOL * presol)

sets solving process deinitialization method of presolver

Parameters
presolpresolver solving process deinitialization method of presolver

Definition at line 588 of file presol.c.

References assert(), NULL, and SCIP_DECL_PRESOLEXITPRE.

Referenced by SCIPsetPresolExitpre().

◆ SCIPpresolSetPriority()

void SCIPpresolSetPriority ( SCIP_PRESOL * presol,
SCIP_SET * set,
int priority )

sets priority of presolver

Parameters
presolpresolver
setglobal SCIP settings
prioritynew priority of the presolver

Definition at line 639 of file presol.c.

References assert(), FALSE, NULL, and SCIP_Presol::priority.

Referenced by SCIPsetPresolPriority().

◆ SCIPpresolEnableOrDisableClocks()

void SCIPpresolEnableOrDisableClocks ( SCIP_PRESOL * presol,
SCIP_Bool enable )

enables or disables all clocks of presol, depending on the value of the flag

Parameters
presolthe presolver for which all clocks should be enabled or disabled
enableshould the clocks of the presolver be enabled?

Definition at line 685 of file presol.c.

References assert(), NULL, SCIP_Presol::presolclock, SCIP_Bool, SCIPclockEnableOrDisable(), and SCIP_Presol::setuptime.