Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods to initiate and control the probing mode of SCIP

Functions

SCIP_Bool SCIPinProbing (SCIP *scip)
 
SCIP_RETCODE SCIPstartProbing (SCIP *scip)
 
SCIP_RETCODE SCIPnewProbingNode (SCIP *scip)
 
int SCIPgetProbingDepth (SCIP *scip)
 
SCIP_RETCODE SCIPbacktrackProbing (SCIP *scip, int probingdepth)
 
SCIP_RETCODE SCIPendProbing (SCIP *scip)
 
SCIP_RETCODE SCIPchgVarLbProbing (SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
 
SCIP_RETCODE SCIPchgVarUbProbing (SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
 
SCIP_Real SCIPgetVarObjProbing (SCIP *scip, SCIP_VAR *var)
 
SCIP_RETCODE SCIPfixVarProbing (SCIP *scip, SCIP_VAR *var, SCIP_Real fixedval)
 
SCIP_RETCODE SCIPchgVarObjProbing (SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
 
SCIP_Bool SCIPisObjChangedProbing (SCIP *scip)
 
SCIP_RETCODE SCIPpropagateProbing (SCIP *scip, int maxproprounds, SCIP_Bool *cutoff, SCIP_Longint *ndomredsfound)
 
SCIP_RETCODE SCIPpropagateProbingImplications (SCIP *scip, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPsolveProbingLP (SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPsolveProbingLPWithPricing (SCIP *scip, SCIP_Bool pretendroot, SCIP_Bool displayinfo, int maxpricerounds, SCIP_Bool *lperror, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPsetProbingLPState (SCIP *scip, SCIP_LPISTATE **lpistate, SCIP_LPINORMS **lpinorms, SCIP_Bool primalfeas, SCIP_Bool dualfeas)
 
SCIP_RETCODE SCIPaddRowProbing (SCIP *scip, SCIP_ROW *row)
 
SCIP_RETCODE SCIPapplyCutsProbing (SCIP *scip, SCIP_Bool *cutoff)
 
SCIP_RETCODE SCIPsolveProbingRelax (SCIP *scip, SCIP_Bool *cutoff)
 
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)
 
void SCIPupdateDivesetLPStats (SCIP *scip, SCIP_DIVESET *diveset, SCIP_Longint niterstoadd)
 
void SCIPupdateDivesetStats (SCIP *scip, SCIP_DIVESET *diveset, int nprobingnodes, int nbacktracks, SCIP_Longint nsolsfound, SCIP_Longint nbestsolsfound, SCIP_Bool leavewassol)
 
SCIP_RETCODE SCIPgetDiveBoundChanges (SCIP *scip, SCIP_DIVESET *diveset, SCIP_SOL *sol, SCIP_Bool *success, SCIP_Bool *infeasible)
 
SCIP_RETCODE SCIPaddDiveBoundChange (SCIP *scip, SCIP_VAR *var, SCIP_BRANCHDIR dir, SCIP_Real value, SCIP_Bool preferred)
 
void SCIPgetDiveBoundChangeData (SCIP *scip, SCIP_VAR ***variables, SCIP_BRANCHDIR **directions, SCIP_Real **values, int *ndivebdchgs, SCIP_Bool preferred)
 
void SCIPclearDiveBoundChanges (SCIP *scip)
 

Function Documentation

◆ SCIPinProbing()

SCIP_Bool SCIPinProbing ( SCIP scip)

returns whether we are in probing mode; probing mode is activated via SCIPstartProbing() and stopped via SCIPendProbing()

Returns
TRUE, if SCIP is currently in probing mode, otherwise FALSE
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 35830 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPtreeProbing(), Scip::tree, and TRUE.

Referenced by analyzeConflict(), analyzeConflictOne(), analyzeConflictZero(), applyGenVBounds(), applyProbingVar(), applyVbounds(), consdataDeletePos(), execGenVBounds(), filterExistingLP(), fixIntegerVariableLb(), fixIntegerVariableUb(), performRandRounding(), processBinvarFixings(), propagateAllConss(), propagateBounds(), propagateBoundsCons(), propagateBoundsTightenVarLb(), propagateBoundsTightenVarUb(), propagateCons(), propagateConstraintSides(), propagatePackingPartitioningCons(), propIndicator(), reformulate(), removeFixedBinvars(), resolvePropagationCoretimes(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPROP(), SCIP_DECL_PRESOLEXEC(), SCIP_DECL_PROPEXEC(), SCIP_DECL_PROPPRESOL(), SCIP_DECL_RELAXEXEC(), SCIPaddDiveBoundChange(), SCIPapplyLockFixings(), SCIPchgVarLb(), SCIPchgVarLbGlobal(), SCIPchgVarUb(), SCIPchgVarUbGlobal(), SCIPgetDiveBoundChangeData(), SCIPgetDiveBoundChanges(), SCIPgetVarStrongbranchWithPropagation(), SCIPinferVarLbCons(), SCIPinferVarLbProp(), SCIPinferVarUbCons(), SCIPinferVarUbProp(), SCIPisObjChangedProbing(), SCIPrelaxExec(), SCIPstartStrongbranch(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPupdateDivesetStats(), solveBilinearLP(), solveIndependentCons(), storeAllBilinearTerms(), tightenBounds(), tightenedIntvar(), and varProcessBoundChanges().

◆ SCIPstartProbing()

SCIP_RETCODE SCIPstartProbing ( SCIP scip)

initiates probing, making methods SCIPnewProbingNode(), SCIPbacktrackProbing(), SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPpropagateProbing(), and SCIPsolveProbingLP() available

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Note
The collection of variable statistics is turned off during probing. If these statistics should be collected during probing use the method SCIPenableVarHistory() to turn the collection explicitly on.
Parameters
scipSCIP data structure

Definition at line 35852 of file scip.c.

References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, Scip::relaxation, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPstatDisableVarHistory(), SCIPswapPointers(), SCIPtreeProbing(), SCIPtreeStartProbing(), Scip::sepastore, Scip::sepastoreprobing, Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.

Referenced by applyBoundHeur(), applyCompletesol(), applyVbounds(), fixAndPropagate(), performRandRounding(), performStrongbranchSOS1(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), tryOneOpt(), and trySolCandidate().

◆ SCIPnewProbingNode()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 35898 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(), SCIPapplyLockFixings(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), solveBilinearLP(), tightenVariables(), tryOneOpt(), and trySolCandidate().

◆ SCIPgetProbingDepth()

int SCIPgetProbingDepth ( SCIP scip)

returns the current probing depth

Returns
the probing depth, i.e. the number of probing sub nodes existing in the probing path
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 35931 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPABORT, SCIPerrorMessage, SCIPtreeGetProbingDepth(), SCIPtreeProbing(), Scip::tree, and TRUE.

Referenced by applyBoundHeur(), applyCliqueFixings(), applyVboundsFixings(), fixAndPropagate(), SCIP_DECL_HEUREXEC(), SCIPapplyLockFixings(), SCIPendStrongbranch(), SCIPperformGenericDivingAlgorithm(), and tightenVariables().

◆ SCIPbacktrackProbing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
probingdepthprobing depth of the node in the probing path that should be reactivated

Definition at line 35958 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::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(), applyCliqueFixings(), applyVboundsFixings(), fixAndPropagate(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyLockFixings(), SCIPperformGenericDivingAlgorithm(), selectVarMultAggrBranching(), solveBilinearLP(), tightenVariables(), and tryOneOpt().

◆ SCIPendProbing()

◆ SCIPchgVarLbProbing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
varvariable to change the bound for
newboundnew value for bound

Definition at line 36034 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 applyVboundsFixings(), chgProbingBound(), performFixing(), performRandRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), tryOneOpt(), and trySolCandidate().

◆ SCIPchgVarUbProbing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
varvariable to change the bound for
newboundnew value for bound

Definition at line 36078 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 applyVboundsFixings(), chgProbingBound(), performFixing(), performRandRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), tryOneOpt(), and trySolCandidate().

◆ SCIPgetVarObjProbing()

SCIP_Real SCIPgetVarObjProbing ( SCIP scip,
SCIP_VAR var 
)

gets variable's objective value in current probing

Returns
the variable's objective value in current probing.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
varvariable to get the bound for

Definition at line 36121 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIP_INVALID, SCIPerrorMessage, SCIPtreeProbing(), SCIPvarGetObjLP(), Scip::tree, and TRUE.

Referenced by filterExistingLP(), and SCIPpropagateProbing().

◆ SCIPfixVarProbing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
varvariable to change the bound for
fixedvalvalue to fix variable to

Definition at line 36151 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(), applyVboundsFixings(), chgProbingBound(), fixVariable(), performStrongbranchSOS1(), SCIP_DECL_HEUREXEC(), and SCIPapplyLockFixings().

◆ SCIPchgVarObjProbing()

SCIP_RETCODE SCIPchgVarObjProbing ( SCIP scip,
SCIP_VAR var,
SCIP_Real  newobj 
)

changes (column) variable's objective value during probing mode

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
The variable needs to be a column variable.
Parameters
scipSCIP data structure
varvariable to change the objective for
newobjnew objective function value

Definition at line 36207 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_CALL, SCIP_INVALIDCALL, SCIP_NODETYPE_PROBINGNODE, SCIP_OKAY, SCIP_Real, SCIPallocMemoryArray, SCIPerrorMessage, SCIPisEQ(), SCIPisInfinity(), SCIPlpDivingObjChanged(), SCIPlpMarkDivingObjChanged(), SCIPlpSetCutoffbound(), SCIPnodeGetType(), SCIPreallocMemoryArray, SCIPsetInfinity(), SCIPtreeGetCurrentNode(), SCIPtreeMarkProbingObjChanged(), SCIPtreeProbing(), SCIPtreeProbingObjChanged(), SCIPvarChgObj(), SCIPvarGetObj(), Scip::set, Scip::transprob, Scip::tree, and TRUE.

Referenced by filterExistingLP(), and solveBilinearLP().

◆ SCIPisObjChangedProbing()

SCIP_Bool SCIPisObjChangedProbing ( SCIP scip)

returns whether the objective function has changed during probing mode

Returns
TRUE if objective has changed, FALSE otherwise
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 36285 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPinProbing(), SCIPtreeProbingObjChanged(), Scip::tree, and TRUE.

◆ SCIPpropagateProbing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
maxproproundsmaximal number of propagation rounds (-1: no limit, 0: parameter settings)
cutoffpointer to store whether the probing node can be cut off
ndomredsfoundpointer to store the number of domain reductions found, or NULL

Definition at line 36308 of file scip.c.

References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::conflict, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, 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(), applyVboundsFixings(), performFixing(), performRandRounding(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), SCIPapplyLockFixings(), SCIPapplyProbingVar(), SCIPperformGenericDivingAlgorithm(), tightenVariables(), tryOneOpt(), and trySolCandidate().

◆ SCIPpropagateProbingImplications()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutoffpointer to store whether the probing node can be cut off

Definition at line 36414 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().

◆ SCIPsolveProbingLP()

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()).

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
itlimmaximal number of LP iterations to perform, or -1 for no limit
lperrorpointer to store whether an unresolved LP error occurred
cutoffpointer to store whether the probing LP was infeasible or the objective limit was reached (or NULL, if not needed)

Definition at line 36544 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, solveProbingLP(), and TRUE.

Referenced by applyBoundHeur(), applyVbounds(), performStrongbranchSOS1(), performStrongbranchWithPropagation(), SCIP_DECL_HEUREXEC(), selectVarMultAggrBranching(), solveBilinearLP(), solveLP(), tryOneOpt(), and trySolCandidate().

◆ SCIPsolveProbingLPWithPricing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed . See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if 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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
pretendrootshould the pricers be called as if we were at the root node?
displayinfoshould info lines be displayed after each pricing round?
maxpriceroundsmaximal number of pricing rounds (-1: no limit); a finite limit means that the LP might not be solved to optimality!
lperrorpointer to store whether an unresolved LP error occurred
cutoffpointer to store whether the probing LP was infeasible or the objective limit was reached (or NULL, if not needed)

Definition at line 36568 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, solveProbingLP(), and TRUE.

◆ SCIPsetProbingLPState()

SCIP_RETCODE SCIPsetProbingLPState ( SCIP scip,
SCIP_LPISTATE **  lpistate,
SCIP_LPINORMS **  lpinorms,
SCIP_Bool  primalfeas,
SCIP_Bool  dualfeas 
)

sets the LP state for the current probing node

Note
state and norms are stored at the node and later released by SCIP; therefore, the pointers are set to NULL by the method
the pointers to state and norms must not be NULL; however, they may point to a NULL pointer if the respective information should not be set
Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
lpistatepointer to LP state information (like basis information)
lpinormspointer to LP pricing norms information
primalfeasprimal feasibility when LP state information was stored
dualfeasdual feasibility when LP state information was stored

Definition at line 36601 of file scip.c.

References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPtreeProbing(), SCIPtreeSetProbingLPState(), Scip::tree, and TRUE.

◆ SCIPaddRowProbing()

SCIP_RETCODE SCIPaddRowProbing ( SCIP scip,
SCIP_ROW row 
)

adds a row to the LP in the current probing node

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
rowrow to be added

Definition at line 36632 of file scip.c.

References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpAddRow(), SCIPnodeGetDepth(), SCIPtreeGetCurrentNode(), SCIPtreeProbing(), Scip::set, Scip::tree, and TRUE.

Referenced by solveBilinearLP().

◆ SCIPapplyCutsProbing()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutoffpointer to store whether an empty domain was created

Definition at line 36672 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.

◆ SCIPsolveProbingRelax()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutoffpointer to store whether a relaxation was infeasible or the objective limit was reached (or NULL, if not needed)

Definition at line 36701 of file scip.c.

References checkStage(), FALSE, 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.

◆ SCIPgetDivesetScore()

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

Parameters
scipSCIP data structure
divesetgeneral diving settings
divetyperepresents different methods for a dive set to explore the next children
divecandthe candidate for which the branching direction is requested
divecandsolLP solution value of the candidate
divecandfracfractionality of the candidate
candscorepointer to store the candidate score
rounduppointer to store whether preferred direction for diving is upwards

Definition at line 36769 of file scip.c.

References checkStage(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPdivesetGetScore(), Scip::set, and TRUE.

Referenced by getDiveBdChgsSOS1conflictgraph(), getDiveBdChgsSOS1constraints(), SCIP_DECL_CONSGETDIVEBDCHGS(), and selectNextDiving().

◆ SCIPupdateDivesetLPStats()

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

Parameters
scipSCIP data structure
divesetdiving settings
niterstoaddadditional number of LP iterations to be added

Definition at line 36794 of file scip.c.

References SCIPdivesetUpdateLPStats(), and Scip::stat.

Referenced by solveLP().

◆ SCIPupdateDivesetStats()

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

Parameters
scipSCIP data structure
divesetdiveset to be reset
nprobingnodesthe number of probing nodes explored this time
nbacktracksthe number of backtracks during probing this time
nsolsfoundthe number of solutions found
nbestsolsfoundthe number of best solutions found
leavewassolwas a solution found at the leaf?

Definition at line 36807 of file scip.c.

References SCIPdivesetUpdateStats(), SCIPgetDepth(), SCIPinProbing(), and Scip::stat.

Referenced by SCIPperformGenericDivingAlgorithm().

◆ SCIPgetDiveBoundChanges()

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.

See also
SCIPgetDiveBoundChangeData() for retrieving the dive bound change suggestions.

The method stops after the first constraint handler was successful

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
divesetdiving settings to control scoring
solcurrent solution of diving mode
successpointer to store whether constraint handler successfully found a variable
infeasiblepointer to store whether the current node was detected to be infeasible

Definition at line 36847 of file scip.c.

References checkStage(), SCIP_Set::conshdlrs_enfo, FALSE, SCIP_Set::nconshdlrs, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclearDiveBoundChanges(), SCIPconshdlrGetDiveBoundChanges(), SCIPinProbing(), SCIPtreeGetDiveBoundChangeData(), Scip::set, Scip::tree, and TRUE.

Referenced by selectNextDiving().

◆ SCIPaddDiveBoundChange()

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

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
varvariable to apply the bound change to
dirdirection of the bound change
valuevalue to adjust this variable bound to
preferredis this a bound change for the preferred child?

Definition at line 36909 of file scip.c.

References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPinProbing(), SCIPtreeAddDiveBoundChange(), Scip::tree, and TRUE.

Referenced by getDiveBdChgsSOS1conflictgraph(), getDiveBdChgsSOS1constraints(), SCIP_DECL_CONSGETDIVEBDCHGS(), and selectNextDiving().

◆ SCIPgetDiveBoundChangeData()

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

Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
variablespointer to store variables for the specified direction
directionspointer to store the branching directions
valuespointer to store bound change values
ndivebdchgspointer to store the number of dive bound changes
preferredshould the dive bound changes for the preferred child be output?

Definition at line 36935 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPinProbing(), SCIPtreeGetDiveBoundChangeData(), Scip::tree, and TRUE.

Referenced by SCIPperformGenericDivingAlgorithm().

◆ SCIPclearDiveBoundChanges()

void SCIPclearDiveBoundChanges ( SCIP scip)

clear the dive bound change data structures

Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure

Definition at line 36962 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPtreeClearDiveBoundChanges(), Scip::tree, and TRUE.

Referenced by SCIPgetDiveBoundChanges(), and selectNextDiving().