scip_probing.h
Go to the documentation of this file.
38 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
63 /** returns whether we are in probing mode; probing mode is activated via SCIPstartProbing() and stopped
84 /** initiates probing, making methods SCIPnewProbingNode(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(),
85 * SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPpropagateProbing(), and SCIPsolveProbingLP() available
87 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
94 * @note The collection of variable statistics is turned off during probing. If these statistics should be collected
102 /** creates a new probing sub node, whose changes can be undone by backtracking to a higher node in the probing path
106 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
132 * the changes of the probing node of the given probing depth are the last ones that remain active;
135 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
145 int probingdepth /**< probing depth of the node in the probing path that should be reactivated */
150 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
162 /** injects a change of variable's lower bound into current probing node; the same can also be achieved with a call to
163 * SCIPchgVarLb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
165 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
179 /** injects a change of variable's upper bound into current probing node; the same can also be achieved with a call to
180 * SCIPchgVarUb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
182 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
211 /** injects a change of variable's bounds into current probing node to fix the variable to the specified value;
212 * the same can also be achieved with a call to SCIPfixVar(), but in this case, the bound changes would be treated
215 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
231 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
267 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
268 * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
269 * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
270 * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
272 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
282 int maxproprounds, /**< maximal number of propagation rounds (-1: no limit, 0: parameter settings) */
284 SCIP_Longint* ndomredsfound /**< pointer to store the number of domain reductions found, or NULL */
287 /** applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called;
288 * only propagations of the binary variables fixed at the current probing node that are triggered by the implication
290 * the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal()
291 * and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed
292 * bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
294 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
312 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
327 /** solves the LP at the current probing node (cannot be applied at preprocessing stage) and applies pricing
330 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed . See \ref
350 * @note state and norms are stored at the node and later released by SCIP; therefore, the pointers are set
353 * @note the pointers to state and norms must not be NULL; however, they may point to a NULL pointer if the
356 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
374 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
389 * this method can only be applied during probing; the user should resolve the probing LP afterwards
392 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
404 /** solves relaxation(s) at the current probing node (cannot be applied at preprocessing stage);
407 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
433 SCIP_DIVETYPE divetype, /**< represents different methods for a dive set to explore the next children */
441 /** 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:225
Definition: struct_scip.h:69
SCIP_RETCODE SCIPapplyCutsProbing(SCIP *scip, SCIP_Bool *cutoff)
Definition: scip_probing.c:947
Definition: struct_var.h:207
void SCIPgetDiveBoundChangeData(SCIP *scip, SCIP_VAR ***variables, SCIP_BRANCHDIR **directions, SCIP_Real **values, int *ndivebdchgs, SCIP_Bool preferred)
Definition: scip_probing.c:1289
SCIP_RETCODE SCIPpropagateProbingImplications(SCIP *scip, SCIP_Bool *cutoff)
Definition: scip_probing.c:686
SCIP_RETCODE SCIPaddDiveBoundChange(SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
Definition: scip_probing.c:1263
type definitions for return codes for SCIP methods
SCIP_RETCODE SCIPchgVarLbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_probing.c:301
Definition: lpi_cpx.c:197
type definitions for LP management
Definition: struct_sol.h:73
SCIP_RETCODE SCIPsolveProbingRelax(SCIP *scip, SCIP_Bool *cutoff)
Definition: scip_probing.c:976
type definitions for primal heuristics
SCIP_RETCODE SCIPpropagateProbing(SCIP *scip, int maxproprounds, SCIP_Bool *cutoff, SCIP_Longint *ndomredsfound)
Definition: scip_probing.c:580
SCIP_RETCODE SCIPfixVarProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval)
Definition: scip_probing.c:418
type definitions for SCIP's main datastructure
char * SCIPsnprintfProbingStats(SCIP *scip, char *strbuf, int len)
Definition: scip_probing.c:1044
type definitions for specific LP solvers interface
SCIP_Real SCIPgetVarObjProbing(SCIP *scip, SCIP_VAR *var)
Definition: scip_probing.c:388
SCIP_RETCODE SCIPsolveProbingLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: scip_probing.c:819
type definitions for problem variables
void SCIPupdateDivesetStats(SCIP *scip, SCIP_DIVESET *diveset, int nprobingnodes, int nbacktracks, SCIP_Longint nsolsfound, SCIP_Longint nbestsolsfound, SCIP_Longint nconflictsfound, SCIP_Bool leavewassol, SCIP_DIVECONTEXT divecontext)
Definition: scip_probing.c:1158
Definition: struct_heur.h:67
Definition: struct_lp.h:201
SCIP_RETCODE SCIPgetDiveBoundChanges(SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *sol, SCIP_Bool *success, SCIP_Bool *infeasible)
Definition: scip_probing.c:1201
type definitions for storing primal CIP solutions
void SCIPupdateDivesetLPStats(SCIP *scip, SCIP_DIVESET *diveset, SCIP_Longint niterstoadd, SCIP_DIVECONTEXT divecontext)
Definition: scip_probing.c:1144
SCIP_RETCODE SCIPsolveProbingLPWithPricing(SCIP *scip, SCIP_Bool pretendroot, SCIP_Bool displayinfo, int maxpricerounds, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: scip_probing.c:843
Definition: lpi_clp.cpp:132
SCIP_RETCODE SCIPaddRowProbing(SCIP *scip, SCIP_ROW *row)
Definition: scip_probing.c:907
type definitions for branching and inference history
SCIP_RETCODE SCIPsetProbingLPState(SCIP *scip, SCIP_LPISTATE **lpistate, SCIP_LPINORMS **lpinorms, SCIP_Bool primalfeas, SCIP_Bool dualfeas)
Definition: scip_probing.c:876
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:1119
common defines and data types used in all packages of SCIP
Definition: objbenders.h:43
SCIP_RETCODE SCIPchgVarUbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
Definition: scip_probing.c:345
SCIP_RETCODE SCIPchgVarObjProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
Definition: scip_probing.c:474