type_prop.h
Go to the documentation of this file.
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
75 * This method is called when the presolving process is about to begin, even if presolving is turned off. The
76 * propagator may use this call to initialize its presolving data, before the presolving process begins.
78 * Necessary modifications that have to be performed even if presolving is turned off should be done here or in the
89 * This method is called after the presolving has been finished, even if presolving is turned off.
92 * Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the
93 * problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL,
102 /** solving process initialization method of propagator (called when branch and bound process is about to begin)
104 * This method is called when the presolving was finished and the branch and bound process is about to begin.
107 * Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the
108 * problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL,
117 /** solving process deinitialization method of propagator (called before branch and bound process data is freed)
127 #define SCIP_DECL_PROPEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_Bool restart)
141 * - nnewchgvartypes : number of variable type changes since the last call to the presolving method
142 * - nnewchgbds : number of variable bounds tightened since the last call to the presolving method
148 * - nnewchgsides : number of changed left or right hand sides since the last call to the presolving method
150 * @note the counters state the changes since the last call including the changes of this presolving method during its
153 * @note if the propagator uses dual information for presolving it is nesassary to check via calling SCIPallowDualReds
172 * - SCIP_UNBOUNDED : at least one variable is not bounded by any constraint in obj. direction -> problem is unbounded
173 * - SCIP_CUTOFF : at least one constraint is infeasible in the variable's bounds -> problem is infeasible
179 #define SCIP_DECL_PROPPRESOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, int nrounds, SCIP_PRESOLTIMING presoltiming, \
183 int* ndelconss, int* naddconss, int* nupgdconss, int* nchgcoefs, int* nchgsides, SCIP_RESULT* result)
201 * - SCIP_DELAYNODE : the current node should be postponed (return value only valid for BEFORELP propagation)
203 #define SCIP_DECL_PROPEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_PROP* prop, SCIP_PROPTIMING proptiming, SCIP_RESULT* result)
208 * This method is called during conflict analysis. If the propagator wants to support conflict analysis,
209 * it should call SCIPinferVarLbProp() or SCIPinferVarUbProp() in domain propagation instead of SCIPchgVarLb() or
211 * In the SCIPinferVarLbProp() and SCIPinferVarUbProp() calls, the propagator provides a pointer to itself
213 * The propagation conflict resolving method can then be implemented, to provide a "reasons" for the bound
214 * changes, i.e. the bounds of variables at the time of the propagation, that forced the propagator to set the
215 * conflict variable's bound to its current value. It can use the "inferinfo" tag to identify its own propagation
216 * rule and thus identify the "reason" bounds. The bounds that form the reason of the assignment must then be provided
217 * by calls to SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPaddConflictBd(), SCIPaddConflictRelaxedLb(),
218 * SCIPaddConflictRelaxedUb(), SCIPaddConflictRelaxedBd(), and/or SCIPaddConflictBinvar() in the propagation conflict
221 * See the description of the propagation conflict resolving method of constraint handlers for further details.
223 * @note if the propagtor uses dual information it is nesassary to check via calling SCIPallowDualReds and
224 * SCIPallowObjProp if dual reductions and propgation with the current cutoff bound, resp., are allowed.
230 * - inferinfo : the user information passed to the corresponding SCIPinferVarLbProp() or SCIPinferVarUbProp() call
232 * - bdchgidx : the index of the bound change, representing the point of time where the change took place
239 * - SCIP_SUCCESS : the conflicting bound change has been successfully resolved by adding all reason bounds
240 * - SCIP_DIDNOTFIND : the conflicting bound change could not be resolved and has to be put into the conflict set
244 #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