Scippy

SCIP

Solving Constraint Integer Programs

prop.h File Reference

Detailed Description

internal methods for propagators

Author
Tobias Achterberg

Definition in file prop.h.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_retcode.h"
#include "scip/type_result.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_lp.h"
#include "scip/type_var.h"
#include "scip/type_prop.h"
#include "scip/pub_prop.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPpropCopyInclude (SCIP_PROP *prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropCreate (SCIP_PROP **prop, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_PROPCOPY((*propcopy)), SCIP_DECL_PROPFREE((*propfree)), SCIP_DECL_PROPINIT((*propinit)), SCIP_DECL_PROPEXIT((*propexit)), SCIP_DECL_PROPINITPRE((*propinitpre)), SCIP_DECL_PROPEXITPRE((*propexitpre)), SCIP_DECL_PROPINITSOL((*propinitsol)), SCIP_DECL_PROPEXITSOL((*propexitsol)), SCIP_DECL_PROPPRESOL((*proppresol)), SCIP_DECL_PROPEXEC((*propexec)), SCIP_DECL_PROPRESPROP((*propresprop)), SCIP_PROPDATA *propdata)
 
SCIP_RETCODE SCIPpropFree (SCIP_PROP **prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropInit (SCIP_PROP *prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropExit (SCIP_PROP *prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropInitpre (SCIP_PROP *prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropExitpre (SCIP_PROP *prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropInitsol (SCIP_PROP *prop, SCIP_SET *set)
 
SCIP_RETCODE SCIPpropExitsol (SCIP_PROP *prop, SCIP_SET *set, SCIP_Bool restart)
 
SCIP_RETCODE SCIPpropPresol (SCIP_PROP *prop, 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_RETCODE SCIPpropExec (SCIP_PROP *prop, SCIP_SET *set, SCIP_STAT *stat, int depth, SCIP_Bool execdelayed, SCIP_Bool instrongbranching, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPpropResolvePropagation (SCIP_PROP *prop, SCIP_SET *set, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE inferboundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
 
void SCIPpropSetPriority (SCIP_PROP *prop, SCIP_SET *set, int priority)
 
void SCIPpropSetPresolPriority (SCIP_PROP *prop, SCIP_SET *set, int presolpriority)
 
void SCIPpropSetCopy (SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
 
void SCIPpropSetFree (SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
 
void SCIPpropSetInit (SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
 
void SCIPpropSetExit (SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
 
void SCIPpropSetInitsol (SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
 
void SCIPpropSetExitsol (SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
 
void SCIPpropSetInitpre (SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
 
void SCIPpropSetExitpre (SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
 
SCIP_RETCODE SCIPpropSetPresol (SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
 
void SCIPpropSetResprop (SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
 
void SCIPpropEnableOrDisableClocks (SCIP_PROP *prop, SCIP_Bool enable)
 

Function Documentation

◆ SCIPpropCopyInclude()

SCIP_RETCODE SCIPpropCopyInclude ( SCIP_PROP prop,
SCIP_SET set 
)

copies the given propagator to a new scip

Parameters
proppropagator
setSCIP_SET of SCIP to copy to

Definition at line 90 of file prop.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPpropGetName(), and SCIPsetDebugMsg.

◆ SCIPpropCreate()

SCIP_RETCODE SCIPpropCreate ( SCIP_PROP **  prop,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
BMS_BLKMEM blkmem,
const char *  name,
const char *  desc,
int  priority,
int  freq,
SCIP_Bool  delay,
SCIP_PROPTIMING  timingmask,
int  presolpriority,
int  presolmaxrounds,
SCIP_PRESOLTIMING  presoltiming,
SCIP_DECL_PROPCOPY((*propcopy))  ,
SCIP_DECL_PROPFREE((*propfree))  ,
SCIP_DECL_PROPINIT((*propinit))  ,
SCIP_DECL_PROPEXIT((*propexit))  ,
SCIP_DECL_PROPINITPRE((*propinitpre))  ,
SCIP_DECL_PROPEXITPRE((*propexitpre))  ,
SCIP_DECL_PROPINITSOL((*propinitsol))  ,
SCIP_DECL_PROPEXITSOL((*propexitsol))  ,
SCIP_DECL_PROPPRESOL((*proppresol))  ,
SCIP_DECL_PROPEXEC((*propexec))  ,
SCIP_DECL_PROPRESPROP((*propresprop))  ,
SCIP_PROPDATA propdata 
)

creates a propagator

Parameters
proppointer to propagator data structure
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of propagator
descdescription of propagator
prioritypriority of the propagator (>= 0: before, < 0: after constraint handlers)
freqfrequency for calling propagator
delayshould propagator be delayed, if other propagators found reductions?
timingmaskpositions in the node solving loop where propagator should be executed
presolprioritypriority of the propagator (>= 0: before, < 0: after constraint handlers)
presolmaxroundsmaximal number of presolving rounds the propagator participates in (-1: no limit)
presoltimingtiming mask of the propagator's presolving method
propdatapropagator data

Definition at line 232 of file prop.c.

References doPropCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPpropFree().

Referenced by SCIPincludeProp(), and SCIPincludePropBasic().

◆ SCIPpropFree()

SCIP_RETCODE SCIPpropFree ( SCIP_PROP **  prop,
SCIP_SET set 
)

calls destructor and frees memory of propagator

Parameters
proppointer to propagator data structure
setglobal SCIP settings

Definition at line 274 of file prop.c.

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

Referenced by SCIPpropCreate(), and SCIPsetFree().

◆ SCIPpropInit()

◆ SCIPpropExit()

SCIP_RETCODE SCIPpropExit ( SCIP_PROP prop,
SCIP_SET set 
)

calls exit method of propagator

Parameters
proppropagator
setglobal SCIP settings

Definition at line 370 of file prop.c.

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

Referenced by SCIPsetInitPlugins().

◆ SCIPpropInitpre()

◆ SCIPpropExitpre()

SCIP_RETCODE SCIPpropExitpre ( SCIP_PROP prop,
SCIP_SET set 
)

informs propagator that the presolving is finished

informs propagator that the presolving process is finished

Parameters
proppropagator
setglobal SCIP settings

Definition at line 436 of file prop.c.

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

Referenced by SCIPsetExitPlugins().

◆ SCIPpropInitsol()

SCIP_RETCODE SCIPpropInitsol ( SCIP_PROP prop,
SCIP_SET set 
)

informs propagator that the branch and bound process is being started

informs propagator that the prop and bound process is being started

Parameters
proppropagator
setglobal SCIP settings

Definition at line 460 of file prop.c.

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

Referenced by SCIPsetExitprePlugins().

◆ SCIPpropExitsol()

SCIP_RETCODE SCIPpropExitsol ( SCIP_PROP prop,
SCIP_SET set,
SCIP_Bool  restart 
)

informs propagator that the branch and bound process data is being freed

informs propagator that the prop and bound process data is being freed

Parameters
proppropagator
setglobal SCIP settings
restartwas this exit solve call triggered by a restart?

Definition at line 484 of file prop.c.

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

Referenced by SCIPsetInitsolPlugins().

◆ SCIPpropPresol()

SCIP_RETCODE SCIPpropPresol ( SCIP_PROP prop,
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 presolving method of propagator

Parameters
proppropagator
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 509 of file prop.c.

References SCIP_Prop::lastnaddconss, SCIP_Prop::lastnaddholes, SCIP_Prop::lastnaggrvars, SCIP_Prop::lastnchgbds, SCIP_Prop::lastnchgcoefs, SCIP_Prop::lastnchgsides, SCIP_Prop::lastnchgvartypes, SCIP_Prop::lastndelconss, SCIP_Prop::lastnfixedvars, SCIP_Prop::lastnupgdconss, SCIP_Prop::maxprerounds, SCIP_Prop::naddconss, SCIP_Prop::naddholes, SCIP_Prop::naggrvars, SCIP_Prop::name, SCIP_Prop::nchgbds, SCIP_Prop::nchgcoefs, SCIP_Prop::nchgsides, SCIP_Prop::nchgvartypes, SCIP_Prop::ndelconss, SCIP_Prop::nfixedvars, SCIP_Prop::npresolcalls, NULL, SCIP_Prop::nupgdconss, SCIP_Prop::presoltime, SCIP_Prop::presoltiming, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_SUCCESS, SCIP_UNBOUNDED, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIPsetDebugMsg.

Referenced by presolveRound().

◆ SCIPpropExec()

SCIP_RETCODE SCIPpropExec ( SCIP_PROP prop,
SCIP_SET set,
SCIP_STAT stat,
int  depth,
SCIP_Bool  execdelayed,
SCIP_Bool  instrongbranching,
SCIP_PROPTIMING  proptiming,
SCIP_RESULT result 
)

calls execution method of propagator

Parameters
proppropagator
setglobal SCIP settings
statdynamic problem statistics
depthdepth of current node
execdelayedexecute propagator even if it is marked to be delayed
instrongbranchingare we currently doing strong branching?
proptimingcurrent point in the node solving process
resultpointer to store the result of the callback method

Definition at line 635 of file prop.c.

References SCIP_Prop::delay, SCIP_Prop::freq, SCIP_Prop::name, SCIP_Stat::nboundchgs, SCIP_Prop::ncalls, SCIP_Prop::ncutoffs, SCIP_Prop::ndomredsfound, SCIP_Stat::nholechgs, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, NULL, SCIP_Prop::proptime, SCIP_Prop::sbproptime, SCIP_CALL, SCIP_CUTOFF, SCIP_DELAYED, SCIP_DELAYNODE, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_Longint, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPsetDebugMsg, and SCIP_Prop::wasdelayed.

Referenced by propagationRound().

◆ SCIPpropResolvePropagation()

SCIP_RETCODE SCIPpropResolvePropagation ( SCIP_PROP prop,
SCIP_SET set,
SCIP_VAR infervar,
int  inferinfo,
SCIP_BOUNDTYPE  inferboundtype,
SCIP_BDCHGIDX bdchgidx,
SCIP_Real  relaxedbd,
SCIP_RESULT result 
)

resolves the given conflicting bound, that was deduced by the given propagator, by putting all "reason" bounds leading to the deduction into the conflict queue with calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), or SCIPaddConflictBinvar();

Note
it is sufficient to explain the relaxed bound change
Parameters
proppropagator
setglobal SCIP settings
infervarvariable whose bound was deduced by the constraint
inferinfouser inference information attached to the bound change
inferboundtypebound that was deduced (lower or upper bound)
bdchgidxbound change index, representing the point of time where change took place
relaxedbdthe relaxed bound
resultpointer to store the result of the callback method

Definition at line 727 of file prop.c.

References SCIP_Prop::name, SCIP_Prop::nrespropcalls, NULL, SCIP_Prop::resproptime, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_SUCCESS, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by conflictResolveBound().

◆ SCIPpropSetPriority()

void SCIPpropSetPriority ( SCIP_PROP prop,
SCIP_SET set,
int  priority 
)

sets priority of propagator

Parameters
proppropagator
setglobal SCIP settings
prioritynew priority of the propagator

Definition at line 971 of file prop.c.

References FALSE, NULL, and SCIP_Prop::priority.

Referenced by SCIPsetPropPriority().

◆ SCIPpropSetPresolPriority()

void SCIPpropSetPresolPriority ( SCIP_PROP prop,
SCIP_SET set,
int  presolpriority 
)

sets presolving priority of propagator

Parameters
proppropagator
setglobal SCIP settings
presolprioritynew priority of the propagator

Definition at line 985 of file prop.c.

References FALSE, NULL, and SCIP_Prop::presolpriority.

Referenced by SCIPsetPropPresolPriority().

◆ SCIPpropSetCopy()

void SCIPpropSetCopy ( SCIP_PROP prop,
SCIP_DECL_PROPCOPY((*propcopy))   
)

sets copy method of propagator

Parameters
proppropagator

Definition at line 800 of file prop.c.

References NULL.

Referenced by SCIPsetPropCopy().

◆ SCIPpropSetFree()

void SCIPpropSetFree ( SCIP_PROP prop,
SCIP_DECL_PROPFREE((*propfree))   
)

sets destructor method of propagator

Parameters
proppropagator

Definition at line 811 of file prop.c.

References NULL.

Referenced by SCIPsetPropFree().

◆ SCIPpropSetInit()

void SCIPpropSetInit ( SCIP_PROP prop,
SCIP_DECL_PROPINIT((*propinit))   
)

sets initialization method of propagator

Parameters
proppropagator

Definition at line 822 of file prop.c.

References NULL.

Referenced by SCIPsetPropInit().

◆ SCIPpropSetExit()

void SCIPpropSetExit ( SCIP_PROP prop,
SCIP_DECL_PROPEXIT((*propexit))   
)

sets deinitialization method of propagator

Parameters
proppropagator

Definition at line 833 of file prop.c.

References NULL.

Referenced by SCIPsetPropExit().

◆ SCIPpropSetInitsol()

void SCIPpropSetInitsol ( SCIP_PROP prop,
SCIP_DECL_PROPINITSOL((*propinitsol))   
)

sets solving process initialization method of propagator

Parameters
proppropagator

Definition at line 844 of file prop.c.

References NULL.

Referenced by SCIPsetPropInitsol().

◆ SCIPpropSetExitsol()

void SCIPpropSetExitsol ( SCIP_PROP prop,
SCIP_DECL_PROPEXITSOL((*propexitsol))   
)

sets solving process deinitialization method of propagator

Parameters
proppropagator

Definition at line 855 of file prop.c.

References NULL.

Referenced by SCIPsetPropExitsol().

◆ SCIPpropSetInitpre()

void SCIPpropSetInitpre ( SCIP_PROP prop,
SCIP_DECL_PROPINITPRE((*propinitpre))   
)

sets preprocessing initialization method of propagator

Parameters
proppropagator

Definition at line 866 of file prop.c.

References NULL.

Referenced by SCIPsetPropInitpre().

◆ SCIPpropSetExitpre()

void SCIPpropSetExitpre ( SCIP_PROP prop,
SCIP_DECL_PROPEXITPRE((*propexitpre))   
)

sets preprocessing deinitialization method of propagator

Parameters
proppropagator

Definition at line 879 of file prop.c.

References NULL.

Referenced by SCIPsetPropExitpre().

◆ SCIPpropSetPresol()

SCIP_RETCODE SCIPpropSetPresol ( SCIP_PROP prop,
SCIP_DECL_PROPPRESOL((*proppresol))  ,
int  presolpriority,
int  presolmaxrounds,
SCIP_PRESOLTIMING  presoltiming 
)

sets presolving method of propagator

Parameters
proppropagator
presolprioritypresolving priority of the propagator (>= 0: before, < 0: after constraint handlers)
presolmaxroundsmaximal number of presolving rounds the propagator participates in (-1: no limit)
presoltimingtiming mask of the propagator's presolving method

Definition at line 890 of file prop.c.

References SCIP_Prop::maxprerounds, SCIP_Prop::name, NULL, SCIP_Prop::presolpriority, SCIP_Prop::presoltiming, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIP_PRESOLTIMING_MAX, and SCIPmessagePrintError().

Referenced by SCIPsetPropPresol().

◆ SCIPpropSetResprop()

void SCIPpropSetResprop ( SCIP_PROP prop,
SCIP_DECL_PROPRESPROP((*propresprop))   
)

sets propagation conflict resolving callback of propagator

Parameters
proppropagator

Definition at line 920 of file prop.c.

References NULL.

Referenced by SCIPsetPropResprop().

◆ SCIPpropEnableOrDisableClocks()

void SCIPpropEnableOrDisableClocks ( SCIP_PROP prop,
SCIP_Bool  enable 
)

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

Parameters
propthe propagator for which all clocks should be enabled or disabled
enableshould the clocks of the propagator be enabled?

Definition at line 1009 of file prop.c.

References NULL, SCIP_Prop::presoltime, SCIP_Prop::proptime, SCIP_Prop::resproptime, SCIP_Prop::sbproptime, SCIPclockEnableOrDisable(), and SCIP_Prop::setuptime.