methods to initiate and conduct LP diving
Functions | |
SCIP_RETCODE | SCIPstartDive (SCIP *scip) |
SCIP_RETCODE | SCIPendDive (SCIP *scip) |
SCIP_RETCODE | SCIPchgCutoffboundDive (SCIP *scip, SCIP_Real newcutoffbound) |
SCIP_RETCODE | SCIPchgVarObjDive (SCIP *scip, SCIP_VAR *var, SCIP_Real newobj) |
SCIP_RETCODE | SCIPchgVarLbDive (SCIP *scip, SCIP_VAR *var, SCIP_Real newbound) |
SCIP_RETCODE | SCIPchgVarUbDive (SCIP *scip, SCIP_VAR *var, SCIP_Real newbound) |
SCIP_RETCODE | SCIPaddRowDive (SCIP *scip, SCIP_ROW *row) |
SCIP_RETCODE | SCIPchgRowLhsDive (SCIP *scip, SCIP_ROW *row, SCIP_Real newlhs) |
SCIP_RETCODE | SCIPchgRowRhsDive (SCIP *scip, SCIP_ROW *row, SCIP_Real newrhs) |
SCIP_Real | SCIPgetVarObjDive (SCIP *scip, SCIP_VAR *var) |
SCIP_Real | SCIPgetVarLbDive (SCIP *scip, SCIP_VAR *var) |
SCIP_Real | SCIPgetVarUbDive (SCIP *scip, SCIP_VAR *var) |
SCIP_RETCODE | SCIPsolveDiveLP (SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff) |
SCIP_Longint | SCIPgetLastDivenode (SCIP *scip) |
SCIP_Bool | SCIPinDive (SCIP *scip) |
SCIP_RETCODE SCIPstartDive | ( | SCIP * | scip | ) |
initiates LP diving, making methods SCIPchgVarObjDive(), SCIPchgVarLbDive(), and SCIPchgVarUbDive() available
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 35268 of file scip.c.
References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, Scip::relaxation, SCIP_CALL, SCIP_INVALIDCALL, SCIP_NODETYPE_FOCUSNODE, SCIP_OKAY, SCIPerrorMessage, SCIPgetCurrentNode(), SCIPisRelaxSolValid(), SCIPlpDiving(), SCIPlpStartDive(), SCIPnodeGetType(), SCIPtreeHasCurrentNodeLP(), SCIPtreeIsFocusNodeLPConstructed(), SCIPtreeProbing(), SCIPtreeStoreRelaxSol(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and solveLp().
SCIP_RETCODE SCIPendDive | ( | SCIP * | scip | ) |
quits LP diving and resets bounds and objective values of columns to the current node's values
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 35317 of file scip.c.
References checkStage(), SCIP_Primal::cutoffbound, SCIP_Lp::cutoffbound, SCIP_Tree::cutoffdelayed, Scip::eventfilter, Scip::eventqueue, FALSE, SCIP_Tree::focusnode, Scip::lp, Scip::mem, Scip::messagehdlr, SCIP_Prob::nvars, Scip::origprob, Scip::primal, SCIP_Tree::probdiverelaxstored, SCIP_Mem::probmem, Scip::relaxation, Scip::reopt, SCIP_Lp::resolvelperror, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPlpEndDive(), SCIPlpIsRelax(), SCIPlpIsSolved(), SCIPlpSetCutoffbound(), SCIPnodeUpdateLowerboundLP(), SCIPtreeCutoff(), SCIPtreeIsFocusNodeLPConstructed(), SCIPtreeRestoreRelaxSol(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, TRUE, and SCIP_Prob::vars.
Referenced by SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and solveLp().
SCIP_RETCODE SCIPchgCutoffboundDive | ( | SCIP * | scip, |
SCIP_Real | newcutoffbound | ||
) |
changes cutoffbound in current dive
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
newcutoffbound | new cutoffbound |
Definition at line 35374 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPlpSetCutoffbound(), Scip::set, Scip::transprob, and TRUE.
SCIP_RETCODE SCIPchgVarObjDive | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | newobj | ||
) |
changes variable's objective value in current dive
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 change the objective value for |
newobj | new objective value |
Definition at line 35404 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPlpMarkDivingObjChanged(), SCIPlpSetCutoffbound(), SCIPsetInfinity(), SCIPvarChgObjDive(), Scip::set, Scip::transprob, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and updateVariableRounding().
SCIP_RETCODE SCIPchgVarLbDive | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | newbound | ||
) |
changes variable's lower bound in current dive
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 change the bound for |
newbound | new value for bound |
Definition at line 35445 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPvarChgLbDive(), Scip::set, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and solveLp().
SCIP_RETCODE SCIPchgVarUbDive | ( | SCIP * | scip, |
SCIP_VAR * | var, | ||
SCIP_Real | newbound | ||
) |
changes variable's upper bound in current dive
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 change the bound for |
newbound | new value for bound |
Definition at line 35477 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPerrorMessage, SCIPlpDiving(), SCIPvarChgUbDive(), Scip::set, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and solveLp().
SCIP_RETCODE SCIPaddRowDive | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
adds a row to the LP in current dive
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 35509 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(), SCIPlpDiving(), SCIPnodeGetDepth(), SCIPtreeGetCurrentNode(), Scip::set, Scip::tree, and TRUE.
SCIP_RETCODE SCIPchgRowLhsDive | ( | SCIP * | scip, |
SCIP_ROW * | row, | ||
SCIP_Real | newlhs | ||
) |
changes row lhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowLhs()
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 change the lhs for |
newlhs | new value for lhs |
Definition at line 35548 of file scip.c.
References checkStage(), Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIPerrorMessage, SCIPlpDiving(), SCIPlpRecordOldRowSideDive(), SCIProwChgLhs(), Scip::set, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP().
SCIP_RETCODE SCIPchgRowRhsDive | ( | SCIP * | scip, |
SCIP_ROW * | row, | ||
SCIP_Real | newrhs | ||
) |
changes row rhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowRhs()
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 change the lhs for |
newrhs | new value for rhs |
Definition at line 35581 of file scip.c.
References checkStage(), Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_SIDETYPE_RIGHT, SCIPerrorMessage, SCIPlpDiving(), SCIPlpRecordOldRowSideDive(), SCIProwChgRhs(), Scip::set, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP().
gets variable's objective value in current dive
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 35613 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIP_INVALID, SCIPABORT, SCIPerrorMessage, SCIPlpDiving(), SCIPvarGetObjLP(), and TRUE.
Referenced by SCIP_DECL_HEUREXEC().
gets variable's lower bound in current dive
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 35642 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIP_INVALID, SCIPABORT, SCIPerrorMessage, SCIPlpDiving(), SCIPvarGetLbLP(), Scip::set, and TRUE.
Referenced by SCIP_DECL_HEUREXEC().
gets variable's upper bound in current dive
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 35671 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIP_INVALID, SCIPABORT, SCIPerrorMessage, SCIPlpDiving(), SCIPvarGetUbLP(), Scip::set, and TRUE.
Referenced by SCIP_DECL_HEUREXEC().
SCIP_RETCODE SCIPsolveDiveLP | ( | SCIP * | scip, |
int | itlim, | ||
SCIP_Bool * | lperror, | ||
SCIP_Bool * | cutoff | ||
) |
solves the LP of the current dive; no separation or pricing is applied
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving 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 diving LP was infeasible or the objective limit was reached (or NULL, if not needed) |
Definition at line 35704 of file scip.c.
References Scip::branchcand, checkStage(), Scip::cliquetable, Scip::conflict, Scip::conflictstore, Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::messagehdlr, SCIP_Set::misc_exactsolve, Scip::origprob, SCIP_Mem::probmem, Scip::reopt, SCIP_CALL, SCIP_INVALIDCALL, SCIP_Longint, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPconflictAnalyzeLP(), SCIPerrorMessage, SCIPgetCutoffbound(), SCIPgetLPObjval(), SCIPisGE(), SCIPlpDiving(), SCIPlpDivingObjChanged(), SCIPlpDivingRowsChanged(), SCIPlpGetSolstat(), SCIPlpSolveAndEval(), SCIPprobAllColsInLP(), Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_HEUREXEC(), and solveLp().
SCIP_Longint SCIPgetLastDivenode | ( | SCIP * | scip | ) |
returns the number of the node in the current branch and bound run, where the last LP was solved in diving or probing mode
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 35772 of file scip.c.
References checkStage(), FALSE, SCIP_Stat::lastdivenode, SCIP_CALL_ABORT, Scip::stat, and TRUE.
Referenced by SCIP_DECL_HEUREXEC(), and SCIPperformGenericDivingAlgorithm().
returns whether we are in diving mode
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 35802 of file scip.c.
References checkStage(), FALSE, Scip::lp, SCIP_CALL_ABORT, SCIPlpDiving(), and TRUE.
Referenced by SCIP_DECL_PROPEXEC(), SCIP_DECL_RELAXEXEC(), SCIPtightenVarLb(), SCIPtightenVarUb(), and storeAllBilinearTerms().