scip_probing.h
Go to the documentation of this file.
29 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
73 /** returns whether we are in probing mode; probing mode is activated via SCIPstartProbing() and stopped
94 /** initiates probing, making methods SCIPnewProbingNode(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(),
95 * SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPpropagateProbing(), and SCIPsolveProbingLP() available
97 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
104 * @note The collection of variable statistics is turned off during probing. If these statistics should be collected
112 /** creates a new probing sub node, whose changes can be undone by backtracking to a higher node in the probing path
116 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
142 * the changes of the probing node of the given probing depth are the last ones that remain active;
145 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
155 int probingdepth /**< probing depth of the node in the probing path that should be reactivated */
160 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
172 /** injects a change of variable's lower bound into current probing node; the same can also be achieved with a call to
173 * SCIPchgVarLb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
175 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
189 /** injects a change of variable's upper bound into current probing node; the same can also be achieved with a call to
190 * SCIPchgVarUb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
192 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
221 /** injects a change of variable's bounds into current probing node to fix the variable to the specified value;
222 * the same can also be achieved with a call to SCIPfixVar(), but in this case, the bound changes would be treated
225 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
241 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
277 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
278 * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
279 * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
280 * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
282 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
292 int maxproprounds, /**< maximal number of propagation rounds (-1: no limit, 0: parameter settings) */
294 SCIP_Longint* ndomredsfound /**< pointer to store the number of domain reductions found, or NULL */
297 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
298 * only propagations of the binary variables fixed at the current probing node that are triggered by the implication
300 * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
301 * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
302 * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
304 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
322 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
337 /** solves the LP at the current probing node (cannot be applied at preprocessing stage) and applies pricing
340 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed . See \ref
360 * @note state and norms are stored at the node and later released by SCIP; therefore, the pointers are set
363 * @note the pointers to state and norms must not be NULL; however, they may point to a NULL pointer if the
366 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
384 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
399 * this method can only be applied during probing; the user should resolve the probing LP afterwards
402 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
414 /** solves relaxation(s) at the current probing node (cannot be applied at preprocessing stage);
417 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
435 SCIP_DIVETYPE divetype, /**< represents different methods for a dive set to explore the next children */
443 /** update diveset LP statistics, should be called after every LP solved by this diving heuristic */
464 /** enforces a probing/diving solution by suggesting bound changes that maximize the score w.r.t. the current diving settings
466 * the process is guided by the enforcement priorities of the constraint handlers and the scoring mechanism provided by
468 * Constraint handlers may suggest diving bound changes in decreasing order of their enforcement priority, based on the
469 * solution values in the solution @p sol and the current local bounds of the variables. A diving bound change
470 * is a triple (variable,branching direction,value) and is used inside SCIPperformGenericDivingAlgorithm().
472 * After a successful call, SCIP holds two arrays of suggested dive bound changes, one for the preferred child
479 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
492 SCIP_Bool* success, /**< pointer to store whether constraint handler successfully found a variable */
493 SCIP_Bool* infeasible /**< pointer to store whether the current node was detected to be infeasible */
496 /** adds a diving bound change to the diving bound change storage of SCIP together with the information if this is a
499 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
SCIP_RETCODE SCIPbacktrackProbing(SCIP *scip, int probingdepth)
Definition: scip_probing.c:280
internal methods for branch and bound tree
void SCIPupdateDivesetStats(SCIP *scip, SCIP_DIVESET *diveset, int nprobingnodes, int nbacktracks, SCIP_Longint nsolsfound, SCIP_Longint nbestsolsfound, SCIP_Longint nconflictsfound, SCIP_Bool leavewassol)
Definition: scip_probing.c:1129
Definition: struct_scip.h:58
SCIP_RETCODE SCIPapplyCutsProbing(SCIP *scip, SCIP_Bool *cutoff)
Definition: scip_probing.c:994
Definition: struct_var.h:198
void SCIPgetDiveBoundChangeData(SCIP *scip, SCIP_VAR ***variables, SCIP_BRANCHDIR **directions, SCIP_Real **values, int *ndivebdchgs, SCIP_Bool preferred)
Definition: scip_probing.c:1259
SCIP_RETCODE SCIPpropagateProbingImplications(SCIP *scip, SCIP_Bool *cutoff)
Definition: scip_probing.c:736
SCIP_RETCODE SCIPaddDiveBoundChange(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
Definition: scip_probing.c:1233
type definitions for return codes for SCIP methods
SCIP_RETCODE SCIPchgVarLbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_probing.c:356
type definitions for LP management
Definition: struct_sol.h:63
SCIP_RETCODE SCIPsolveProbingRelax(SCIP *scip, SCIP_Bool *cutoff)
Definition: scip_probing.c:1023
type definitions for primal heuristics
SCIP_RETCODE SCIPpropagateProbing(SCIP *scip, int maxproprounds, SCIP_Bool *cutoff, SCIP_Longint *ndomredsfound)
Definition: scip_probing.c:630
SCIP_RETCODE SCIPfixVarProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval)
Definition: scip_probing.c:473
type definitions for SCIP's main datastructure
type definitions for specific LP solvers interface
internal miscellaneous methods
void SCIPupdateDivesetLPStats(SCIP *scip, SCIP_DIVESET *diveset, SCIP_Longint niterstoadd)
Definition: scip_probing.c:1116
SCIP_Real SCIPgetVarObjProbing(SCIP *scip, SCIP_VAR *var)
Definition: scip_probing.c:443
internal methods for global SCIP settings
SCIP main data structure.
SCIP_RETCODE SCIPsolveProbingLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: scip_probing.c:866
type definitions for problem variables
internal methods for problem variables
Definition: struct_heur.h:37
Definition: struct_lp.h:192
SCIP_RETCODE SCIPgetDiveBoundChanges(SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *sol, SCIP_Bool *success, SCIP_Bool *infeasible)
Definition: scip_probing.c:1171
methods for debugging
datastructures for problem statistics
type definitions for storing primal CIP solutions
SCIP_RETCODE SCIPsolveProbingLPWithPricing(SCIP *scip, SCIP_Bool pretendroot, SCIP_Bool displayinfo, int maxpricerounds, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: scip_probing.c:890
internal methods for main solving loop and node processing
SCIP_RETCODE SCIPaddRowProbing(SCIP *scip, SCIP_ROW *row)
Definition: scip_probing.c:954
type definitions for branching and inference history
internal methods for constraints and constraint handlers
SCIP_RETCODE SCIPsetProbingLPState(SCIP *scip, SCIP_LPISTATE **lpistate, SCIP_LPINORMS **lpinorms, SCIP_Bool primalfeas, SCIP_Bool dualfeas)
Definition: scip_probing.c:923
SCIP_RETCODE SCIPgetDivesetScore(SCIP *scip, SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype, SCIP_VAR *divecand, SCIP_Real divecandsol, SCIP_Real divecandfrac, SCIP_Real *candscore, SCIP_Bool *roundup)
Definition: scip_probing.c:1091
common defines and data types used in all packages of SCIP
Definition: objbenders.h:33
SCIP_RETCODE SCIPchgVarUbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_probing.c:400
SCIP_RETCODE SCIPchgVarObjProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
Definition: scip_probing.c:529