LP management methods and data structures.
In LP management, we have to differ between the current LP and the SCIP_LP stored in the LP solver. All LP methods affect the current LP only. Before solving the current LP with the LP solver or setting an LP state, the LP solvers data has to be updated to the current LP with a call to lpFlush().
Definition in file lp.c.
#include <assert.h>
#include <math.h>
#include <limits.h>
#include <string.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/intervalarith.h"
#include "scip/clock.h"
#include "scip/misc.h"
#include "scip/lp.h"
#include "scip/var.h"
#include "scip/prob.h"
#include "scip/sol.h"
#include "scip/solve.h"
#include "scip/event.h"
#include "scip/pub_message.h"
#include "lpi/lpi.h"
Go to the source code of this file.
Macros | |
#define | debugRowPrint(x, y) |
#define | debugColPrint(x, y) |
#define | checkRow(row) |
#define | checkRowSqrnorm(row) |
#define | checkRowSumnorm(row) |
#define | checkRowObjprod(row) |
#define | checkLinks(lp) |
#define | lpCutoffDisabled(set) (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2)) |
#define | DIVESTACKINITSIZE 100 |
#define | MAXNUMTROUBLELPMSGS 10 |
#define | FEASTOLTIGHTFAC 0.001 |
#define | DIVESTACKGROWFACT 1.5 |
Variables | |
static const SCIP_Real | scalars [] = {3.0, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0} |
static const int | nscalars = 9 |
#define debugRowPrint | ( | x, | |
y | |||
) |
Definition at line 105 of file lp.c.
Referenced by lpFlushAddRows(), and rowScale().
#define debugColPrint | ( | x, | |
y | |||
) |
Definition at line 138 of file lp.c.
Referenced by lpFlushAddCols().
#define checkRow | ( | row | ) |
Definition at line 652 of file lp.c.
Referenced by rowSortNonLP(), and SCIProwEnsureSize().
#define checkRowSqrnorm | ( | row | ) |
Definition at line 725 of file lp.c.
Referenced by SCIProwGetNorm(), and SCIProwGetObjParallelism().
#define checkRowSumnorm | ( | row | ) |
Definition at line 726 of file lp.c.
Referenced by SCIProwGetSumNorm().
#define checkRowObjprod | ( | row | ) |
Definition at line 727 of file lp.c.
Referenced by SCIProwGetObjParallelism().
#define checkLinks | ( | lp | ) |
Definition at line 1581 of file lp.c.
Referenced by colLink(), colUnlink(), lpDelColset(), lpDelRowset(), lpSolve(), rowEventSideChanged(), rowLink(), SCIPcolAddCoef(), SCIPcolChgCoef(), SCIPcolDelCoef(), SCIPcolIncCoef(), SCIPlpAddCol(), SCIPlpAddRow(), SCIPlpFlush(), SCIPlpMarkFlushed(), SCIPlpShrinkCols(), SCIPlpShrinkRows(), SCIProwAddCoef(), SCIProwChgCoef(), SCIProwDelCoef(), and SCIProwIncCoef().
#define lpCutoffDisabled | ( | set | ) | (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2)) |
should the objective limit of the LP solver be disabled
Definition at line 2607 of file lp.c.
Referenced by lpSetObjlim(), lpSolve(), SCIPlpSetCutoffbound(), and SCIPlpSolveAndEval().
#define DIVESTACKINITSIZE 100 |
Definition at line 8876 of file lp.c.
Referenced by SCIPlpCreate().
#define MAXNUMTROUBLELPMSGS 10 |
maximal number of verblevel-high messages about numerical trouble in LP that will be printed when this number is reached and display/verblevel is not full, then further messages are suppressed in this run
Definition at line 11166 of file lp.c.
Referenced by lpNumericalTroubleMessage().
#define FEASTOLTIGHTFAC 0.001 |
Definition at line 11227 of file lp.c.
Referenced by lpSolveStable().
#define DIVESTACKGROWFACT 1.5 |
Definition at line 15510 of file lp.c.
Referenced by SCIPlpRecordOldRowSideDive().
|
static |
ensures, that chgcols array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 147 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::chgcols, SCIP_Lp::chgcolssize, SCIP_Lp::nchgcols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by insertColChgcols().
|
static |
ensures, that chgrows array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 170 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::chgrows, SCIP_Lp::chgrowssize, SCIP_Lp::nchgrows, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by rowSideChanged().
|
static |
ensures, that lpicols array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 193 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::lpicols, SCIP_Lp::lpicolssize, SCIP_Lp::nlpicols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by lpFlushAddCols().
|
static |
ensures, that lpirows array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 216 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::lpirows, SCIP_Lp::lpirowssize, SCIP_Lp::nlpirows, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by lpFlushAddRows().
|
static |
ensures, that cols array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 239 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::cols, SCIP_Lp::colssize, SCIP_Lp::ncols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPlpAddCol().
|
static |
ensures, that lazy cols array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 262 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::lazycols, SCIP_Lp::lazycolssize, SCIP_Lp::nlazycols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPlpAddCol().
|
static |
ensures, that rows array can store at least num entries
lp | current LP data |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 285 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::nrows, SCIP_Lp::rows, SCIP_Lp::rowssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPlpAddRow().
|
static |
ensures, that row array of column can store at least num entries
col | LP column |
blkmem | block memory |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 308 of file lp.c.
References BMSreallocBlockMemoryArray, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Col::rows, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Col::size, and SCIP_Col::vals.
Referenced by colAddCoef().
|
static |
save current LP values dependent on the solution
lp | LP data |
stat | problem statistics |
blkmem | block memory |
Definition at line 335 of file lp.c.
References BMSallocMemory, SCIP_LpSolVals::dualchecked, SCIP_Lp::dualchecked, SCIP_LpSolVals::dualfeasible, SCIP_Lp::dualfeasible, SCIP_LpSolVals::lpissolved, SCIP_LpSolVals::lpobjval, SCIP_Lp::lpobjval, SCIP_LpSolVals::lpsolstat, SCIP_Lp::lpsolstat, SCIP_LpSolVals::primalchecked, SCIP_Lp::primalchecked, SCIP_LpSolVals::primalfeasible, SCIP_Lp::primalfeasible, SCIP_ALLOC, SCIP_OKAY, SCIP_LpSolVals::solisbasic, SCIP_Lp::solisbasic, SCIP_Lp::solved, and SCIP_Lp::storedsolvals.
Referenced by SCIPlpStartDive().
|
static |
restore LP solution values in column
lp | LP data |
blkmem | block memory |
validlp | number of lp for which restored values are valid |
Definition at line 369 of file lp.c.
References SCIP_LpSolVals::dualchecked, SCIP_Lp::dualchecked, SCIP_LpSolVals::dualfeasible, SCIP_Lp::dualfeasible, FALSE, SCIP_LpSolVals::lpissolved, SCIP_LpSolVals::lpobjval, SCIP_Lp::lpobjval, SCIP_LpSolVals::lpsolstat, SCIP_Lp::lpsolstat, SCIP_LpSolVals::primalchecked, SCIP_Lp::primalchecked, SCIP_LpSolVals::primalfeasible, SCIP_Lp::primalfeasible, SCIP_INVALID, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_LpSolVals::solisbasic, SCIP_Lp::solisbasic, SCIP_Lp::solved, SCIP_Lp::storedsolvals, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.
Referenced by SCIPlpEndDive().
|
static |
save current LP solution values stored in each column
col | LP column |
blkmem | block memory |
Definition at line 427 of file lp.c.
References SCIP_ColSolVals::basisstatus, SCIP_Col::basisstatus, BMSallocBlockMemory, SCIP_ColSolVals::primsol, SCIP_Col::primsol, SCIP_ColSolVals::redcost, SCIP_Col::redcost, SCIP_ALLOC, SCIP_OKAY, and SCIP_Col::storedsolvals.
Referenced by SCIPlpStartDive().
|
static |
restore LP solution values in column
col | LP column |
blkmem | block memory |
validlp | number of lp for which restored values are valid |
freebuffer | should buffer for LP solution values be freed? |
Definition at line 454 of file lp.c.
References SCIP_ColSolVals::basisstatus, SCIP_Col::basisstatus, BMSfreeBlockMemoryNull, SCIP_ColSolVals::primsol, SCIP_Col::primsol, SCIP_ColSolVals::redcost, SCIP_Col::redcost, SCIP_BASESTAT_ZERO, SCIP_OKAY, SCIP_Col::storedsolvals, SCIP_Col::validfarkaslp, and SCIP_Col::validredcostlp.
Referenced by SCIPlpEndDive().
|
static |
save current LP solution values stored in each column
row | LP row |
blkmem | block memory |
infeasible | is the solution infeasible? |
Definition at line 501 of file lp.c.
References SCIP_RowSolVals::activity, SCIP_Row::activity, SCIP_RowSolVals::basisstatus, SCIP_Row::basisstatus, BMSallocBlockMemory, SCIP_Row::dualfarkas, SCIP_RowSolVals::dualsol, SCIP_Row::dualsol, SCIP_ALLOC, SCIP_BASESTAT_BASIC, SCIP_INVALID, SCIP_OKAY, and SCIP_Row::storedsolvals.
Referenced by SCIPlpStartDive().
|
static |
restore LP solution values in row
row | LP column |
blkmem | block memory |
validlp | number of lp for which restored values are valid |
freebuffer | should buffer for LP solution values be freed? |
infeasible | is the solution infeasible? |
Definition at line 538 of file lp.c.
References SCIP_RowSolVals::activity, SCIP_Row::activity, SCIP_RowSolVals::basisstatus, SCIP_Row::basisstatus, BMSfreeBlockMemoryNull, SCIP_Row::dualfarkas, SCIP_RowSolVals::dualsol, SCIP_Row::dualsol, SCIP_BASESTAT_BASIC, SCIP_INVALID, SCIP_OKAY, SCIP_Row::storedsolvals, and SCIP_Row::validactivitylp.
Referenced by SCIPlpEndDive().
SCIP_RETCODE SCIProwEnsureSize | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
int | num | ||
) |
ensures, that column array of row can store at least num entries
row | LP row |
blkmem | block memory |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 586 of file lp.c.
References BMSreallocBlockMemoryArray, checkRow, SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::index, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Row::size, TRUE, and SCIP_Row::vals.
Referenced by rowAddCoef(), SCIPaddVarsToRow(), and SCIPaddVarsToRowSameCoef().
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 736 of file lp.c.
References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Prob::nvars, SCIP_Lp::rellooseobjval, SCIP_Real, SCIP_VARSTATUS_LOOSE, SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), TRUE, and SCIP_Prob::vars.
Referenced by getFiniteLooseObjval(), and SCIPlpGetObjval().
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 778 of file lp.c.
References SCIP_Prob::nvars, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::relpseudoobjval, SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbLocal(), TRUE, and SCIP_Prob::vars.
Referenced by getFinitePseudoObjval(), and SCIPlpGetPseudoObjval().
|
static |
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 820 of file lp.c.
References SCIP_Lp::glbpseudoobjval, SCIP_Lp::glbpseudoobjvalid, SCIP_Prob::nvars, SCIP_Lp::relglbpseudoobjval, SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), TRUE, and SCIP_Prob::vars.
Referenced by SCIPlpGetGlobalPseudoObjval().
gets finite part of objective value of current LP that results from LOOSE variables only
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 862 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, and recomputeLooseObjectiveValue().
Referenced by computeRelIntPoint(), lpSolve(), lpSolveStable(), SCIPcolGetStrongbranch(), SCIPcolGetStrongbranches(), SCIPlpGetLooseObjval(), and SCIPlpSolveAndEval().
gets finite part of pseudo objective value of current LP
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 884 of file lp.c.
References SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, and recomputePseudoObjectiveValue().
Referenced by SCIPlpGetModifiedPseudoObjval().
|
static |
sorts column entries of linked rows currently in the LP such that lower row indices precede higher ones
col | column to be sorted |
Definition at line 926 of file lp.c.
References SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::lprowssorted, SCIP_Col::nlprows, SCIP_Col::rows, SCIPsortPtrRealInt(), TRUE, and SCIP_Col::vals.
Referenced by colSearchCoef(), and SCIPcolSort().
|
static |
sorts column entries of unlinked rows or rows currently not in the LP such that lower row indices precede higher ones
col | column to be sorted |
Definition at line 959 of file lp.c.
References SCIP_Row::cols, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, SCIP_Col::rows, SCIPsortPtrRealInt(), TRUE, and SCIP_Col::vals.
Referenced by colSearchCoef(), and SCIPcolSort().
|
static |
sorts row entries of linked columns currently in the LP such that lower column indices precede higher ones
row | row to be sorted |
Definition at line 990 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Row::nlpcols, SCIP_Col::rows, SCIPsortIntPtrIntReal(), TRUE, and SCIP_Row::vals.
Referenced by computeRelIntPoint(), rowSearchCoef(), and SCIProwSort().
|
static |
sorts row entries of unlinked columns or columns currently not in the LP such that lower column indices precede higher ones
row | row to be sorted |
Definition at line 1023 of file lp.c.
References checkRow, SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, SCIP_Col::rows, SCIPsortIntPtrIntReal(), TRUE, and SCIP_Row::vals.
Referenced by rowSearchCoef(), and SCIProwSort().
|
static |
searches coefficient in part of the column, returns position in col vector or -1 if not found
col | column to be searched in |
row | coefficient to be searched for |
minpos | first position of search range |
maxpos | last position of search range |
Definition at line 1058 of file lp.c.
References SCIP_Row::index, SCIP_Col::linkpos, SCIP_Row::lppos, and SCIP_Col::rows.
Referenced by colSearchCoef().
searches coefficient in column, returns position in col vector or -1 if not found
col | column to be searched in |
row | coefficient to be searched for |
Definition at line 1094 of file lp.c.
References colSearchCoefPart(), colSortLP(), colSortNonLP(), SCIP_Col::len, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, and SCIP_Col::nunlinked.
Referenced by SCIPcolChgCoef(), SCIPcolDelCoef(), and SCIPcolIncCoef().
|
static |
searches coefficient in part of the row, returns position in col vector or -1 if not found
row | row to be searched in |
col | coefficient to be searched for |
minpos | first position of search range |
maxpos | last position of search range |
Definition at line 1133 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Col::index, SCIP_Row::linkpos, and SCIP_Col::lppos.
Referenced by rowSearchCoef().
searches coefficient in row, returns position in row vector or -1 if not found; if the sorting of the row is delayed, returns -1
row | row to be searched in |
col | coefficient to be searched for |
Definition at line 1172 of file lp.c.
References SCIP_Row::cols, SCIP_Row::delaysort, SCIP_Row::len, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, SCIP_Row::nunlinked, rowSearchCoefPart(), rowSortLP(), and rowSortNonLP().
Referenced by SCIProwChgCoef(), SCIProwDelCoef(), and SCIProwIncCoef().
|
static |
moves a coefficient in a column to a different place, and updates all corresponding data structures
col | LP column |
oldpos | old position of coefficient |
newpos | new position of coefficient |
Definition at line 1225 of file lp.c.
References SCIP_Row::cols, FALSE, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nonlprowssorted, SCIP_Col::rows, and SCIP_Col::vals.
Referenced by colAddCoef(), and colDelCoefPos().
|
static |
swaps two coefficients in a column, and updates all corresponding data structures
col | LP column |
pos1 | position of first coefficient |
pos2 | position of second coefficient |
Definition at line 1261 of file lp.c.
References SCIP_Row::cols, FALSE, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nonlprowssorted, SCIP_Col::rows, SCIP_Real, and SCIP_Col::vals.
Referenced by rowAddCoef(), rowUpdateAddLP(), and rowUpdateDelLP().
|
static |
moves a coefficient in a row to a different place, and updates all corresponding data structures
row | LP row |
oldpos | old position of coefficient |
newpos | new position of coefficient |
Definition at line 1321 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nonlpcolssorted, SCIP_Col::rows, and SCIP_Row::vals.
Referenced by rowAddCoef(), and rowDelCoefPos().
|
static |
swaps two coefficients in a row, and updates all corresponding data structures
row | LP row |
pos1 | position of first coefficient |
pos2 | position of second coefficient |
Definition at line 1358 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::index, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nonlpcolssorted, SCIP_Col::rows, SCIP_Real, and SCIP_Row::vals.
Referenced by colAddCoef(), colUpdateAddLP(), and colUpdateDelLP().
|
static |
issues a ROWCOEFCHANGED event on the given row
row | row which coefficient has changed |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
col | the column which coefficient has changed |
oldval | old value of the coefficient |
newval | new value of the coefficient |
Definition at line 1423 of file lp.c.
References SCIP_Row::eventfilter, SCIP_EventFilter::eventmask, SCIP_EventFilter::len, SCIP_CALL, SCIP_EVENTTYPE_ROWCOEFCHANGED, SCIP_OKAY, SCIPeventCreateRowCoefChanged(), and SCIPeventqueueAdd().
Referenced by rowAddCoef(), rowChgCoefPos(), and rowDelCoefPos().
|
static |
issues a ROWCONSTCHANGED event on the given row
row | row which coefficient has changed |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
oldval | old value of the constant |
newval | new value of the constant |
Definition at line 1453 of file lp.c.
References SCIP_Row::eventfilter, SCIP_EventFilter::eventmask, SCIP_EventFilter::len, SCIP_CALL, SCIP_EVENTTYPE_ROWCONSTCHANGED, SCIP_OKAY, SCIPeventCreateRowConstChanged(), and SCIPeventqueueAdd().
Referenced by SCIProwChgConstant().
|
static |
issues a ROWSIDECHANGED event on the given row
row | row which coefficient has changed |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
side | the side that has changed |
oldval | old value of side |
newval | new value of side |
Definition at line 1481 of file lp.c.
References checkLinks, SCIP_Row::cols, SCIP_Lp::cols, SCIP_Row::dualfarkas, SCIP_Row::dualsol, EPSEQ, SCIP_Row::eventfilter, SCIP_EventFilter::eventmask, FALSE, SCIP_Col::farkascoef, SCIP_Lp::flushed, SCIP_Col::len, SCIP_EventFilter::len, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Lp::lpifirstchgcol, SCIP_Lp::lpifirstchgrow, SCIP_Col::lppos, SCIP_Row::lppos, SCIP_Lp::ncols, SCIP_Row::nlpcols, SCIP_Col::nlprows, SCIP_Lp::nrows, SCIP_Col::nunlinked, SCIP_Row::nunlinked, SCIP_Col::primsol, SCIP_Col::rows, SCIP_Lp::rows, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_ROWSIDECHANGED, SCIP_OKAY, SCIPeventCreateRowSideChanged(), SCIPeventqueueAdd(), TRUE, SCIP_Col::vals, and SCIP_Row::vals.
Referenced by SCIProwChgLhs(), and SCIProwChgRhs().
announces, that the given coefficient in the constraint matrix changed
row | LP row |
col | LP col |
lp | current LP data |
Definition at line 1590 of file lp.c.
References SCIP_Col::coefchanged, SCIP_Row::coefchanged, FALSE, SCIP_Lp::flushed, SCIP_Lp::lpifirstchgcol, SCIP_Lp::lpifirstchgrow, SCIP_Col::lpipos, SCIP_Row::lpipos, SCIP_Row::maxactivity, SCIP_Row::minactivity, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Row::pseudoactivity, rowAddCoef(), SCIP_INVALID, SCIP_Real, TRUE, SCIP_Row::validactivitybdsdomchg, and SCIP_Row::validpsactivitydomchg.
Referenced by colAddCoef(), colChgCoefPos(), colDelCoefPos(), rowAddCoef(), rowChgCoefPos(), and rowDelCoefPos().
|
static |
adds a previously non existing coefficient to an LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
col | LP column |
val | value of coefficient |
linkpos | position of row in the column's row array, or -1 |
Definition at line 2000 of file lp.c.
References coefChanged(), colAddCoef(), SCIP_Row::cols, SCIP_Row::cols_index, colSwapCoefs(), FALSE, SCIP_Col::index, SCIP_Row::integral, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Row::name, SCIP_Row::nlocks, SCIP_Row::nlpcols, SCIP_Col::nlprows, SCIP_Row::nonlpcolssorted, SCIP_Col::nunlinked, SCIP_Row::nunlinked, rowAddNorms(), rowEventCoefChanged(), rowMoveCoef(), SCIP_Col::rows, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcolIsIntegral(), SCIPerrorMessage, SCIProwEnsureSize(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIPvarGetName(), SCIPvarGetProbindex(), TRUE, SCIP_Row::vals, SCIP_Col::var, and SCIP_Col::var_probindex.
Referenced by coefChanged(), colAddCoef(), colLink(), SCIProwAddCoef(), SCIProwChgCoef(), and SCIProwIncCoef().
|
static |
adds a previously non existing coefficient to an LP column
col | LP column |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
row | LP row |
val | value of coefficient |
linkpos | position of column in the row's col array, or -1 |
Definition at line 1655 of file lp.c.
References coefChanged(), colEnsureSize(), colMoveCoef(), SCIP_Row::cols, FALSE, SCIP_Row::index, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Row::name, SCIP_Row::nlpcols, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, SCIP_Col::nunlinked, SCIP_Row::nunlinked, rowAddCoef(), SCIP_Col::rows, rowSwapCoefs(), SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIPvarGetName(), SCIP_Col::vals, and SCIP_Col::var.
Referenced by rowAddCoef(), rowLink(), SCIPcolAddCoef(), SCIPcolChgCoef(), and SCIPcolIncCoef().
|
static |
deletes coefficient at given position from column
col | column to be changed |
set | global SCIP settings |
lp | current LP data |
pos | position in column vector to delete |
Definition at line 1776 of file lp.c.
References coefChanged(), colMoveCoef(), SCIP_Row::cols, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nunlinked, SCIP_Col::rows, SCIP_OKAY, and SCIP_Col::var.
Referenced by colChgCoefPos(), rowUnlink(), SCIPcolDelCoef(), and SCIProwDelCoef().
|
static |
changes a coefficient at given position of an LP column
col | LP column |
set | global SCIP settings |
lp | current LP data |
pos | position in column vector to change |
val | value of coefficient |
Definition at line 1821 of file lp.c.
References coefChanged(), colDelCoefPos(), SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIP_Col::vals, and SCIP_Col::var.
Referenced by rowScale(), SCIPcolChgCoef(), SCIPcolIncCoef(), SCIProwChgCoef(), and SCIProwIncCoef().
|
static |
update row norms after addition of coefficient
row | LP row |
set | global SCIP settings |
col | column of added coefficient |
val | value of added coefficient |
updateidxvals | update min/max idx and min/max val? |
Definition at line 1865 of file lp.c.
References SCIP_Col::index, SCIP_Col::lppos, MAX, SCIP_Row::maxidx, SCIP_Row::maxval, SCIP_Row::minidx, SCIP_Row::minval, SCIP_Row::nummaxval, SCIP_Row::numminval, SCIP_Row::objprod, REALABS, SCIP_Real, SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsetIsZero(), SCIP_Row::sqrnorm, SCIP_Row::sumnorm, and SCIP_Col::unchangedobj.
Referenced by colUpdateAddLP(), rowAddCoef(), rowCalcNorms(), and rowChgCoefPos().
|
static |
update row norms after deletion of coefficient
row | LP row |
set | global SCIP settings |
col | column of deleted coefficient |
val | value of deleted coefficient |
forcenormupdate | should the norms be updated even if lppos of column is -1? |
updateindex | should the minimal/maximal column index of row be updated? |
updateval | should the minimal/maximal value of row be updated? |
Definition at line 1942 of file lp.c.
References FALSE, SCIP_Col::index, SCIP_Col::lppos, MAX, SCIP_Row::maxidx, SCIP_Row::maxval, SCIP_Row::minidx, SCIP_Row::minval, SCIP_Row::nummaxval, SCIP_Row::numminval, SCIP_Row::objprod, REALABS, SCIP_Real, SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsZero(), SCIP_Row::sqrnorm, SCIP_Row::sumnorm, SCIP_Col::unchangedobj, and SCIP_Row::validminmaxidx.
Referenced by colUpdateDelLP(), rowChgCoefPos(), and rowDelCoefPos().
|
static |
deletes coefficient at given position from row
row | row to be changed |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
pos | position in row vector to delete |
Definition at line 2141 of file lp.c.
References coefChanged(), SCIP_Row::cols, FALSE, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::name, SCIP_Row::nlocks, SCIP_Row::nlpcols, SCIP_Row::nunlinked, rowDelNorms(), rowEventCoefChanged(), rowMoveCoef(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, TRUE, and SCIP_Row::vals.
Referenced by colUnlink(), rowChgCoefPos(), SCIPcolDelCoef(), and SCIProwDelCoef().
|
static |
changes a coefficient at given position of an LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
pos | position in row vector to change |
val | value of coefficient |
Definition at line 2201 of file lp.c.
References coefChanged(), SCIP_Row::cols, FALSE, SCIP_Row::integral, SCIP_Row::name, SCIP_Row::nlocks, rowAddNorms(), rowDelCoefPos(), rowDelNorms(), rowEventCoefChanged(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPcolIsIntegral(), SCIPerrorMessage, SCIPsetIsEQ(), SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), TRUE, and SCIP_Row::vals.
Referenced by rowScale(), SCIPcolChgCoef(), SCIPcolIncCoef(), SCIProwChgCoef(), and SCIProwIncCoef().
|
static |
notifies LP row, that its sides were changed
row | LP row |
set | global SCIP settings |
lp | current LP data |
sidetype | type of side: left or right hand side |
Definition at line 2257 of file lp.c.
References SCIP_Lp::chgrows, ensureChgrowsSize(), FALSE, SCIP_Lp::flushed, SCIP_Row::lhschanged, SCIP_Row::lpipos, SCIP_Lp::nchgrows, SCIP_Row::rhschanged, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPABORT, SCIPerrorMessage, and TRUE.
Referenced by SCIProwChgConstant(), SCIProwChgLhs(), and SCIProwChgRhs().
|
static |
insert column coefficients in corresponding rows
col | column data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
Definition at line 2310 of file lp.c.
References checkLinks, SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::nlprows, SCIP_Col::nunlinked, rowAddCoef(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsZero(), SCIPvarGetName(), SCIP_Col::vals, and SCIP_Col::var.
Referenced by lpFlushAddCols().
|
static |
removes column coefficients from corresponding rows
col | column data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
Definition at line 2354 of file lp.c.
References checkLinks, SCIP_Row::cols, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Col::nunlinked, rowDelCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPvarGetName(), and SCIP_Col::var.
Referenced by SCIPcolFree().
|
static |
insert row coefficients in corresponding columns
row | row data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
Definition at line 2393 of file lp.c.
References checkLinks, colAddCoef(), SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::name, SCIP_Row::nlpcols, SCIP_Row::nunlinked, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsZero(), and SCIP_Row::vals.
Referenced by lpFlushAddRows().
|
static |
removes row coefficients from corresponding columns
row | row data |
set | global SCIP settings |
lp | current LP data |
Definition at line 2436 of file lp.c.
References colDelCoefPos(), SCIP_Row::cols, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::name, SCIP_Row::nunlinked, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.
Referenced by SCIProwFree().
|
static |
sets parameter of type int in LP solver, ignoring unknown parameters
lp | current LP data |
lpparam | LP parameter |
value | value to set parameter to |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2475 of file lp.c.
References FALSE, SCIP_Lp::lpi, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiSetIntpar(), and TRUE.
Referenced by lpSetBoolpar(), lpSetFastmip(), lpSetIterationLimit(), lpSetPricing(), lpSetRandomseed(), lpSetRefactorInterval(), lpSetScaling(), lpSetSolutionPolishing(), lpSetThreads(), lpSetTiming(), and SCIPlpCreate().
|
static |
sets parameter of type SCIP_Bool in LP solver, ignoring unknown parameters
lp | current LP data |
lpparam | LP parameter |
value | value to set parameter to |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2502 of file lp.c.
References lpSetIntpar().
Referenced by lpSetFromscratch(), lpSetLPInfo(), lpSetPresolving(), and SCIPlpCreate().
|
static |
sets parameter of type SCIP_Real in LP solver, ignoring unknown parameters
lp | current LP data |
lpparam | LP parameter |
value | value to set parameter to |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2514 of file lp.c.
References FALSE, SCIP_Lp::lpi, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiSetRealpar(), and TRUE.
Referenced by lpAlgorithm(), lpSetBarrierconvtol(), lpSetConditionLimit(), lpSetDualfeastol(), lpSetFeastol(), lpSetObjlim(), lpSetRowrepswitch(), and SCIPlpCreate().
|
static |
checks, that parameter of type int in LP solver has the given value, ignoring unknown parameters
lp | current LP data |
lpparam | LP parameter |
value | value parameter should have |
Definition at line 2542 of file lp.c.
References SCIP_Lp::lpi, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, and SCIPlpiGetIntpar().
Referenced by lpCheckBoolpar(), lpSetFastmip(), lpSetIterationLimit(), lpSetPricing(), lpSetScaling(), lpSetThreads(), and lpSetTiming().
|
static |
checks, that parameter of type SCIP_Bool in LP solver has the given value, ignoring unknown parameters
lp | current LP data |
lpparam | LP parameter |
value | value parameter should have |
Definition at line 2567 of file lp.c.
References lpCheckIntpar().
Referenced by lpSetFromscratch(), lpSetLPInfo(), and lpSetPresolving().
|
static |
checks, that parameter of type SCIP_Real in LP solver has the given value, ignoring unknown parameters
lp | current LP data |
lpparam | LP parameter |
value | value parameter should have |
Definition at line 2578 of file lp.c.
References SCIP_Lp::lpi, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIP_Real, and SCIPlpiGetRealpar().
Referenced by lpSetBarrierconvtol(), lpSetConditionLimit(), lpSetDualfeastol(), lpSetFeastol(), lpSetObjlim(), and lpSetRowrepswitch().
|
static |
sets the objective limit of the LP solver
Note that we are always minimizing.
lp | current LP data |
set | global SCIP settings |
objlim | new objective limit |
Definition at line 2614 of file lp.c.
References FALSE, lpCheckRealpar(), lpCutoffDisabled, SCIP_Lp::lpi, SCIP_Lp::lpiobjlim, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiInfinity(), SCIPsetIsInfinity(), and SCIP_Lp::solved.
Referenced by lpSolveStable().
|
static |
sets the feasibility tolerance of the LP solver
lp | current LP data |
feastol | new feasibility tolerance |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2656 of file lp.c.
References FALSE, lpCheckRealpar(), SCIP_Lp::lpifeastol, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::nrows, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_FEASTOL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, and SCIP_Lp::solved.
Referenced by lpSolveStable().
|
static |
sets the reduced costs feasibility tolerance of the LP solver
lp | current LP data |
dualfeastol | new reduced costs feasibility tolerance |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2693 of file lp.c.
References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, lpCheckRealpar(), SCIP_Lp::lpidualfeastol, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::nrows, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_DUALFEASTOL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, and SCIP_Lp::solved.
Referenced by lpSolveStable().
|
static |
sets the convergence tolerance used in barrier algorithm of the LP solver
lp | current LP data |
barrierconvtol | new convergence tolerance used in barrier algorithm |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2730 of file lp.c.
References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::lastlpalgo, lpCheckRealpar(), SCIP_Lp::lpibarrierconvtol, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::nrows, SCIP_CALL, SCIP_INVALID, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPPAR_BARRIERCONVTOL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, and SCIP_Lp::solved.
Referenced by lpSolveStable().
|
static |
sets the FROMSCRATCH setting of the LP solver
lp | current LP data |
fromscratch | new FROMSCRATCH setting |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2768 of file lp.c.
References FALSE, lpCheckBoolpar(), SCIP_Lp::lpifromscratch, lpSetBoolpar(), SCIP_CALL, SCIP_LPPAR_FROMSCRATCH, and SCIP_OKAY.
Referenced by lpSolveStable(), and SCIPlpSolveAndEval().
|
static |
sets the FASTMIP setting of the LP solver
lp | current LP data |
fastmip | new FASTMIP setting |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2793 of file lp.c.
References FALSE, lpCheckIntpar(), SCIP_Lp::lpifastmip, lpSetIntpar(), SCIP_CALL, SCIP_LPPAR_FASTMIP, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the SCALING setting of the LP solver
lp | current LP data |
scaling | new SCALING setting |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2819 of file lp.c.
References FALSE, lpCheckIntpar(), SCIP_Lp::lpiscaling, lpSetIntpar(), SCIP_CALL, SCIP_LPPAR_SCALING, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the number of THREADS of the LP solver
lp | current LP data |
threads | new number of threads used to solve the LP |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2844 of file lp.c.
References FALSE, lpCheckIntpar(), SCIP_Lp::lpithreads, lpSetIntpar(), SCIP_CALL, SCIP_LPPAR_THREADS, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the PRESOLVING setting of the LP solver
lp | current LP data |
presolving | new PRESOLVING setting |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2869 of file lp.c.
References FALSE, lpCheckBoolpar(), SCIP_Lp::lpipresolving, lpSetBoolpar(), SCIP_CALL, SCIP_LPPAR_PRESOLVING, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the ROWREPSWITCH setting of the LP solver
lp | current LP data |
rowrepswitch | new ROWREPSWITCH value |
success | pointer to store whether the parameter was successfully changed |
Definition at line 2894 of file lp.c.
References FALSE, lpCheckRealpar(), SCIP_Lp::lpirowrepswitch, lpSetRealpar(), SCIP_CALL, SCIP_LPPAR_ROWREPSWITCH, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the iteration limit of the LP solver
lp | current LP data |
itlim | maximal number of LP iterations to perform, or -1 for no limit |
Definition at line 2919 of file lp.c.
References FALSE, lpCheckIntpar(), SCIP_Lp::lpiitlim, SCIP_Lp::lpobjval, lpSetIntpar(), SCIP_Lp::lpsolstat, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_LPITLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, and SCIP_Lp::solved.
Referenced by lpSolveStable(), and SCIPlpEndDive().
|
static |
sets the pricing strategy of the LP solver
lp | current LP data |
pricing | pricing strategy |
Definition at line 2955 of file lp.c.
References lpCheckIntpar(), SCIP_Lp::lpipricing, lpSetIntpar(), SCIP_Bool, SCIP_CALL, SCIP_LPPAR_PRICING, and SCIP_OKAY.
Referenced by lpSetPricingChar().
|
static |
sets the pricing strategy of the LP solver (given the character representation of the strategy)
lp | current LP data |
pricingchar | character representing the pricing strategy |
Definition at line 2978 of file lp.c.
References lpSetPricing(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_PRICING_AUTO, SCIP_PRICING_DEVEX, SCIP_PRICING_FULL, SCIP_PRICING_LPIDEFAULT, SCIP_PRICING_PARTIAL, SCIP_PRICING_STEEP, SCIP_PRICING_STEEPQSTART, and SCIPerrorMessage.
Referenced by lpSolveStable().
|
static |
sets the verbosity of the LP solver
lp | current LP data |
lpinfo | should the LP solver display status messages? |
Definition at line 3020 of file lp.c.
References lpCheckBoolpar(), SCIP_Lp::lpilpinfo, lpSetBoolpar(), SCIP_Bool, SCIP_CALL, SCIP_LPPAR_LPINFO, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the CONDITIONLIMIT setting of the LP solver
lp | current LP data |
condlimit | new CONDITIONLIMIT value |
success | pointer to store whether the parameter was successfully changed |
Definition at line 3043 of file lp.c.
References FALSE, lpCheckRealpar(), SCIP_Lp::lpiconditionlimit, lpSetRealpar(), SCIP_CALL, SCIP_LPPAR_CONDITIONLIMIT, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the type of timer of the LP solver
lp | current LP data |
timing | new timing value |
enabled | is timing enabled? |
success | pointer to store whether the parameter was successfully changed |
Definition at line 3068 of file lp.c.
References FALSE, lpCheckIntpar(), SCIP_Lp::lpitiming, lpSetIntpar(), SCIP_CALL, SCIP_CLOCKTYPE_CPU, SCIP_CLOCKTYPE_WALL, SCIP_LPPAR_TIMING, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the initial random seed of the LP solver
lp | current LP data |
randomseed | new initial random seed |
success | pointer to store whether the parameter was successfully changed |
Definition at line 3102 of file lp.c.
References FALSE, SCIP_Lp::lpirandomseed, lpSetIntpar(), SCIP_CALL, SCIP_LPPAR_RANDOMSEED, SCIP_OKAY, and TRUE.
Referenced by lpSolveStable().
|
static |
sets the LP solution polishing method
lp | current LP data |
polishing | LP solution polishing activated (0: disabled, 1: enabled) |
success | pointer to store whether the parameter was successfully changed |
Definition at line 3132 of file lp.c.
References FALSE, SCIP_Lp::lpisolutionpolishing, lpSetIntpar(), SCIP_CALL, SCIP_LPPAR_POLISHING, and SCIP_OKAY.
Referenced by lpSolveStable().
|
static |
sets the LP refactorization interval
lp | current LP data |
refactor | LP refactorization interval (0: automatic) |
success | pointer to store whether the parameter was successfully changed |
Definition at line 3155 of file lp.c.
References FALSE, SCIP_Lp::lpirefactorinterval, lpSetIntpar(), SCIP_CALL, SCIP_LPPAR_REFACTOR, and SCIP_OKAY.
Referenced by lpSolveStable().
SCIP_RETCODE SCIPcolCreate | ( | SCIP_COL ** | col, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_VAR * | var, | ||
int | len, | ||
SCIP_ROW ** | rows, | ||
SCIP_Real * | vals, | ||
SCIP_Bool | removable | ||
) |
creates an LP column
col | pointer to column data |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
var | variable, this column represents |
len | number of nonzeros in the column |
rows | array with rows of column entries |
vals | array with coefficients of column entries |
removable | should the column be removed from the LP due to aging or cleanup? |
Definition at line 3182 of file lp.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, FALSE, SCIP_Stat::ncolidx, SCIP_Var::obj, SCIP_ALLOC, SCIP_BASESTAT_ZERO, SCIP_INVALID, SCIP_OKAY, SCIPsetIsZero(), SCIPstatIncrement, SCIPvarGetLbLazy(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetUbLazy(), SCIPvarGetUbLocal(), SCIPvarGetUnchangedObj(), SCIPvarIsIntegral(), and TRUE.
Referenced by SCIPvarColumn().
SCIP_RETCODE SCIPcolFree | ( | SCIP_COL ** | col, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp | ||
) |
frees an LP column
col | pointer to LP column |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
Definition at line 3280 of file lp.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, colUnlink(), SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, and SCIPvarGetStatus().
Referenced by SCIPvarLoose(), and varFree().
void SCIPcolPrint | ( | SCIP_COL * | col, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file | ||
) |
output column to file stream
col | LP column |
messagehdlr | message handler |
file | output file (or NULL for standard output) |
Definition at line 3310 of file lp.c.
References SCIP_Col::lb, SCIP_Col::len, SCIP_Row::name, SCIP_Col::obj, SCIP_Col::rows, SCIPmessageFPrintInfo(), SCIP_Col::ub, SCIP_Col::vals, and SCIP_Col::var.
SCIP_RETCODE SCIPcolAddCoef | ( | SCIP_COL * | col, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row, | ||
SCIP_Real | val | ||
) |
adds a previously non existing coefficient to an LP column
col | LP column |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
row | LP row |
val | value of coefficient |
Definition at line 3350 of file lp.c.
References checkLinks, colAddCoef(), SCIP_Lp::diving, SCIP_CALL, and SCIP_OKAY.
SCIP_RETCODE SCIPcolDelCoef | ( | SCIP_COL * | col, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row | ||
) |
deletes existing coefficient from column
col | column to be changed |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
row | coefficient to be deleted |
Definition at line 3371 of file lp.c.
References checkLinks, colDelCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, colSearchCoef(), SCIP_Lp::diving, SCIP_Col::index, SCIP_Col::linkpos, SCIP_Row::name, rowDelCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPsetIsEQ(), SCIPvarGetName(), SCIP_Col::vals, SCIP_Row::vals, and SCIP_Col::var.
SCIP_RETCODE SCIPcolChgCoef | ( | SCIP_COL * | col, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row, | ||
SCIP_Real | val | ||
) |
changes or adds a coefficient to an LP column
col | LP column |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
row | LP row |
val | value of coefficient |
Definition at line 3416 of file lp.c.
References checkLinks, colAddCoef(), colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, colSearchCoef(), SCIP_Lp::diving, SCIP_Col::index, SCIP_Col::linkpos, rowChgCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIP_Col::vals, and SCIP_Row::vals.
SCIP_RETCODE SCIPcolIncCoef | ( | SCIP_COL * | col, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row, | ||
SCIP_Real | incval | ||
) |
increases value of an existing or non-existing coefficient in an LP column
col | LP column |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
row | LP row |
incval | value to add to the coefficient |
Definition at line 3467 of file lp.c.
References checkLinks, colAddCoef(), colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, colSearchCoef(), SCIP_Lp::diving, SCIP_Col::index, SCIP_Col::linkpos, rowChgCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIPsetIsZero(), SCIP_Col::vals, and SCIP_Row::vals.
|
static |
insert column in the chgcols list (if not already there)
col | LP column to change |
set | global SCIP settings |
lp | current LP data |
Definition at line 3522 of file lp.c.
References SCIP_Lp::chgcols, ensureChgcolsSize(), FALSE, SCIP_Lp::flushed, SCIP_Col::lbchanged, SCIP_Lp::nchgcols, SCIP_Col::objchanged, SCIP_CALL, SCIP_OKAY, and SCIP_Col::ubchanged.
Referenced by SCIPcolChgLb(), SCIPcolChgObj(), SCIPcolChgUb(), and updateLazyBounds().
|
static |
Is the new value reliable or may we have cancellation?
set | global SCIP settings |
newvalue | new value |
oldvalue | old reliable value |
Definition at line 3547 of file lp.c.
References REALABS, SCIP_INVALID, SCIP_Real, and SCIPsetIsZero().
Referenced by lpUpdateObjNorms().
|
static |
update norms of objective function vector
lp | current LP data |
set | global SCIP settings |
oldobj | old objective value of variable |
newobj | new objective value of variable |
Definition at line 3565 of file lp.c.
References isNewValueUnreliable(), MAX, SCIP_Lp::objsqrnorm, SCIP_Lp::objsqrnormunreliable, SCIP_Lp::objsumnorm, REALABS, SCIP_Real, SCIPsetIsGE(), SCIPsetIsLT(), and TRUE.
Referenced by lpDelColset(), SCIPcolChgObj(), SCIPlpAddCol(), and SCIPlpShrinkCols().
SCIP_RETCODE SCIPcolChgObj | ( | SCIP_COL * | col, |
SCIP_SET * | set, | ||
SCIP_LP * | lp, | ||
SCIP_Real | newobj | ||
) |
changes objective value of column
col | LP column to change |
set | global SCIP settings |
lp | current LP data |
newobj | new objective value |
Definition at line 3601 of file lp.c.
References SCIP_Lp::divingobjchg, FALSE, SCIP_Lp::flushed, insertColChgcols(), SCIP_Col::lb, SCIP_Col::lpipos, lpUpdateObjNorms(), SCIP_Lp::nchgcols, SCIP_Col::obj, SCIP_Col::objchanged, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUnchangedObj(), TRUE, SCIP_Col::ub, SCIP_Col::unchangedobj, and SCIP_Col::var.
Referenced by SCIPeventProcess(), SCIPlpEndDive(), and SCIPvarChgObjDive().
SCIP_RETCODE SCIPcolChgLb | ( | SCIP_COL * | col, |
SCIP_SET * | set, | ||
SCIP_LP * | lp, | ||
SCIP_Real | newlb | ||
) |
changes lower bound of column
col | LP column to change |
set | global SCIP settings |
lp | current LP data |
newlb | new lower bound value |
Definition at line 3660 of file lp.c.
References FALSE, SCIP_Lp::flushed, insertColChgcols(), SCIP_Col::lb, SCIP_Col::lbchanged, SCIP_Col::lpipos, SCIP_Lp::nchgcols, SCIP_Col::obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), TRUE, and SCIP_Col::var.
Referenced by SCIPeventProcess(), SCIPlpEndDive(), and SCIPvarChgLbDive().
SCIP_RETCODE SCIPcolChgUb | ( | SCIP_COL * | col, |
SCIP_SET * | set, | ||
SCIP_LP * | lp, | ||
SCIP_Real | newub | ||
) |
changes upper bound of column
col | LP column to change |
set | global SCIP settings |
lp | current LP data |
newub | new upper bound value |
Definition at line 3705 of file lp.c.
References FALSE, SCIP_Lp::flushed, insertColChgcols(), SCIP_Col::lpipos, SCIP_Lp::nchgcols, SCIP_Col::obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), TRUE, SCIP_Col::ub, SCIP_Col::ubchanged, and SCIP_Col::var.
Referenced by SCIPeventProcess(), SCIPlpEndDive(), and SCIPvarChgUbDive().
calculates the reduced costs of a column using the given dual solution vector
col | LP column |
dualsol | dual solution vector for current LP rows |
Definition at line 3750 of file lp.c.
References SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nunlinked, SCIP_Col::obj, SCIP_Col::rows, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.
calculates the reduced costs of a column using the dual solution stored in the rows
col | LP column |
Definition at line 3802 of file lp.c.
References SCIP_Row::dualsol, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nunlinked, SCIP_Col::obj, SCIP_Col::rows, SCIP_INVALID, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.
Referenced by SCIPcolGetRedcost().
gets the reduced costs of a column in last LP or after recalculation
col | LP column |
stat | problem statistics |
lp | current LP data |
Definition at line 3855 of file lp.c.
References colCalcInternalRedcost(), SCIP_Stat::lpcount, SCIP_Col::redcost, SCIP_INVALID, SCIP_Col::validredcostlp, and SCIP_Lp::validsollp.
Referenced by getImplVarRedcost(), SCIPcolGetFeasibility(), SCIPgetColRedcost(), SCIPprobUpdateBestRootSol(), and SCIPvarGetImplRedcost().
gets the feasibility of (the dual row of) a column in last LP or after recalculation
col | LP column |
set | global SCIP settings |
stat | problem statistics |
lp | current LP data |
Definition at line 3879 of file lp.c.
References SCIP_Col::lb, SCIP_Stat::lpcount, REALABS, SCIP_Real, SCIPcolGetRedcost(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIP_Col::ub, and SCIP_Lp::validsollp.
Referenced by SCIPpricestoreAddProbVars().
calculates the Farkas coefficient y^T A_i of a column i using the given dual Farkas vector y
col | LP column |
dualfarkas | dense dual Farkas vector for current LP rows |
Definition at line 3933 of file lp.c.
References SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nunlinked, SCIP_Col::rows, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.
gets the Farkas coefficient y^T A_i of a column i in last LP (which must be infeasible)
col | LP column |
Definition at line 3985 of file lp.c.
References SCIP_Row::dualfarkas, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nunlinked, SCIP_Col::rows, SCIP_INVALID, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.
Referenced by SCIPcolGetFarkasCoef().
gets the Farkas coefficient of a column in last LP (which must be infeasible)
col | LP column |
stat | problem statistics |
lp | current LP data |
Definition at line 4038 of file lp.c.
References colCalcInternalFarkasCoef(), SCIP_Col::farkascoef, SCIP_Stat::lpcount, SCIP_INVALID, SCIP_Col::validfarkaslp, and SCIP_Lp::validfarkaslp.
Referenced by SCIPcolGetFarkasValue(), and SCIPgetColFarkasCoef().
gets the Farkas value of a column in last LP (which must be infeasible), i.e. the Farkas coefficient y^T A_i times the best bound for this coefficient, i.e. max{y^T A_i x_i | lb <= x_i <= ub}
col | LP column |
stat | problem statistics |
lp | current LP data |
Definition at line 4064 of file lp.c.
References SCIP_Col::lb, SCIP_Real, SCIPcolGetFarkasCoef(), and SCIP_Col::ub.
Referenced by SCIPpricestoreAddProbVars().
SCIP_RETCODE SCIPlpStartStrongbranch | ( | SCIP_LP * | lp | ) |
start strong branching - call before any strong branching
lp | LP data |
Definition at line 4083 of file lp.c.
References SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpiStartStrongbranch(), SCIP_Lp::strongbranching, and TRUE.
Referenced by SCIPstartStrongbranch().
SCIP_RETCODE SCIPlpEndStrongbranch | ( | SCIP_LP * | lp | ) |
end strong branching - call after any strong branching
lp | LP data |
Definition at line 4098 of file lp.c.
References FALSE, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpiEndStrongbranch(), and SCIP_Lp::strongbranching.
Referenced by SCIPendStrongbranch().
void SCIPcolSetStrongbranchData | ( | SCIP_COL * | col, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
SCIP_Real | lpobjval, | ||
SCIP_Real | primsol, | ||
SCIP_Real | sbdown, | ||
SCIP_Real | sbup, | ||
SCIP_Bool | sbdownvalid, | ||
SCIP_Bool | sbupvalid, | ||
SCIP_Longint | iter, | ||
int | itlim | ||
) |
sets strong branching information for a column variable
col | LP column |
set | global SCIP settings |
stat | dynamic problem statistics |
lp | LP data |
lpobjval | objective value of the current LP |
primsol | primal solution value of the column in the current LP |
sbdown | dual bound after branching column down |
sbup | dual bound after branching column up |
sbdownvalid | is the returned down value a valid dual bound? |
sbupvalid | is the returned up value a valid dual bound? |
iter | total number of strong branching iterations |
itlim | iteration limit applied to the strong branching call |
Definition at line 4113 of file lp.c.
References SCIP_Lp::cols, SCIP_Lp::cutoffbound, SCIP_Stat::lpcount, SCIP_Col::lpipos, SCIP_Col::lppos, SCIP_Lp::ncols, SCIP_Stat::nnodes, SCIP_Col::nsbcalls, SCIP_Stat::nsbdivinglps, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_VARSTATUS_COLUMN, SCIPcolIsIntegral(), SCIPstatAdd, SCIPstatIncrement, SCIPvarGetCol(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::strongbranchprobing, SCIP_Col::validsblp, and SCIP_Col::var.
Referenced by SCIPgetVarStrongbranchWithPropagation().
void SCIPcolInvalidateStrongbranchData | ( | SCIP_COL * | col, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp | ||
) |
invalidates strong branching information for a column variable
col | LP column |
set | global SCIP settings |
stat | dynamic problem statistics |
lp | LP data |
Definition at line 4167 of file lp.c.
References SCIP_Lp::cols, FALSE, SCIP_Col::lpipos, SCIP_Col::lppos, SCIP_Lp::ncols, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_INVALID, SCIP_VARSTATUS_COLUMN, SCIPcolIsIntegral(), SCIPvarGetCol(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::strongbranchprobing, SCIP_Col::validsblp, and SCIP_Col::var.
Referenced by SCIPgetVarStrongbranchWithPropagation().
SCIP_RETCODE SCIPcolGetStrongbranch | ( | SCIP_COL * | col, |
SCIP_Bool | integral, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | prob, | ||
SCIP_LP * | lp, | ||
int | itlim, | ||
SCIP_Real * | down, | ||
SCIP_Real * | up, | ||
SCIP_Bool * | downvalid, | ||
SCIP_Bool * | upvalid, | ||
SCIP_Bool * | lperror | ||
) |
gets strong branching information on a column variable
col | LP column |
integral | should integral strong branching be performed? |
set | global SCIP settings |
stat | dynamic problem statistics |
prob | problem data |
lp | LP data |
itlim | iteration limit for strong branchings |
down | stores dual bound after branching column down |
up | stores dual bound after branching column up |
downvalid | stores whether the returned down value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value |
upvalid | stores whether the returned up value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 4202 of file lp.c.
References SCIP_Lp::cols, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjvalinf, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Col::lpipos, SCIP_Lp::lpobjval, SCIP_Col::lppos, SCIP_Lp::lpsolstat, SCIP_Lp::ncols, SCIP_Stat::nduallpiterations, SCIP_Stat::nduallps, SCIP_Stat::ndualresolvelpiterations, SCIP_Stat::ndualresolvelps, SCIP_Stat::nnodes, SCIP_Stat::nprimallpiterations, SCIP_Stat::nprimallps, SCIP_Stat::nprimalresolvelpiterations, SCIP_Stat::nprimalresolvelps, SCIP_Col::nsbcalls, SCIP_Stat::nsbdivinglps, SCIP_Col::primsol, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPERROR, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPclockStart(), SCIPclockStop(), SCIPcolIsIntegral(), SCIPlpGetObjval(), SCIPlpiStrongbranchFrac(), SCIPlpiStrongbranchInt(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsFeasIntegral(), SCIPsetIsIntegral(), SCIPstatAdd, SCIPstatIncrement, SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::solved, SCIP_Lp::strongbranching, SCIP_Stat::strongbranchtime, TRUE, SCIP_Col::validsblp, SCIP_Lp::validsollp, and SCIP_Col::var.
Referenced by SCIPgetVarStrongbranchFrac(), and SCIPgetVarStrongbranchInt().
SCIP_RETCODE SCIPcolGetStrongbranches | ( | SCIP_COL ** | cols, |
int | ncols, | ||
SCIP_Bool | integral, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_PROB * | prob, | ||
SCIP_LP * | lp, | ||
int | itlim, | ||
SCIP_Real * | down, | ||
SCIP_Real * | up, | ||
SCIP_Bool * | downvalid, | ||
SCIP_Bool * | upvalid, | ||
SCIP_Bool * | lperror | ||
) |
gets strong branching information on column variables
cols | LP columns |
ncols | number of columns |
integral | should integral strong branching be performed? |
set | global SCIP settings |
stat | dynamic problem statistics |
prob | problem data |
lp | LP data |
itlim | iteration limit for strong branchings |
down | stores dual bounds after branching columns down |
up | stores dual bounds after branching columns up |
downvalid | stores whether the returned down values are valid dual bounds, or NULL; otherwise, they can only be used as an estimate value |
upvalid | stores whether the returned up values are valid dual bounds, or NULL; otherwise, they can only be used as an estimate value |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 4361 of file lp.c.
References SCIP_Lp::cols, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjvalinf, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Col::lpipos, SCIP_Col::lppos, SCIP_Lp::lpsolstat, SCIP_Lp::ncols, SCIP_Stat::nduallpiterations, SCIP_Stat::nduallps, SCIP_Stat::ndualresolvelpiterations, SCIP_Stat::ndualresolvelps, SCIP_Stat::nnodes, SCIP_Stat::nprimallpiterations, SCIP_Stat::nprimallps, SCIP_Stat::nprimalresolvelpiterations, SCIP_Stat::nprimalresolvelps, SCIP_Col::nsbcalls, SCIP_Stat::nsbdivinglps, SCIP_Col::primsol, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPERROR, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPclockStart(), SCIPclockStop(), SCIPcolIsIntegral(), SCIPlpGetObjval(), SCIPlpiStrongbranchesFrac(), SCIPlpiStrongbranchesInt(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasIntegral(), SCIPstatAdd, SCIPvarGetCol(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::solved, SCIP_Stat::strongbranchtime, TRUE, SCIP_Col::validsblp, SCIP_Lp::validsollp, and SCIP_Col::var.
Referenced by SCIPgetVarsStrongbranchesFrac(), and SCIPgetVarsStrongbranchesInt().
void SCIPcolGetStrongbranchLast | ( | SCIP_COL * | col, |
SCIP_Real * | down, | ||
SCIP_Real * | up, | ||
SCIP_Bool * | downvalid, | ||
SCIP_Bool * | upvalid, | ||
SCIP_Real * | solval, | ||
SCIP_Real * | lpobjval | ||
) |
gets last strong branching information available for a column variable; returns values of SCIP_INVALID, if strong branching was not yet called on the given column; keep in mind, that the returned old values may have nothing to do with the current LP solution
col | LP column |
down | stores dual bound after branching column down, or NULL |
up | stores dual bound after branching column up, or NULL |
downvalid | stores whether the returned down value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value |
upvalid | stores whether the returned up value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value |
solval | stores LP solution value of column at last strong branching call, or NULL |
lpobjval | stores LP objective value at last strong branching call, or NULL |
Definition at line 4597 of file lp.c.
References SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sblpobjval, SCIP_Col::sbsolval, SCIP_Col::sbup, and SCIP_Col::sbupvalid.
Referenced by SCIPgetVarStrongbranchLast().
SCIP_Longint SCIPcolGetStrongbranchLPAge | ( | SCIP_COL * | col, |
SCIP_STAT * | stat | ||
) |
if strong branching was already applied on the column at the current node, returns the number of LPs solved after the LP where the strong branching on this column was applied; if strong branching was not yet applied on the column at the current node, returns INT_MAX
col | LP column |
stat | dynamic problem statistics |
Definition at line 4629 of file lp.c.
References SCIP_Stat::lpcount, SCIP_Stat::nnodes, SCIP_Stat::nsbdivinglps, SCIP_Col::sbnode, SCIP_LONGINT_MAX, and SCIP_Col::validsblp.
Referenced by SCIPgetVarStrongbranchLPAge().
marks a column to be not removable from the LP in the current node because it became obsolete
col | LP column |
stat | problem statistics |
Definition at line 4641 of file lp.c.
References SCIP_Stat::nnodes, and SCIP_Col::obsoletenode.
Referenced by SCIPmarkColNotRemovableLocal().
calculates row norms and min/maxidx from scratch, and checks for sorting
row | LP row |
set | global SCIP settings |
Definition at line 4661 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::maxidx, SCIP_Row::maxval, SCIP_Row::minidx, SCIP_Row::minval, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, SCIP_Row::nummaxval, SCIP_Row::numminval, SCIP_Row::objprod, rowAddNorms(), SCIPsetInfinity(), SCIPsetIsZero(), SCIP_Row::sqrnorm, SCIP_Row::sumnorm, TRUE, SCIP_Row::validminmaxidx, and SCIP_Row::vals.
Referenced by rowMerge(), SCIPlpAddRow(), and SCIProwCreate().
calculates min/maxval and min/maxidx from scratch
row | LP row |
set | global SCIP settings |
Definition at line 4720 of file lp.c.
References SCIP_Row::cols, SCIP_Col::index, SCIP_Row::len, MAX, SCIP_Row::maxidx, SCIP_Row::maxval, SCIP_Row::minidx, SCIP_Row::minval, SCIP_Row::numintcols, SCIP_Row::nummaxval, SCIP_Row::numminval, REALABS, SCIP_Real, SCIPcolIsIntegral(), SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsetIsZero(), TRUE, SCIP_Row::validminmaxidx, and SCIP_Row::vals.
Referenced by SCIProwGetMaxidx(), SCIProwGetMaxval(), SCIProwGetMinidx(), SCIProwGetMinval(), and SCIProwGetNumIntCols().
|
static |
checks, whether the given scalar scales the given value to an integral number with error in the given bounds
val | value that should be scaled to an integral value |
scalar | scalar that should be tried |
mindelta | minimal relative allowed difference of scaled coefficient s*c and integral i |
maxdelta | maximal relative allowed difference of scaled coefficient s*c and integral i |
intval | pointer to store the scaled integral value, or NULL |
Definition at line 4790 of file lp.c.
References FALSE, SCIP_Real, SCIPrelDiff(), and TRUE.
Referenced by buildFlowCover(), rowScale(), and SCIProwCalcIntegralScalar().
|
static |
scales row with given factor, and rounds coefficients to integers if close enough; the constant is automatically moved to the sides; if the row's activity is proven to be integral, the sides are automatically rounded to the next integer
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
stat | problem statistics |
lp | current LP data |
scaleval | value to scale row with |
integralcontvars | should the coefficients of the continuous variables also be made integral, if they are close to integral values? |
minrounddelta | minimal relative difference of scaled coefficient s*c and integral i, upto which the integral is used instead of the scaled real coefficient |
maxrounddelta | maximal relative difference of scaled coefficient s*c and integral i upto which the integral is used instead of the scaled real coefficient |
Definition at line 4830 of file lp.c.
References colChgCoefPos(), SCIP_Row::cols, SCIP_Row::constant, debugRowPrint, FALSE, SCIP_Row::integral, isIntegralScalar(), SCIP_Col::lb, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Row::local, SCIP_Row::modifiable, SCIP_Row::name, SCIP_Row::rhs, rowChgCoefPos(), SCIP_Col::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcolIsIntegral(), SCIProwChgConstant(), SCIProwChgLhs(), SCIProwChgRhs(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsIntegral(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPsetSumCeil(), SCIPsetSumFloor(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), TRUE, SCIP_Col::ub, SCIP_Row::validactivitylp, SCIP_Col::vals, SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIProwMakeIntegral().
SCIP_RETCODE SCIProwCreate | ( | SCIP_ROW ** | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
const char * | name, | ||
int | len, | ||
SCIP_COL ** | cols, | ||
SCIP_Real * | vals, | ||
SCIP_Real | lhs, | ||
SCIP_Real | rhs, | ||
SCIP_ROWORIGINTYPE | origintype, | ||
void * | origin, | ||
SCIP_Bool | local, | ||
SCIP_Bool | modifiable, | ||
SCIP_Bool | removable | ||
) |
creates and captures an LP row
row | pointer to LP row data |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
lp | current LP data |
name | name of row |
len | number of nonzeros in the row |
cols | array with columns of row entries |
vals | array with coefficients of row entries |
lhs | left hand side of row |
rhs | right hand side of row |
origintype | type of origin of row |
origin | pointer to constraint handler or separator who created the row (NULL if unkown) |
local | is row only valid locally? |
modifiable | is row modifiable during node processing (subject to column generation)? |
removable | should the row be removed from the LP due to aging or cleanup? |
Definition at line 5001 of file lp.c.
References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, FALSE, SCIP_Col::index, SCIP_Stat::nrowidx, rowCalcNorms(), SCIP_ALLOC, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPeventfilterCreate(), SCIProwCapture(), SCIPsetInfinity(), SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIPstatIncrement, SCIPvarIsIntegral(), TRUE, and SCIP_Col::var.
Referenced by SCIPcreateEmptyRowCons(), SCIPcreateEmptyRowSepa(), SCIPcreateEmptyRowUnspec(), SCIPcreateRowCons(), SCIPcreateRowSepa(), SCIPcreateRowUnspec(), and SCIPreoptApplyCuts().
SCIP_RETCODE SCIProwFree | ( | SCIP_ROW ** | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp | ||
) |
frees an LP row
row | pointer to LP row |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 5142 of file lp.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, rowUnlink(), SCIP_CALL, SCIP_OKAY, and SCIPeventfilterFree().
Referenced by SCIProwRelease().
void SCIProwPrint | ( | SCIP_ROW * | row, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
FILE * | file | ||
) |
output row to file stream
row | LP row |
messagehdlr | message handler |
file | output file (or NULL for standard output) |
Definition at line 5174 of file lp.c.
References SCIP_Row::cols, SCIP_Row::constant, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::name, REALABS, SCIP_Row::rhs, SCIP_DEFAULT_EPSILON, SCIP_VARSTATUS_COLUMN, SCIPmessageFPrintInfo(), SCIPvarGetName(), SCIPvarGetStatus(), SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIPprintRow().
void SCIProwCapture | ( | SCIP_ROW * | row | ) |
increases usage counter of LP row
row | LP row |
Definition at line 5214 of file lp.c.
References SCIP_Row::name, SCIP_Row::nlocks, SCIP_Row::nuses, and SCIPdebugMessage.
Referenced by cutCreate(), forkCreate(), forkFree(), lpFlushAddRows(), pseudoforkCreate(), SCIPcaptureRow(), SCIPlpAddRow(), SCIProwCreate(), SCIPsepastoreAddCut(), and SCIPsepastoreApplyCuts().
SCIP_RETCODE SCIProwRelease | ( | SCIP_ROW ** | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp | ||
) |
decreases usage counter of LP row, and frees memory if necessary
row | pointer to LP row |
blkmem | block memory |
set | global SCIP settings |
lp | current LP data |
Definition at line 5227 of file lp.c.
References SCIP_CALL, SCIP_OKAY, SCIProwFree(), and SCIPsetDebugMsg.
Referenced by cutFree(), forkFree(), lpDelRowset(), lpFlushDelRows(), pseudoforkFree(), SCIPlpFree(), SCIPlpShrinkRows(), SCIPreleaseRow(), SCIPreoptApplyCuts(), SCIPsepastoreAddCut(), SCIPsepastoreApplyCuts(), SCIPsepastoreClearCuts(), sepastoreDelCut(), and subrootFree().
SCIP_RETCODE SCIProwAddCoef | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_COL * | col, | ||
SCIP_Real | val | ||
) |
adds a previously non existing coefficient to an LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
col | LP column |
val | value of coefficient |
Definition at line 5284 of file lp.c.
References checkLinks, SCIP_Lp::diving, SCIP_Row::lppos, rowAddCoef(), SCIP_CALL, and SCIP_OKAY.
SCIP_RETCODE SCIProwDelCoef | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_COL * | col | ||
) |
deletes coefficient from row
row | row to be changed |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
col | coefficient to be deleted |
Definition at line 5305 of file lp.c.
References checkLinks, colDelCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Lp::diving, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Row::name, rowDelCoefPos(), SCIP_Col::rows, rowSearchCoef(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPsetIsEQ(), SCIPvarGetName(), SCIP_Col::vals, SCIP_Row::vals, and SCIP_Col::var.
SCIP_RETCODE SCIProwChgCoef | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_COL * | col, | ||
SCIP_Real | val | ||
) |
changes or adds a coefficient to an LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
col | LP column |
val | value of coefficient |
Definition at line 5351 of file lp.c.
References checkLinks, colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Lp::diving, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lppos, rowAddCoef(), rowChgCoefPos(), SCIP_Col::rows, rowSearchCoef(), SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIP_Col::vals, and SCIP_Row::vals.
SCIP_RETCODE SCIProwIncCoef | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_COL * | col, | ||
SCIP_Real | incval | ||
) |
increases value of an existing or non-existing coefficient in an LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
col | LP column |
incval | value to add to the coefficient |
Definition at line 5403 of file lp.c.
References checkLinks, colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Lp::diving, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lppos, rowAddCoef(), rowChgCoefPos(), SCIP_Col::rows, rowSearchCoef(), SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIPsetIsZero(), SCIP_Row::validactivitylp, SCIP_Col::vals, and SCIP_Row::vals.
Referenced by SCIPvarAddToRow().
SCIP_RETCODE SCIProwChgConstant | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_Real | constant | ||
) |
changes constant value of a row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
lp | current LP data |
constant | new constant value |
Definition at line 5460 of file lp.c.
References SCIP_Row::constant, SCIP_Lp::diving, SCIP_Stat::domchgcount, SCIP_Row::lhs, SCIP_Row::lppos, SCIP_Row::maxactivity, SCIP_Row::minactivity, SCIP_Row::pseudoactivity, REALABS, SCIP_Row::rhs, rowEventConstantChanged(), rowSideChanged(), SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIP_Row::validactivitybdsdomchg, and SCIP_Row::validpsactivitydomchg.
Referenced by rowScale(), and SCIProwAddConstant().
SCIP_RETCODE SCIProwAddConstant | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_Real | addval | ||
) |
add constant value to a row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
lp | current LP data |
addval | constant value to add to the row |
Definition at line 5515 of file lp.c.
References SCIP_Row::constant, SCIP_Lp::diving, SCIP_Row::lhs, SCIP_Row::lppos, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, SCIProwChgConstant(), SCIPsetIsInfinity(), and SCIPsetIsZero().
Referenced by SCIPvarAddToRow().
SCIP_RETCODE SCIProwChgLhs | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_Real | lhs | ||
) |
changes left hand side of LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
lhs | new left hand side |
Definition at line 5541 of file lp.c.
References SCIP_Lp::diving, SCIP_Row::lhs, rowEventSideChanged(), rowSideChanged(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, and SCIPsetIsEQ().
Referenced by rowScale(), SCIPchgRowLhs(), SCIPchgRowLhsDive(), and SCIPlpEndDive().
SCIP_RETCODE SCIProwChgRhs | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LP * | lp, | ||
SCIP_Real | rhs | ||
) |
changes right hand side of LP row
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lp | current LP data |
rhs | new right hand side |
Definition at line 5573 of file lp.c.
References SCIP_Lp::diving, SCIP_Row::rhs, rowEventSideChanged(), rowSideChanged(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_RIGHT, and SCIPsetIsEQ().
Referenced by rowScale(), SCIPchgRowRhs(), SCIPchgRowRhsDive(), and SCIPlpEndDive().
SCIP_RETCODE SCIProwChgLocal | ( | SCIP_ROW * | row, |
SCIP_Bool | local | ||
) |
changes the local flag of LP row
row | LP row |
local | new value for local flag |
Definition at line 5605 of file lp.c.
References SCIP_Row::local, and SCIP_OKAY.
Referenced by SCIPsepastoreAddCut().
SCIP_RETCODE SCIProwCalcIntegralScalar | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_Real | mindelta, | ||
SCIP_Real | maxdelta, | ||
SCIP_Longint | maxdnom, | ||
SCIP_Real | maxscale, | ||
SCIP_Bool | usecontvars, | ||
SCIP_Real * | intscalar, | ||
SCIP_Bool * | success | ||
) |
tries to find a value, such that all row coefficients, if scaled with this value become integral
row | LP row |
set | global SCIP settings |
mindelta | minimal relative allowed difference of scaled coefficient s*c and integral i |
maxdelta | maximal relative allowed difference of scaled coefficient s*c and integral i |
maxdnom | maximal denominator allowed in rational numbers |
maxscale | maximal allowed scalar |
usecontvars | should the coefficients of the continuous variables also be made integral? |
intscalar | pointer to store scalar that would make the coefficients integral, or NULL |
success | stores whether returned value is valid |
Definition at line 5622 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, isIntegralScalar(), SCIP_Row::len, nscalars, REALABS, SCIP_Bool, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_VARSTATUS_COLUMN, SCIPcalcGreComDiv(), SCIPcolIsIntegral(), SCIPdebug, SCIPrealToRational(), SCIProwGetName(), SCIPsetDebugMsg, SCIPsetIsInfinity(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetStatus(), TRUE, SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIPcalcRowIntegralScalar(), and SCIProwMakeIntegral().
SCIP_RETCODE SCIProwMakeIntegral | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
SCIP_Real | mindelta, | ||
SCIP_Real | maxdelta, | ||
SCIP_Longint | maxdnom, | ||
SCIP_Real | maxscale, | ||
SCIP_Bool | usecontvars, | ||
SCIP_Bool * | success | ||
) |
tries to scale row, s.t. all coefficients become integral
row | LP row |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
stat | problem statistics |
lp | current LP data |
mindelta | minimal relative allowed difference of scaled coefficient s*c and integral i |
maxdelta | maximal relative allowed difference of scaled coefficient s*c and integral i |
maxdnom | maximal denominator allowed in rational numbers |
maxscale | maximal value to scale row with |
usecontvars | should the coefficients of the continuous variables also be made integral? |
success | stores whether row could be made rational |
Definition at line 5856 of file lp.c.
References rowScale(), SCIP_CALL, SCIP_OKAY, SCIP_Real, and SCIProwCalcIntegralScalar().
Referenced by SCIPmakeRowIntegral().
sorts row, and merges equal column entries (resulting from lazy sorting and adding) into a single entry; removes zero entries from row the row must not be linked to the columns; otherwise, we would need to update the columns as well, which is too expensive
row | row to be sorted |
set | global SCIP settings |
Definition at line 5924 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Col::index, SCIP_Row::integral, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Row::name, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, SCIP_Row::nunlinked, rowCalcNorms(), SCIP_Real, SCIPcolIsIntegral(), SCIProwSort(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), TRUE, and SCIP_Row::vals.
Referenced by SCIProwForceSort().
void SCIProwDelaySort | ( | SCIP_ROW * | row | ) |
enables delaying of row sorting
row | LP row |
Definition at line 6023 of file lp.c.
References SCIP_Row::delaysort, and TRUE.
Referenced by SCIPaddVarsToRow(), SCIPaddVarsToRowSameCoef(), and SCIPcacheRowExtensions().
disables delaying of row sorting, sorts row and merges coefficients with equal columns
row | LP row |
set | global SCIP settings |
Definition at line 6034 of file lp.c.
References SCIP_Row::delaysort, FALSE, and rowMerge().
Referenced by SCIPaddVarsToRow(), SCIPaddVarsToRowSameCoef(), and SCIPflushRowExtensions().
recalculates the current activity of a row
row | LP row |
stat | problem statistics |
Definition at line 6047 of file lp.c.
References SCIP_Row::activity, SCIP_Row::cols, SCIP_Row::constant, SCIP_Row::linkpos, SCIP_Stat::lpcount, SCIP_Col::lppos, SCIP_Row::nlpcols, SCIP_Row::nunlinked, SCIP_Col::primsol, SCIP_INVALID, SCIP_Row::validactivitylp, and SCIP_Row::vals.
Referenced by SCIPrecalcRowActivity(), SCIPrecalcRowLPActivity(), and SCIProwGetLPActivity().
returns the activity of a row in the current LP solution
row | LP row |
set | global SCIP settings |
stat | problem statistics |
lp | current LP data |
Definition at line 6099 of file lp.c.
References SCIP_Row::activity, SCIP_Interval::inf, SCIP_Stat::lpcount, MAX, SCIP_INVALID, SCIP_Real, SCIProwRecalcLPActivity(), SCIPsetInfinity(), SCIP_Row::validactivitylp, and SCIP_Lp::validsollp.
Referenced by SCIPgetRowActivity(), SCIPgetRowLPActivity(), SCIPgetRowSolActivity(), and SCIProwGetLPFeasibility().
SCIP_Real SCIProwGetLPFeasibility | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp | ||
) |
returns the feasibility of a row in the current LP solution: negative value means infeasibility
row | LP row |
set | global SCIP settings |
stat | problem statistics |
lp | current LP data |
Definition at line 6129 of file lp.c.
References SCIP_Row::lhs, SCIP_Row::rhs, SCIP_Real, and SCIProwGetLPActivity().
Referenced by SCIPcutpoolSeparate(), SCIPgetRowFeasibility(), SCIPgetRowLPFeasibility(), SCIPgetRowSolFeasibility(), and SCIProwGetLPEfficacy().
returns the feasibility of a row in the relaxed solution solution: negative value means infeasibility
row | LP row |
set | global SCIP settings |
stat | problem statistics |
Definition at line 6149 of file lp.c.
References SCIP_Row::cols, SCIP_Row::constant, SCIP_Interval::inf, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Col::lppos, MAX, SCIP_Row::nlpcols, SCIP_Row::nunlinked, SCIP_Row::rhs, SCIP_Real, SCIPsetInfinity(), SCIPvarGetRelaxSol(), SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIProwGetRelaxEfficacy().
returns the feasibility of a row in the current NLP solution: negative value means infeasibility
row | LP row |
set | global SCIP settings |
stat | problem statistics |
Definition at line 6211 of file lp.c.
References SCIP_Row::cols, SCIP_Row::constant, SCIP_Interval::inf, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Col::lppos, MAX, SCIP_Row::nlpcols, SCIP_Row::nunlinked, SCIP_Row::rhs, SCIP_Real, SCIPsetInfinity(), SCIPvarGetNLPSol(), SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIProwGetNLPEfficacy().
calculates the current pseudo activity of a row
row | row data |
stat | problem statistics |
Definition at line 6270 of file lp.c.
References SCIP_Row::cols, SCIP_Row::constant, SCIP_Stat::domchgcount, EPSISINT, SCIP_Row::integral, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Col::lppos, SCIP_Row::pseudoactivity, SCIP_DEFAULT_SUMEPSILON, SCIP_VARSTATUS_COLUMN, SCIPcolGetBestBound(), SCIPvarGetStatus(), SCIP_Row::validpsactivitydomchg, SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIPrecalcRowActivity(), SCIPrecalcRowPseudoActivity(), and SCIProwGetPseudoActivity().
returns the pseudo activity of a row in the current pseudo solution
row | LP row |
set | global SCIP settings |
stat | problem statistics |
Definition at line 6297 of file lp.c.
References SCIP_Stat::domchgcount, SCIP_Interval::inf, MAX, SCIP_Row::pseudoactivity, SCIP_INVALID, SCIP_Real, SCIProwRecalcPseudoActivity(), SCIPsetInfinity(), and SCIP_Row::validpsactivitydomchg.
Referenced by SCIPgetRowActivity(), SCIPgetRowPseudoActivity(), SCIPgetRowSolActivity(), and SCIProwGetPseudoFeasibility().
returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility
row | LP row |
set | global SCIP settings |
stat | problem statistics |
Definition at line 6325 of file lp.c.
References SCIP_Row::lhs, SCIP_Row::rhs, SCIP_Real, and SCIProwGetPseudoActivity().
Referenced by SCIPgetRowFeasibility(), SCIPgetRowPseudoFeasibility(), and SCIPgetRowSolFeasibility().
SCIP_Real SCIProwGetSolActivity | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_SOL * | sol | ||
) |
returns the activity of a row for a given solution
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
sol | primal CIP solution |
Definition at line 6341 of file lp.c.
References SCIP_Row::cols, SCIP_Row::constant, SCIP_Interval::inf, SCIP_Col::lb, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Col::lppos, MAX, SCIP_Row::rhs, SCIP_Real, SCIP_UNKNOWN, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsolGetVal(), SCIP_Col::ub, SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIPgetRowSolActivity(), SCIProwGetSolFeasibility(), and SCIPsolAdjustImplicitSolVals().
SCIP_Real SCIProwGetSolFeasibility | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_SOL * | sol | ||
) |
returns the feasibility of a row for the given solution
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
sol | primal CIP solution |
Definition at line 6383 of file lp.c.
References SCIP_Row::lhs, SCIP_Row::rhs, SCIP_Real, and SCIProwGetSolActivity().
Referenced by SCIPcutpoolSeparate(), SCIPgetRowSolFeasibility(), and SCIProwGetSolEfficacy().
calculates minimal and maximal activity of row w.r.t. the column's bounds
row | row data |
set | global SCIP settings |
stat | problem statistics data |
Definition at line 6401 of file lp.c.
References SCIP_Row::cols, SCIP_Row::constant, SCIP_Stat::domchgcount, EPSISINT, FALSE, SCIP_Row::integral, SCIP_Col::lb, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Col::lppos, SCIP_Row::maxactivity, SCIP_Row::minactivity, REALABS, SCIP_Bool, SCIP_DEFAULT_SUMEPSILON, SCIP_Real, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIP_Col::ub, SCIP_Row::validactivitybdsdomchg, and SCIP_Row::vals.
Referenced by SCIProwGetMaxActivity(), and SCIProwGetMinActivity().
returns the minimal activity of a row w.r.t. the columns' bounds
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
Definition at line 6461 of file lp.c.
References SCIP_Stat::domchgcount, SCIP_Row::maxactivity, SCIP_Row::minactivity, rowCalcActivityBounds(), SCIP_INVALID, and SCIP_Row::validactivitybdsdomchg.
Referenced by SCIPaddRow(), SCIPgetRowMinActivity(), SCIPlpRemoveRedundantRows(), SCIProwIsRedundant(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().
returns the maximal activity of a row w.r.t. the columns' bounds
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
Definition at line 6482 of file lp.c.
References SCIP_Stat::domchgcount, SCIP_Row::maxactivity, SCIP_Row::minactivity, rowCalcActivityBounds(), SCIP_INVALID, and SCIP_Row::validactivitybdsdomchg.
Referenced by SCIPaddRow(), SCIPgetRowMaxActivity(), SCIPlpRemoveRedundantRows(), SCIProwIsRedundant(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().
returns whether the row is unmodifiable and redundant w.r.t. the columns' bounds
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
Definition at line 6503 of file lp.c.
References FALSE, SCIP_Row::lhs, SCIP_Row::modifiable, SCIP_Row::rhs, SCIP_Real, SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsInfinity(), and TRUE.
Referenced by SCIPlpRemoveRedundantRows().
gets maximal absolute value of row vector coefficients
row | LP row |
set | global SCIP settings |
Definition at line 6534 of file lp.c.
References SCIP_Row::len, SCIP_Row::maxval, SCIP_Row::nummaxval, and rowCalcIdxsAndVals().
Referenced by SCIP_DECL_HASHKEYEQ(), SCIP_DECL_HASHKEYVAL(), SCIPcutpoolAddRow(), SCIPcutpoolIsCutNew(), SCIPgetRowMaxCoef(), SCIProwGetLPEfficacy(), SCIProwGetNLPEfficacy(), SCIProwGetRelaxEfficacy(), and SCIProwGetSolEfficacy().
gets minimal absolute value of row vector's non-zero coefficients
row | LP row |
set | global SCIP settings |
Definition at line 6550 of file lp.c.
References SCIP_Row::len, SCIP_Row::minval, SCIP_Row::numminval, and rowCalcIdxsAndVals().
Referenced by SCIP_DECL_HASHKEYEQ(), and SCIPgetRowMinCoef().
gets maximal column index of row entries
row | LP row |
set | global SCIP settings |
Definition at line 6566 of file lp.c.
References SCIP_Row::len, SCIP_Row::maxidx, rowCalcIdxsAndVals(), and SCIP_Row::validminmaxidx.
Referenced by SCIPcutpoolAddNewRow().
gets minimal column index of row entries
row | LP row |
set | global SCIP settings |
Definition at line 6582 of file lp.c.
References SCIP_Row::len, SCIP_Row::minidx, rowCalcIdxsAndVals(), and SCIP_Row::validminmaxidx.
gets number of integral columns in row
row | LP row |
set | global SCIP settings |
Definition at line 6598 of file lp.c.
References SCIP_Row::len, SCIP_Row::numintcols, and rowCalcIdxsAndVals().
Referenced by computeScore(), and SCIPgetRowNumIntCols().
returns row's efficacy with respect to the current LP solution: e = -feasibility/norm
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
lp | current LP data |
Definition at line 6614 of file lp.c.
References eps, SCIP_Row::len, MAX, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetLPFeasibility(), SCIProwGetMaxval(), SCIProwGetNorm(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().
Referenced by computeScore(), SCIPcutpoolAddNewRow(), SCIPcutpoolSeparate(), SCIPgetCutEfficacy(), SCIProwIsLPEfficacious(), SCIPsepastoreApplyCuts(), and SCIPsepastoreRemoveInefficaciousCuts().
SCIP_Bool SCIProwIsLPEfficacious | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
SCIP_Bool | root | ||
) |
returns whether the row's efficacy with respect to the current LP solution is greater than the minimal cut efficacy
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
lp | current LP data |
root | should the root's minimal cut efficacy be used? |
Definition at line 6655 of file lp.c.
References SCIP_Real, SCIProwGetLPEfficacy(), and SCIPsetIsEfficacious().
Referenced by SCIPisCutEfficacious().
SCIP_Real SCIProwGetSolEfficacy | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_SOL * | sol | ||
) |
returns row's efficacy with respect to the given primal solution: e = -feasibility/norm
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
sol | primal CIP solution |
Definition at line 6671 of file lp.c.
References eps, SCIP_Row::len, MAX, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetMaxval(), SCIProwGetNorm(), SCIProwGetSolFeasibility(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().
Referenced by SCIPcutpoolSeparate(), SCIPgetCutEfficacy(), and SCIProwIsSolEfficacious().
SCIP_Bool SCIProwIsSolEfficacious | ( | SCIP_ROW * | row, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_SOL * | sol, | ||
SCIP_Bool | root | ||
) |
returns whether the row's efficacy with respect to the given primal solution is greater than the minimal cut efficacy
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
sol | primal CIP solution |
root | should the root's minimal cut efficacy be used? |
Definition at line 6714 of file lp.c.
References SCIP_Real, SCIProwGetSolEfficacy(), and SCIPsetIsEfficacious().
Referenced by SCIPisCutEfficacious().
returns row's efficacy with respect to the relaxed solution: e = -feasibility/norm
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
Definition at line 6730 of file lp.c.
References eps, SCIP_Row::len, MAX, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetMaxval(), SCIProwGetNorm(), SCIProwGetRelaxFeasibility(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().
Referenced by computeScore(), and SCIPsepastoreRemoveInefficaciousCuts().
returns row's efficacy with respect to the NLP solution: e = -feasibility/norm
row | LP row |
set | global SCIP settings |
stat | problem statistics data |
Definition at line 6770 of file lp.c.
References eps, SCIP_Row::len, MAX, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetMaxval(), SCIProwGetNLPFeasibility(), SCIProwGetNorm(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().
Referenced by computeScore(), and SCIPsepastoreRemoveInefficaciousCuts().
returns the discrete scalar product of the coefficient vectors of the two given rows
row1 | first LP row |
row2 | second LP row |
Definition at line 7171 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::index, SCIP_Row::len, SCIP_Row::lpcolssorted, SCIP_Col::lppos, MAX, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, SCIP_Row::nunlinked, SCIP_Bool, SCIProwSort(), SCIPswapPointers(), and TRUE.
Referenced by SCIProwGetParallelism().
gets parallelism of row with objective function: if the returned value is 1, the row is parallel to the objective function, if the value is 0, it is orthogonal to the objective function
row | LP row |
set | global SCIP settings |
lp | current LP data |
Definition at line 7606 of file lp.c.
References checkRowObjprod, checkRowSqrnorm, MAX, SCIP_Row::objprod, SCIP_Lp::objsqrnorm, SCIP_Lp::objsqrnormunreliable, REALABS, SCIP_Real, SCIPlpRecalculateObjSqrNorm(), SCIPsetIsPositive(), SCIPsetIsSumGE(), SCIPsetIsSumLE(), and SCIP_Row::sqrnorm.
Referenced by computeScore(), and SCIPsepastoreApplyCuts().
SCIP_RETCODE SCIProwCatchEvent | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTTYPE | eventtype, | ||
SCIP_EVENTHDLR * | eventhdlr, | ||
SCIP_EVENTDATA * | eventdata, | ||
int * | filterpos | ||
) |
includes event handler with given data in row's event filter
row | row |
blkmem | block memory |
set | global SCIP settings |
eventtype | event type to catch |
eventhdlr | event handler to call for the event processing |
eventdata | event data to pass to the event handler for the event processing |
filterpos | pointer to store position of event filter entry, or NULL |
Definition at line 7639 of file lp.c.
References SCIP_Row::eventfilter, SCIP_Row::name, SCIP_CALL, SCIP_EVENTTYPE_FORMAT, SCIP_EVENTTYPE_ROWCHANGED, SCIP_OKAY, SCIPeventfilterAdd(), and SCIPsetDebugMsg.
Referenced by SCIPcatchRowEvent().
SCIP_RETCODE SCIProwDropEvent | ( | SCIP_ROW * | row, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTTYPE | eventtype, | ||
SCIP_EVENTHDLR * | eventhdlr, | ||
SCIP_EVENTDATA * | eventdata, | ||
int | filterpos | ||
) |
deletes event handler with given data from row's event filter
row | row |
blkmem | block memory |
set | global SCIP settings |
eventtype | event type mask of dropped event |
eventhdlr | event handler to call for the event processing |
eventdata | event data to pass to the event handler for the event processing |
filterpos | position of event filter entry returned by SCIPvarCatchEvent(), or -1 |
Definition at line 7663 of file lp.c.
References SCIP_Row::eventfilter, SCIP_Row::name, SCIP_CALL, SCIP_OKAY, SCIPeventfilterDel(), and SCIPsetDebugMsg.
Referenced by SCIPdropRowEvent().
marks a row to be not removable from the LP in the current node because it became obsolete
row | LP row |
stat | problem statistics |
Definition at line 7684 of file lp.c.
References SCIP_Stat::nnodes, and SCIP_Row::obsoletenode.
Referenced by SCIPmarkRowNotRemovableLocal().
|
static |
resets column data to represent a column not in the LP solver
col | column to be marked deleted |
Definition at line 7703 of file lp.c.
References SCIP_Col::basisstatus, FALSE, SCIP_Col::farkascoef, SCIP_Col::lpipos, SCIP_Col::primsol, SCIP_Col::redcost, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_BASESTAT_ZERO, SCIP_INVALID, SCIP_Col::validfarkaslp, and SCIP_Col::validredcostlp.
Referenced by lpDelColset(), and lpFlushDelCols().
|
static |
applies all cached column removals to the LP solver
lp | current LP data |
Definition at line 7725 of file lp.c.
References SCIP_Col::coefchanged, SCIP_Lp::cols, SCIP_Lp::diving, FALSE, SCIP_Lp::flushdeletedcols, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpifirstchgcol, SCIP_Col::lpipos, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, markColDeleted(), SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPdebugMessage, SCIPlpiDelCols(), SCIP_Lp::solved, TRUE, and SCIP_Lp::updateintegrality.
Referenced by SCIPlpFlush().
|
static |
computes for the given column the lower and upper bound that should be flushed into the LP depending on lazy bounds and diving mode; in diving mode, lazy bounds are ignored, i.e., the bounds are explicitly added to the LP in any case
lp | current LP data |
set | global SCIP settings |
col | column to compute bounds for |
lpiinf | infinity value if the LP solver |
lb | pointer to store the new lower bound |
ub | pointer to store the new upper bound |
Definition at line 7776 of file lp.c.
References SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Col::lb, SCIPlpDiving(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), and SCIP_Col::ub.
Referenced by lpFlushAddCols(), and lpFlushChgCols().
|
static |
applies all cached column additions to the LP solver
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
Definition at line 7811 of file lp.c.
References SCIP_Col::coefchanged, colLink(), SCIP_Lp::cols, computeLPBounds(), debugColPrint, SCIP_Lp::diving, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, ensureLpicolsSize(), FALSE, SCIP_Col::farkascoef, SCIP_Lp::flushaddedcols, SCIP_Col::flushedlb, SCIP_Col::flushedobj, SCIP_Col::flushedub, SCIP_Col::lbchanged, SCIP_Col::len, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpifirstchgcol, SCIP_Col::lpipos, SCIP_Row::lpipos, SCIP_Lp::lpobjval, SCIP_Col::lppos, SCIP_Lp::lpsolstat, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Col::nlprows, SCIP_Col::obj, SCIP_Col::objchanged, SCIP_Col::primsol, SCIP_Col::redcost, SCIP_Col::rows, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPlpiAddCols(), SCIPlpiInfinity(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), SCIP_Lp::solved, TRUE, SCIP_Col::ubchanged, SCIP_Lp::updateintegrality, SCIP_Col::validfarkaslp, SCIP_Col::validredcostlp, SCIP_Col::vals, and SCIP_Col::var.
Referenced by SCIPlpFlush().
|
static |
resets row data to represent a row not in the LP solver
row | row to be marked deleted |
Definition at line 7969 of file lp.c.
References SCIP_Row::activity, SCIP_Row::basisstatus, SCIP_Row::dualfarkas, SCIP_Row::dualsol, SCIP_Row::lpipos, SCIP_BASESTAT_BASIC, SCIP_INVALID, and SCIP_Row::validactivitylp.
Referenced by lpDelRowset(), and lpFlushDelRows().
|
static |
applies all cached row removals to the LP solver
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
Definition at line 7985 of file lp.c.
References SCIP_Row::coefchanged, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushdeletedrows, SCIP_Lp::lpi, SCIP_Lp::lpifirstchgrow, SCIP_Row::lpipos, SCIP_Lp::lpirows, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, markRowDeleted(), SCIP_Lp::nlpirows, SCIP_Lp::nrows, SCIP_Lp::rows, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiDelRows(), SCIProwRelease(), SCIPsetDebugMsg, SCIP_Lp::solved, and TRUE.
Referenced by SCIPlpFlush().
|
static |
applies all cached row additions and removals to the LP solver
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
Definition at line 8034 of file lp.c.
References SCIP_Row::activity, SCIP_Row::coefchanged, SCIP_Row::cols, SCIP_Row::constant, debugRowPrint, SCIP_Row::dualfarkas, SCIP_Row::dualsol, ensureLpirowsSize(), FALSE, SCIP_Lp::flushaddedrows, SCIP_Row::flushedlhs, SCIP_Row::flushedrhs, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::lhschanged, SCIP_Lp::lpi, SCIP_Lp::lpifirstchgrow, SCIP_Col::lpipos, SCIP_Row::lpipos, SCIP_Lp::lpirows, SCIP_Lp::lpobjval, SCIP_Row::lppos, SCIP_Lp::lpsolstat, SCIP_Row::name, SCIP_Row::nlpcols, SCIP_Lp::nlpirows, SCIP_Lp::nrows, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Row::rhs, SCIP_Row::rhschanged, rowLink(), SCIP_Lp::rows, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiAddRows(), SCIPlpiInfinity(), SCIProwCapture(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetDebugMsgPrint, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPvarGetName(), SCIP_Lp::solved, TRUE, SCIP_Row::validactivitylp, SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIPlpFlush().
|
static |
applies all cached column bound and objective changes to the LP
lp | current LP data |
set | global SCIP settings |
Definition at line 8182 of file lp.c.
References SCIP_Lp::chgcols, computeLPBounds(), SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Col::flushedlb, SCIP_Col::flushedobj, SCIP_Col::flushedub, SCIP_Col::lbchanged, SCIP_Lp::lpi, SCIP_Col::lpipos, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_Lp::nchgcols, SCIP_Lp::ncols, SCIP_Col::obj, SCIP_Col::objchanged, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPlpiChgBounds(), SCIPlpiChgObj(), SCIPlpiGetBounds(), SCIPlpiGetObj(), SCIPlpiGetSolverName(), SCIPlpiInfinity(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsFeasEQ(), SCIPsetIsInfinity(), SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Lp::solved, SCIP_Col::ubchanged, and SCIP_Col::var.
Referenced by SCIPlpFlush().
|
static |
applies all cached row side changes to the LP
lp | current LP data |
set | global SCIP settings |
Definition at line 8330 of file lp.c.
References SCIP_Lp::chgrows, SCIP_Row::constant, FALSE, SCIP_Row::flushedlhs, SCIP_Row::flushedrhs, SCIP_Row::lhs, SCIP_Row::lhschanged, SCIP_Lp::lpi, SCIP_Row::lpipos, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_Lp::nchgrows, SCIP_Lp::nrows, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Row::rhs, SCIP_Row::rhschanged, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiChgSides(), SCIPlpiGetSides(), SCIPlpiGetSolverName(), SCIPlpiInfinity(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPsetIsSumEQ(), and SCIP_Lp::solved.
Referenced by SCIPlpFlush().
|
static |
copy integrality information to the LP
lp | current LP data |
set | global SCIP settings |
Definition at line 8429 of file lp.c.
References SCIP_Lp::cols, FALSE, SCIP_Lp::lpi, SCIP_Lp::ncols, SCIP_CALL, SCIP_OKAY, SCIPcolGetVar(), SCIPlpiSetIntegralityInformation(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPvarIsBinary(), SCIPvarIsIntegral(), and SCIP_Lp::updateintegrality.
Referenced by lpSolveStable().
SCIP_RETCODE SCIPlpFlush | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue | ||
) |
applies all cached changes to the LP solver
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
Definition at line 8477 of file lp.c.
References checkLinks, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushaddedcols, SCIP_Lp::flushaddedrows, SCIP_Lp::flushdeletedcols, SCIP_Lp::flushdeletedrows, SCIP_Lp::flushed, lpFlushAddCols(), lpFlushAddRows(), lpFlushChgCols(), lpFlushChgRows(), lpFlushDelCols(), lpFlushDelRows(), SCIP_Lp::lpi, SCIP_Lp::lpifirstchgcol, SCIP_Lp::lpifirstchgrow, SCIP_Lp::lpiobjlim, SCIP_Lp::nchgcols, SCIP_Lp::nchgrows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Lp::nrows, SCIP_CALL, SCIP_OKAY, SCIPlpiGetNCols(), SCIPlpiGetNRows(), SCIPsetDebugMsg, SCIP_Lp::solved, and TRUE.
Referenced by focusnodeCleanupVars(), lpFlushAndSolve(), priceAndCutLoop(), SCIPflushLP(), SCIPlpEndDive(), SCIPlpReset(), SCIPlpSetState(), SCIPlpSolveAndEval(), SCIPtreeEndProbing(), SCIPwriteLP(), and SCIPwriteMIP().
SCIP_RETCODE SCIPlpMarkFlushed | ( | SCIP_LP * | lp, |
SCIP_SET * | set | ||
) |
marks the LP to be flushed, even if the LP thinks it is not flushed
lp | current LP data |
set | global SCIP settings |
Definition at line 8535 of file lp.c.
References checkLinks, SCIP_Lp::chgcols, SCIP_Lp::chgrows, SCIP_Col::coefchanged, SCIP_Row::coefchanged, SCIP_Lp::cols, SCIP_Row::constant, FALSE, SCIP_Lp::flushed, SCIP_Col::flushedlb, SCIP_Row::flushedlhs, SCIP_Col::flushedobj, SCIP_Row::flushedrhs, SCIP_Col::flushedub, SCIP_Col::lb, SCIP_Col::lbchanged, SCIP_Row::lhs, SCIP_Row::lhschanged, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpifirstchgcol, SCIP_Lp::lpifirstchgrow, SCIP_Col::lpipos, SCIP_Row::lpipos, SCIP_Lp::lpirows, SCIP_Lp::nchgcols, SCIP_Lp::nchgrows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Lp::nrows, SCIP_Col::obj, SCIP_Col::objchanged, SCIP_Row::rhs, SCIP_Row::rhschanged, SCIP_Lp::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPlpiGetBounds(), SCIPlpiGetObj(), SCIPlpiGetSides(), SCIPlpiGetSolverName(), SCIPlpiInfinity(), SCIPsetIsInfinity(), SCIPsetIsSumEQ(), SCIPvarGetCol(), SCIPvarGetStatus(), TRUE, SCIP_Col::ub, SCIP_Col::ubchanged, and SCIP_Col::var.
updates link data after addition of column
col | LP column |
set | global SCIP settings |
Definition at line 8663 of file lp.c.
References SCIP_Row::cols, FALSE, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nlpcols, rowAddNorms(), SCIP_Col::rows, rowSwapCoefs(), and SCIP_Row::vals.
Referenced by SCIPlpAddCol().
|
static |
updates link data after addition of row
row | LP row |
Definition at line 8703 of file lp.c.
References SCIP_Row::cols, colSwapCoefs(), FALSE, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nlprows, and SCIP_Col::rows.
Referenced by SCIPlpAddRow().
updates link data after removal of column
col | LP column |
set | global SCIP settings |
Definition at line 8738 of file lp.c.
References SCIP_Row::cols, FALSE, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::lppos, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, rowDelNorms(), SCIP_Col::rows, rowSwapCoefs(), TRUE, and SCIP_Row::vals.
Referenced by lpDelColset(), and SCIPlpShrinkCols().
|
static |
updates link data after removal of row
row | LP row |
Definition at line 8777 of file lp.c.
References SCIP_Row::cols, colSwapCoefs(), FALSE, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, and SCIP_Col::rows.
Referenced by lpDelRowset(), and SCIPlpShrinkRows().
|
static |
lp | LP data object |
initsize | initial size of the arrays |
Definition at line 8811 of file lp.c.
References BMSallocMemoryArray, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, SCIP_Lp::ndivechgsides, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPlpCreate().
|
static |
lp | LP data object |
minsize | minimal number of elements |
growfact | growing factor |
Definition at line 8833 of file lp.c.
References BMSreallocMemoryArray, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, MAX, SCIP_Lp::ndivechgsides, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPlpRecordOldRowSideDive().
|
static |
lp | LP data object |
Definition at line 8859 of file lp.c.
References BMSfreeMemoryArrayNull, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, and SCIP_Lp::ndivechgsides.
Referenced by SCIPlpFree().
SCIP_RETCODE SCIPlpCreate | ( | SCIP_LP ** | lp, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
const char * | name | ||
) |
creates empty LP data object
lp | pointer to LP data object |
set | global SCIP settings |
messagehdlr | message handler |
stat | problem statistics |
name | problem name |
Definition at line 8879 of file lp.c.
References allocDiveChgSideArrays(), BMSallocMemory, DIVESTACKINITSIZE, FALSE, SCIP_Stat::lpcount, lpSetBoolpar(), lpSetIntpar(), lpSetRealpar(), SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPPAR_BARRIERCONVTOL, SCIP_LPPAR_CONDITIONLIMIT, SCIP_LPPAR_DUALFEASTOL, SCIP_LPPAR_FASTMIP, SCIP_LPPAR_FEASTOL, SCIP_LPPAR_FROMSCRATCH, SCIP_LPPAR_LPINFO, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_OBJLIM, SCIP_LPPAR_POLISHING, SCIP_LPPAR_PRESOLVING, SCIP_LPPAR_PRICING, SCIP_LPPAR_RANDOMSEED, SCIP_LPPAR_REFACTOR, SCIP_LPPAR_ROWREPSWITCH, SCIP_LPPAR_SCALING, SCIP_LPPAR_THREADS, SCIP_LPPAR_TIMING, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OBJSEN_MINIMIZE, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIP_PRICING_AUTO, SCIP_VERBLEVEL_FULL, SCIPerrorMessage, SCIPlpiCreate(), SCIPlpiGetSolverName(), SCIPlpiInfinity(), SCIPmessagePrintVerbInfo(), SCIPsetBarrierconvtol(), SCIPsetDualfeastol(), SCIPsetInfinity(), SCIPsetLpfeastol(), and TRUE.
Referenced by SCIPtransformProb().
SCIP_RETCODE SCIPlpFree | ( | SCIP_LP ** | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter | ||
) |
frees LP data object
lp | pointer to LP data object |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
eventfilter | global event filter |
Definition at line 9156 of file lp.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, BMSfreeMemoryNull, freeDiveChgSideArrays(), SCIP_CALL, SCIP_OKAY, SCIPlpClear(), SCIPlpiFree(), and SCIProwRelease().
Referenced by freeTransform().
SCIP_RETCODE SCIPlpReset | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter | ||
) |
resets the LP to the empty LP by removing all columns and rows from LP, releasing all rows, and flushing the changes to the LP solver
lp | LP data |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
Definition at line 9200 of file lp.c.
References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpClear(), SCIPlpFlush(), SCIP_Lp::solisbasic, SCIP_Lp::solved, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.
Referenced by freeReoptSolve(), freeSolve(), and initSolve().
SCIP_RETCODE SCIPlpAddCol | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_COL * | col, | ||
int | depth | ||
) |
adds a column to the LP
lp | LP data |
set | global SCIP settings |
col | LP column |
depth | depth in the tree where the column addition is performed |
Definition at line 9231 of file lp.c.
References SCIP_Col::age, checkLinks, SCIP_Lp::cols, colUpdateAddLP(), SCIP_Lp::diving, ensureColsSize(), ensureLazycolsSize(), FALSE, SCIP_Lp::flushed, SCIP_Col::integral, SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Col::lb, SCIP_Col::len, SCIP_Col::lpdepth, SCIP_Col::lppos, lpUpdateObjNorms(), SCIP_Row::name, SCIP_Lp::ncols, SCIP_Lp::nlazycols, SCIP_Lp::nremovablecols, SCIP_Lp::nrows, SCIP_Col::obj, SCIP_Col::removable, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPsetDebugMsgPrint, SCIPsetIsInfinity(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Col::ub, SCIP_Col::unchangedobj, SCIP_Col::vals, and SCIP_Col::var.
Referenced by forkAddLP(), pseudoforkAddLP(), SCIPpricestoreApplyVars(), and subrootConstructLP().
SCIP_RETCODE SCIPlpAddRow | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_ROW * | row, | ||
int | depth | ||
) |
adds a row to the LP and captures it
lp | LP data |
blkmem | block memory buffers |
set | global SCIP settings |
eventqueue | event queue |
eventfilter | global event filter |
row | LP row |
depth | depth in the tree where the row addition is performed |
Definition at line 9290 of file lp.c.
References SCIP_Row::age, checkLinks, SCIP_Row::cols, SCIP_Row::constant, ensureRowsSize(), SCIP_EventFilter::eventmask, FALSE, SCIP_Lp::flushed, SCIP_EventFilter::len, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::lpdepth, SCIP_Row::lppos, SCIP_Row::name, SCIP_Lp::ncols, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, SCIP_Row::removable, SCIP_Row::rhs, rowCalcNorms(), SCIP_Lp::rows, rowUpdateAddLP(), SCIP_CALL, SCIP_EVENTTYPE_ROWADDEDLP, SCIP_OKAY, SCIPeventCreateRowAddedLP(), SCIPeventqueueAdd(), SCIProwCapture(), SCIProwLock(), SCIPsetDebugMsg, SCIPsetDebugMsgPrint, SCIPsetIsZero(), SCIPvarGetName(), SCIP_Row::vals, and SCIP_Col::var.
Referenced by forkAddLP(), pseudoforkAddLP(), SCIPaddRowDive(), SCIPaddRowProbing(), sepastoreApplyCut(), and subrootConstructLP().
method checks if all columns in the lazycols array have at least one lazy bound and also have a counter part in the cols array; furthermore, it is checked if columns in the cols array which have a lazy bound have a counter part in the lazycols array
lp | LP data |
set | global SCIP settings |
Definition at line 9361 of file lp.c.
References SCIP_Lp::cols, FALSE, SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Lp::ncols, SCIP_Lp::nlazycols, SCIP_Bool, SCIPsetIsInfinity(), and TRUE.
Referenced by lpDelColset(), and SCIPlpShrinkCols().
SCIP_RETCODE SCIPlpShrinkCols | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
int | newncols | ||
) |
removes all columns after the given number of cols from the LP
lp | LP data |
set | global SCIP settings |
newncols | new number of columns in the LP |
Definition at line 9414 of file lp.c.
References checkLazyColArray(), checkLinks, SCIP_Lp::cols, colUpdateDelLP(), SCIP_Lp::diving, FALSE, SCIP_Lp::flushed, SCIP_Lp::lazycols, SCIP_Col::len, SCIP_Col::lpdepth, SCIP_Lp::lpifirstchgcol, SCIP_Col::lppos, lpUpdateObjNorms(), SCIP_Lp::ncols, SCIP_Lp::nlazycols, SCIP_Lp::nremovablecols, SCIP_Col::removable, SCIP_Col::rows, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::unchangedobj, and SCIP_Col::var.
Referenced by focusnodeCleanupVars(), focusnodeToFork(), SCIPlpClear(), SCIPtreeLoadLP(), and treeBacktrackProbing().
SCIP_RETCODE SCIPlpShrinkRows | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
int | newnrows | ||
) |
removes and releases all rows after the given number of rows from the LP
lp | LP data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
eventfilter | global event filter |
newnrows | new number of rows in the LP |
Definition at line 9486 of file lp.c.
References checkLinks, SCIP_Row::cols, SCIP_EventFilter::eventmask, FALSE, SCIP_Lp::flushed, SCIP_EventFilter::len, SCIP_Row::len, SCIP_Row::lpdepth, SCIP_Lp::lpifirstchgrow, SCIP_Row::lppos, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, SCIP_Row::removable, SCIP_Lp::rows, rowUpdateDelLP(), SCIP_CALL, SCIP_EVENTTYPE_ROWDELETEDLP, SCIP_OKAY, SCIPeventCreateRowDeletedLP(), SCIPeventqueueAdd(), SCIProwRelease(), SCIProwUnlock(), and SCIPsetDebugMsg.
Referenced by focusnodeToFork(), SCIPlpClear(), SCIPlpEndDive(), SCIPtreeLoadLP(), and treeBacktrackProbing().
SCIP_RETCODE SCIPlpClear | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter | ||
) |
removes all columns and rows from LP, releases all rows
lp | LP data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
eventfilter | global event filter |
Definition at line 9552 of file lp.c.
References SCIP_Lp::diving, SCIP_CALL, SCIP_OKAY, SCIPlpShrinkCols(), SCIPlpShrinkRows(), and SCIPsetDebugMsg.
Referenced by SCIPlpFree(), SCIPlpReset(), and SCIPtreeLoadLP().
void SCIPlpMarkSize | ( | SCIP_LP * | lp | ) |
remembers number of columns and rows to track the newly added ones
lp | current LP data |
Definition at line 9571 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, SCIP_Lp::ncols, and SCIP_Lp::nrows.
Referenced by SCIPnodeFocus(), SCIPtreeLoadLP(), and treeCreateProbingNode().
void SCIPlpSetSizeMark | ( | SCIP_LP * | lp, |
int | nrows, | ||
int | ncols | ||
) |
sets the remembered number of columns and rows to the given values
lp | current LP data |
nrows | number of rows to set the size marker to |
ncols | number of columns to set the size marker to |
Definition at line 9583 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::firstnewcol, and SCIP_Lp::firstnewrow.
Referenced by treeBacktrackProbing().
SCIP_RETCODE SCIPlpGetBasisInd | ( | SCIP_LP * | lp, |
int * | basisind | ||
) |
gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1
lp | LP data |
basisind | pointer to store basis indices ready to keep number of rows entries |
Definition at line 9597 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBasisInd(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPgetLPBasisInd().
SCIP_RETCODE SCIPlpGetBase | ( | SCIP_LP * | lp, |
int * | cstat, | ||
int * | rstat | ||
) |
gets current basis status for columns and rows; arrays must be large enough to store the basis status
lp | LP data |
cstat | array to store column basis status, or NULL |
rstat | array to store row basis status, or NULL |
Definition at line 9614 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBase(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
SCIP_RETCODE SCIPlpGetBInvRow | ( | SCIP_LP * | lp, |
int | r, | ||
SCIP_Real * | coef, | ||
int * | inds, | ||
int * | ninds | ||
) |
gets a row from the inverse basis matrix B^-1
lp | LP data |
r | row number |
coef | pointer to store the coefficients of the row |
inds | array to store the non-zero indices, or NULL |
ninds | pointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations) |
Definition at line 9631 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvRow(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPgetLPBInvRow().
SCIP_RETCODE SCIPlpGetBInvCol | ( | SCIP_LP * | lp, |
int | c, | ||
SCIP_Real * | coef, | ||
int * | inds, | ||
int * | ninds | ||
) |
gets a column from the inverse basis matrix B^-1
lp | LP data |
c | column number of B^-1; this is NOT the number of the column in the LP returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd() to get the array which links the B^-1 column numbers to the row and column numbers of the LP! c must be between 0 and nrows-1, since the basis has the size nrows * nrows |
coef | pointer to store the coefficients of the column |
inds | array to store the non-zero indices, or NULL |
ninds | pointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations) |
Definition at line 9653 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvCol(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPgetLPBInvCol().
SCIP_RETCODE SCIPlpGetBInvARow | ( | SCIP_LP * | lp, |
int | r, | ||
SCIP_Real * | binvrow, | ||
SCIP_Real * | coef, | ||
int * | inds, | ||
int * | ninds | ||
) |
gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A)
lp | LP data |
r | row number |
binvrow | row in B^-1 from prior call to SCIPlpGetBInvRow(), or NULL |
coef | pointer to store the coefficients of the row |
inds | array to store the non-zero indices, or NULL |
ninds | pointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations) |
Definition at line 9679 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvARow(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPgetLPBInvARow().
SCIP_RETCODE SCIPlpGetBInvACol | ( | SCIP_LP * | lp, |
int | c, | ||
SCIP_Real * | coef, | ||
int * | inds, | ||
int * | ninds | ||
) |
gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A), i.e., it computes B^-1 * A_c with A_c being the c'th column of A
lp | LP data |
c | column number which can be accessed by SCIPcolGetLPPos() |
coef | pointer to store the coefficients of the column |
inds | array to store the non-zero indices, or NULL |
ninds | pointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations) |
Definition at line 9704 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvACol(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPgetLPBInvACol().
SCIP_RETCODE SCIPlpSumRows | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_PROB * | prob, | ||
SCIP_Real * | weights, | ||
SCIP_REALARRAY * | sumcoef, | ||
SCIP_Real * | sumlhs, | ||
SCIP_Real * | sumrhs | ||
) |
calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding LP row are swapped in the summation
lp | LP data |
set | global SCIP settings |
prob | problem data |
weights | row weights in row summation |
sumcoef | array to store sum coefficients indexed by variables' probindex |
sumlhs | pointer to store the left hand side of the row summation |
sumrhs | pointer to store the right hand side of the row summation |
Definition at line 9728 of file lp.c.
References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::constant, FALSE, SCIP_Row::len, SCIP_Row::lhs, SCIP_Lp::nrows, SCIP_Prob::nvars, SCIP_Row::rhs, SCIP_Lp::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrealarrayClear(), SCIPrealarrayExtend(), SCIPrealarrayIncVal(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIP_Row::vals, SCIP_Col::var, and SCIP_Col::var_probindex.
Referenced by SCIPsumLPRows().
SCIP_RETCODE SCIPlpGetState | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LPISTATE ** | lpistate | ||
) |
stores LP state (like basis information) into LP state object
lp | LP data |
blkmem | block memory |
lpistate | pointer to LP state information (like basis information) |
Definition at line 9814 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_CALL, SCIP_OKAY, SCIPlpiGetState(), and SCIP_Lp::solved.
Referenced by forkCreate(), forkFree(), probingnodeUpdate(), and SCIPtreeStartProbing().
SCIP_RETCODE SCIPlpSetState | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_LPISTATE * | lpistate, | ||
SCIP_Bool | wasprimfeas, | ||
SCIP_Bool | wasprimchecked, | ||
SCIP_Bool | wasdualfeas, | ||
SCIP_Bool | wasdualchecked | ||
) |
loads LP state (like basis information) into solver
lp | LP data |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
lpistate | LP state information (like basis information) |
wasprimfeas | primal feasibility when LP state information was stored |
wasprimchecked | true if the LP solution has passed the primal feasibility check |
wasdualfeas | dual feasibility when LP state information was stored |
wasdualchecked | true if the LP solution has passed the dual feasibility check |
Definition at line 9838 of file lp.c.
References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_OKAY, SCIPlpFlush(), SCIPlpiHasStateBasis(), SCIPlpiSetState(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPlpEndDive(), SCIPtreeEndProbing(), SCIPtreeLoadLPState(), and SCIPtreeLoadProbingLPState().
SCIP_RETCODE SCIPlpFreeState | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LPISTATE ** | lpistate | ||
) |
frees LP state information
lp | LP data |
blkmem | block memory |
lpistate | pointer to LP state information (like basis information) |
Definition at line 9880 of file lp.c.
References SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, and SCIPlpiFreeState().
Referenced by forkReleaseLPIState(), probingnodeFree(), probingnodeUpdate(), SCIPlpEndDive(), SCIPtreeEndProbing(), SCIPtreeSetProbingLPState(), and subrootReleaseLPIState().
SCIP_RETCODE SCIPlpGetNorms | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LPINORMS ** | lpinorms | ||
) |
stores pricing norms into LP norms object
lp | LP data |
blkmem | block memory |
lpinorms | pointer to LP pricing norms information |
Definition at line 9897 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_CALL, SCIP_OKAY, SCIPlpiGetNorms(), and SCIP_Lp::solved.
Referenced by probingnodeUpdate(), and SCIPtreeStartProbing().
SCIP_RETCODE SCIPlpSetNorms | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LPINORMS * | lpinorms | ||
) |
loads pricing norms from LP norms object into solver
lp | LP data |
blkmem | block memory |
lpinorms | LP pricing norms information |
Definition at line 9921 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, and SCIPlpiSetNorms().
Referenced by SCIPtreeEndProbing(), and SCIPtreeLoadProbingLPState().
SCIP_RETCODE SCIPlpFreeNorms | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_LPINORMS ** | lpinorms | ||
) |
frees pricing norms information
lp | LP data |
blkmem | block memory |
lpinorms | pointer to LP pricing norms information |
Definition at line 9941 of file lp.c.
References SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, and SCIPlpiFreeNorms().
Referenced by probingnodeFree(), probingnodeUpdate(), SCIPtreeEndProbing(), and SCIPtreeSetProbingLPState().
return the current cutoff bound of the lp
lp | current LP data |
Definition at line 9955 of file lp.c.
References SCIP_Lp::cutoffbound.
Referenced by SCIPreoptCheckCutoff().
SCIP_RETCODE SCIPlpSetCutoffbound | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_PROB * | prob, | ||
SCIP_Real | cutoffbound | ||
) |
sets the upper objective limit of the LP solver
lp | current LP data |
set | global SCIP settings |
prob | problem data |
cutoffbound | new upper objective limit |
Definition at line 9965 of file lp.c.
References SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, lpCutoffDisabled, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpDivingObjChanged(), SCIPlpGetObjval(), SCIPlpGetSolstat(), SCIPsetDebugMsg, SCIPsetIsInfinity(), and SCIP_Lp::solved.
Referenced by primalSetCutoffbound(), SCIPchgCutoffboundDive(), SCIPchgVarObjDive(), SCIPchgVarObjProbing(), SCIPendDive(), and treeBacktrackProbing().
|
static |
returns the name of the given LP algorithm
lpalgo | LP algorithm |
Definition at line 10011 of file lp.c.
References SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIPABORT, and SCIPerrorMessage.
Referenced by lpAlgorithm(), lpSolve(), and lpSolveStable().
|
static |
calls LPI to perform primal simplex, measures time and counts iterations, gets basis feasibility status
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
resolve | is this a resolving call (starting with feasible basis)? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 10034 of file lp.c.
References SCIP_Lp::diving, SCIP_Stat::divinglptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpidualfeastol, SCIP_Lp::lpifastmip, SCIP_Lp::lpifeastol, SCIP_Lp::lpifromscratch, SCIP_Lp::lpiobjlim, SCIP_Lp::lpipresolving, SCIP_Lp::lpiscaling, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Stat::nprimallps, SCIP_Lp::nrows, SCIP_Stat::primallptime, SCIP_Lp::probing, SCIP_CALL, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_LPERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPlpGetIterations(), SCIPlpiSolvePrimal(), SCIPlpWrite(), SCIPsetDebugMsg, SCIPsnprintf(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.
Referenced by lpAlgorithm().
|
static |
calls LPI to perform dual simplex, measures time and counts iterations
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
resolve | is this a resolving call (starting with feasible basis)? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 10175 of file lp.c.
References SCIP_Lp::diving, SCIP_Stat::divinglptime, SCIP_Stat::duallptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpidualfeastol, SCIP_Lp::lpifastmip, SCIP_Lp::lpifeastol, SCIP_Lp::lpifromscratch, SCIP_Lp::lpiobjlim, SCIP_Lp::lpipresolving, SCIP_Lp::lpiscaling, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nduallps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, SCIP_Lp::probing, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPlpGetIterations(), SCIPlpiSolveDual(), SCIPlpWrite(), SCIPsetDebugMsg, SCIPsnprintf(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.
Referenced by lpAlgorithm().
|
static |
calls LPI to perform lexicographic dual simplex to find a lexicographically minimal optimal solution, measures time and counts iterations
We follow the approach of the following paper to find a lexicographically minimal optimal solution:
Zanette, Fischetti, Balas
Can pure cutting plane algorithms work?
IPCO 2008, Bertinoro, Italy.
We do, however, not aim for the exact lexicographically minimal optimal solutions, but perform a heuristic, i.e., we limit the number of components which are minimized.
More precisely, we first solve the problem with the dual simplex algorithm. Then we fix those nonbasic variables to their current value (i.e., one of the bounds except maybe for free variables) that have nonzero reduced cost. This fixes the objective function value, because only pivots that will not change the objective are allowed afterwards.
Then the not yet fixed variables are considered in turn. If they are at their lower bounds and nonbasic, they are fixed to this bound, since their value cannot be decreased further. Once a candidate is found, we set the objective to minimize this variable. We run the primal simplex algorithm (since the objective is changed the solution is not dual feasible anymore; if variables out of the basis have been fixed to their lower bound, the basis is also not primal feasible anymore). After the optimization, we again fix nonbasic variables that have nonzero reduced cost. We then choose the next variable and iterate.
We stop the process once we do not find candidates or have performed a maximum number of iterations.
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
resolve | is this a resolving call (starting with feasible basis)? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 10349 of file lp.c.
References SCIP_Lp::diving, SCIP_Stat::divinglptime, SCIP_Stat::duallptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lexduallptime, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpifromscratch, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nduallps, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, SCIP_Lp::probing, SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, SCIP_Bool, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPlpGetIterations(), SCIPlpiChgBounds(), SCIPlpiChgObj(), SCIPlpiChgSides(), SCIPlpiGetBase(), SCIPlpiGetBounds(), SCIPlpiGetObj(), SCIPlpiGetSides(), SCIPlpiGetSol(), SCIPlpiIsOptimal(), SCIPlpiSolveDual(), SCIPlpiSolvePrimal(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsFeasEQ(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPsetIsInfinity(), SCIPsetIsIntegral(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.
Referenced by lpAlgorithm().
|
static |
calls LPI to perform barrier, measures time and counts iterations, gets basis feasibility status
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
crossover | should crossover be performed? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 10947 of file lp.c.
References SCIP_Stat::barrierlptime, SCIP_Lp::diving, SCIP_Stat::divinglptime, SCIP_Stat::duallptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpibarrierconvtol, SCIP_Lp::lpidualfeastol, SCIP_Lp::lpifastmip, SCIP_Lp::lpifeastol, SCIP_Lp::lpifromscratch, SCIP_Lp::lpiobjlim, SCIP_Lp::lpipresolving, SCIP_Lp::lpiscaling, SCIP_Stat::nbarrierlps, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, SCIP_Lp::probing, SCIP_CALL, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPlpGetIterations(), SCIPlpiSolveBarrier(), SCIPlpWrite(), SCIPsetDebugMsg, SCIPsnprintf(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.
Referenced by lpAlgorithm().
|
static |
solves the LP with the given algorithm
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
lpalgo | LP algorithm that should be applied |
resolve | is this a resolving call (starting with feasible basis)? |
keepsol | should the old LP solution be kept if no iterations were performed? |
timelimit | pointer to store whether the time limit was hit |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 11084 of file lp.c.
References SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Lp::installing, lpalgoName(), lpBarrier(), lpDualSimplex(), SCIP_Lp::lpi, lpLexDualSimplex(), lpPrimalSimplex(), lpSetRealpar(), SCIP_Stat::maxdepth, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_LPPAR_LPTILIM, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPerrorMessage, SCIPlpiGetSolFeasibility(), SCIPlpiInfinity(), SCIPsetDebugMsg, SCIP_Stat::solvingtime, and TRUE.
Referenced by lpSolveStable().
|
static |
prints message about numerical trouble
If message has verblevel at most high and display/verblevel is not full, then the message is not printed if already MAXNUMTROUBLELPMSGS messages were printed before in the current run.
messagehdlr | message handler |
set | global SCIP settings |
stat | problem statistics |
verblevel | verbosity level of message |
formatstr | message format string |
Definition at line 11175 of file lp.c.
References MAXNUMTROUBLELPMSGS, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Stat::nnumtroublelpmsgs, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIP_VERBLEVEL_NONE, SCIPmessagePrintInfo(), and SCIPmessageVFPrintInfo().
Referenced by lpSolveStable(), SCIPlpEndDive(), and SCIPlpSolveAndEval().
|
static |
solves the LP with the given LP algorithm, and tries to resolve numerical problems
lp | current LP data |
set | global SCIP settings |
messagehdlr | message handler |
stat | problem statistics |
prob | problem data |
lpalgo | LP algorithm that should be applied |
itlim | maximal number of LP iterations to perform in first LP calls (before solving from scratch), or -1 for no limit |
harditlim | maximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit |
resolve | is this a resolving call (starting with feasible basis)? |
fastmip | which FASTMIP setting of LP solver should be used? |
tightprimfeastol | should a tighter primal feasibility tolerance be used? |
tightdualfeastol | should a tighter dual feasibility tolerance be used? |
fromscratch | should the LP be solved from scratch without using current basis? |
keepsol | should the old LP solution be kept if no iterations were performed? |
timelimit | pointer to store whether the time limit was hit |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 11230 of file lp.c.
References SCIP_Lp::cutoffbound, SCIP_Lp::diving, FALSE, FEASTOLTIGHTFAC, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjvalinf, lpalgoName(), lpAlgorithm(), lpCopyIntegrality(), SCIP_Lp::lpi, SCIP_Lp::lpihaspolishing, lpNumericalTroubleMessage(), lpSetBarrierconvtol(), lpSetConditionLimit(), lpSetDualfeastol(), lpSetFastmip(), lpSetFeastol(), lpSetFromscratch(), lpSetIterationLimit(), lpSetLPInfo(), lpSetObjlim(), lpSetPresolving(), lpSetPricingChar(), lpSetRandomseed(), lpSetRefactorInterval(), lpSetRowrepswitch(), lpSetScaling(), lpSetSolutionPolishing(), lpSetThreads(), lpSetTiming(), SCIP_Stat::nnodes, SCIP_Lp::probing, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIPerrorMessage, SCIPlpiIgnoreInstability(), SCIPlpiIsIterlimExc(), SCIPlpiIsStable(), SCIPsetBarrierconvtol(), SCIPsetDualfeastol(), SCIPsetInitializeRandomSeed(), SCIPsetIsInfinity(), SCIPsetLpfeastol(), SCIP_Lp::strongbranchprobing, TRUE, and SCIP_Lp::updateintegrality.
Referenced by lpSolve().
|
static |
adjust the LP objective value if its greater/less than +/- SCIPsetInfinity()
lp | current LP data |
set | global SCIP settings |
messagehdlr | message handler |
Definition at line 11645 of file lp.c.
References SCIP_Lp::adjustlpval, SCIP_Lp::lpobjval, SCIPmessagePrintWarning(), SCIPsetInfinity(), SCIPsetIsInfinity(), and TRUE.
Referenced by lpSolve().
|
static |
solves the LP with the given algorithm and evaluates return status
lp | current LP data |
set | global SCIP settings |
messagehdlr | message handler |
stat | problem statistics |
prob | problem data |
lpalgo | LP algorithm that should be applied |
resolveitlim | maximal number of LP iterations to perform in resolving calls, or -1 for no limit |
harditlim | maximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit |
needprimalray | if the LP is unbounded, do we need a primal ray? |
needdualray | if the LP is infeasible, do we need a dual ray? |
resolve | is this a resolving call (starting with feasible basis)? |
fastmip | which FASTMIP setting of LP solver should be used? |
tightprimfeastol | should a tighter primal feasibility tolerance be used? |
tightdualfeastol | should a tighter dual feasibility tolerance be used? |
fromscratch | should the LP be solved from scratch without using current basis? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 11676 of file lp.c.
References adjustLPobjval(), checkLinks, SCIP_Lp::cutoffbound, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::lastlpalgo, lpalgoName(), lpCutoffDisabled, SCIP_Lp::lpi, SCIP_Lp::lpiobjlim, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, lpSolveStable(), SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_LPERROR, SCIP_LPSOLSTAT_ERROR, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPerrorMessage, SCIPlpiExistsPrimalRay(), SCIPlpiGetInternalStatus(), SCIPlpiGetObjval(), SCIPlpiHasDualRay(), SCIPlpiHasPrimalRay(), SCIPlpiIsDualFeasible(), SCIPlpiIsIterlimExc(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalFeasible(), SCIPlpiIsPrimalInfeasible(), SCIPlpiIsTimelimExc(), SCIPmessagePrintVerbInfo(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIP_Lp::solved, and TRUE.
Referenced by lpFlushAndSolve(), and SCIPlpSolveAndEval().
|
static |
flushes the LP and solves it with the primal or dual simplex algorithm, depending on the current basis feasibility
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
messagehdlr | message handler |
stat | problem statistics |
prob | problem data |
eventqueue | event queue |
resolveitlim | maximal number of LP iterations to perform in resolving calls, or -1 for no limit |
harditlim | maximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit |
needprimalray | if the LP is unbounded, do we need a primal ray? |
needdualray | if the LP is infeasible, do we need a dual ray? |
fastmip | which FASTMIP setting of LP solver should be used? |
tightprimfeastol | should a tighter primal feasibility tolerance be used? |
tightdualfeastol | should a tighter dual feasibility tolerance be used? |
fromscratch | should the LP be solved from scratch without using current basis? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 11847 of file lp.c.
References SCIP_Lp::dualfeasible, SCIP_Lp::flushaddedcols, SCIP_Lp::flushdeletedcols, lpSolve(), SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIPerrorMessage, SCIPlpFlush(), SCIPsetDebugMsg, SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by SCIPlpSolveAndEval().
checks if the lazy bounds are valid
lp | LP data |
set | global SCIP settings |
Definition at line 11936 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Lp::nlazycols, SCIP_Col::primsol, SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), and SCIPsetIsInfinity().
Referenced by SCIPlpSolveAndEval().
|
static |
marks all lazy columns to be changed; this is needed for reloading/removing bounds of these columns before and after diving
lp | LP data |
set | global SCIP settings |
Definition at line 11963 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::divinglazyapplied, SCIP_Col::flushedlb, SCIP_Col::flushedub, insertColChgcols(), SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Col::lb, SCIP_Col::lbchanged, SCIP_Lp::lpi, SCIP_Lp::nlazycols, SCIP_CALL, SCIP_OKAY, SCIPlpiInfinity(), SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), TRUE, SCIP_Col::ub, and SCIP_Col::ubchanged.
Referenced by SCIPlpEndDive(), and SCIPlpSolveAndEval().
returns the iteration limit for an LP resolving call
set | global SCIP settings |
stat | dynamic problem statistics |
itlim | hard iteration limit |
Definition at line 12025 of file lp.c.
References MAX, SCIP_Stat::nlpiterations, SCIP_Stat::nlps, SCIP_Stat::nrootlpiterations, SCIP_Stat::nrootlps, and SCIP_Real.
Referenced by SCIPlpSolveAndEval().
SCIP_RETCODE SCIPlpSolveAndEval | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_PROB * | prob, | ||
SCIP_Longint | itlim, | ||
SCIP_Bool | limitresolveiters, | ||
SCIP_Bool | aging, | ||
SCIP_Bool | keepsol, | ||
SCIP_Bool * | lperror | ||
) |
solves the LP with simplex algorithm, and copy the solution into the column's data
lp | LP data |
set | global SCIP settings |
messagehdlr | message handler |
blkmem | block memory buffers |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
prob | problem data |
itlim | maximal number of LP iterations to perform, or -1 for no limit |
limitresolveiters | should LP iterations for resolving calls be limited? (limit is computed within the method w.r.t. the average LP iterations) |
aging | should aging and removal of obsolete cols/rows be applied? |
keepsol | should the old LP solution be kept if no iterations were performed? |
lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 12045 of file lp.c.
References checkLazyBounds(), SCIP_Lp::cutoffbound, SCIP_Lp::diving, SCIP_Lp::divinglazyapplied, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushaddedcols, SCIP_Lp::flushdeletedcols, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::lastlpalgo, lpCutoffDisabled, lpFlushAndSolve(), lpGetResolveItlim(), SCIP_Lp::lpi, SCIP_Lp::lpifromscratch, SCIP_Lp::lpihasfastmip, SCIP_Lp::lpiobjlim, lpNumericalTroubleMessage(), SCIP_Lp::lpobjval, lpSetFromscratch(), SCIP_Lp::lpsolstat, lpSolve(), SCIP_Stat::nclockskipsleft, SCIP_Lp::ncols, SCIP_Lp::nlazycols, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, SCIP_Prob::nvars, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Lp::probing, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_Longint, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_LPERROR, SCIP_LPSOLSTAT_ERROR, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIP_STATUS_TIMELIMIT, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIPerrorMessage, SCIPlpFlush(), SCIPlpGetDualfarkas(), SCIPlpGetLPI(), SCIPlpGetSol(), SCIPlpGetSolstat(), SCIPlpGetUnboundedSol(), SCIPlpiGetObjval(), SCIPlpiHasDualRay(), SCIPlpiInfinity(), SCIPlpiIsObjlimExc(), SCIPlpRemoveNewObsoletes(), SCIPlpUpdateAges(), SCIPmessagePrintVerbInfo(), SCIPmessagePrintWarning(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPsetGetCharParam(), SCIPsetInfinity(), SCIPsetIsFeasNegative(), SCIPsetIsGE(), SCIPsetIsLT(), SCIPsetSetCharParam(), SCIPsolveIsStopped(), SCIP_Lp::solved, SCIP_Stat::status, TRUE, and updateLazyBounds().
Referenced by focusnodeToFork(), priceAndCutLoop(), SCIPlpEndDive(), SCIPpriceLoop(), SCIPsolveDiveLP(), SCIPtreeEndProbing(), separationRoundResolveLP(), solveNodeInitialLP(), solveNodeLP(), and solveProbingLP().
SCIP_LPSOLSTAT SCIPlpGetSolstat | ( | SCIP_LP * | lp | ) |
gets solution status of current LP
lp | current LP data |
Definition at line 12612 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpsolstat, SCIP_LPSOLSTAT_NOTSOLVED, and SCIP_Lp::solved.
Referenced by branchcandCalcLPCands(), conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), enforceConstraints(), focusnodeToFork(), forkCreate(), forkFree(), nodeToLeaf(), priceAndCutLoop(), propAndSolve(), SCIPconflictAnalyzeLP(), SCIPcutpoolAddNewRow(), SCIPgetLPBranchCands(), SCIPgetLPSolstat(), SCIPgetNLPBranchCands(), SCIPgetNPrioLPBranchCands(), SCIPlpCleanupAll(), SCIPlpCleanupNew(), SCIPlpEndDive(), SCIPlpGetSol(), SCIPlpRemoveAllObsoletes(), SCIPlpRemoveNewObsoletes(), SCIPlpSetCutoffbound(), SCIPlpSolveAndEval(), SCIPlpStartDive(), SCIPnodeCutoff(), SCIPnodeFocus(), SCIPnodepqBound(), SCIPpriceLoop(), SCIPpricerExec(), SCIPpricestoreAddProbVars(), SCIPprobUpdateBestRootSol(), SCIPreoptCheckCutoff(), SCIPsolveCIP(), SCIPsolveDiveLP(), SCIPtreeCutoff(), SCIPtreeEndProbing(), SCIPtreeStartProbing(), separationRoundLP(), solveNode(), solveNodeInitialLP(), solveNodeLP(), solveProbingLP(), updateEstimate(), updatePrimalRay(), and updatePseudocost().
gets objective value of current LP
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 12628 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Lp::looseobjvalinf, SCIP_Lp::lpobjval, SCIP_Lp::nloosevars, recomputeLooseObjectiveValue(), SCIP_INVALID, SCIPsetInfinity(), SCIPsetIsInfinity(), and SCIP_Lp::solved.
Referenced by addCurrentSolution(), analyzeStrongbranch(), enforceConstraints(), forkCreate(), forkFree(), priceAndCutLoop(), propAndSolve(), SCIPcolGetStrongbranch(), SCIPcolGetStrongbranches(), SCIPgetLPObjval(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPlpSetCutoffbound(), SCIPnodeUpdateLowerboundLP(), SCIPprobUpdateBestRootSol(), SCIPsolLinkLPSol(), SCIPsolveCIP(), solveNode(), solveNodeInitialLP(), solveNodeLP(), and updatePseudocost().
gets part of objective value of current LP that results from COLUMN variables only
lp | current LP data |
Definition at line 12656 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpobjval, SCIP_INVALID, and SCIP_Lp::solved.
Referenced by SCIPgetLPColumnObjval(), SCIPlpStoreRootObjval(), and SCIPprobStoreRootSol().
gets part of objective value of current LP that results from LOOSE variables only
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 12667 of file lp.c.
References SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, SCIP_INVALID, SCIPsetInfinity(), and SCIP_Lp::solved.
Referenced by performStrongbranchWithPropagation(), SCIPgetLPLooseObjval(), SCIPlpStoreRootObjval(), and SCIPsolLinkLPSol().
remembers the current LP objective value as root solution value
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 12687 of file lp.c.
References SCIP_Lp::rootlooseobjval, SCIP_Lp::rootlpobjval, SCIPlpGetColumnObjval(), and SCIPlpGetLooseObjval().
Referenced by SCIPprobStoreRootSol().
void SCIPlpInvalidateRootObjval | ( | SCIP_LP * | lp | ) |
invalidates the root LP solution value
lp | current LP data |
Definition at line 12700 of file lp.c.
References SCIP_Lp::rootlooseobjval, SCIP_Lp::rootlpobjval, and SCIP_INVALID.
Referenced by freeReoptSolve(), and freeSolve().
recomputes local and global pseudo objective values
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 12711 of file lp.c.
References SCIP_Lp::glbpseudoobjval, SCIP_Lp::glbpseudoobjvalid, SCIP_Lp::glbpseudoobjvalinf, SCIP_Prob::nvars, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, SCIP_Lp::relglbpseudoobjval, SCIP_Lp::relpseudoobjval, SCIP_Real, SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), TRUE, and SCIP_Prob::vars.
Referenced by prepareReoptimization(), and treeBacktrackProbing().
gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective function) global bound
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 12779 of file lp.c.
References SCIP_Lp::glbpseudoobjval, SCIP_Lp::glbpseudoobjvalid, SCIP_Lp::glbpseudoobjvalinf, recomputeGlbPseudoObjectiveValue(), SCIPsetInfinity(), and SCIPsetIsInfinity().
Referenced by SCIPgetGlobalPseudoObjval(), and solveNode().
gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the objective function) local bound
lp | current LP data |
set | global SCIP settings |
prob | problem data |
Definition at line 12811 of file lp.c.
References SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, recomputePseudoObjectiveValue(), SCIPsetInfinity(), and SCIPsetIsInfinity().
Referenced by applyBounding(), enforceConstraints(), SCIPconflictAnalyzePseudo(), SCIPgetPseudoObjval(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPprimalHeuristics(), SCIPsolLinkPseudoSol(), and solveNode().
SCIP_Real SCIPlpGetModifiedPseudoObjval | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_PROB * | prob, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldbound, | ||
SCIP_Real | newbound, | ||
SCIP_BOUNDTYPE | boundtype | ||
) |
gets pseudo objective value, if a bound of the given variable would be modified in the given way
lp | current LP data |
set | global SCIP settings |
prob | problem data |
var | problem variable |
oldbound | old value for bound |
newbound | new value for bound |
boundtype | type of bound: lower or upper bound |
Definition at line 12841 of file lp.c.
References getFinitePseudoObjval(), SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_Real, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetBestBoundType(), and SCIPvarGetObj().
Referenced by SCIPnodeAddBoundinfer().
SCIP_Real SCIPlpGetModifiedProvedPseudoObjval | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldbound, | ||
SCIP_Real | newbound, | ||
SCIP_BOUNDTYPE | boundtype | ||
) |
gets pseudo objective value, if a bound of the given variable would be modified in the given way; perform calculations with interval arithmetic to get an exact lower bound
lp | current LP data |
set | global SCIP settings |
var | problem variable |
oldbound | old value for bound |
newbound | new value for bound |
boundtype | type of bound: lower or upper bound |
Definition at line 12881 of file lp.c.
References SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_Real, SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSub(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetBestBoundType(), and SCIPvarGetObj().
Referenced by SCIPnodeAddBoundinfer().
|
static |
compute the objective delta due the new objective coefficient
set | global SCIP settings |
oldobj | old objective value of variable |
newobj | new objective value of variable |
lb | lower bound of variable |
ub | upper bound of variable |
deltaval | pointer to store the delta value |
deltainf | pointer to store the number of variables with infinite best bound |
Definition at line 12939 of file lp.c.
References REALABS, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsNegative(), and SCIPsetIsPositive().
Referenced by SCIPlpUpdateVarObj().
|
static |
compute the objective delta due the new lower bound
set | global SCIP settings |
obj | objective value of variable |
oldlb | old lower bound of variable |
newlb | new lower bound of variable |
deltaval | pointer to store the delta value |
deltainf | pointer to store the number of variables with infinite best bound |
Definition at line 13071 of file lp.c.
References REALABS, SCIPsetIsInfinity(), and SCIPsetIsPositive().
Referenced by SCIPlpUpdateVarLb(), and SCIPlpUpdateVarLbGlobal().
|
static |
compute the objective delta due the new upper bound
set | global SCIP settings |
obj | objective value of variable |
oldub | old upper bound of variable |
newub | new upper bound of variable |
deltaval | pointer to store the delta value |
deltainf | pointer to store the number of variables with infinite best bound |
Definition at line 13112 of file lp.c.
References REALABS, SCIPsetIsInfinity(), and SCIPsetIsNegative().
Referenced by SCIPlpUpdateVarUb(), and SCIPlpUpdateVarUbGlobal().
|
static |
updates current pseudo and loose objective values for a change in a variable's objective value or bounds
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
deltaval | delta value in the objective function |
deltainf | delta value for the number of variables with infinite best bound |
local | should the local pseudo objective value be updated? |
loose | should the loose objective value be updated? |
global | should the global pseudo objective value be updated? |
Definition at line 13153 of file lp.c.
References FALSE, SCIP_Lp::glbpseudoobjval, SCIP_Lp::glbpseudoobjvalid, SCIP_Lp::glbpseudoobjvalinf, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Lp::looseobjvalinf, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_Lp::relglbpseudoobjval, SCIP_Lp::rellooseobjval, SCIP_Lp::relpseudoobjval, SCIP_VARSTATUS_LOOSE, SCIPsetIsUpdateUnreliable(), SCIPvarGetStatus(), and TRUE.
Referenced by lpUpdateVarColumn(), lpUpdateVarLoose(), SCIPlpUpdateVarLb(), SCIPlpUpdateVarLbGlobal(), SCIPlpUpdateVarObj(), SCIPlpUpdateVarUb(), and SCIPlpUpdateVarUbGlobal().
|
static |
updates current pseudo and loose objective values for a change in a variable's objective value or bounds; pseudo objective value is calculated with interval arithmetics to get a proved lower bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
oldobj | old objective value of variable |
oldlb | old objective value of variable |
oldub | old objective value of variable |
newobj | new objective value of variable |
newlb | new objective value of variable |
newub | new objective value of variable |
Definition at line 13235 of file lp.c.
References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPerrorMessage, SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSub(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPvarGetProbindex(), and SCIPvarGetStatus().
Referenced by SCIPlpUpdateVarLb(), SCIPlpUpdateVarObj(), and SCIPlpUpdateVarUb().
SCIP_RETCODE SCIPlpUpdateVarObj | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldobj, | ||
SCIP_Real | newobj | ||
) |
updates current pseudo and loose objective value for a change in a variable's objective value
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
oldobj | old objective value of variable |
newobj | new objective value of variable |
Definition at line 13348 of file lp.c.
References FALSE, getObjvalDeltaObj(), lpUpdateObjval(), lpUpdateVarProved(), SCIP_Lp::probing, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsEQ(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by SCIPeventProcess(), SCIPlpUpdateAddVar(), and SCIPlpUpdateDelVar().
SCIP_RETCODE SCIPlpUpdateVarLbGlobal | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldlb, | ||
SCIP_Real | newlb | ||
) |
updates current root pseudo objective value for a global change in a variable's lower bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
oldlb | old lower bound of variable |
newlb | new lower bound of variable |
Definition at line 13402 of file lp.c.
References FALSE, getObjvalDeltaLb(), lpUpdateObjval(), SCIP_OKAY, SCIP_Real, SCIPsetIsEQ(), SCIPsetIsPositive(), SCIPvarGetObj(), and TRUE.
Referenced by SCIPeventProcess().
SCIP_RETCODE SCIPlpUpdateVarLb | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldlb, | ||
SCIP_Real | newlb | ||
) |
updates current pseudo and loose objective value for a change in a variable's lower bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
oldlb | old lower bound of variable |
newlb | new lower bound of variable |
Definition at line 13430 of file lp.c.
References FALSE, getObjvalDeltaLb(), lpUpdateObjval(), lpUpdateVarProved(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsEQ(), SCIPsetIsPositive(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.
Referenced by SCIPeventProcess().
SCIP_RETCODE SCIPlpUpdateVarUbGlobal | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldub, | ||
SCIP_Real | newub | ||
) |
updates current root pseudo objective value for a global change in a variable's upper bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
oldub | old upper bound of variable |
newub | new upper bound of variable |
Definition at line 13471 of file lp.c.
References FALSE, getObjvalDeltaUb(), lpUpdateObjval(), SCIP_OKAY, SCIP_Real, SCIPsetIsEQ(), SCIPsetIsNegative(), SCIPvarGetObj(), and TRUE.
Referenced by SCIPeventProcess().
SCIP_RETCODE SCIPlpUpdateVarUb | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Real | oldub, | ||
SCIP_Real | newub | ||
) |
updates current pseudo objective value for a change in a variable's upper bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed |
oldub | old upper bound of variable |
newub | new upper bound of variable |
Definition at line 13498 of file lp.c.
References FALSE, getObjvalDeltaUb(), lpUpdateObjval(), lpUpdateVarProved(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsEQ(), SCIPsetIsNegative(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), and TRUE.
Referenced by SCIPeventProcess().
SCIP_RETCODE SCIPlpUpdateAddVar | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var | ||
) |
informs LP, that given variable was added to the problem
lp | current LP data |
set | global SCIP settings |
var | variable that is now a LOOSE problem variable |
Definition at line 13539 of file lp.c.
References SCIP_Lp::nloosevars, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpUpdateVarObj(), SCIPvarGetObj(), SCIPvarGetProbindex(), and SCIPvarGetStatus().
Referenced by SCIPprobAddVar().
SCIP_RETCODE SCIPlpUpdateDelVar | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var | ||
) |
informs LP, that given variable is to be deleted from the problem
lp | current LP data |
set | global SCIP settings |
var | variable that will be deleted from the problem |
Definition at line 13560 of file lp.c.
References SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpDecNLoosevars(), SCIPlpUpdateVarObj(), SCIPvarGetObj(), SCIPvarGetProbindex(), and SCIPvarGetStatus().
Referenced by SCIPprobPerformVarDeletions().
|
static |
informs LP, that given formerly loose problem variable is now a column variable
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed from LOOSE to COLUMN |
Definition at line 13584 of file lp.c.
References FALSE, SCIP_Lp::looseobjvalinf, lpUpdateObjval(), SCIP_Lp::nloosevars, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPlpDecNLoosevars(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.
Referenced by SCIPlpUpdateVarColumn().
|
static |
informs LP, that given formerly loose problem variable is now a column variable pseudo objective value is calculated with interval arithmetics to get a proved lower bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed from LOOSE to COLUMN |
Definition at line 13631 of file lp.c.
References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSub(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().
Referenced by SCIPlpUpdateVarColumn().
SCIP_RETCODE SCIPlpUpdateVarColumn | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var | ||
) |
informs LP, that given formerly loose problem variable is now a column variable
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed from LOOSE to COLUMN |
Definition at line 13696 of file lp.c.
References lpUpdateVarColumn(), lpUpdateVarColumnProved(), SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPvarColumn().
|
static |
informs LP, that given formerly column problem variable is now again a loose variable
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed from COLUMN to LOOSE |
Definition at line 13718 of file lp.c.
References FALSE, SCIP_Lp::looseobjvalinf, lpUpdateObjval(), SCIP_Lp::nloosevars, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_LOOSE, SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.
Referenced by SCIPlpUpdateVarLoose().
|
static |
informs LP, that given formerly column problem variable is now again a loose variable pseudo objective value is calculated with interval arithmetics to get a proved lower bound
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed from COLUMN to LOOSE |
Definition at line 13763 of file lp.c.
References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_LOOSE, SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().
Referenced by SCIPlpUpdateVarLoose().
SCIP_RETCODE SCIPlpUpdateVarLoose | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_VAR * | var | ||
) |
informs LP, that given formerly column problem variable is now again a loose variable
lp | current LP data |
set | global SCIP settings |
var | problem variable that changed from COLUMN to LOOSE |
Definition at line 13820 of file lp.c.
References lpUpdateVarLoose(), lpUpdateVarLooseProved(), SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPvarLoose().
void SCIPlpDecNLoosevars | ( | SCIP_LP * | lp | ) |
decrease the number of loose variables by one
lp | current LP data |
Definition at line 13841 of file lp.c.
References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, and SCIP_Lp::nloosevars.
Referenced by lpUpdateVarColumn(), SCIPlpUpdateDelVar(), SCIPvarFix(), and SCIPvarMultiaggregate().
SCIP_RETCODE SCIPlpGetSol | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_Bool * | primalfeasible, | ||
SCIP_Bool * | dualfeasible | ||
) |
stores the LP solution in the columns and rows
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
primalfeasible | pointer to store whether the solution is primal feasible, or NULL |
dualfeasible | pointer to store whether the solution is dual feasible, or NULL |
Definition at line 13859 of file lp.c.
References SCIP_Row::activity, SCIP_Col::basisstatus, SCIP_Row::basisstatus, BMSclearMemoryArray, SCIP_Row::constant, SCIP_Row::dualsol, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Col::lb, SCIP_Row::lhs, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::lpobjval, MAX, SCIP_Col::maxprimsol, SCIP_Col::minprimsol, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Col::obj, SCIP_Col::primsol, SCIP_Col::redcost, SCIP_BASESTAT_BASIC, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LPALGO_BARRIER, SCIP_OKAY, SCIP_Real, SCIPlpGetSolstat(), SCIPlpiGetBase(), SCIPlpiGetSol(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasNegative(), SCIPsetIsDualfeasPositive(), SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsInfinity(), SCIPvarGetName(), SCIP_Lp::solisbasic, SCIP_Lp::solved, TRUE, SCIP_Row::validactivitylp, SCIP_Col::validredcostlp, and SCIP_Lp::validsollp.
Referenced by SCIPlpSolveAndEval(), and SCIPlpStartDive().
SCIP_RETCODE SCIPlpGetUnboundedSol | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_Bool * | primalfeasible, | ||
SCIP_Bool * | rayfeasible | ||
) |
stores LP solution with infinite objective value in the columns and rows
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
primalfeasible | pointer to store whether the solution is primal feasible, or NULL |
rayfeasible | pointer to store whether the primal ray is a feasible unboundedness proof, or NULL |
Definition at line 14153 of file lp.c.
References SCIP_Row::activity, SCIP_Row::constant, SCIP_Row::dualsol, FALSE, SCIP_Lp::flushed, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, MAX, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Col::obj, SCIP_Col::primsol, SCIP_Col::redcost, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_LPERROR, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPlpiGetPrimalRay(), SCIPlpiGetSol(), SCIPlpiHasPrimalRay(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIP_Lp::solved, TRUE, SCIP_Row::validactivitylp, SCIP_Col::validredcostlp, and SCIP_Lp::validsollp.
Referenced by SCIPlpSolveAndEval(), and SCIPlpStartDive().
SCIP_RETCODE SCIPlpGetPrimalRay | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_Real * | ray | ||
) |
returns primal ray proving the unboundedness of the current LP
lp | current LP data |
set | global SCIP settings |
ray | array for storing primal ray values, they are stored w.r.t. the problem index of the variables, so the size of this array should be at least number of active variables (all entries have to be initialized to 0 before) |
Definition at line 14326 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_Lp::nlpicols, SCIP_CALL, SCIP_LPERROR, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPlpiGetPrimalRay(), SCIPlpiHasPrimalRay(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPvarGetProbindex(), SCIP_Lp::solved, and SCIP_Col::var.
Referenced by updatePrimalRay().
SCIP_RETCODE SCIPlpGetDualfarkas | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat | ||
) |
stores the dual Farkas multipliers for infeasibility proof in rows
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
Definition at line 14383 of file lp.c.
References SCIP_Row::activity, SCIP_Row::basisstatus, SCIP_Row::dualfarkas, SCIP_Row::dualsol, SCIP_Lp::flushed, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::lpsolstat, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Col::primsol, SCIP_Col::redcost, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPlpiGetDualfarkas(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIP_Lp::solved, SCIP_Row::validactivitylp, SCIP_Col::validfarkaslp, SCIP_Lp::validfarkaslp, and SCIP_Col::validredcostlp.
Referenced by SCIPlpSolveAndEval(), and SCIPlpStartDive().
SCIP_RETCODE SCIPlpGetIterations | ( | SCIP_LP * | lp, |
int * | iterations | ||
) |
get number of iterations used in last LP solve
lp | current LP data |
iterations | pointer to store the iteration count |
Definition at line 14449 of file lp.c.
References SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, and SCIPlpiGetIterations().
Referenced by lpBarrier(), lpDualSimplex(), lpLexDualSimplex(), and lpPrimalSimplex().
SCIP_RETCODE SCIPlpUpdateAges | ( | SCIP_LP * | lp, |
SCIP_STAT * | stat | ||
) |
increases age of columns with solution value 0.0 and basic rows with activity not at its bounds, resets age of non-zero columns and sharp rows
lp | current LP data |
stat | problem statistics |
Definition at line 14464 of file lp.c.
References SCIP_Row::activeinlpcounter, SCIP_Col::age, SCIP_Row::age, SCIP_Lp::cols, SCIP_Lp::flushed, SCIP_Stat::lpcount, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Row::nlpsaftercreation, SCIP_Lp::nrows, SCIP_Lp::rows, SCIP_OKAY, SCIPdebugMessage, SCIP_Lp::solved, and SCIP_Lp::validsollp.
Referenced by SCIPlpSolveAndEval().
|
static |
lp | current LP data |
set | global SCIP settings |
coldstat | deletion status of columns: 1 if column should be deleted, 0 if not |
Definition at line 14524 of file lp.c.
References checkLazyColArray(), checkLinks, SCIP_Lp::cols, colUpdateDelLP(), SCIP_Lp::diving, FALSE, SCIP_Lp::flushed, SCIP_Lp::lazycols, SCIP_Col::lpdepth, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpifirstchgcol, SCIP_Col::lpipos, SCIP_Lp::lpobjval, SCIP_Col::lppos, SCIP_Lp::lpsolstat, lpUpdateObjNorms(), markColDeleted(), SCIP_Lp::nchgcols, SCIP_Lp::ncols, SCIP_Lp::nlazycols, SCIP_Lp::nlpicols, SCIP_Lp::nremovablecols, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Col::removable, SCIP_CALL, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiDelColset(), SCIP_Lp::solved, and SCIP_Col::unchangedobj.
Referenced by lpCleanupCols(), and lpRemoveObsoleteCols().
|
static |
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
eventqueue | event queue |
eventfilter | global event filter |
rowdstat | deletion status of rows: 1 if row should be deleted, 0 if not |
Definition at line 14623 of file lp.c.
References checkLinks, SCIP_Lp::diving, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, SCIP_EventFilter::eventmask, FALSE, SCIP_Lp::flushed, SCIP_EventFilter::len, SCIP_Row::lpdepth, SCIP_Lp::lpi, SCIP_Lp::lpifirstchgrow, SCIP_Row::lpipos, SCIP_Lp::lpirows, SCIP_Lp::lpobjval, SCIP_Row::lppos, SCIP_Lp::lpsolstat, markRowDeleted(), SCIP_Lp::nchgrows, SCIP_Lp::nlpirows, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, SCIP_Row::removable, SCIP_Lp::rows, rowUpdateDelLP(), SCIP_CALL, SCIP_EVENTTYPE_ROWDELETEDLP, SCIP_INVALID, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPeventCreateRowDeletedLP(), SCIPeventqueueAdd(), SCIPlpiDelRowset(), SCIProwRelease(), SCIProwUnlock(), and SCIP_Lp::solved.
Referenced by lpCleanupRows(), lpRemoveObsoleteRows(), and SCIPlpRemoveRedundantRows().
|
static |
removes all non-basic columns, that are too old, beginning with the given firstcol
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
firstcol | first column to check for clean up |
Definition at line 14721 of file lp.c.
References SCIP_Col::age, SCIP_Col::basisstatus, BMSclearMemoryArray, SCIP_Lp::cols, SCIP_Lp::diving, SCIP_Lp::flushed, lpDelColset(), SCIP_Lp::lpicols, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Stat::nnodes, SCIP_Lp::nremovablecols, SCIP_Col::obsoletenode, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPcolGetBestBound(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsZero(), SCIPvarGetName(), and SCIP_Lp::solisbasic.
Referenced by SCIPlpRemoveAllObsoletes(), and SCIPlpRemoveNewObsoletes().
|
static |
removes all basic rows, that are too old, beginning with the given firstrow
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
firstrow | first row to check for clean up |
Definition at line 14797 of file lp.c.
References SCIP_Row::age, SCIP_Row::basisstatus, BMSclearMemoryArray, SCIP_Lp::diving, SCIP_Lp::flushed, lpDelRowset(), SCIP_Lp::lpirows, SCIP_Lp::nlpirows, SCIP_Stat::nnodes, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, SCIP_Row::obsoletenode, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, and SCIP_Lp::solisbasic.
Referenced by SCIPlpRemoveAllObsoletes(), and SCIPlpRemoveNewObsoletes().
SCIP_RETCODE SCIPlpRemoveNewObsoletes | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter | ||
) |
removes all non-basic columns and basic rows in the part of the LP created at the current node, that are too old
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
Definition at line 14873 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, lpRemoveObsoleteCols(), lpRemoveObsoleteRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, and SCIP_Lp::solved.
Referenced by SCIPlpSolveAndEval().
SCIP_RETCODE SCIPlpRemoveAllObsoletes | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter | ||
) |
removes all non-basic columns and basic rows in whole LP, that are too old
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
Definition at line 14904 of file lp.c.
References SCIP_Lp::diving, lpRemoveObsoleteCols(), lpRemoveObsoleteRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, and SCIP_Lp::solved.
Referenced by focusnodeToFork().
|
static |
removes all non-basic columns at 0.0 beginning with the given firstcol
lp | current LP data |
set | global SCIP settings |
stat | problem statistics |
firstcol | first column to check for clean up |
Definition at line 14935 of file lp.c.
References BMSclearMemoryArray, SCIP_Lp::cols, SCIP_Lp::diving, SCIP_Lp::flushed, SCIP_Stat::lpcount, lpDelColset(), SCIP_Lp::lpicols, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nremovablecols, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPcolGetBestBound(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsZero(), SCIP_Lp::solisbasic, and SCIP_Lp::validsollp.
Referenced by SCIPlpCleanupAll(), and SCIPlpCleanupNew().
|
static |
removes all basic rows beginning with the given firstrow
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
firstrow | first row to check for clean up |
Definition at line 15002 of file lp.c.
References BMSclearMemoryArray, SCIP_Lp::diving, SCIP_Lp::flushed, SCIP_Stat::lpcount, lpDelRowset(), SCIP_Lp::lpirows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIP_Lp::solisbasic, and SCIP_Lp::validsollp.
Referenced by SCIPlpCleanupAll(), and SCIPlpCleanupNew().
SCIP_RETCODE SCIPlpCleanupNew | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_Bool | root | ||
) |
removes all non-basic columns at 0.0 and basic rows in the part of the LP created at the current node
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
root | are we at the root node? |
Definition at line 15073 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, SCIP_Lp::lastlpalgo, lpCleanupCols(), lpCleanupRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by focusnodeToFork().
SCIP_RETCODE SCIPlpCleanupAll | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_Bool | root | ||
) |
removes all non-basic columns at 0.0 and basic rows in the whole LP
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
root | are we at the root node? |
Definition at line 15112 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::lastlpalgo, lpCleanupCols(), lpCleanupRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, SCIP_Lp::solisbasic, and SCIP_Lp::solved.
Referenced by focusnodeToFork().
SCIP_RETCODE SCIPlpRemoveRedundantRows | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter | ||
) |
removes all redundant rows that were added at the current node
lp | current LP data |
blkmem | block memory buffers |
set | global SCIP settings |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
Definition at line 15151 of file lp.c.
References SCIP_Row::basisstatus, BMSclearMemoryArray, SCIP_Lp::diving, SCIP_Lp::firstnewrow, SCIP_Lp::flushed, SCIP_Stat::lpcount, lpDelRowset(), SCIP_Lp::lpirows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Lp::nrows, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIProwGetLhs(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsRedundant(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIP_Lp::solisbasic, and SCIP_Lp::validsollp.
Referenced by priceAndCutLoop().
SCIP_RETCODE SCIPlpStartDive | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat | ||
) |
initiates LP diving
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
Definition at line 15225 of file lp.c.
References SCIP_Lp::cols, colStoreSolVals(), SCIP_Lp::divelpistate, SCIP_Lp::divelpwasdualchecked, SCIP_Lp::divelpwasdualfeas, SCIP_Lp::divelpwasprimchecked, SCIP_Lp::divelpwasprimfeas, SCIP_Lp::divenolddomchgs, SCIP_Lp::diving, SCIP_Lp::divinglpiitlim, SCIP_Stat::domchgcount, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_LpSolVals::lpsolstat, SCIP_Lp::lpsolstat, lpStoreSolVals(), SCIP_Lp::ncols, SCIP_Lp::ndivechgsides, SCIP_Lp::ndivingrows, SCIP_Lp::nrows, SCIP_Col::obj, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Lp::probing, SCIP_Lp::rows, rowStoreSolVals(), SCIP_Bool, SCIP_CALL, SCIP_LPPAR_LPITLIM, SCIP_LPSOLSTAT_ERROR, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPlpGetDualfarkas(), SCIPlpGetSol(), SCIPlpGetSolstat(), SCIPlpGetUnboundedSol(), SCIPlpiGetIntpar(), SCIPlpiGetState(), SCIPsetDebugMsg, SCIPsetIsFeasEQ(), SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIP_Lp::solved, SCIP_Lp::storedsolvals, TRUE, SCIP_Col::ub, SCIP_Lp::validsollp, and SCIP_Col::var.
Referenced by SCIPstartDive().
SCIP_RETCODE SCIPlpEndDive | ( | SCIP_LP * | lp, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_PROB * | prob, | ||
SCIP_VAR ** | vars, | ||
int | nvars | ||
) |
quits LP diving and resets bounds and objective values of columns to the current node's values
lp | current LP data |
blkmem | block memory |
set | global SCIP settings |
messagehdlr | message handler |
stat | problem statistics |
eventqueue | event queue |
eventfilter | global event filter |
prob | problem data |
vars | array with all active variables |
nvars | number of active variables |
Definition at line 15331 of file lp.c.
References colRestoreSolVals(), SCIP_Lp::cols, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidetypes, SCIP_Lp::divelpistate, SCIP_Lp::divelpwasdualchecked, SCIP_Lp::divelpwasdualfeas, SCIP_Lp::divelpwasprimchecked, SCIP_Lp::divelpwasprimfeas, SCIP_Lp::divenolddomchgs, SCIP_Lp::diving, SCIP_Lp::divinglazyapplied, SCIP_Lp::divinglpiitlim, SCIP_Lp::divingobjchg, SCIP_Stat::domchgcount, FALSE, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Stat::lpcount, SCIP_LpSolVals::lpissolved, lpNumericalTroubleMessage(), lpRestoreSolVals(), lpSetIterationLimit(), SCIP_LpSolVals::lpsolstat, SCIP_Lp::ncols, SCIP_Lp::ndivechgsides, SCIP_Lp::ndivingrows, SCIP_Lp::nlazycols, SCIP_Lp::nrows, SCIP_Col::obj, SCIP_Lp::resolvelperror, rowRestoreSolVals(), SCIP_Lp::rows, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_VARSTATUS_COLUMN, SCIP_VERBLEVEL_FULL, SCIPcolChgLb(), SCIPcolChgObj(), SCIPcolChgUb(), SCIPlpFlush(), SCIPlpFreeState(), SCIPlpGetSolstat(), SCIPlpSetState(), SCIPlpShrinkRows(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIProwChgLhs(), SCIProwChgRhs(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPstatIncrement, SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIP_Lp::storedsolvals, TRUE, SCIP_Col::ub, updateLazyBounds(), and SCIP_Col::var.
Referenced by SCIPendDive().
SCIP_RETCODE SCIPlpRecordOldRowSideDive | ( | SCIP_LP * | lp, |
SCIP_ROW * | row, | ||
SCIP_SIDETYPE | sidetype | ||
) |
records a current row side such that any change will be undone after diving
lp | LP data object |
row | row affected by the change |
sidetype | side type |
Definition at line 15513 of file lp.c.
References SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, DIVESTACKGROWFACT, SCIP_Row::lhs, SCIP_Lp::ndivechgsides, reallocDiveChgSideArrays(), SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, and SCIP_SIDETYPE_LEFT.
Referenced by SCIPchgRowLhsDive(), and SCIPchgRowRhsDive().
SCIP_RETCODE SCIPlpStartProbing | ( | SCIP_LP * | lp | ) |
informs the LP that probing mode was initiated
lp | current LP data |
Definition at line 15537 of file lp.c.
References SCIP_Lp::probing, SCIP_OKAY, SCIP_Lp::strongbranching, SCIP_Lp::strongbranchprobing, and TRUE.
Referenced by SCIPtreeStartProbing().
SCIP_RETCODE SCIPlpEndProbing | ( | SCIP_LP * | lp | ) |
informs the LP that probing mode was finished
lp | current LP data |
Definition at line 15552 of file lp.c.
References FALSE, SCIP_Lp::probing, SCIP_OKAY, SCIP_Lp::strongbranching, and SCIP_Lp::strongbranchprobing.
Referenced by SCIPtreeEndProbing().
void SCIPlpStartStrongbranchProbing | ( | SCIP_LP * | lp | ) |
informs the LP that the probing mode is now used for strongbranching
lp | current LP data |
Definition at line 15567 of file lp.c.
References SCIP_Lp::probing, SCIP_Lp::strongbranching, SCIP_Lp::strongbranchprobing, and TRUE.
Referenced by SCIPstartStrongbranch().
void SCIPlpEndStrongbranchProbing | ( | SCIP_LP * | lp | ) |
informs the LP that the probing mode is not used for strongbranching anymore
lp | current LP data |
Definition at line 15580 of file lp.c.
References FALSE, SCIP_Lp::probing, SCIP_Lp::strongbranching, and SCIP_Lp::strongbranchprobing.
Referenced by SCIPendStrongbranch().
|
static |
calculates y*b + min{(c - y*A)*x | lb <= x <= ub} for given vectors y and c; the vector b is defined with b[i] = lhs[i] if y[i] >= 0, b[i] = rhs[i] if y[i] < 0 Calculating this value in interval arithmetics gives a proved lower LP bound for the following reason (assuming, we have only left hand sides): min{cx | b <= Ax, lb <= x <= ub} >= min{cx | yb <= yAx, lb <= x <= ub} (restriction in minimum is relaxed) == yb + min{cx - yb | yb <= yAx, lb <= x <= ub} (added yb - yb == 0) >= yb + min{cx - yAx | yb <= yAx, lb <= x <= ub} (because yAx >= yb inside minimum) >= yb + min{cx - yAx | lb <= x <= ub} (restriction in minimum is relaxed)
lp | current LP data |
set | global SCIP settings |
usefarkas | use y = dual Farkas and c = 0 instead of y = dual solution and c = obj? |
bound | result of interval arithmetic minimization |
Definition at line 15603 of file lp.c.
References SCIP_Lp::cols, SCIP_Row::constant, SCIP_Row::dualfarkas, SCIP_Row::dualsol, SCIP_Col::lb, SCIP_Row::lhs, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Lp::ncols, SCIP_Col::nlprows, SCIP_Lp::nrows, SCIP_Col::nunlinked, SCIP_Col::obj, SCIP_Row::rhs, SCIP_Col::rows, SCIP_Lp::rows, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcolGetLb(), SCIPcolGetUb(), SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSub(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIP_Lp::solved, SCIP_Col::ub, and SCIP_Col::vals.
Referenced by SCIPlpGetProvedLowerbound(), and SCIPlpIsInfeasibilityProved().
SCIP_RETCODE SCIPlpGetProvedLowerbound | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_Real * | bound | ||
) |
gets proven lower (dual) bound of last LP solution
lp | current LP data |
set | global SCIP settings |
bound | pointer to store proven dual bound |
Definition at line 15713 of file lp.c.
References FALSE, provedBound(), SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.
Referenced by SCIPnodeUpdateLowerboundLP(), and solveNodeInitialLP().
SCIP_RETCODE SCIPlpIsInfeasibilityProved | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_Bool * | proved | ||
) |
gets proven dual bound of last LP solution
lp | current LP data |
set | global SCIP settings |
proved | pointer to store whether infeasibility is proven |
Definition at line 15727 of file lp.c.
References bound, provedBound(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPsetDebugMsg, and TRUE.
SCIP_RETCODE SCIPlpWrite | ( | SCIP_LP * | lp, |
const char * | fname | ||
) |
writes LP to a file
lp | current LP data |
fname | file name |
Definition at line 15749 of file lp.c.
References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_CALL, SCIP_OKAY, and SCIPlpiWriteLP().
Referenced by lpBarrier(), lpDualSimplex(), lpPrimalSimplex(), and SCIPwriteLP().
SCIP_RETCODE SCIPlpWriteMip | ( | SCIP_LP * | lp, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
const char * | fname, | ||
SCIP_Bool | genericnames, | ||
SCIP_Bool | origobj, | ||
SCIP_OBJSENSE | objsense, | ||
SCIP_Real | objscale, | ||
SCIP_Real | objoffset, | ||
SCIP_Bool | lazyconss | ||
) |
writes MIP relaxation of the current B&B node to a file
lp | current LP data |
set | global SCIP settings |
messagehdlr | message handler |
fname | file name |
genericnames | should generic names like x_i and row_j be used in order to avoid troubles with reserved symbols? |
origobj | should the original objective function be used? |
objsense | objective sense |
objscale | objective scaling factor |
objoffset | objective offset, e.g., caused by variable fixings in presolving |
lazyconss | output removable rows as lazy constraints? |
Definition at line 15764 of file lp.c.
References SCIP_Row::cols, SCIP_Lp::cols, SCIP_Row::constant, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Row::lhs, SCIP_Col::lppos, SCIP_Row::lppos, SCIP_Row::name, SCIP_Var::name, SCIP_Lp::ncols, SCIP_Row::nlpcols, SCIP_Lp::nrows, SCIP_Col::obj, REALABS, SCIP_Row::rhs, SCIP_Lp::rows, SCIP_ERROR, SCIP_FILECREATEERROR, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPmessageFPrintInfo(), SCIPmessagePrintWarning(), SCIPprintSysError(), SCIProwIsRemovable(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsnprintf(), SCIPvarIsIntegral(), SCIP_Col::ub, SCIP_Row::vals, and SCIP_Col::var.
Referenced by SCIPwriteMIP().
gets array with columns of the LP
lp | current LP data |
Definition at line 16734 of file lp.c.
References SCIP_Lp::cols.
Referenced by branchcandCalcLPCands(), forkFree(), SCIPcomputeLPRelIntPoint(), SCIPgetLPCols(), SCIPgetLPColsData(), and SCIPsolLinkLPSol().
int SCIPlpGetNCols | ( | SCIP_LP * | lp | ) |
gets current number of columns in LP
lp | current LP data |
Definition at line 16744 of file lp.c.
References SCIP_Lp::ncols.
Referenced by branchcandCalcLPCands(), focusnodeCleanupVars(), focusnodeToFork(), forkFree(), getDualProof(), initLP(), probingnodeCreate(), probingnodeUpdate(), runBoundHeuristic(), SCIPcomputeLPRelIntPoint(), SCIPgetLPColsData(), SCIPgetNLPCols(), SCIPnodeFocus(), SCIPpricestoreAddProbVars(), SCIPpricestoreApplyVars(), SCIPprobAllColsInLP(), SCIPsolLinkLPSol(), SCIPtreeLoadLP(), and treeBacktrackProbing().
gets array with rows of the LP
lp | current LP data |
Definition at line 16754 of file lp.c.
References SCIP_Lp::rows.
Referenced by forkFree(), getDualProof(), getFarkasProof(), runBoundHeuristic(), SCIPgetLPRows(), SCIPgetLPRowsData(), and storeCuts().
int SCIPlpGetNRows | ( | SCIP_LP * | lp | ) |
gets current number of rows in LP
lp | current LP data |
Definition at line 16764 of file lp.c.
References SCIP_Lp::nrows.
Referenced by focusnodeToFork(), forkFree(), getDualProof(), getFarkasProof(), initLP(), probingnodeCreate(), probingnodeUpdate(), runBoundHeuristic(), SCIPgetLPRowsData(), SCIPgetNLPRows(), SCIPnodeFocus(), SCIPtreeLoadLP(), storeCuts(), and treeBacktrackProbing().
gets array with newly added columns after the last mark
lp | current LP data |
Definition at line 16774 of file lp.c.
References SCIP_Lp::cols, SCIP_Lp::firstnewcol, and SCIP_Lp::ncols.
Referenced by forkCreate(), and pseudoforkCreate().
int SCIPlpGetNNewcols | ( | SCIP_LP * | lp | ) |
gets number of newly added columns after the last mark
lp | current LP data |
Definition at line 16785 of file lp.c.
References SCIP_Lp::firstnewcol, and SCIP_Lp::ncols.
Referenced by focusnodeCleanupVars(), focusnodeToFork(), focusnodeToJunction(), forkCreate(), pseudoforkCreate(), and SCIPnodeFocus().
gets array with newly added rows after the last mark
lp | current LP data |
Definition at line 16796 of file lp.c.
References SCIP_Lp::firstnewrow, SCIP_Lp::nrows, and SCIP_Lp::rows.
Referenced by forkCreate(), and pseudoforkCreate().
int SCIPlpGetNNewrows | ( | SCIP_LP * | lp | ) |
gets number of newly added rows after the last mark
lp | current LP data |
Definition at line 16807 of file lp.c.
References SCIP_Lp::firstnewrow, and SCIP_Lp::nrows.
Referenced by focusnodeToFork(), forkCreate(), pseudoforkCreate(), and SCIPnodeFocus().
recalculates Euclidean norm of objective function vector of column variables if it have gotten unreliable during calculation
set | global SCIP settings |
lp | LP data |
Definition at line 16818 of file lp.c.
References SCIP_Lp::cols, FALSE, MAX, SCIP_Lp::ncols, SCIP_Lp::objsqrnorm, SCIP_Lp::objsqrnormunreliable, and SCIPsetIsGE().
Referenced by SCIPgetObjNorm(), and SCIProwGetObjParallelism().
gets Euclidean norm of objective function vector of column variables, only use this method if lp->objsqrnormunreliable == FALSE, so probably you have to call SCIPlpRecalculateObjSqrNorm before
lp | LP data |
Definition at line 16849 of file lp.c.
References SCIP_Lp::objsqrnorm, and SCIP_Lp::objsqrnormunreliable.
Referenced by SCIPgetObjNorm().
sets whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound
lp | LP data |
isrelax | is the root lp a relaxation of the problem? |
Definition at line 16861 of file lp.c.
References SCIP_Lp::rootlpisrelax.
Referenced by SCIPprobStoreRootSol().
returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound
lp | LP data |
Definition at line 16872 of file lp.c.
References SCIP_Lp::rootlpisrelax.
Referenced by SCIPisRootLPRelax().
gets the objective value of the root node LP; returns SCIP_INVALID if the root node LP was not (yet) solved
lp | LP data |
Definition at line 16882 of file lp.c.
References SCIP_Lp::rootlooseobjval, SCIP_Lp::rootlpobjval, and SCIP_INVALID.
Referenced by SCIPgetLPRootObjval().
gets part of the objective value of the root node LP that results from COLUMN variables only; returns SCIP_INVALID if the root node LP was not (yet) solved
lp | LP data |
Definition at line 16894 of file lp.c.
References SCIP_Lp::rootlpobjval.
Referenced by SCIPgetLPRootColumnObjval().
gets part of the objective value of the root node LP that results from LOOSE variables only; returns SCIP_INVALID if the root node LP was not (yet) solved
lp | LP data |
Definition at line 16906 of file lp.c.
References SCIP_Lp::rootlooseobjval.
Referenced by SCIPgetLPRootLooseObjval().
gets the LP solver interface
lp | current LP data |
Definition at line 16916 of file lp.c.
References SCIP_Lp::lpi.
Referenced by conflictAnalyzeLP(), SCIPconflictAnalyzeLP(), SCIPgetLPI(), SCIPlpSolveAndEval(), SCIPprintLPSolutionQuality(), solveNodeLP(), undoBdchgsDualfarkas(), and undoBdchgsDualsol().
sets whether the current LP is a relaxation of the current problem and its optimal objective value is a local lower bound
lp | LP data |
relax | is the current lp a relaxation? |
Definition at line 16926 of file lp.c.
References SCIP_Lp::isrelax.
Referenced by SCIPpriceLoop(), SCIPtreeEndProbing(), and solveProbingLP().
returns whether the current LP is a relaxation of the problem for which it has been solved and its solution value a valid local lower bound?
lp | LP data |
Definition at line 16939 of file lp.c.
References SCIP_Lp::isrelax.
Referenced by priceAndCutLoop(), propAndSolve(), SCIPendDive(), SCIPisLPRelax(), SCIPprobStoreRootSol(), SCIPtreeEndProbing(), solveNodeInitialLP(), and updateEstimate().
returns whether the current LP is flushed and solved
lp | current LP data |
Definition at line 16949 of file lp.c.
References SCIP_Lp::flushed, and SCIP_Lp::solved.
Referenced by priceAndCutLoop(), SCIPendDive(), SCIPlinkLPSol(), SCIPsolCreateLPSol(), and SCIPsolLinkCurrentSol().
return whether the current LP solution passed the primal feasibility check
lp | current LP data |
Definition at line 16959 of file lp.c.
References SCIP_Lp::primalchecked, and SCIP_Lp::primalfeasible.
Referenced by SCIPisLPPrimalReliable().
return whether the current LP solution passed the dual feasibility check
lp | current LP data |
Definition at line 16969 of file lp.c.
References SCIP_Lp::dualchecked, and SCIP_Lp::dualfeasible.
Referenced by analyzeStrongbranch(), SCIPisLPDualReliable(), and SCIPprobUpdateBestRootSol().
returns whether the current LP solution is a basic solution
lp | current LP data |
Definition at line 16979 of file lp.c.
References SCIP_Lp::solisbasic.
Referenced by getImplVarRedcost(), SCIPgetLPBasisInd(), SCIPgetLPBInvACol(), SCIPgetLPBInvARow(), SCIPgetLPBInvCol(), SCIPgetLPBInvRow(), SCIPisLPSolBasic(), SCIPprobUpdateBestRootSol(), and SCIPvarGetImplRedcost().
returns whether the LP is in diving mode
lp | current LP data |
Definition at line 16989 of file lp.c.
References SCIP_Lp::diving.
Referenced by computeLPBounds(), conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), SCIPaddRowDive(), SCIPchgCutoffboundDive(), SCIPchgRowLhs(), SCIPchgRowLhsDive(), SCIPchgRowRhs(), SCIPchgRowRhsDive(), SCIPchgVarLbDive(), SCIPchgVarObjDive(), SCIPchgVarUbDive(), SCIPendDive(), SCIPgetVarLbDive(), SCIPgetVarObjDive(), SCIPgetVarUbDive(), SCIPinDive(), SCIPprimalHeuristics(), SCIPsolLinkLPSol(), SCIPsolveDiveLP(), SCIPstartDive(), SCIPstartProbing(), SCIPstartStrongbranch(), SCIPtreeCutoff(), SCIPvarChgLbDive(), and SCIPvarChgUbDive().
returns whether the LP is in diving mode and the objective value of at least one column was changed
lp | current LP data |
Definition at line 16999 of file lp.c.
References SCIP_Lp::divingobjchg.
Referenced by conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), conflictAnalyzeLP(), getFarkasProof(), runBoundHeuristic(), SCIPchgVarObjProbing(), SCIPlpSetCutoffbound(), SCIPsolLinkLPSol(), SCIPsolveDiveLP(), and SCIPtreeEndProbing().
void SCIPlpMarkDivingObjChanged | ( | SCIP_LP * | lp | ) |
marks the diving LP to have a changed objective function
lp | current LP data |
Definition at line 17009 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::divingobjchg, SCIP_Lp::probing, and TRUE.
Referenced by SCIPchgVarObjDive(), SCIPchgVarObjProbing(), and SCIPpropagateProbing().
void SCIPlpUnmarkDivingObjChanged | ( | SCIP_LP * | lp | ) |
marks the diving LP to not have a changed objective function anymore
lp | current LP data |
Definition at line 17020 of file lp.c.
References SCIP_Lp::diving, SCIP_Lp::divingobjchg, FALSE, and SCIP_Lp::probing.
Referenced by SCIPpropagateProbing(), and treeBacktrackProbing().
lp | current LP data |
Definition at line 17031 of file lp.c.
References SCIP_Lp::diving, and SCIP_Lp::ndivechgsides.
Referenced by SCIPsolveDiveLP().
|
static |
compute relative interior point with auxiliary lpi, see SCIPlpComputeRelIntPoint()
lpi | auxiliary LP interface |
set | global SCIP settings |
messagehdlr | message handler |
lp | LP data |
prob | problem data |
relaxrows | should the rows be relaxed |
inclobjcutoff | should a row for the objective cutoff be included |
timelimit | time limit for LP solver |
iterlimit | iteration limit for LP solver |
point | array to store relative interior point on exit |
success | buffer to indicate whether interior point was successfully computed |
Definition at line 17043 of file lp.c.
References SCIP_Row::cols, SCIP_Lp::cols, SCIP_Row::constant, SCIP_Lp::cutoffbound, getFiniteLooseObjval(), SCIP_Col::lb, SCIP_Row::lhs, SCIP_Lp::looseobjvalinf, SCIP_Row::lpcolssorted, SCIP_Col::lppos, MAX, SCIP_Lp::ncols, SCIP_Row::nlpcols, SCIP_Lp::nrows, SCIP_Col::obj, REALABS, SCIP_Row::rhs, SCIP_Lp::rows, rowSortLP(), SCIP_CALL, SCIP_LPPAR_DUALFEASTOL, SCIP_LPPAR_FEASTOL, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_LPTILIM, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIP_Real, SCIPlpiAddCols(), SCIPlpiAddRows(), SCIPlpiGetNCols(), SCIPlpiGetSol(), SCIPlpiInfinity(), SCIPlpiIsIterlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsTimelimExc(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPlpiWriteLP(), SCIPmessagePrintWarning(), SCIProwIsModifiable(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetDualfeastol(), SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsFeasEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsFeasZero(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPsetLpfeastol(), TRUE, SCIP_Col::ub, and SCIP_Row::vals.
Referenced by SCIPlpComputeRelIntPoint().
SCIP_RETCODE SCIPlpComputeRelIntPoint | ( | SCIP_SET * | set, |
SCIP_MESSAGEHDLR * | messagehdlr, | ||
SCIP_LP * | lp, | ||
SCIP_PROB * | prob, | ||
SCIP_Bool | relaxrows, | ||
SCIP_Bool | inclobjcutoff, | ||
SCIP_Real | timelimit, | ||
int | iterlimit, | ||
SCIP_Real * | point, | ||
SCIP_Bool * | success | ||
) |
compute relative interior point
We use the approach of
to compute a relative interior point for the current LP.
Assume the original LP looks as follows:
\[ \begin{array}{rrl} \min & c^T x &\\ & A x & \geq a\\ & B x & \leq b\\ & D x & = d. \end{array} \]
Note that bounds should be included in the system.
To find an interior point the following LP does the job:
\[ \begin{array}{rrl} \max & 1^T y &\\ & A x - y - \alpha a & \geq 0\\ & B x + y - \alpha b & \leq 0\\ & D x - \alpha d & = 0\\ & 0 \leq y & \leq 1\\ & \alpha & \geq 1. \end{array} \]
If the original LP is feasible, this LP is feasible as well. Any optimal solution yields the relative interior point \(x^*_j/\alpha^*\). Note that this will just produce some relative interior point. It does not produce a particular relative interior point, e.g., one that maximizes the distance to the boundary in some norm.
set | global SCIP settings |
messagehdlr | message handler |
lp | LP data |
prob | problem data |
relaxrows | should the rows be relaxed |
inclobjcutoff | should a row for the objective cutoff be included |
timelimit | time limit for LP solver |
iterlimit | iteration limit for LP solver |
point | array to store relative interior point on exit |
success | buffer to indicate whether interior point was successfully computed |
Definition at line 17737 of file lp.c.
References BMSclearMemoryArray, computeRelIntPoint(), SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::ncols, SCIP_Lp::nrows, SCIP_CALL, SCIP_INVALID, SCIP_OBJSEN_MAXIMIZE, SCIP_OKAY, SCIPlpiCreate(), SCIPlpiFree(), SCIPsetDebugMsg, SCIPsetIsInfinity(), and TRUE.
Referenced by SCIPcomputeLPRelIntPoint().
|
static |
additional scalars that are tried in integrality scaling
Definition at line 5618 of file lp.c.
Referenced by disaggregate(), multiAggregateBinvar(), presolveAddKKTAggregatedVars(), SCIP_DECL_PRESOLEXEC(), SCIPconflictAddBound(), SCIPsolGetRayVal(), SCIPsolGetVal(), SCIPvarMultiaggregate(), tightenVarsBoundsSOS1(), and writeExpandedSolutions().
|
static |
Definition at line 5619 of file lp.c.
Referenced by SCIProwCalcIntegralScalar().