66 assert(paramdata !=
NULL);
81 assert(paramdata !=
NULL);
97 assert(set->scip !=
NULL);
99 if( prop->propcopy !=
NULL )
102 SCIP_CALL( prop->propcopy(set->scip, prop) );
139 assert(prop !=
NULL);
140 assert(name !=
NULL);
141 assert(desc !=
NULL);
143 assert(propexec !=
NULL);
150 SCIPmessagePrintError(
"ERROR: 'PRESOLDELAY'-flag no longer available since SCIP 3.2, use an appropriate " 151 "'SCIP_PRESOLTIMING' for <%s> propagator instead.\n", name);
159 (*prop)->priority = priority;
160 (*prop)->freq = freq;
161 (*prop)->propcopy = propcopy;
162 (*prop)->propfree = propfree;
163 (*prop)->propinit = propinit;
164 (*prop)->propexit = propexit;
165 (*prop)->propinitpre = propinitpre;
166 (*prop)->propexitpre = propexitpre;
167 (*prop)->propinitsol = propinitsol;
168 (*prop)->propexitsol = propexitsol;
169 (*prop)->proppresol = proppresol;
170 (*prop)->propexec = propexec;
171 (*prop)->propresprop = propresprop;
172 (*prop)->propdata = propdata;
179 (*prop)->nrespropcalls = 0;
180 (*prop)->ncutoffs = 0;
181 (*prop)->ndomredsfound = 0;
182 (*prop)->wasdelayed =
FALSE;
183 (*prop)->initialized =
FALSE;
189 &(*prop)->priority,
TRUE, priority, INT_MIN/4, INT_MAX/4,
193 (void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"frequency for calling propagator <%s> (-1: never, 0: only in root node)", name);
199 "should propagator be delayed, if other propagators found reductions?",
203 (void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"timing when propagator should be called (%u:BEFORELP, %u:DURINGLPLOOP, %u:AFTERLPLOOP, %u:ALWAYS))",
211 &(*prop)->presolpriority,
TRUE, presolpriority, INT_MIN/4, INT_MAX/4,
216 "maximal number of presolving rounds the propagator participates in (-1: no limit)",
217 &(*prop)->maxprerounds,
FALSE, presolmaxrounds, -1, INT_MAX,
NULL,
NULL) );
220 (void)
SCIPsnprintf(paramdesc,
SCIP_MAXSTRLEN,
"timing mask of the presolving method of propagator <%s> (%u:FAST, %u:MEDIUM, %u:EXHAUSTIVE, %u:FINAL)",
235 assert(prop !=
NULL);
236 assert(*prop !=
NULL);
237 assert(!(*prop)->initialized);
241 if( (*prop)->propfree !=
NULL )
243 SCIP_CALL( (*prop)->propfree(set->scip, *prop) );
264 assert(prop !=
NULL);
273 if( set->misc_resetstat )
309 if( prop->propinit !=
NULL )
314 SCIP_CALL( prop->propinit(set->scip, prop) );
330 assert(prop !=
NULL);
339 if( prop->propexit !=
NULL )
344 SCIP_CALL( prop->propexit(set->scip, prop) );
360 assert(prop !=
NULL);
376 if( prop->propinitpre !=
NULL )
381 SCIP_CALL( prop->propinitpre(set->scip, prop) );
396 assert(prop !=
NULL);
400 if( prop->propexitpre !=
NULL )
405 SCIP_CALL( prop->propexitpre(set->scip, prop) );
420 assert(prop !=
NULL);
424 if( prop->propinitsol !=
NULL )
429 SCIP_CALL( prop->propinitsol(set->scip, prop) );
445 assert(prop !=
NULL);
449 if( prop->propexitsol !=
NULL )
454 SCIP_CALL( prop->propexitsol(set->scip, prop, restart) );
482 assert(prop !=
NULL);
484 assert(nfixedvars !=
NULL);
485 assert(naggrvars !=
NULL);
486 assert(nchgvartypes !=
NULL);
487 assert(nchgbds !=
NULL);
488 assert(naddholes !=
NULL);
489 assert(ndelconss !=
NULL);
490 assert(naddconss !=
NULL);
491 assert(nupgdconss !=
NULL);
492 assert(nchgcoefs !=
NULL);
493 assert(nchgsides !=
NULL);
494 assert(result !=
NULL);
498 if( prop->proppresol ==
NULL )
549 SCIP_CALL( prop->proppresol(set->scip, prop, nrounds, timing,
550 nnewfixedvars, nnewaggrvars, nnewchgvartypes, nnewchgbds, nnewaddholes,
551 nnewdelconss, nnewaddconss, nnewupgdconss, nnewchgcoefs, nnewchgsides,
552 nfixedvars, naggrvars, nchgvartypes, nchgbds, naddholes,
553 ndelconss, naddconss, nupgdconss, nchgcoefs, nchgsides, result) );
601 assert(prop !=
NULL);
602 assert(prop->propexec !=
NULL);
603 assert(prop->
freq >= -1);
605 assert(set->scip !=
NULL);
606 assert(stat !=
NULL);
608 assert(result !=
NULL);
610 if( (depth == 0 && prop->
freq == 0) || (prop->
freq > 0 && depth % prop->
freq == 0) )
612 if( !prop->
delay || execdelayed )
623 if( instrongbranching )
629 SCIP_CALL( prop->propexec(set->scip, prop, proptiming, result) );
632 if( instrongbranching )
656 SCIPerrorMessage(
"execution method of propagator <%s> returned invalid result <%d>\n",
657 prop->
name, *result);
693 assert(prop !=
NULL);
698 assert(result !=
NULL);
702 if( prop->propresprop !=
NULL )
708 SCIP_CALL( prop->propresprop(set->scip, prop, infervar, inferinfo, inferboundtype, bdchgidx,
709 relaxedbd, result) );
720 SCIPerrorMessage(
"propagation conflict resolving method of propagator <%s> returned invalid result <%d>\n",
721 prop->
name, *result);
727 SCIPerrorMessage(
"propagation conflict resolving method of propagator <%s> is not implemented\n", prop->
name);
739 assert(prop !=
NULL);
750 assert(prop !=
NULL);
761 assert(prop !=
NULL);
763 prop->propcopy = propcopy;
772 assert(prop !=
NULL);
774 prop->propfree = propfree;
783 assert(prop !=
NULL);
785 prop->propinit = propinit;
794 assert(prop !=
NULL);
796 prop->propexit = propexit;
805 assert(prop !=
NULL);
807 prop->propinitsol = propinitsol;
816 assert(prop !=
NULL);
818 prop->propexitsol = propexitsol;
827 assert(prop !=
NULL);
829 prop->propinitpre = propinitpre;
840 assert(prop !=
NULL);
842 prop->propexitpre = propexitpre;
854 assert(prop !=
NULL);
856 prop->proppresol = proppresol;
863 SCIPmessagePrintError(
"ERROR: 'PRESOLDELAY'-flag no longer available since SCIP 3.2, use an appropriate " 864 "'SCIP_PRESOLTIMING' for <%s> constraint handler instead.\n", prop->
name);
881 assert(prop !=
NULL);
883 prop->propresprop = propresprop;
891 assert(prop !=
NULL);
901 assert(prop !=
NULL);
911 assert(prop !=
NULL);
921 assert(prop !=
NULL);
933 assert(prop !=
NULL);
937 set->propssorted =
FALSE;
947 assert(prop !=
NULL);
951 set->propspresolsorted =
FALSE;
959 assert(prop !=
NULL);
970 assert(prop !=
NULL);
984 assert(prop !=
NULL);
995 assert(prop !=
NULL);
1006 assert(prop !=
NULL);
1016 assert(prop !=
NULL);
1026 assert(prop !=
NULL);
1036 assert(prop !=
NULL);
1046 assert(prop !=
NULL);
1056 assert(prop !=
NULL);
1066 assert(prop !=
NULL);
1076 assert(prop !=
NULL);
1086 assert(prop !=
NULL);
1096 assert(prop !=
NULL);
1106 assert(prop !=
NULL);
1116 assert(prop !=
NULL);
1126 assert(prop !=
NULL);
1136 assert(prop !=
NULL);
1146 assert(prop !=
NULL);
1156 assert(prop !=
NULL);
1166 assert(prop !=
NULL);
1176 assert(prop !=
NULL);
1186 assert(prop !=
NULL);
1196 assert(prop !=
NULL);
1206 assert(prop !=
NULL);
1216 assert(prop !=
NULL);
1226 assert(prop !=
NULL);
1236 assert(prop !=
NULL);
1238 return (prop->proppresol !=
NULL);
1246 assert(prop !=
NULL);
1257 assert(prop !=
NULL);
enum SCIP_Result SCIP_RESULT
enum SCIP_BoundType SCIP_BOUNDTYPE
void SCIPpropSetPresolTiming(SCIP_PROP *prop, SCIP_PRESOLTIMING presoltiming)
SCIP_RETCODE SCIPpropExitpre(SCIP_PROP *prop, SCIP_SET *set)
SCIP_RETCODE SCIPpropInitsol(SCIP_PROP *prop, SCIP_SET *set)
int SCIPpropGetNUpgdConss(SCIP_PROP *prop)
void SCIPpropSetCopy(SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
SCIP_Real SCIPgetVarUbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_PRESOLTIMING SCIPpropGetPresolTiming(SCIP_PROP *prop)
SCIP_Real SCIPgetVarLbAtIndex(SCIP *scip, SCIP_VAR *var, SCIP_BDCHGIDX *bdchgidx, SCIP_Bool after)
SCIP_Real SCIPpropGetRespropTime(SCIP_PROP *prop)
SCIP_RETCODE SCIPpropCopyInclude(SCIP_PROP *prop, SCIP_SET *set)
SCIP_PARAMDATA * SCIPparamGetData(SCIP_PARAM *param)
SCIP_Real SCIPvarGetLbGlobal(SCIP_VAR *var)
SCIP_Longint SCIPpropGetNRespropCalls(SCIP_PROP *prop)
int SCIPpropGetNChgSides(SCIP_PROP *prop)
internal methods for clocks and timing issues
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)
struct SCIP_ParamData SCIP_PARAMDATA
int SCIPpropGetPriority(SCIP_PROP *prop)
SCIP_Bool SCIPpropIsDelayed(SCIP_PROP *prop)
SCIP_Longint SCIPpropGetNCalls(SCIP_PROP *prop)
#define SCIP_PROPTIMING_DURINGLPLOOP
void SCIPclockStop(SCIP_CLOCK *clck, SCIP_SET *set)
void SCIPpropSetExitsol(SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
SCIP_Longint SCIPpropGetNCutoffs(SCIP_PROP *prop)
void SCIPclockStart(SCIP_CLOCK *clck, SCIP_SET *set)
int SCIPsnprintf(char *t, int len, const char *s,...)
enum SCIP_Retcode SCIP_RETCODE
#define SCIP_DECL_PROPEXITPRE(x)
#define SCIP_PRESOLTIMING_EXHAUSTIVE
void SCIPpropSetFree(SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
void SCIPpropSetInitpre(SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
#define SCIP_PRESOLTIMING_NONE
internal methods for handling parameter settings
void SCIPpropSetInitsol(SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
void SCIPclockEnableOrDisable(SCIP_CLOCK *clck, SCIP_Bool enable)
#define BMSfreeMemory(ptr)
SCIP_RETCODE SCIPpropInit(SCIP_PROP *prop, SCIP_SET *set)
#define SCIP_DECL_PROPEXEC(x)
SCIP_Bool SCIPpropIsInitialized(SCIP_PROP *prop)
#define SCIP_PRESOLTIMING_FAST
int SCIPpropGetNPresolCalls(SCIP_PROP *prop)
void SCIPpropSetPriority(SCIP_PROP *prop, SCIP_SET *set, int priority)
internal methods for propagators
SCIP_PROPTIMING timingmask
SCIP_Real SCIPvarGetUbGlobal(SCIP_VAR *var)
SCIP_Longint nrespropcalls
void SCIPpropSetExit(SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
SCIP_PRESOLTIMING presoltiming
#define SCIP_PRESOLTIMING_MEDIUM
#define BMSfreeMemoryArray(ptr)
void SCIPmessagePrintError(const char *formatstr,...)
SCIP_Real SCIPpropGetSetupTime(SCIP_PROP *prop)
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)
void SCIPclockReset(SCIP_CLOCK *clck)
#define SCIP_DECL_PROPEXITSOL(x)
#define SCIP_DECL_PROPCOPY(x)
SCIP_Real SCIPclockGetTime(SCIP_CLOCK *clck)
void SCIPpropEnableOrDisableClocks(SCIP_PROP *prop, SCIP_Bool enable)
SCIP_Longint SCIPpropGetNDomredsFound(SCIP_PROP *prop)
#define SCIP_PROPTIMING_ALWAYS
SCIP_DECL_SORTPTRCOMP(SCIPpropComp)
#define SCIP_PROPTIMING_AFTERLPLOOP
internal methods for global SCIP settings
SCIP_RETCODE SCIPsetPropPriority(SCIP *scip, SCIP_PROP *prop, int priority)
unsigned int SCIP_PRESOLTIMING
SCIP_Real SCIPpropGetPresolTime(SCIP_PROP *prop)
#define SCIP_DECL_PROPINITPRE(x)
void SCIPpropSetPresolPriority(SCIP_PROP *prop, SCIP_SET *set, int presolpriority)
SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
int SCIPpropGetNChgBds(SCIP_PROP *prop)
#define BMSduplicateMemoryArray(ptr, source, num)
SCIP_Longint nprobboundchgs
SCIP_RETCODE SCIPclockCreate(SCIP_CLOCK **clck, SCIP_CLOCKTYPE clocktype)
internal methods for problem variables
public data structures and miscellaneous methods
SCIP_Longint ndomredsfound
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)
static const char * paramname[]
#define SCIP_DECL_PROPFREE(x)
void SCIPclockFree(SCIP_CLOCK **clck)
int SCIPpropGetNChgCoefs(SCIP_PROP *prop)
#define SCIP_DECL_PROPINITSOL(x)
int SCIPpropGetNFixedVars(SCIP_PROP *prop)
int SCIPpropGetNAddConss(SCIP_PROP *prop)
#define SCIP_PRESOLTIMING_MAX
const char * SCIPpropGetDesc(SCIP_PROP *prop)
SCIP_RETCODE SCIPsetPropPresolPriority(SCIP *scip, SCIP_PROP *prop, int presolpriority)
#define SCIP_PROPTIMING_BEFORELP
SCIP_Real SCIPpropGetStrongBranchPropTime(SCIP_PROP *prop)
SCIP_RETCODE SCIPpropInitpre(SCIP_PROP *prop, SCIP_SET *set)
#define SCIP_MAXTREEDEPTH
int SCIPpropGetNAggrVars(SCIP_PROP *prop)
const char * SCIPpropGetName(SCIP_PROP *prop)
int SCIPparamGetInt(SCIP_PARAM *param)
int SCIPpropGetNChgVarTypes(SCIP_PROP *prop)
int SCIPpropGetPresolPriority(SCIP_PROP *prop)
void SCIPpropSetFreq(SCIP_PROP *prop, int freq)
void SCIPpropSetInit(SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
static SCIP_DECL_PARAMCHGD(paramChgdPropPriority)
datastructures for propagators
SCIP_Bool SCIPpropWasDelayed(SCIP_PROP *prop)
unsigned int SCIP_PROPTIMING
#define SCIP_PRESOLTIMING_FINAL
SCIP_PROPTIMING SCIPpropGetTimingmask(SCIP_PROP *prop)
#define SCIP_DECL_PROPRESPROP(x)
public methods for message output
SCIP_RETCODE SCIPpropSetPresol(SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
#define SCIP_DECL_PROPPRESOL(x)
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)
internal methods for problem statistics
struct SCIP_PropData SCIP_PROPDATA
#define BMSallocMemory(ptr)
void SCIPpropSetResprop(SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
SCIP_PROPDATA * SCIPpropGetData(SCIP_PROP *prop)
void SCIPpropSetData(SCIP_PROP *prop, SCIP_PROPDATA *propdata)
#define SCIP_DECL_PROPEXIT(x)
int SCIPpropGetFreq(SCIP_PROP *prop)
void SCIPpropSetExitpre(SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
int SCIPpropGetNDelConss(SCIP_PROP *prop)
int SCIPpropGetNAddHoles(SCIP_PROP *prop)
SCIP_RETCODE SCIPsetAddBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
SCIP_Longint nprobholechgs
SCIP_Real SCIPpropGetTime(SCIP_PROP *prop)
SCIP_Bool SCIPpropDoesPresolve(SCIP_PROP *prop)
SCIP_RETCODE SCIPpropExit(SCIP_PROP *prop, SCIP_SET *set)
SCIP_RETCODE SCIPpropFree(SCIP_PROP **prop, SCIP_SET *set)
SCIP_RETCODE SCIPpropExitsol(SCIP_PROP *prop, SCIP_SET *set, SCIP_Bool restart)
#define SCIP_DECL_PROPINIT(x)