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 35262 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 35311 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 35368 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 35398 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 35439 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 35471 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 35503 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 35542 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 35575 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 35607 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 35636 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 35665 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 35698 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 35766 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 35796 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().