type_prop.h
Go to the documentation of this file.
27 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
80 * This method is called when the presolving process is about to begin, even if presolving is turned off. The
81 * propagator may use this call to initialize its presolving data, before the presolving process begins.
83 * Necessary modifications that have to be performed even if presolving is turned off should be done here or in the
94 * This method is called after the presolving has been finished, even if presolving is turned off.
97 * Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the
98 * problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL,
107 /** solving process initialization method of propagator (called when branch and bound process is about to begin)
109 * This method is called when the presolving was finished and the branch and bound process is about to begin.
112 * Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the
113 * problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL,
122 /** solving process deinitialization method of propagator (called before branch and bound process data is freed)
132 #define SCIP_DECL_PROPEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_Bool restart)
146 * - nnewchgvartypes : number of variable type changes since the last call to the presolving method
147 * - nnewchgbds : number of variable bounds tightened since the last call to the presolving method
153 * - nnewchgsides : number of changed left or right hand sides since the last call to the presolving method
155 * @note the counters state the changes since the last call including the changes of this presolving method during its
158 * @note if the propagator uses dual information for presolving it is nesassary to check via calling SCIPallowWeakDualReds
177 * - SCIP_UNBOUNDED : at least one variable is not bounded by any constraint in obj. direction -> problem is unbounded
178 * - SCIP_CUTOFF : at least one constraint is infeasible in the variable's bounds -> problem is infeasible
184 #define SCIP_DECL_PROPPRESOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, int nrounds, SCIP_PRESOLTIMING presoltiming, \
188 int* ndelconss, int* naddconss, int* nupgdconss, int* nchgcoefs, int* nchgsides, SCIP_RESULT* result)
206 * - SCIP_DELAYNODE : the current node should be postponed (return value only valid for BEFORELP propagation)
208 #define SCIP_DECL_PROPEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_PROPTIMING proptiming, SCIP_RESULT* result)
213 * This method is called during conflict analysis. If the propagator wants to support conflict analysis,
214 * it should call SCIPinferVarLbProp() or SCIPinferVarUbProp() in domain propagation instead of SCIPchgVarLb() or
216 * In the SCIPinferVarLbProp() and SCIPinferVarUbProp() calls, the propagator provides a pointer to itself
218 * The propagation conflict resolving method can then be implemented, to provide a "reasons" for the bound
219 * changes, i.e. the bounds of variables at the time of the propagation, that forced the propagator to set the
220 * conflict variable's bound to its current value. It can use the "inferinfo" tag to identify its own propagation
221 * rule and thus identify the "reason" bounds. The bounds that form the reason of the assignment must then be provided
222 * by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(),
223 * SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and/or SCIPaddConflictBinvar() in the propagation conflict
226 * See the description of the propagation conflict resolving method of constraint handlers for further details.
228 * @note if the propagtor uses dual information it is nesassary to check via calling SCIPallowWeakDualReds and
229 * SCIPallowStrongDualReds if dual reductions and propgation with the current cutoff bound, resp., are allowed.
235 * - inferinfo : the user information passed to the corresponding SCIPinferVarLbProp() or SCIPinferVarUbProp() call
237 * - bdchgidx : the index of the bound change, representing the point of time where the change took place
244 * - SCIP_SUCCESS : the conflicting bound change has been successfully resolved by adding all reason bounds
245 * - SCIP_DIDNOTFIND : the conflicting bound change could not be resolved and has to be put into the conflict set
249 #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:37
result codes for SCIP callback methods
common defines and data types used in all packages of SCIP