type_prop.h
Go to the documentation of this file.
36 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
89 * This method is called when the presolving process is about to begin, even if presolving is turned off. The
90 * propagator may use this call to initialize its presolving data, before the presolving process begins.
92 * Necessary modifications that have to be performed even if presolving is turned off should be done here or in the
101 /** presolving deinitialization method of propagator (called after presolving has been finished)
103 * This method is called after the presolving has been finished, even if presolving is turned off.
106 * Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the
107 * problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL,
116 /** solving process initialization method of propagator (called when branch and bound process is about to begin)
118 * This method is called when the presolving was finished and the branch and bound process is about to begin.
121 * Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the
122 * problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL,
131 /** solving process deinitialization method of propagator (called before branch and bound process data is freed)
141 #define SCIP_DECL_PROPEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_Bool restart)
155 * - nnewchgvartypes : number of variable type changes since the last call to the presolving method
156 * - nnewchgbds : number of variable bounds tightened since the last call to the presolving method
162 * - nnewchgsides : number of changed left or right hand sides since the last call to the presolving method
164 * @note the counters state the changes since the last call including the changes of this presolving method during its
167 * @note if the propagator uses dual information for presolving it is nesassary to check via calling SCIPallowWeakDualReds
186 * - SCIP_UNBOUNDED : at least one variable is not bounded by any constraint in obj. direction -> problem is unbounded
187 * - SCIP_CUTOFF : at least one constraint is infeasible in the variable's bounds -> problem is infeasible
193 #define SCIP_DECL_PROPPRESOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, int nrounds, SCIP_PRESOLTIMING presoltiming, \
197 int* ndelconss, int* naddconss, int* nupgdconss, int* nchgcoefs, int* nchgsides, SCIP_RESULT* result)
215 * - SCIP_DELAYNODE : the current node should be postponed (return value only valid for BEFORELP propagation)
217 #define SCIP_DECL_PROPEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_PROPTIMING proptiming, SCIP_RESULT* result)
222 * This method is called during conflict analysis. If the propagator wants to support conflict analysis,
223 * it should call SCIPinferVarLbProp() or SCIPinferVarUbProp() in domain propagation instead of SCIPchgVarLb() or
225 * In the SCIPinferVarLbProp() and SCIPinferVarUbProp() calls, the propagator provides a pointer to itself
227 * The propagation conflict resolving method can then be implemented, to provide a "reasons" for the bound
228 * changes, i.e. the bounds of variables at the time of the propagation, that forced the propagator to set the
229 * conflict variable's bound to its current value. It can use the "inferinfo" tag to identify its own propagation
230 * rule and thus identify the "reason" bounds. The bounds that form the reason of the assignment must then be provided
231 * by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(),
232 * SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and/or SCIPaddConflictBinvar() in the propagation conflict
235 * See the description of the propagation conflict resolving method of constraint handlers for further details.
237 * @note if the propagtor uses dual information it is nesassary to check via calling SCIPallowWeakDualReds and
238 * SCIPallowStrongDualReds if dual reductions and propgation with the current cutoff bound, resp., are allowed.
244 * - inferinfo : the user information passed to the corresponding SCIPinferVarLbProp() or SCIPinferVarUbProp() call
246 * - bdchgidx : the index of the bound change, representing the point of time where the change took place
253 * - SCIP_SUCCESS : the conflicting bound change has been successfully resolved by adding all reason bounds
254 * - SCIP_DIDNOTFIND : the conflicting bound change could not be resolved and has to be put into the conflict set
258 #define SCIP_DECL_PROPRESPROP(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_VAR* infervar, int inferinfo, \
timing definitions for SCIP
type definitions for return codes for SCIP methods
type definitions for SCIP's main datastructure
Definition: struct_prop.h:46
result codes for SCIP callback methods
common defines and data types used in all packages of SCIP