methods to initiate and control the probing mode of SCIP
returns whether we are in probing mode; probing mode is activated via SCIPstartProbing() and stopped via SCIPendProbing()
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 35033 of file scip.c.
References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPtreeProbing(), Scip::tree, and TRUE.
Referenced by analyzeConflict(), analyzeConflictOne(), analyzeConflictZero(), applyGenVBounds(), applyProbingVar(), consdataDeletePos(), execGenVBounds(), filterExistingLP(), fixIntegerVariableLb(), fixIntegerVariableUb(), performRandRounding(), processBinvarFixings(), propagateAllConss(), propagateBounds(), propagateBoundsCons(), propagateBoundsTightenVarLb(), propagateBoundsTightenVarUb(), propagateCons(), propagateConstraintSides(), propIndicator(), reformulate(), removeFixedBinvars(), resolvePropagationCoretimes(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPROP(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PROPEXEC(), SCIP_DECL_PROPPRESOL(), SCIP_DECL_RELAXEXEC(), SCIPaddDiveBoundChange(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPgetDiveBoundChangeData(), SCIPgetDiveBoundChanges(), SCIPgetVarStrongbranchWithPropagation(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPrelaxExec(), SCIPstartStrongbranch(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPupdateDivesetStats(), solveIndependentCons(), tightenBounds(), tightenedIntvar(), and varProcessBoundChanges().
SCIP_RETCODE SCIPstartProbing | ( | SCIP * | scip | ) |
initiates probing, making methods SCIPnewProbingNode(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPpropagateProbing(), and SCIPsolveProbingLP() available
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 35055 of file scip.c.
References checkStage(), FALSE, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPstatDisableVarHistory(), SCIPtreeProbing(), SCIPtreeStartProbing(), Scip::set, Scip::stat, Scip::tree, and TRUE.
Referenced by applyBoundHeur(), applyCompletesol(), applyVbounds(), fixAndPropagate(), performRandRounding(), performStrongbranchSOS1(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), tryOneOpt(), and trySolCandidate().
SCIP_RETCODE SCIPnewProbingNode | ( | SCIP * | scip | ) |
creates a new probing sub node, whose changes can be undone by backtracking to a higher node in the probing path with a call to SCIPbacktrackProbing(); using a sub node for each set of probing bound changes can improve conflict analysis
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 35092 of file scip.c.
References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_MAXDEPTHLEVEL, SCIP_OKAY, SCIPerrorMessage, SCIPtreeCreateProbingNode(), SCIPtreeProbing(), SCIPwarningMessage(), Scip::set, Scip::tree, and TRUE.
Referenced by applyCliqueFixings(), applyVboundsFixings(), performFixing(), performRandRounding(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), tightenVariables(), tryOneOpt(), and trySolCandidate().
int SCIPgetProbingDepth | ( | SCIP * | scip | ) |
returns the current probing depth
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 35125 of file scip.c.
References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPABORT, SCIPerrorMessage, SCIPtreeGetProbingDepth(), SCIPtreeProbing(), Scip::tree, and TRUE.
Referenced by applyBoundHeur(), applyCliqueFixings(), applyVbounds(), fixAndPropagate(), SCIP_DECL_HEUREXEC(), SCIPendStrongbranch(), SCIPperformGenericDivingAlgorithm(), and tightenVariables().
SCIP_RETCODE SCIPbacktrackProbing | ( | SCIP * | scip, |
int | probingdepth | ||
) |
undoes all changes to the problem applied in probing up to the given probing depth; the changes of the probing node of the given probing depth are the last ones that remain active; changes that were applied before calling SCIPnewProbingNode() cannot be undone
scip
is in one of the following stages:
scip | SCIP data structure |
probingdepth | probing depth of the node in the probing path that should be reactivated |
Definition at line 35152 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, Scip::primal, SCIP_Mem::probmem, Scip::relaxation, Scip::reopt, SCIP_CALL, SCIP_INVALIDCALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPtreeBacktrackProbing(), SCIPtreeGetProbingDepth(), SCIPtreeProbing(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by applyBoundHeur(), applyVbounds(), fixAndPropagate(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), tightenVariables(), and tryOneOpt().
SCIP_RETCODE SCIPendProbing | ( | SCIP * | scip | ) |
quits probing and resets bounds and constraints to the focus node's environment
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 35187 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::messagehdlr, Scip::origprob, Scip::primal, SCIP_Mem::probmem, Scip::relaxation, Scip::reopt, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPstatEnableVarHistory(), SCIPtreeEndProbing(), SCIPtreeProbing(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by applyBoundHeur(), applyCompletesol(), applyVbounds(), fixAndPropagate(), performRandRounding(), performStrongbranchSOS1(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPendStrongbranch(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), tryOneOpt(), and trySolCandidate().
SCIP_RETCODE SCIPchgVarLbProbing | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | newbound | ||
) |
injects a change of variable's lower bound into current probing node; the same can also be achieved with a call to SCIPchgVarLb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
scip
is in one of the following stages:
scip | SCIP data structure |
var | variable to change the bound for |
newbound | new value for bound |
Definition at line 35220 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, SCIP_Mem::probmem, Scip::reopt, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_INVALIDCALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPerrorMessage, SCIPgetStage(), SCIPisInfinity(), SCIPnodeAddBoundchg(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), SCIPvarAdjustLb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPwarningMessage(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by chgProbingBound(), performFixing(), performRandRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), tryOneOpt(), and trySolCandidate().
SCIP_RETCODE SCIPchgVarUbProbing | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | newbound | ||
) |
injects a change of variable's upper bound into current probing node; the same can also be achieved with a call to SCIPchgVarUb(), but in this case, the bound change would be treated like a deduction instead of a branching decision
scip
is in one of the following stages:
scip | SCIP data structure |
var | variable to change the bound for |
newbound | new value for bound |
Definition at line 35264 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, SCIP_Mem::probmem, Scip::reopt, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALIDCALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPerrorMessage, SCIPgetStage(), SCIPisInfinity(), SCIPnodeAddBoundchg(), SCIPnodeGetType(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), SCIPvarAdjustUb(), SCIPvarGetName(), SCIPvarGetUbLocal(), SCIPwarningMessage(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by chgProbingBound(), performFixing(), performRandRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), tryOneOpt(), and trySolCandidate().
gets variable's objective value in current probing
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
var | variable to get the bound for |
Definition at line 35307 of file scip.c.
References checkStage(), FALSE, NULL, SCIP_CALL_ABORT, SCIP_INVALID, SCIPerrorMessage, SCIPtreeProbing(), SCIPvarGetObjLP(), Scip::tree, and TRUE.
Referenced by filterExistingLP(), and SCIPpropagateProbing().
SCIP_RETCODE SCIPfixVarProbing | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | fixedval | ||
) |
injects a change of variable's bounds into current probing node to fix the variable to the specified value; the same can also be achieved with a call to SCIPfixVar(), but in this case, the bound changes would be treated like deductions instead of branching decisions
scip
is in one of the following stages:
scip | SCIP data structure |
var | variable to change the bound for |
fixedval | value to fix variable to |
Definition at line 35337 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, SCIP_Mem::probmem, Scip::reopt, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALIDCALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPnodeAddBoundchg(), SCIPnodeGetType(), SCIPsetIsEQ(), SCIPsetIsGT(), SCIPsetIsLT(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by applyBoundHeur(), applyCliqueFixings(), applyVbounds(), applyVboundsFixings(), chgProbingBound(), fixVariable(), performStrongbranchSOS1(), and SCIP_DECL_HEUREXEC().
SCIP_RETCODE SCIPchgVarObjProbing | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | newobj | ||
) |
changes (column) variable's objective value during probing mode
scip
is in one of the following stages:
scip | SCIP data structure |
var | variable to change the objective for |
newobj | new objective function value |
Definition at line 35393 of file scip.c.
References checkStage(), SCIP_Lp::cutoffbound, SCIP_Node::data, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Probingnode::nchgdobjs, SCIP_Probingnode::origobjvals, SCIP_Probingnode::origobjvars, Scip::primal, SCIP_Node::probingnode, SCIP_Tree::probingsumchgdobjs, SCIP_Mem::probmem, Scip::relaxation, SCIP_CALL, SCIP_INVALIDCALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPallocMemoryArray, SCIPerrorMessage, SCIPisEQ(), SCIPisInfinity(), SCIPlpDivingObjChanged(), SCIPlpMarkDivingObjChanged(), SCIPlpSetCutoffbound(), SCIPnodeGetType(), SCIPreallocMemoryArray, SCIPrelaxationUpdateVarObj(), SCIPsetInfinity(), SCIPtreeGetCurrentNode(), SCIPtreeMarkProbingObjChanged(), SCIPtreeProbing(), SCIPtreeProbingObjChanged(), SCIPvarChgObj(), SCIPvarGetObj(), SCIPvarGetStatus(), Scip::set, Scip::transprob, Scip::tree, and TRUE.
Referenced by filterExistingLP().
SCIP_RETCODE SCIPpropagateProbing | ( | SCIP * | scip, |
int | maxproprounds, | ||
SCIP_Bool * | cutoff, | ||
SCIP_Longint * | ndomredsfound | ||
) |
applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called; the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal() and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
scip
is in one of the following stages:
scip | SCIP data structure |
maxproprounds | maximal number of propagation rounds (-1: no limit, 0: parameter settings) |
cutoff | pointer to store whether the probing node can be cut off |
ndomredsfound | pointer to store the number of domain reductions found, or NULL |
Definition at line 35477 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::conflict, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, MIN, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, NULL, Scip::origprob, Scip::primal, SCIP_Tree::probingobjchanged, SCIP_Tree::probingsumchgdobjs, SCIP_Mem::probmem, Scip::reopt, SCIP_Bool, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_PROPTIMING_ALWAYS, SCIP_Real, SCIPallocBufferArray, SCIPerrorMessage, SCIPfreeBufferArray, SCIPgetDepth(), SCIPgetNVars(), SCIPgetVarObjProbing(), SCIPgetVars(), SCIPisEQ(), SCIPlpMarkDivingObjChanged(), SCIPlpUnmarkDivingObjChanged(), SCIPpropagateDomains(), SCIPtreeProbing(), SCIPvarChgObj(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, TRUE, and SCIP_Var::unchangedobj.
Referenced by applyBoundHeur(), applyCliqueFixings(), applyVbounds(), applyVboundsFixings(), performFixing(), performRandRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), tightenVariables(), tryOneOpt(), and trySolCandidate().
SCIP_RETCODE SCIPpropagateProbingImplications | ( | SCIP * | scip, |
SCIP_Bool * | cutoff | ||
) |
applies domain propagation on the probing sub problem, that was changed after SCIPstartProbing() was called; only propagations of the binary variables fixed at the current probing node that are triggered by the implication graph and the clique table are applied; the propagated domains of the variables can be accessed with the usual bound accessing calls SCIPvarGetLbLocal() and SCIPvarGetUbLocal(); the propagation is only valid locally, i.e. the local bounds as well as the changed bounds due to SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), and SCIPfixVarProbing() are used for propagation
scip
is in one of the following stages:
scip | SCIP data structure |
cutoff | pointer to store whether the probing node can be cut off |
Definition at line 35583 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, SCIP_Mem::probmem, Scip::reopt, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPnodePropagateImplics(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by SCIPapplyProbingVar().
SCIP_RETCODE SCIPsolveProbingLP | ( | SCIP * | scip, |
int | itlim, | ||
SCIP_Bool * | lperror, | ||
SCIP_Bool * | cutoff | ||
) |
solves the LP at the current probing node (cannot be applied at preprocessing stage); no separation or pricing is applied
The LP has to be constructed before (you can use SCIPisLPConstructed() or SCIPconstructLP()).
scip
is in one of the following stages:
scip | SCIP data structure |
itlim | maximal number of LP iterations to perform, or -1 for no limit |
lperror | pointer to store whether an unresolved LP error occurred |
cutoff | pointer to store whether the probing LP was infeasible or the objective limit was reached (or NULL, if not needed) |
Definition at line 35713 of file scip.c.
References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, solveProbingLP(), and TRUE.
Referenced by applyBoundHeur(), applyVbounds(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), selectVarMultAggrBranching(), solveLP(), tryOneOpt(), and trySolCandidate().
SCIP_RETCODE SCIPsolveProbingLPWithPricing | ( | SCIP * | scip, |
SCIP_Bool | pretendroot, | ||
SCIP_Bool | displayinfo, | ||
int | maxpricerounds, | ||
SCIP_Bool * | lperror, | ||
SCIP_Bool * | cutoff | ||
) |
solves the LP at the current probing node (cannot be applied at preprocessing stage) and applies pricing until the LP is solved to optimality; no separation is applied
scip
is in one of the following stages:
solves the LP at the current probing node (cannot be applied at preprocessing stage) and applies pricing until the LP is solved to optimality; no separation is applied
scip
is in one of the following stages:
scip | SCIP data structure |
pretendroot | should the pricers be called as if we were at the root node? |
displayinfo | should info lines be displayed after each pricing round? |
maxpricerounds | maximal number of pricing rounds (-1: no limit); a finite limit means that the LP might not be solved to optimality! |
lperror | pointer to store whether an unresolved LP error occurred |
cutoff | pointer to store whether the probing LP was infeasible or the objective limit was reached (or NULL, if not needed) |
Definition at line 35737 of file scip.c.
References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, solveProbingLP(), and TRUE.
SCIP_RETCODE SCIPaddRowProbing | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
adds a row to the LP in the current probing node
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
row | row to be added |
Definition at line 35765 of file scip.c.
References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpAddRow(), SCIPnodeGetDepth(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), Scip::set, Scip::tree, and TRUE.
SCIP_RETCODE SCIPapplyCutsProbing | ( | SCIP * | scip, |
SCIP_Bool * | cutoff | ||
) |
applies the cuts in the separation storage to the LP and clears the storage afterwards; this method can only be applied during probing; the user should resolve the probing LP afterwards in order to get a new solution
scip
is in one of the following stages:
scip | SCIP data structure |
cutoff | pointer to store whether an empty domain was created |
Definition at line 35805 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::origprob, SCIP_Mem::probmem, Scip::reopt, SCIP_CALL, SCIP_EFFICIACYCHOICE_LP, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPsepastoreApplyCuts(), SCIPtreeProbing(), Scip::sepastore, Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
SCIP_RETCODE SCIPsolveProbingRelax | ( | SCIP * | scip, |
SCIP_Bool * | cutoff | ||
) |
solves relaxation(s) at the current probing node (cannot be applied at preprocessing stage); no separation or pricing is applied
scip
is in one of the following stages:
scip | SCIP data structure |
cutoff | pointer to store whether a relaxation was infeasible or the objective limit was reached (or NULL, if not needed) |
Definition at line 35834 of file scip.c.
References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_INVALIDCALL, SCIP_INVALIDRESULT, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIP_SUCCESS, SCIP_SUSPENDED, SCIPdebugMsg, SCIPerrorMessage, SCIPinfinity(), SCIPrelaxExec(), SCIPrelaxGetName(), SCIPsetSortRelaxs(), SCIPtreeGetCurrentDepth(), SCIPtreeProbing(), Scip::set, Scip::stat, Scip::tree, and TRUE.
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 | ||
) |
stores the candidate score and preferred rounding direction for a candidate variable
gets the candidate score and preferred rounding direction for a candidate variable
scip | SCIP data structure |
diveset | general diving settings |
divetype | represents different methods for a dive set to explore the next children |
divecand | the candidate for which the branching direction is requested |
divecandsol | LP solution value of the candidate |
divecandfrac | fractionality of the candidate |
candscore | pointer to store the candidate score |
roundup | pointer to store whether preferred direction for diving is upwards |
Definition at line 35902 of file scip.c.
References checkStage(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPdivesetGetScore(), Scip::set, and TRUE.
Referenced by getDiveBdChgsSOS1conflictgraph(), getDiveBdChgsSOS1constraints(), SCIP_DECL_CONSGETDIVEBDCHGS(), and selectNextDiving().
void SCIPupdateDivesetLPStats | ( | SCIP * | scip, |
SCIP_DIVESET * | diveset, | ||
SCIP_Longint | niterstoadd | ||
) |
update diveset LP statistics, should be called after every LP solved by this diving heuristic
scip | SCIP data structure |
diveset | diving settings |
niterstoadd | additional number of LP iterations to be added |
Definition at line 35927 of file scip.c.
References NULL, SCIPdivesetUpdateLPStats(), and Scip::stat.
Referenced by solveLP().
void SCIPupdateDivesetStats | ( | SCIP * | scip, |
SCIP_DIVESET * | diveset, | ||
int | nprobingnodes, | ||
int | nbacktracks, | ||
SCIP_Longint | nsolsfound, | ||
SCIP_Longint | nbestsolsfound, | ||
SCIP_Bool | leavewassol | ||
) |
update diveset statistics and global diveset statistics
scip | SCIP data structure |
diveset | diveset to be reset |
nprobingnodes | the number of probing nodes explored this time |
nbacktracks | the number of backtracks during probing this time |
nsolsfound | the number of solutions found |
nbestsolsfound | the number of best solutions found |
leavewassol | was a solution found at the leaf? |
Definition at line 35940 of file scip.c.
References NULL, SCIPdivesetUpdateStats(), SCIPgetDepth(), SCIPinProbing(), and Scip::stat.
Referenced by SCIPperformGenericDivingAlgorithm().
SCIP_RETCODE SCIPgetDiveBoundChanges | ( | SCIP * | scip, |
SCIP_DIVESET * | diveset, | ||
SCIP_SOL * | sol, | ||
SCIP_Bool * | success, | ||
SCIP_Bool * | infeasible | ||
) |
enforces a probing/diving solution by suggesting bound changes that maximize the score w.r.t. the current diving settings
the process is guided by the enforcement priorities of the constraint handlers and the scoring mechanism provided by the dive set. Constraint handlers may suggest diving bound changes in decreasing order of their enforcement priority, based on the solution values in the solution sol
and the current local bounds of the variables. A diving bound change is a triple (variable,branching direction,value) and is used inside SCIPperformGenericDivingAlgorithm().
After a successful call, SCIP holds two arrays of suggested dive bound changes, one for the preferred child and one for the alternative.
The method stops after the first constraint handler was successful
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
diveset | diving settings to control scoring |
sol | current solution of diving mode |
success | pointer to store whether constraint handler successfully found a variable |
infeasible | pointer to store whether the current node was detected to be infeasible |
Definition at line 35980 of file scip.c.
References checkStage(), SCIP_Set::conshdlrs_enfo, FALSE, SCIP_Set::nconshdlrs, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclearDiveBoundChanges(), SCIPconshdlrGetDiveBoundChanges(), SCIPinProbing(), SCIPtreeGetDiveBoundChangeData(), Scip::set, Scip::tree, and TRUE.
Referenced by selectNextDiving().
SCIP_RETCODE SCIPaddDiveBoundChange | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_BRANCHDIR | dir, | ||
SCIP_Real | value, | ||
SCIP_Bool | preferred | ||
) |
adds a diving bound change to the diving bound change storage of SCIP together with the information if this is a bound change for the preferred direction or not
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
var | variable to apply the bound change to |
dir | direction of the bound change |
value | value to adjust this variable bound to |
preferred | is this a bound change for the preferred child? |
Definition at line 36042 of file scip.c.
References checkStage(), FALSE, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPinProbing(), SCIPtreeAddDiveBoundChange(), Scip::tree, and TRUE.
Referenced by getDiveBdChgsSOS1conflictgraph(), getDiveBdChgsSOS1constraints(), SCIP_DECL_CONSGETDIVEBDCHGS(), and selectNextDiving().
void SCIPgetDiveBoundChangeData | ( | SCIP * | scip, |
SCIP_VAR *** | variables, | ||
SCIP_BRANCHDIR ** | directions, | ||
SCIP_Real ** | values, | ||
int * | ndivebdchgs, | ||
SCIP_Bool | preferred | ||
) |
get the dive bound change data for the preferred or the alternative direction
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
variables | pointer to store variables for the specified direction |
directions | pointer to store the branching directions |
values | pointer to store bound change values |
ndivebdchgs | pointer to store the number of dive bound changes |
preferred | should the dive bound changes for the preferred child be output? |
Definition at line 36068 of file scip.c.
References checkStage(), FALSE, NULL, SCIP_CALL_ABORT, SCIPinProbing(), SCIPtreeGetDiveBoundChangeData(), Scip::tree, and TRUE.
Referenced by SCIPperformGenericDivingAlgorithm().
void SCIPclearDiveBoundChanges | ( | SCIP * | scip | ) |
clear the dive bound change data structures
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
Definition at line 36095 of file scip.c.
References checkStage(), FALSE, NULL, SCIP_CALL_ABORT, SCIPtreeClearDiveBoundChanges(), Scip::tree, and TRUE.
Referenced by SCIPgetDiveBoundChanges(), and selectNextDiving().