LP management methods and data structures for exact mirror of LP.
In LP management, we have to distinguish 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 lpExactFlush().
Definition in file lpexact.c.
#include "lpi/lpi.h"#include "lpiexact/lpiexact.h"#include "scip/clock.h"#include "scip/cutpool.h"#include "scip/event.h"#include "scip/intervalarith.h"#include "scip/lp.h"#include "scip/lpexact.h"#include "scip/misc.h"#include "scip/prob.h"#include "scip/pub_cons.h"#include "scip/pub_lp.h"#include "scip/pub_lpexact.h"#include "scip/pub_message.h"#include "scip/pub_misc.h"#include "scip/pub_misc_sort.h"#include "scip/pub_var.h"#include "scip/pub_tree.h"#include "scip/rational.h"#include "scip/scip_lp.h"#include "scip/scip_lpexact.h"#include "scip/scip_message.h"#include "scip/set.h"#include "scip/sepastoreexact.h"#include "scip/sol.h"#include "scip/solve.h"#include "scip/stat.h"#include "scip/struct_event.h"#include "scip/struct_lpexact.h"#include "scip/struct_prob.h"#include "scip/struct_set.h"#include "scip/struct_stat.h"#include "scip/struct_var.h"#include "scip/struct_cutpool.h"#include "scip/var.h"#include <string.h>#include <inttypes.h>Go to the source code of this file.
Macros | |
| #define | checkLinks(lp) |
| #define | lpCutoffDisabled(set) |
| #define | MAXNUMTROUBLELPMSGS 10 |
| #define checkLinks | ( | lp | ) |
Definition at line 170 of file lpexact.c.
Referenced by colExactLink(), rowExactLink(), SCIPcolExactChgCoef(), SCIPcolExactDelCoef(), SCIPcolExactIncCoef(), SCIPlpExactAddCol(), SCIPlpExactDelRowset(), SCIPlpExactFlush(), SCIPlpExactLink(), SCIPlpExactShrinkCols(), SCIPlpExactShrinkRows(), SCIProwExactAddCoef(), SCIProwExactChgCoef(), SCIProwExactDelCoef(), and SCIProwExactIncCoef().
| #define lpCutoffDisabled | ( | set | ) |
should the objective limit of the LP solver be disabled
Definition at line 4175 of file lpexact.c.
Referenced by SCIPlpExactSetCutoffbound(), and SCIPlpExactSolveAndEval().
| #define MAXNUMTROUBLELPMSGS 10 |
| SCIP_DECL_SORTPTRCOMP | ( | SCIProwExactComp | ) |
comparison method for sorting rows by non-decreasing index
Definition at line 77 of file lpexact.c.
References assert(), NULL, and SCIProwExactGetIndex().
|
static |
checks if the exact column and its fpcol are consistent
| colexact | exact column |
| set | global SCIP settings |
Definition at line 176 of file lpexact.c.
References assert(), SCIP_Col::flushedobj, SCIP_ColExact::flushedobj, SCIP_ColExact::fpcol, SCIP_Col::index, SCIP_ColExact::index, SCIP_Col::lb, SCIP_ColExact::lb, SCIP_ColExact::len, SCIP_Col::lpipos, SCIP_ColExact::lpipos, SCIP_Col::nlprows, NULL, SCIP_Col::obj, SCIP_ColExact::obj, SCIP_Bool, SCIP_R_ROUND_DOWNWARDS, SCIP_R_ROUND_NEAREST, SCIP_R_ROUND_UPWARDS, SCIPrationalIsApproxEQReal(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPsetIsInfinity(), TRUE, SCIP_Col::ub, SCIP_ColExact::ub, SCIP_Col::var, and SCIP_ColExact::var.
Referenced by lpExactInSync().
|
static |
checks if the exact row and its fprow are consistent
| rowexact | exact row |
| set | global SCIP settings |
| msg | message handler for debug output |
Definition at line 203 of file lpexact.c.
References assert(), SCIP_Row::constant, SCIP_RowExact::constant, SCIP_RowExact::fprow, SCIP_Row::len, SCIP_RowExact::len, SCIP_Row::lhs, SCIP_RowExact::lhs, SCIP_Row::lppos, SCIP_RowExact::lppos, NULL, SCIP_Row::rhs, SCIP_RowExact::rhs, SCIP_Bool, SCIP_R_ROUND_NEAREST, SCIPABORT, SCIPdebug, SCIPrationalIsApproxEQReal(), SCIPrationalIsGEReal(), SCIPrationalIsInfinity(), SCIPrationalIsLEReal(), SCIPrationalIsNegInfinity(), SCIProwExactPrint(), SCIProwPrint(), SCIPsetIsInfinity(), and TRUE.
Referenced by lpExactInSync().
|
static |
checks if the exact lp and lp are consistent (same number of rows/cols, and all cols/rows in sync)
| lpexact | exact lp |
| set | global SCIP settings |
| msg | message handler for debug output |
Definition at line 237 of file lpexact.c.
References assert(), colExactInSync(), SCIP_LpExact::cols, SCIP_LpExact::fplp, i, SCIP_Lp::ncols, SCIP_LpExact::ncols, SCIP_Lp::nrows, SCIP_LpExact::nrows, NULL, rowExactInSync(), SCIP_LpExact::rows, SCIP_Bool, and TRUE.
Referenced by SCIPlpExactIsSynced().
|
static |
ensures that rows array can store at least num entries
| lpexact | current LP data |
| set | global SCIP settings |
| num | minimum number of entries to store |
Definition at line 270 of file lpexact.c.
References assert(), BMSreallocMemoryArray, SCIP_LpExact::nrows, SCIP_LpExact::rows, SCIP_LpExact::rowssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPlpExactAddRow().
|
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 293 of file lpexact.c.
References assert(), SCIP_RowExact::cols, i, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::rows, SCIPsortPtrPtrInt(), TRUE, and SCIP_ColExact::vals.
Referenced by colExactSearchCoef().
|
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 326 of file lpexact.c.
References assert(), SCIP_RowExact::cols, i, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::nlprows, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIPsortPtrPtrInt(), TRUE, and SCIP_ColExact::vals.
Referenced by colExactSearchCoef().
|
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 360 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, i, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_RowExact::nlpcols, NULL, SCIP_ColExact::rows, SCIPsortIntIntPtrPtrInterval(), TRUE, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.
Referenced by rowExactSearchCoef(), and SCIProwExactSort().
|
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 394 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, i, SCIP_RowExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::rows, SCIPsortIntIntPtrPtrInterval(), TRUE, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.
Referenced by rowExactSearchCoef(), and SCIProwExactSort().
|
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 427 of file lpexact.c.
References assert(), BMSreallocBlockMemoryArray, i, SCIP_ColExact::len, SCIP_ColExact::linkpos, NULL, SCIP_ColExact::rows, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBlock(), SCIPsetCalcMemGrowSize(), SCIP_ColExact::size, and SCIP_ColExact::vals.
Referenced by colExactAddCoef().
|
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 463 of file lpexact.c.
References assert(), BMSreallocMemoryArray, SCIP_LpExact::cols, SCIP_LpExact::colssize, SCIP_LpExact::ncols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPlpExactAddCol().
|
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 486 of file lpexact.c.
References assert(), BMSreallocMemoryArray, SCIP_LpExact::chgcols, SCIP_LpExact::chgcolssize, SCIP_LpExact::nchgcols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by insertColChgcols().
|
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 509 of file lpexact.c.
References assert(), BMSreallocMemoryArray, SCIP_LpExact::lpicols, SCIP_LpExact::lpicolssize, SCIP_LpExact::nlpicols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by lpExactFlushAddCols().
|
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 532 of file lpexact.c.
References assert(), BMSreallocMemoryArray, SCIP_LpExact::lpirows, SCIP_LpExact::lpirowssize, SCIP_LpExact::nlpirows, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by lpExactFlushAddRows().
|
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 555 of file lpexact.c.
References assert(), SCIP_RowExact::index, SCIP_ColExact::linkpos, SCIP_RowExact::lppos, nlprows, NULL, and SCIP_ColExact::rows.
Referenced by colExactSearchCoef().
|
static |
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 591 of file lpexact.c.
References assert(), colExactSearchCoefPart(), colExactSortLP(), colExactSortNonLP(), SCIP_ColExact::len, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nlprows, SCIP_ColExact::nonlprowssorted, NULL, and SCIP_ColExact::nunlinked.
Referenced by SCIPcolExactChgCoef(), SCIPcolExactDelCoef(), and SCIPcolExactIncCoef().
|
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 630 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_ColExact::index, SCIP_RowExact::linkpos, SCIP_ColExact::lppos, and NULL.
Referenced by rowExactSearchCoef().
|
static |
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 669 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::delaysort, i, SCIP_RowExact::len, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_RowExact::nunlinked, rowExactSearchCoefPart(), rowExactSortLP(), and rowExactSortNonLP().
Referenced by SCIProwExactChgCoef(), SCIProwExactDelCoef(), and SCIProwExactIncCoef().
|
static |
announces, that the given coefficient in the constraint matrix changed
| row | LP row |
| col | LP col |
| lp | current LP data |
Definition at line 726 of file lpexact.c.
References assert(), SCIP_ColExact::coefchanged, SCIP_RowExact::coefchanged, FALSE, SCIP_LpExact::flushed, SCIP_LpExact::lpifirstchgcol, SCIP_LpExact::lpifirstchgrow, SCIP_ColExact::lpipos, SCIP_RowExact::lpipos, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, NULL, SCIP_RowExact::pseudoactivity, SCIPrationalSetInfinity(), and TRUE.
Referenced by colExactAddCoef(), colExactChgCoefPos(), colExactDelCoefPos(), rowExactAddCoef(), rowExactChgCoefPos(), and rowExactDelCoefPos().
|
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 772 of file lpexact.c.
References assert(), SCIP_RowExact::cols, FALSE, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIPrationalSetRational(), and SCIP_ColExact::vals.
Referenced by colExactAddCoef(), and colExactDelCoefPos().
|
static |
swaps two coefficients in a column, and updates all corresponding data structures
| col | LP column |
| buffer | buffer for temp real |
| pos1 | position of first coefficient |
| pos2 | position of second coefficient |
Definition at line 809 of file lpexact.c.
References assert(), SCIP_RowExact::cols, FALSE, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetRational(), and SCIP_ColExact::vals.
Referenced by rowExactAddCoef(), rowExactUpdateAddLP(), and rowExactUpdateDelLP().
|
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 877 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, FALSE, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::rows, SCIPrationalSetRational(), SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.
Referenced by rowExactAddCoef(), and rowExactDelCoefPos().
|
static |
swaps two coefficients in a row, and updates all corresponding data structures
| row | LP row |
| buffer | buffer for temp real |
| pos1 | position of first coefficient |
| pos2 | position of second coefficient |
Definition at line 915 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, FALSE, SCIP_ColExact::index, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetRational(), SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.
Referenced by colExactAddCoef(), colExactUpdateAddLP(), and colExactUpdateDelLP().
|
static |
forward declaration for rowExactAddCoef()
forward declaration for rowEactAddCoef()
| 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 1235 of file lpexact.c.
References assert(), coefChangedExact(), colExactAddCoef(), colExactSwapCoefs(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, FALSE, SCIP_ColExact::fpcol, SCIP_RowExact::fprow, SCIP_ColExact::index, SCIP_RowExact::integral, SCIP_RowExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_Row::name, SCIP_RowExact::nlocks, SCIP_RowExact::nlpcols, SCIP_ColExact::nlprows, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::nunlinked, SCIP_RowExact::nunlinked, rowExactMoveCoef(), SCIP_ColExact::rows, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcolIsIntegral(), SCIPerrorMessage, SCIPintervalSetRational(), SCIPrationalCopyBlock(), SCIPrationalDebugMessage, SCIPrationalIsIntegral(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIProwExactEnsureSize(), SCIPvarGetName(), SCIP_RowExact::vals, SCIP_RowExact::valsinterval, and SCIP_ColExact::var.
Referenced by colExactAddCoef(), colExactLink(), SCIProwExactAddCoef(), SCIProwExactChgCoef(), and SCIProwExactIncCoef().
|
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 1005 of file lpexact.c.
References SCIP_LpExact::chgcols, ensureChgcolsSize(), FALSE, SCIP_LpExact::flushed, SCIP_ColExact::lbchanged, SCIP_LpExact::nchgcols, SCIP_ColExact::objchanged, SCIP_CALL, SCIP_OKAY, and SCIP_ColExact::ubchanged.
Referenced by SCIPcolExactChgLb(), SCIPcolExactChgObj(), and SCIPcolExactChgUb().
|
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 1026 of file lpexact.c.
References assert(), coefChangedExact(), colExactEnsureSize(), colExactMoveCoef(), SCIP_RowExact::cols, FALSE, SCIP_RowExact::fprow, SCIP_RowExact::index, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_Row::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_Row::name, SCIP_RowExact::nlpcols, SCIP_ColExact::nlprows, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::nunlinked, SCIP_RowExact::nunlinked, rowExactAddCoef(), rowExactSwapCoefs(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalCopyBlock(), SCIPrationalDebugMessage, SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetName(), SCIP_ColExact::vals, and SCIP_ColExact::var.
Referenced by rowExactAddCoef(), rowExactLink(), SCIPcolExactAddCoef(), SCIPcolExactChgCoef(), and SCIPcolExactIncCoef().
|
static |
deletes coefficient at given position from column
| col | column to be changed |
| set | global SCIP settings |
| lpexact | current LP data |
| pos | position in column vector to delete |
Definition at line 1154 of file lpexact.c.
References assert(), coefChangedExact(), colExactMoveCoef(), SCIP_RowExact::cols, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::lppos, nlprows, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::nunlinked, SCIP_ColExact::rows, SCIP_OKAY, SCIPrationalDebugMessage, SCIPvarGetName(), SCIP_ColExact::vals, and SCIP_ColExact::var.
Referenced by colExactChgCoefPos(), rowExactUnlink(), SCIPcolExactDelCoef(), and SCIProwExactDelCoef().
|
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 1200 of file lpexact.c.
References assert(), coefChangedExact(), colExactDelCoefPos(), SCIP_RowExact::cols, SCIP_RowExact::fprow, SCIP_ColExact::linkpos, SCIP_Row::name, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetName(), SCIP_ColExact::vals, and SCIP_ColExact::var.
Referenced by SCIPcolExactChgCoef(), SCIPcolExactIncCoef(), SCIProwExactChgCoef(), and SCIProwExactIncCoef().
|
static |
deletes coefficient at given position from row
| row | row to be changed |
| set | global SCIP settings |
| lp | current LP data |
| pos | position in row vector to delete |
Definition at line 1370 of file lpexact.c.
References assert(), coefChangedExact(), SCIP_RowExact::cols, SCIP_RowExact::fprow, SCIP_RowExact::len, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_Row::name, SCIP_RowExact::nlocks, SCIP_RowExact::nlpcols, NULL, SCIP_RowExact::nunlinked, rowExactMoveCoef(), SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPrationalDebugMessage, SCIPvarGetName(), SCIP_RowExact::vals, and SCIP_ColExact::var.
Referenced by rowExactChgCoefPos(), SCIPcolExactDelCoef(), and SCIProwExactDelCoef().
|
static |
changes a coefficient at given position of an LP row
| row | LP row |
| set | global SCIP settings |
| lp | current LP data |
| pos | position in row vector to change |
| val | value of coefficient |
Definition at line 1421 of file lpexact.c.
References assert(), coefChangedExact(), SCIP_RowExact::cols, SCIP_ColExact::fpcol, SCIP_RowExact::fprow, SCIP_RowExact::integral, SCIP_Row::name, SCIP_RowExact::nlocks, NULL, rowExactDelCoefPos(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcolIsIntegral(), SCIPerrorMessage, SCIPintervalSetRational(), SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsIntegral(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetName(), SCIP_RowExact::vals, SCIP_RowExact::valsinterval, and SCIP_ColExact::var.
Referenced by SCIPcolExactChgCoef(), SCIPcolExactIncCoef(), SCIProwExactChgCoef(), and SCIProwExactIncCoef().
|
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 1473 of file lpexact.c.
References assert(), checkLinks, SCIP_RowExact::cols, SCIP_ColExact::fpcol, i, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::nunlinked, rowExactAddCoef(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalIsZero(), SCIPsetDebugMsg, SCIPvarGetName(), SCIP_ColExact::vals, SCIP_Col::var, and SCIP_ColExact::var.
Referenced by lpExactFlushAddCols(), and SCIPlpExactLink().
|
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 1517 of file lpexact.c.
References assert(), checkLinks, colExactAddCoef(), SCIP_RowExact::cols, SCIP_RowExact::fprow, i, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_Row::name, SCIP_RowExact::nlpcols, NULL, SCIP_RowExact::nunlinked, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalIsZero(), SCIPsetDebugMsg, and SCIP_RowExact::vals.
Referenced by lpExactFlushAddRows(), and SCIPlpExactLink().
|
static |
removes row coefficients from corresponding columns
| row | row data |
| set | global SCIP settings |
| lp | current LP data |
Definition at line 1560 of file lpexact.c.
References assert(), colExactDelCoefPos(), i, SCIP_RowExact::len, NULL, SCIP_RowExact::nunlinked, SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.
Referenced by SCIProwExactFree().
|
static |
updates link data after addition of column
| col | LP column |
| set | global SCIP settings |
Definition at line 1592 of file lpexact.c.
References assert(), SCIP_RowExact::cols, FALSE, i, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nlpcols, NULL, rowExactSwapCoefs(), SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPlpExactAddCol().
|
static |
updates link data after addition of row
| row | LP row |
| set | global SCIP settings |
Definition at line 1631 of file lpexact.c.
References assert(), colExactSwapCoefs(), SCIP_RowExact::cols, FALSE, i, SCIP_RowExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPlpExactAddRow().
|
static |
updates link data after removal of column
| col | LP column |
| set | global SCIP settings |
Definition at line 1669 of file lpexact.c.
References assert(), SCIP_RowExact::cols, FALSE, i, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::lppos, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, rowExactSwapCoefs(), SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPlpExactShrinkCols().
|
static |
updates link data after removal of row
| row | LP row |
| set | global SCIP settings |
Definition at line 1707 of file lpexact.c.
References assert(), colExactSwapCoefs(), SCIP_RowExact::cols, FALSE, i, SCIP_RowExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, nlprows, SCIP_ColExact::nlprows, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPlpExactDelRowset(), and SCIPlpExactShrinkRows().
|
static |
resets column data to represent a column not in the LP solver
| col | column to be marked deleted |
Definition at line 1749 of file lpexact.c.
References assert(), SCIP_ColExact::basisstatus, SCIP_ColExact::lpipos, NULL, SCIP_BASESTAT_ZERO, SCIP_ColExact::validfarkaslp, and SCIP_ColExact::validredcostlp.
Referenced by lpExactFlushDelCols().
|
static |
applies all cached column removals to the LP solver
| lp | current LP data |
Definition at line 1763 of file lpexact.c.
References assert(), SCIP_ColExact::coefchanged, SCIP_LpExact::cols, SCIP_Lp::diving, FALSE, SCIP_LpExact::flushdeletedcols, SCIP_LpExact::fplp, i, SCIP_LpExact::lpicols, SCIP_LpExact::lpiexact, SCIP_LpExact::lpifirstchgcol, SCIP_ColExact::lpipos, SCIP_LpExact::lpsolstat, markColexDeleted(), SCIP_LpExact::ncols, SCIP_LpExact::nlpicols, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPdebugMessage, SCIPlpiExactDelCols(), SCIP_LpExact::solved, TRUE, and SCIP_LpExact::updateintegrality.
Referenced by SCIPlpExactFlush(), and SCIPlpExactLink().
|
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 1810 of file lpexact.c.
References assert(), c, SCIP_ColExact::coefchanged, colExactLink(), SCIP_LpExact::cols, SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, ensureLpiExactcolsSize(), FALSE, SCIP_LpExact::flushaddedcols, SCIP_ColExact::flushedlb, SCIP_ColExact::flushedobj, SCIP_ColExact::flushedub, SCIP_ColExact::fpcol, i, SCIP_ColExact::lb, SCIP_ColExact::lbchanged, SCIP_ColExact::len, SCIP_LpExact::lpicols, SCIP_LpExact::lpiexact, SCIP_LpExact::lpifirstchgcol, SCIP_ColExact::lpipos, SCIP_RowExact::lpipos, SCIP_ColExact::lppos, SCIP_LpExact::lpsolstat, SCIP_LpExact::ncols, SCIP_LpExact::nlpicols, SCIP_ColExact::nlprows, NULL, obj, SCIP_ColExact::obj, SCIP_ColExact::objchanged, SCIP_ColExact::rows, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPlpiExactAddCols(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBufferArray(), SCIPrationalSetRational(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPvarGetColExact(), SCIPvarGetName(), SCIPvarGetStatusExact(), SCIP_LpExact::solved, TRUE, SCIP_ColExact::ub, SCIP_ColExact::ubchanged, SCIP_LpExact::updateintegrality, SCIP_ColExact::validfarkaslp, SCIP_ColExact::validredcostlp, SCIP_ColExact::vals, SCIP_Col::var, and SCIP_ColExact::var.
Referenced by SCIPlpExactFlush(), and SCIPlpExactLink().
|
static |
resets row data to represent a row not in the LP solver
| row | row to be marked deleted |
Definition at line 1952 of file lpexact.c.
References assert(), SCIP_RowExact::basisstatus, SCIP_RowExact::lpipos, NULL, SCIP_BASESTAT_BASIC, and SCIP_RowExact::validactivitylp.
Referenced by lpExactFlushDelRows().
|
static |
applies all cached row removals to the LP solver
| lp | current LP data |
| blkmem | block memory |
| set | global SCIP settings |
Definition at line 1965 of file lpexact.c.
References assert(), SCIP_RowExact::coefchanged, SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::flushdeletedrows, i, SCIP_LpExact::lpiexact, SCIP_LpExact::lpifirstchgrow, SCIP_RowExact::lpipos, SCIP_LpExact::lpirows, SCIP_LpExact::lpsolstat, markRowexDeleted(), SCIP_LpExact::nlpirows, SCIP_LpExact::nrows, NULL, SCIP_LpExact::rows, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiExactDelRows(), SCIProwExactRelease(), SCIPsetDebugMsg, SCIP_LpExact::solved, and TRUE.
Referenced by SCIPlpExactFlush().
|
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 2013 of file lpexact.c.
References assert(), SCIP_RowExact::coefchanged, SCIP_RowExact::cols, SCIP_RowExact::constant, ensureLpirowexactsSize(), FALSE, SCIP_LpExact::flushaddedrows, SCIP_RowExact::flushedlhs, SCIP_RowExact::flushedrhs, SCIP_ColExact::fpcol, SCIP_RowExact::fprow, i, SCIP_RowExact::len, SCIP_RowExact::lhs, SCIP_RowExact::lhschanged, SCIP_LpExact::lpiexact, SCIP_LpExact::lpifirstchgrow, SCIP_ColExact::lpipos, SCIP_RowExact::lpipos, SCIP_LpExact::lpirows, SCIP_RowExact::lppos, SCIP_LpExact::lpsolstat, SCIP_Row::name, SCIP_RowExact::nlpcols, SCIP_LpExact::nlpirows, SCIP_LpExact::nrows, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, r, SCIP_RowExact::rhs, SCIP_RowExact::rhschanged, rowExactLink(), SCIP_LpExact::rows, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiExactAddRows(), SCIPrationalCreateBufferArray(), SCIPrationalDebugMessage, SCIPrationalDiff(), SCIPrationalFreeBufferArray(), SCIPrationalSetRational(), SCIProwExactCapture(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPvarGetName(), SCIP_LpExact::solved, TRUE, SCIP_RowExact::vals, and SCIP_Col::var.
Referenced by SCIPlpExactFlush().
|
static |
applies all cached column bound and objective changes to the LP
| lp | current LP data |
| set | global SCIP settings |
Definition at line 2146 of file lpexact.c.
References assert(), SCIP_LpExact::chgcols, SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_ColExact::flushedlb, SCIP_ColExact::flushedobj, SCIP_ColExact::flushedub, i, SCIP_ColExact::lb, SCIP_ColExact::lbchanged, SCIP_LpExact::lpiexact, SCIP_ColExact::lpipos, SCIP_LpExact::lpsolstat, SCIP_LpExact::nchgcols, SCIP_LpExact::ncols, NULL, obj, SCIP_ColExact::obj, SCIP_ColExact::objchanged, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPlpiExactChgBounds(), SCIPlpiExactChgObj(), SCIPlpiExactGetBounds(), SCIPlpiExactGetObj(), SCIPlpiGetSolverName(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalIsEQ(), SCIPrationalSetRational(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPvarGetColExact(), SCIPvarGetStatusExact(), SCIP_LpExact::solved, SCIP_ColExact::ub, SCIP_ColExact::ubchanged, and SCIP_ColExact::var.
Referenced by SCIPlpExactFlush().
|
static |
applies all cached row side changes to the LP
| lp | current LP data |
| set | global SCIP settings |
Definition at line 2282 of file lpexact.c.
References assert(), SCIP_LpExact::chgrows, SCIP_RowExact::constant, FALSE, SCIP_RowExact::flushedlhs, SCIP_RowExact::flushedrhs, i, SCIP_RowExact::lhs, SCIP_RowExact::lhschanged, SCIP_LpExact::lpiexact, SCIP_RowExact::lpipos, SCIP_LpExact::lpsolstat, SCIP_LpExact::nchgrows, SCIP_LpExact::nrows, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_RowExact::rhs, SCIP_RowExact::rhschanged, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiExactChgSides(), SCIPlpiExactGetSides(), SCIPlpiGetSolverName(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalIsEQ(), SCIPrationalSetRational(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, and SCIP_LpExact::solved.
Referenced by SCIPlpExactFlush().
|
static |
gets finite part of objective value of current LP that results from LOOSE variables only. returns reference, so be careful not to change!
| lp | current LP data |
| set | global SCIP settings |
| prob | problem data |
Definition at line 2390 of file lpexact.c.
References assert(), SCIP_LpExact::looseobjval, SCIP_LpExact::looseobjvalinf, SCIP_LpExact::nloosevars, NULL, and SCIPrationalIsZero().
Referenced by lpExactFlushAndSolve(), and SCIPlpExactSolveAndEval().
| SCIP_RETCODE SCIPcolExactCreate | ( | SCIP_COLEXACT ** | col, |
| SCIP_COL * | fpcol, | ||
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_VAR * | var, | ||
| int | len, | ||
| SCIP_ROWEXACT ** | rows, | ||
| SCIP_RATIONAL ** | vals, | ||
| SCIP_Bool | removable ) |
creates an LP column
| col | pointer to column data |
| fpcol | the corresponding fp col |
| 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 2410 of file lpexact.c.
References assert(), BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, i, NULL, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPrationalCopyBlock(), SCIPrationalCopyBlockArray(), SCIPrationalCreateBlock(), SCIPrationalCreateString(), SCIPrationalIsZero(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), SCIPvarGetUbLocalExact(), SCIP_Col::var, and var.
Referenced by SCIPvarColumnExact().
|
static |
sets parameter of type SCIP_Real in exact 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 2488 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::lpiexact, NULL, SCIP_Bool, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIP_Real, SCIPlpiExactSetRealpar(), and TRUE.
Referenced by lpExactFlushAndSolve(), and lpExactSetObjlim().
|
static |
sets parameter of type SCIP_Real in exact 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 2515 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::lpiexact, NULL, SCIP_Bool, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiExactSetIntpar(), and TRUE.
Referenced by lpExactSetIterationLimit().
|
static |
sets the objective limit of the exact LP solver
Note that we are always minimizing.
| lp | current LP data |
| set | global SCIP settings |
| objlim | new objective limit |
| success | pointer to store whether the parameter was actually changed |
Definition at line 2545 of file lpexact.c.
References assert(), FALSE, lpExactSetRealpar(), SCIP_LpExact::lpiexact, SCIP_LpExact::lpiobjlim, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiExactGetRealpar(), SCIPlpiExactInfinity(), SCIPrationalSetInfinity(), SCIPsetIsInfinity(), and SCIP_LpExact::solved.
Referenced by lpExactFlushAndSolve().
|
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 2594 of file lpexact.c.
References assert(), FALSE, lpExactSetIntpar(), SCIP_LpExact::lpiitlim, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, NULL, SCIP_Bool, SCIP_CALL, SCIP_LPPAR_LPITLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPrationalSetInfinity(), and SCIP_LpExact::solved.
Referenced by lpExactFlushAndSolve(), and SCIPlpExactEndDive().
|
static |
resets row data to represent a row not in the LP solver
| row | row to be marked deleted |
Definition at line 2628 of file lpexact.c.
References SCIP_RowExact::activity, assert(), SCIP_RowExact::basisstatus, SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, SCIP_RowExact::lpipos, NULL, SCIP_BASESTAT_BASIC, SCIPrationalSetInfinity(), SCIPrationalSetReal(), and SCIP_RowExact::validactivitylp.
Referenced by SCIPlpExactDelRowset().
| SCIP_RETCODE SCIPlpExactDelRowset | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| int * | rowdstat ) |
deletes the marked rows from the LP and the LP interface
| lpexact | current LP data |
| blkmem | block memory buffers |
| set | global SCIP settings |
| rowdstat | deletion status of rows: 1 if row should be deleted, 0 if not |
Definition at line 2643 of file lpexact.c.
References assert(), c, checkLinks, SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_RowExact::lpdepth, SCIP_LpExact::lpiexact, SCIP_LpExact::lpifirstchgrow, SCIP_RowExact::lpipos, SCIP_LpExact::lpirows, SCIP_LpExact::lpobjval, SCIP_RowExact::lppos, SCIP_LpExact::lpsolstat, markRowExactDeleted(), SCIP_LpExact::nchgrows, SCIP_LpExact::nlpirows, SCIP_LpExact::nremovablerows, SCIP_LpExact::nrows, NULL, r, SCIP_RowExact::removable, rowExactUpdateDelLP(), SCIP_LpExact::rows, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiExactDelRowset(), SCIPrationalSetInfinity(), SCIProwExactRelease(), and SCIP_LpExact::solved.
Referenced by SCIPlpExactSyncLPs().
| SCIP_RETCODE SCIPcolExactFree | ( | SCIP_COLEXACT ** | col, |
| BMS_BLKMEM * | blkmem ) |
frees an LP column
| col | pointer to LP column |
| blkmem | block memory |
Definition at line 2754 of file lpexact.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryNull, NULL, SCIP_OKAY, SCIPrationalFreeBlock(), and SCIPrationalFreeBlockArray().
Referenced by varFreeExactData().
| void SCIPcolExactPrint | ( | SCIP_COLEXACT * | 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 2796 of file lpexact.c.
References assert(), SCIP_ColExact::fpcol, SCIP_RowExact::fprow, SCIP_ColExact::lb, SCIP_ColExact::len, SCIP_Row::name, NULL, SCIP_ColExact::obj, r, SCIP_ColExact::rows, SCIPmessageFPrintInfo(), SCIPrationalIsPositive(), SCIPrationalMessage(), SCIP_ColExact::ub, SCIP_ColExact::vals, and SCIP_Col::var.
| SCIP_RETCODE SCIPcolExactAddCoef | ( | SCIP_COLEXACT * | col, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_ROWEXACT * | row, | ||
| SCIP_RATIONAL * | val ) |
adds a previously non existing coefficient to an LP column
| col | LP column |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
| lpexact | current LP data |
| row | LP row |
| val | value of coefficient |
Definition at line 2834 of file lpexact.c.
References assert(), colExactAddCoef(), NULL, SCIP_CALL, and SCIP_OKAY.
| SCIP_RETCODE SCIPcolExactDelCoef | ( | SCIP_COLEXACT * | col, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_ROWEXACT * | row ) |
deletes coefficient from column
| col | column to be changed |
| set | global SCIP settings |
| lpexact | current LP data |
| row | coefficient to be deleted |
Definition at line 2852 of file lpexact.c.
References assert(), checkLinks, colExactDelCoefPos(), colExactSearchCoef(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::fprow, SCIP_ColExact::index, SCIP_ColExact::linkpos, SCIP_Row::name, NULL, rowExactDelCoefPos(), SCIP_ColExact::rows, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPrationalIsEQ(), SCIPvarGetName(), SCIP_ColExact::vals, SCIP_RowExact::vals, and SCIP_ColExact::var.
| SCIP_RETCODE SCIPcolExactChgCoef | ( | SCIP_COLEXACT * | col, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_ROWEXACT * | row, | ||
| SCIP_RATIONAL * | val ) |
changes or adds a coefficient to an LP column
| col | LP column |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
| lpexact | current LP data |
| row | LP row |
| val | value of coefficient |
Definition at line 2894 of file lpexact.c.
References assert(), checkLinks, colExactAddCoef(), colExactChgCoefPos(), colExactSearchCoef(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_ColExact::index, SCIP_ColExact::linkpos, NULL, rowExactChgCoefPos(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalIsEQ(), SCIP_ColExact::vals, and SCIP_RowExact::vals.
| SCIP_RETCODE SCIPcolExactIncCoef | ( | SCIP_COLEXACT * | col, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_ROWEXACT * | row, | ||
| SCIP_RATIONAL * | incval ) |
increases value of an existing or nonexisting coefficient in an LP column
| col | LP column |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
| lpexact | current LP data |
| row | LP row |
| incval | value to add to the coefficient |
Definition at line 2945 of file lpexact.c.
References assert(), checkLinks, colExactAddCoef(), colExactChgCoefPos(), colExactSearchCoef(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_ColExact::index, SCIP_ColExact::linkpos, NULL, rowExactChgCoefPos(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalAdd(), SCIPrationalIsEQ(), SCIPrationalIsZero(), SCIP_ColExact::vals, and SCIP_RowExact::vals.
| SCIP_RETCODE SCIPcolExactChgObj | ( | SCIP_COLEXACT * | col, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | newobj ) |
changes objective value of column
| col | LP column to change |
| set | global SCIP settings |
| lpexact | current LP data |
| newobj | new objective value |
Definition at line 3001 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::flushed, insertColChgcols(), SCIP_ColExact::lb, SCIP_ColExact::lpipos, SCIP_LpExact::nchgcols, newobj, NULL, SCIP_ColExact::obj, SCIP_ColExact::objchanged, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetColExact(), SCIPvarGetName(), SCIPvarGetStatusExact(), TRUE, SCIP_ColExact::ub, and SCIP_ColExact::var.
Referenced by SCIPeventProcess(), and SCIPlpExactEndDive().
| SCIP_RETCODE SCIPcolExactChgLb | ( | SCIP_COLEXACT * | col, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | newlb ) |
changes lower bound of column
| col | LP column to change |
| set | global SCIP settings |
| lpexact | current LP data |
| newlb | new lower bound value |
Definition at line 3048 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::flushed, insertColChgcols(), SCIP_ColExact::lb, SCIP_ColExact::lbchanged, SCIP_ColExact::lpipos, SCIP_LpExact::nchgcols, NULL, SCIP_ColExact::obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetColExact(), SCIPvarGetName(), SCIPvarGetStatusExact(), TRUE, and SCIP_ColExact::var.
Referenced by SCIPeventProcess(), SCIPlpExactEndDive(), SCIPvarChgLbExactDive(), and updateLpExactBoundChange().
| SCIP_RETCODE SCIPcolExactChgUb | ( | SCIP_COLEXACT * | col, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | newub ) |
changes upper bound of exact column
| col | LP column to change |
| set | global SCIP settings |
| lpexact | current LP data |
| newub | new upper bound value |
Definition at line 3093 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::flushed, insertColChgcols(), SCIP_ColExact::lpipos, SCIP_LpExact::nchgcols, NULL, SCIP_ColExact::obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetColExact(), SCIPvarGetName(), SCIPvarGetStatusExact(), TRUE, SCIP_ColExact::ub, SCIP_ColExact::ubchanged, and SCIP_ColExact::var.
Referenced by SCIPeventProcess(), SCIPlpExactEndDive(), SCIPvarChgUbExactDive(), and updateLpExactBoundChange().
| SCIP_RETCODE SCIProwExactCreate | ( | SCIP_ROWEXACT ** | row, |
| SCIP_ROW * | fprow, | ||
| SCIP_ROW * | fprowrhs, | ||
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_LPEXACT * | lpexact, | ||
| int | len, | ||
| SCIP_COLEXACT ** | cols, | ||
| SCIP_RATIONAL ** | vals, | ||
| SCIP_RATIONAL * | lhs, | ||
| SCIP_RATIONAL * | rhs, | ||
| SCIP_Bool | isfprelaxable ) |
creates and captures an LP row
| row | pointer to LP row data |
| fprow | corresponding fp row |
| fprowrhs | rhs-part of fp-relaxation of this row if necessary, NULL otherwise |
| blkmem | block memory |
| set | global SCIP settings |
| stat | problem statistics |
| lpexact | current LP data |
| 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 |
| isfprelaxable | is it possible to make fp-relaxation of this row |
Definition at line 3138 of file lpexact.c.
References assert(), BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, FALSE, i, SCIP_ColExact::index, SCIP_Stat::nrowidx, NULL, SCIP_Row::nuses, SCIP_Row::rowexact, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_R_ROUND_UPWARDS, SCIPintervalSet(), SCIPintervalSetRational(), SCIPrationalCopyBlock(), SCIPrationalCopyBlockArray(), SCIPrationalCreateString(), SCIPrationalIsIntegral(), SCIPrationalIsLE(), SCIPrationalIsZero(), SCIPrationalRoundReal(), SCIProwExactCapture(), SCIProwGetNNonz(), SCIPstatIncrement, SCIPvarIsIntegral(), TRUE, SCIP_ColExact::var, and var.
Referenced by SCIPcreateEmptyRowConsExact(), SCIPcreateRowExact(), and SCIProwExactCreateFromRow().
|
static |
changes an exact row, so that all denominators are bounded by set->exact_cutmaxdenom
| row | SCIP row |
| rowexact | exact row |
| set | SCIP settings |
| blkmem | block memory structure |
| eventqueue | the eventqueue |
| lpexact | the exact lp |
Definition at line 3255 of file lpexact.c.
References assert(), SCIP_Row::cols, SCIP_RowExact::cols, SCIP_ColExact::fpcol, SCIP_LpExact::fplp, SCIP_RowExact::fprow, i, SCIP_Row::len, SCIP_RowExact::len, NULL, SCIP_RowExact::rhs, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_R_ROUND_UPWARDS, SCIP_Real, SCIPcolGetColExact(), SCIPdebug, SCIPdebugMessage, SCIPintervalGetInf(), SCIPintervalGetSup(), SCIPprintRow(), SCIPprintRowExact(), SCIPrationalAddProd(), SCIPrationalComputeApproximation(), SCIPrationalCreateBuffer(), SCIPrationalDenominatorIsLE(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalIsGE(), SCIPrationalIsGTReal(), SCIPrationalIsInfinity(), SCIPrationalIsLE(), SCIPrationalIsLTReal(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalRoundReal(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIProwAddCoef(), SCIProwChgRhs(), SCIProwDelCoef(), SCIProwExactAddCoef(), SCIProwExactSort(), SCIPvarGetLbGlobal(), SCIPvarGetLbGlobalExact(), SCIPvarGetUbGlobalExact(), SCIP_Row::vals, SCIP_RowExact::vals, SCIP_RowExact::valsinterval, SCIP_Col::var, and var.
Referenced by SCIProwExactCreateFromRow().
| SCIP_RETCODE SCIProwExactCreateFromRow | ( | SCIP_ROW * | fprow, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_PROB * | prob, | ||
| SCIP_LPEXACT * | lpexact ) |
creates and captures an exact LP row from a fp row
| fprow | corresponding fp row to create from |
| blkmem | block memory |
| set | global SCIP settings |
| stat | problem statistics |
| eventqueue | the eventqueue |
| prob | scip prob structure |
| lpexact | current LP data |
Definition at line 3373 of file lpexact.c.
References assert(), i, SCIP_Row::lhs, SCIP_Row::nlocks, NULL, SCIP_RowExact::removable, SCIP_Row::rhs, SCIP_Row::rowexact, rowExactCreateFromRowLimitEncodingLength(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcolGetVar(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsFpRepresentable(), SCIPrationalSetInfinity(), SCIPrationalSetNegInfinity(), SCIPrationalSetReal(), SCIProwExactAddConstant(), SCIProwExactCreate(), SCIProwExactEnsureSize(), SCIProwExactGetNNonz(), SCIProwExactGetVals(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetNNonz(), SCIProwGetVals(), SCIProwRecalcNorms(), SCIPsetIsInfinity(), SCIPvarAddToRowExact(), SCIP_Row::size, and TRUE.
Referenced by SCIPcreateRowExactFromRow(), and SCIPsepastoreApplyCuts().
| SCIP_RETCODE SCIProwExactGenerateFpRows | ( | BMS_BLKMEM * | blkmem, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_PROB * | prob, | ||
| SCIP_ROWEXACT * | row, | ||
| SCIP_ROW * | rowlhs, | ||
| SCIP_ROW * | rowrhs, | ||
| SCIP_Bool * | onerowrelax, | ||
| SCIP_Bool * | hasfprelax ) |
populate data of two empty fp rows with data from exact row
| blkmem | block memory |
| set | global SCIP settings |
| stat | SCIP statistics |
| eventqueue | event queue |
| lpexact | current exact LP data |
| prob | SCIP problem data |
| row | SCIP row |
| rowlhs | fp row-relaxation wrt lhs |
| rowrhs | fp row-relaxation wrt rhs |
| onerowrelax | is one row enough to represent the exact row |
| hasfprelax | is it possible to generate relaxations at all for this row? |
Definition at line 3454 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::constant, FALSE, SCIP_LpExact::fplp, SCIP_RowExact::fprelaxable, i, SCIP_Interval::inf, SCIP_RowExact::len, SCIP_RowExact::lhs, NULL, SCIP_RowExact::rhs, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_R_ROUND_UPWARDS, SCIP_Real, SCIPcolExactGetVar(), SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalRoundReal(), SCIProwChgConstant(), SCIProwChgLhs(), SCIProwChgRhs(), SCIProwGetConstant(), SCIProwRelease(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPvarAddToRow(), SCIPvarGetLbGlobal(), SCIPvarGetLbGlobalExact(), SCIPvarGetUbGlobal(), SCIPvarGetUbGlobalExact(), SCIP_Interval::sup, TRUE, SCIP_RowExact::valsinterval, SCIP_ColExact::var, and var.
Referenced by SCIPgenerateFpRowsFromRowExact().
| SCIP_RETCODE SCIPlpExactFlush | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue ) |
applies all cached changes to the LP solver
| lpexact | current exact LP data |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
Definition at line 3651 of file lpexact.c.
References assert(), checkLinks, FALSE, SCIP_LpExact::flushaddedcols, SCIP_LpExact::flushaddedrows, SCIP_LpExact::flushdeletedcols, SCIP_LpExact::flushdeletedrows, SCIP_LpExact::flushed, lpExactFlushAddCols(), lpExactFlushAddRows(), lpExactFlushChgCols(), lpExactFlushChgRows(), lpExactFlushDelCols(), lpExactFlushDelRows(), SCIP_LpExact::lpiexact, SCIP_LpExact::lpifirstchgcol, SCIP_LpExact::lpifirstchgrow, SCIP_LpExact::lpsolstat, SCIP_LpExact::nchgcols, SCIP_LpExact::nchgrows, SCIP_LpExact::ncols, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, SCIP_LpExact::nrows, NULL, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPlpiExactGetNCols(), SCIPlpiExactGetNRows(), SCIPsetDebugMsg, SCIP_LpExact::solved, and TRUE.
Referenced by lpExactFlushAndSolve(), SCIPlpExactReset(), SCIPlpExactSetState(), and SCIPwriteLPexact().
| SCIP_RETCODE SCIPlpExactLink | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue ) |
ensures all rows/columns are correctly updated, but changes are not yet communicated to the exact LP solver
| lpexact | current exact LP data |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
Definition at line 3711 of file lpexact.c.
References assert(), c, checkLinks, colExactLink(), SCIP_LpExact::cols, FALSE, SCIP_LpExact::flushaddedcols, SCIP_LpExact::flushaddedrows, SCIP_LpExact::flushdeletedcols, SCIP_LpExact::flushdeletedrows, SCIP_LpExact::flushed, SCIP_RowExact::fprow, lpExactFlushAddCols(), lpExactFlushDelCols(), SCIP_LpExact::lpifirstchgcol, SCIP_LpExact::lpifirstchgrow, SCIP_ColExact::lppos, SCIP_RowExact::lppos, SCIP_Row::name, SCIP_LpExact::nchgcols, SCIP_LpExact::nchgrows, SCIP_LpExact::ncols, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, SCIP_LpExact::nrows, NULL, r, rowExactLink(), SCIP_LpExact::rows, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPvarGetColExact(), SCIPvarGetName(), SCIPvarGetStatusExact(), and SCIP_ColExact::var.
|
static |
creates the data needed for project and shift bounding method
| lpexact | pointer to LP data object |
| set | global SCIP settings |
| blkmem | block memory buffers |
Definition at line 3775 of file lpexact.c.
References assert(), BMSallocBlockMemory, FALSE, NULL, SCIP_LpExact::projshiftdata, SCIP_ALLOC, SCIP_OKAY, and TRUE.
Referenced by SCIPlpExactCreate().
|
static |
frees the exact LPI in project-and-shift
| lpiexact | pointer to LPI object |
Definition at line 3822 of file lpexact.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiExactClear(), SCIPlpiExactDelCols(), SCIPlpiExactDelRows(), SCIPlpiExactFree(), SCIPlpiExactGetNCols(), and SCIPlpiExactGetNRows().
Referenced by SCIPlpExactProjectShiftFree().
|
static |
frees the data needed for project and shift bounding method
| lpexact | pointer to LP data object |
| set | global SCIP settings |
| blkmem | block memory buffers |
Definition at line 3846 of file lpexact.c.
References assert(), BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, NULL, SCIP_LpExact::projshiftdata, SCIP_CALL, SCIP_OKAY, SCIPlpExactProjectShiftFreeLPIExact(), SCIPrationalFreeBlock(), and SCIPrationalFreeBlockArray().
Referenced by SCIPlpExactFree().
| SCIP_Bool SCIPlpExactBoundShiftUseful | ( | SCIP_LPEXACT * | lpexact | ) |
| SCIP_Bool SCIPlpExactProjectShiftPossible | ( | SCIP_LPEXACT * | lpexact | ) |
| SCIP_Bool SCIPlpExactIsSynced | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_MESSAGEHDLR * | msg ) |
checks that lp and fplp are properly synced
| lpexact | pointer to LP data object |
| set | global SCIP settings |
| msg | message handler for debug output |
Definition at line 3920 of file lpexact.c.
References assert(), lpExactInSync(), NULL, and SCIP_Bool.
Referenced by lpExactFlushAndSolve().
| SCIP_RETCODE SCIPlpExactCreate | ( | SCIP_LPEXACT ** | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_LP * | fplp, | ||
| SCIP_SET * | set, | ||
| SCIP_MESSAGEHDLR * | messagehdlr, | ||
| SCIP_STAT * | stat, | ||
| const char * | name ) |
creates empty LP data object
| lpexact | pointer to LP data object |
| blkmem | block memory data structure |
| fplp | the floating point LP |
| set | global SCIP settings |
| messagehdlr | message handler |
| stat | problem statistics |
| name | problem name |
Definition at line 3933 of file lpexact.c.
References assert(), BMSallocMemory, FALSE, SCIP_Lp::lpexact, SCIP_LpExact::lpicols, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OBJSEN_MINIMIZE, SCIP_OKAY, SCIP_PRICING_AUTO, SCIPlpiExactCreate(), SCIPlpiExactInfinity(), SCIPlpPsdataCreate(), SCIPrationalCreateBlock(), SCIPsetInfinity(), and TRUE.
Referenced by SCIPtransformProb().
| SCIP_RETCODE SCIPlpExactFree | ( | SCIP_LPEXACT ** | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set ) |
frees LP data object
| lpexact | pointer to exact LP data object |
| blkmem | block memory |
| set | global SCIP settings |
Definition at line 4039 of file lpexact.c.
References assert(), BMSfreeMemory, BMSfreeMemoryArrayNull, BMSfreeMemoryNull, i, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpExactClear(), SCIPlpExactProjectShiftFree(), SCIPlpiExactFree(), SCIPrationalFreeBlock(), and SCIProwExactRelease().
Referenced by freeTransform().
| SCIP_RETCODE SCIPlpExactAddCol | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_COLEXACT * | col ) |
adds a column to the LP and captures the variable
| lpexact | LP data |
| set | global SCIP settings |
| col | LP column |
Definition at line 4089 of file lpexact.c.
References assert(), checkLinks, colExactUpdateAddLP(), SCIP_LpExact::cols, SCIP_Lp::diving, ensureColexsSize(), FALSE, SCIP_LpExact::flushed, SCIP_ColExact::fpcol, SCIP_LpExact::fplp, SCIP_RowExact::fprow, i, SCIP_Col::integral, SCIP_ColExact::lb, SCIP_ColExact::len, SCIP_ColExact::lppos, SCIP_Row::name, SCIP_LpExact::ncols, SCIP_LpExact::nrows, NULL, SCIP_ColExact::obj, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrationalDebugMessage, SCIPsetDebugMsg, SCIPsetDebugMsgPrint, SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatusExact(), SCIPvarIsIntegral(), SCIP_ColExact::ub, SCIP_ColExact::vals, and SCIP_ColExact::var.
Referenced by SCIPpricestoreApplyVars().
| SCIP_RETCODE SCIPlpExactAddRow | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_ROWEXACT * | rowexact ) |
adds a row to the LP and captures it
| lpexact | LP data |
| set | global SCIP settings |
| rowexact | LP row |
Definition at line 4133 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::constant, ensureRowexsSize(), FALSE, SCIP_LpExact::flushed, SCIP_RowExact::fprow, i, SCIP_RowExact::len, SCIP_RowExact::lhs, SCIP_RowExact::lppos, SCIP_Row::name, SCIP_LpExact::ncols, SCIP_LpExact::nrows, NULL, SCIP_RowExact::rhs, rowExactUpdateAddLP(), SCIP_LpExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalDebugMessage, SCIPrationalIsZero(), SCIProwExactCapture(), SCIPsetDebugMsg, SCIPvarGetName(), SCIP_RowExact::vals, and SCIP_ColExact::var.
Referenced by SCIPlpExactSyncLPs().
| SCIP_RETCODE SCIPlpExactSetCutoffbound | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_Real | cutoffbound ) |
sets the upper objective limit of the exact LP solver
| lpexact | current exact LP data |
| set | global SCIP settings |
| cutoffbound | new upper objective limit |
Definition at line 4178 of file lpexact.c.
References assert(), SCIP_LpExact::cutoffbound, FALSE, SCIP_LpExact::flushed, lpCutoffDisabled, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, NULL, SCIP_CALL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPlpExactGetObjval(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsGEReal(), SCIPrationalSetInfinity(), SCIPsetDebugMsg, and SCIP_LpExact::solved.
Referenced by SCIPlpSetCutoffbound().
|
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 |
| ... | arguments to format string |
Definition at line 4233 of file lpexact.c.
References assert(), MAXNUMTROUBLELPMSGS, SCIP_Stat::nexlp, SCIP_Stat::nnodes, SCIP_Stat::nnumtroublelpmsgs, NULL, SCIP_LONGINT_FORMAT, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIP_VERBLEVEL_NONE, SCIPmessagePrintInfo(), and SCIPmessageVFPrintInfo().
Referenced by SCIPlpExactSolveAndEval().
|
static |
flushes the exact LP and solves it with the primal or dual simplex algorithm, depending on the current basis feasibility
| lpexact | current exact LP data |
| blkmem | block memory |
| set | global SCIP settings |
| messagehdlr | message handler |
| stat | problem statistics |
| prob | problem data |
| eventqueue | event queue |
| harditlim | maximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit |
| fromscratch | should the LP be solved from scratch without using current basis? |
| lperror | pointer to store whether an unresolved LP error occurred |
Definition at line 4287 of file lpexact.c.
References assert(), SCIP_LpExact::cutoffbound, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::fplp, getFiniteLooseObjvalExact(), SCIP_Stat::lpcount, lperror, lpExactSetIterationLimit(), lpExactSetObjlim(), lpExactSetRealpar(), SCIP_Lp::lpi, SCIP_LpExact::lpiexact, SCIP_Lp::lpiobjlim, SCIP_LpExact::lpiobjlim, SCIP_Lp::lpobjval, SCIP_LpExact::lpobjval, SCIP_Lp::lpsolstat, SCIP_LpExact::lpsolstat, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_LpExact::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_LPERROR, SCIP_LPPAR_FROMSCRATCH, SCIP_LPPAR_LPINFO, SCIP_LPPAR_LPTILIM, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_Real, SCIPABORT, SCIPclockGetTime(), SCIPdebugMessage, SCIPerrorMessage, SCIPlpExactFlush(), SCIPlpExactIsSynced(), SCIPlpExactSyncLPs(), SCIPlpiExactExistsPrimalRay(), SCIPlpiExactGetInternalStatus(), SCIPlpiExactGetObjval(), SCIPlpiExactGetSolFeasibility(), SCIPlpiExactInfinity(), SCIPlpiExactIsDualFeasible(), SCIPlpiExactIsIterlimExc(), SCIPlpiExactIsObjlimExc(), SCIPlpiExactIsOptimal(), SCIPlpiExactIsPrimalFeasible(), SCIPlpiExactIsPrimalInfeasible(), SCIPlpiExactIsPrimalUnbounded(), SCIPlpiExactIsTimelimExc(), SCIPlpiExactSetBase(), SCIPlpiExactSetIntpar(), SCIPlpiExactSolveDual(), SCIPlpiFreeState(), SCIPlpiGetBase(), SCIPlpiGetState(), SCIPlpiHasStateBasis(), SCIPrationalDebugMessage, SCIPrationalIsGTReal(), SCIPrationalRoundReal(), SCIPrationalSetInfinity(), SCIPrationalSetNegInfinity(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIP_LpExact::solisbasic, SCIP_Lp::solved, SCIP_LpExact::solved, SCIP_Stat::solvingtime, TRUE, and SCIP_Lp::validsollp.
Referenced by SCIPlpExactSolveAndEval().
| SCIP_RETCODE SCIPlpExactSolveAndEval | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_LP * | lp, | ||
| SCIP_SET * | set, | ||
| SCIP_MESSAGEHDLR * | messagehdlr, | ||
| BMS_BLKMEM * | blkmem, | ||
| SCIP_STAT * | stat, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_PROB * | prob, | ||
| SCIP_Longint | itlim, | ||
| SCIP_Bool * | lperror, | ||
| SCIP_Bool | usefarkas ) |
solves the LP with simplex algorithm, and copy the solution into the column's data
| lpexact | LP data |
| lp | LP data |
| set | global SCIP settings |
| messagehdlr | message handler |
| blkmem | block memory buffers |
| stat | problem statistics |
| eventqueue | event queue |
| prob | problem data |
| itlim | maximal number of LP iterations to perform, or -1 for no limit |
| lperror | pointer to store whether an unresolved LP error occurred |
| usefarkas | are we aiming to prove infeasibility? |
Definition at line 4477 of file lpexact.c.
References assert(), SCIP_Lp::cutoffbound, SCIP_LpExact::cutoffbound, SCIP_Lp::dualchecked, SCIP_LpExact::dualfeasible, FALSE, getFiniteLooseObjvalExact(), SCIP_Lp::hasprovedbound, lpCutoffDisabled, lperror, lpExactFlushAndSolve(), lpExactNumericalTroubleMessage(), SCIP_LpExact::lpiexact, SCIP_Lp::lpiobjlim, SCIP_LpExact::lpiobjlim, SCIP_Lp::lpobjval, SCIP_LpExact::lpobjval, SCIP_Lp::lpsolstat, SCIP_LpExact::lpsolstat, MIN, SCIP_Stat::nclockskipsleft, SCIP_Lp::ncols, SCIP_Stat::nexlp, SCIP_Stat::nexlpinf, SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_Prob::nvars, objval, SCIP_Lp::primalchecked, SCIP_LpExact::primalfeasible, SCIP_Stat::provedfeaslptime, SCIP_Stat::provedinfeaslptime, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_Longint, SCIP_LONGINT_FORMAT, 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_R_ROUND_DOWNWARDS, SCIP_Real, SCIP_STATUS_TIMELIMIT, SCIP_VERBLEVEL_FULL, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPlpExactGetDualfarkas(), SCIPlpExactGetIterations(), SCIPlpExactGetSol(), SCIPlpExactGetUnboundedSol(), SCIPlpiExactGetObjval(), SCIPlpiExactHasDualRay(), SCIPmessagePrintInfo(), SCIPmessagePrintVerbInfo(), SCIPmessagePrintWarning(), SCIPrationalCreateBuffer(), SCIPrationalDebugMessage, SCIPrationalFreeBuffer(), SCIPrationalIsGEReal(), SCIPrationalIsLTReal(), SCIPrationalRoundReal(), SCIPsetDebugMsg, SCIPsetGetCharParam(), SCIPsetInfinity(), SCIPsetSetCharParam(), SCIPsolveIsStopped(), SCIPstatAdd, SCIPwarningMessage(), SCIP_Lp::solved, SCIP_LpExact::solved, SCIP_Stat::status, SCIP_Stat::timefailexlp, SCIP_Stat::timefailexlpinf, and TRUE.
Referenced by SCIPlpExactComputeSafeBound(), and SCIPsolveExactDiveLP().
| void SCIProwExactCapture | ( | SCIP_ROWEXACT * | row | ) |
increases usage counter of LP row
| row | LP row |
Definition at line 4940 of file lpexact.c.
References assert(), SCIP_RowExact::fprow, SCIP_Row::name, SCIP_RowExact::nlocks, NULL, SCIP_RowExact::nuses, and SCIPdebugMessage.
Referenced by lpExactFlushAddRows(), SCIPcaptureRowExact(), SCIPlpExactAddRow(), SCIProwExactCreate(), and SCIPsepastoreExactAddCut().
| void SCIProwExactPrint | ( | SCIP_ROWEXACT * | row, |
| SCIP_MESSAGEHDLR * | messagehdlr, | ||
| FILE * | file ) |
output column to file stream
| row | LP row |
| messagehdlr | message handler |
| file | output file (or NULL for standard output) |
Definition at line 4953 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::constant, SCIP_RowExact::fprow, SCIP_RowExact::len, SCIP_RowExact::lhs, SCIP_Row::name, NULL, r, SCIP_RowExact::rhs, SCIP_VARSTATUS_COLUMN, SCIPmessageFPrintInfo(), SCIPrationalGetReal(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalMessage(), SCIPvarGetName(), SCIPvarGetStatus(), SCIP_RowExact::vals, and SCIP_ColExact::var.
Referenced by rowExactInSync(), SCIPaddVarsToRowExact(), SCIPcertificatePrintAggrrow(), SCIPcertificatePrintDualboundExactLP(), SCIPcertificatePrintMirCut(), and SCIPprintRowExact().
| int SCIProwExactGetIndex | ( | SCIP_ROWEXACT * | row | ) |
get the index of an exact row
| row | LP row |
Definition at line 4996 of file lpexact.c.
References assert(), SCIP_RowExact::index, and NULL.
Referenced by SCIP_DECL_SORTPTRCOMP().
| int SCIProwExactGetNNonz | ( | SCIP_ROWEXACT * | row | ) |
gets the length of a row
| row | LP row |
Definition at line 5006 of file lpexact.c.
References assert(), SCIP_RowExact::len, and NULL.
Referenced by certificatePrintRow(), printActivityConflictToCertificate(), SCIPcertificatePrintDualboundExactLP(), SCIPconsPrintCertificateExactLinear(), and SCIProwExactCreateFromRow().
| SCIP_RATIONAL ** SCIProwExactGetVals | ( | SCIP_ROWEXACT * | row | ) |
gets array with coefficients of nonzero entries
| row | LP row |
Definition at line 5016 of file lpexact.c.
References assert(), NULL, and SCIP_RowExact::vals.
Referenced by certificatePrintRow(), printActivityConflictToCertificate(), SCIPconsPrintCertificateExactLinear(), and SCIProwExactCreateFromRow().
| SCIP_COLEXACT ** SCIProwExactGetCols | ( | SCIP_ROWEXACT * | row | ) |
gets array of exact columns
| row | LP row |
Definition at line 5026 of file lpexact.c.
References assert(), SCIP_RowExact::cols, and NULL.
Referenced by certificatePrintRow(), SCIPcertificatePrintDualboundExactLP(), and SCIPconsPrintCertificateExactLinear().
| SCIP_Bool SCIProwExactIsInLP | ( | SCIP_ROWEXACT * | row | ) |
returns TRUE iff row is member of current LP
| row | LP row |
Definition at line 5036 of file lpexact.c.
References assert(), SCIP_RowExact::lppos, NULL, and SCIP_Bool.
Referenced by checkCons(), and SCIPlpExactSyncLPs().
| SCIP_Bool SCIProwExactIsModifiable | ( | SCIP_ROWEXACT * | row | ) |
return TRUE iff row is modifiable
| row | LP row |
Definition at line 5046 of file lpexact.c.
References assert(), SCIP_RowExact::fprow, SCIP_Row::modifiable, NULL, and SCIP_Bool.
| SCIP_Bool SCIProwHasExRow | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_ROW * | row ) |
| SCIP_ROW * SCIProwExactGetRow | ( | SCIP_ROWEXACT * | row | ) |
returns fp row corresponding to exact row, if it exists. Otherwise returns NULL
| row | SCIP row |
Definition at line 5069 of file lpexact.c.
References assert(), SCIP_RowExact::fprow, and NULL.
Referenced by certificatePrintRow(), and SCIPcertificatePrintDualboundExactLP().
| SCIP_ROW * SCIProwExactGetRowRhs | ( | SCIP_ROWEXACT * | row | ) |
returns rhs-relaxation part of exact row, if it exists. Otherwise returns NULL
| row | SCIP row |
Definition at line 5079 of file lpexact.c.
References assert(), SCIP_RowExact::fprowrhs, and NULL.
Referenced by addOneRowSafely(), cutsSubstituteMIRSafely(), and SCIPaggrRowAddRowSafely().
| SCIP_Bool SCIProwExactHasFpRelax | ( | SCIP_ROWEXACT * | row | ) |
true if row can be relaxed (possibly as two fp rows)
| row | SCIP row |
Definition at line 5089 of file lpexact.c.
References assert(), SCIP_RowExact::fprelaxable, NULL, and SCIP_Bool.
Referenced by addOneRowSafely(), cutsSubstituteMIRSafely(), and SCIPaggrRowAddRowSafely().
| SCIP_COLEXACT * SCIPcolGetColExact | ( | SCIP_COL * | col | ) |
returns exact col corresponding to fpcol, if it exists. Otherwise returns NULL
| col | SCIP col |
Definition at line 5099 of file lpexact.c.
References assert(), SCIP_VarDataExact::colexact, SCIP_Var::exactdata, NULL, and SCIP_Col::var.
Referenced by rowExactCreateFromRowLimitEncodingLength().
| SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef | ( | SCIP_COLEXACT * | col, |
| SCIP_SET * | set, | ||
| SCIP_RATIONAL * | result, | ||
| SCIP_RATIONAL ** | dual, | ||
| SCIP_Bool | usefarkas ) |
calculates the Farkas coefficient y^T A_i or reduced cost c - y^T A_i of a column i using the given dual Farkas vector y
| col | LP column |
| set | SCIP settings pointer |
| result | rational to store the result |
| dual | dense dual vector, NULL to use internal row-values |
| usefarkas | should the farkas coefficient be computed ? |
Definition at line 5111 of file lpexact.c.
References assert(), SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, i, SCIP_ColExact::lb, SCIP_ColExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::nunlinked, SCIP_ColExact::obj, result, SCIP_ColExact::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrationalAdd(), SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalMult(), SCIPrationalSetFraction(), SCIPrationalSetRational(), SCIPvarGetColExact(), SCIPvarGetStatusExact(), SCIP_ColExact::ub, SCIP_ColExact::vals, and SCIP_ColExact::var.
| SCIP_RETCODE SCIProwExactAddCoef | ( | SCIP_ROWEXACT * | rowexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_COLEXACT * | colexact, | ||
| SCIP_RATIONAL * | val ) |
adds a previously non existing coefficient to an LP row
| rowexact | LP row |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
| lpexact | current LP data |
| colexact | LP column |
| val | value of coefficient |
Definition at line 5200 of file lpexact.c.
References assert(), checkLinks, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_Row::lppos, NULL, rowExactAddCoef(), SCIP_CALL, and SCIP_OKAY.
Referenced by rowExactCreateFromRowLimitEncodingLength().
| SCIP_RETCODE SCIProwExactDelCoef | ( | SCIP_ROWEXACT * | row, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_COLEXACT * | col ) |
deletes coefficient from row
| row | row to be changed |
| set | global SCIP settings |
| lpexact | current LP data |
| col | coefficient to be deleted |
Definition at line 5225 of file lpexact.c.
References assert(), checkLinks, colExactDelCoefPos(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_ColExact::index, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_Row::name, NULL, rowExactDelCoefPos(), rowExactSearchCoef(), SCIP_ColExact::rows, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPrationalIsEQ(), SCIPvarGetName(), SCIP_ColExact::vals, SCIP_RowExact::vals, and SCIP_ColExact::var.
| SCIP_RETCODE SCIProwExactChgCoef | ( | SCIP_ROWEXACT * | row, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_COLEXACT * | col, | ||
| SCIP_RATIONAL * | val ) |
changes or adds a coefficient to an LP row
| row | LP row |
| blkmem | block memory |
| set | global SCIP settings |
| eventqueue | event queue |
| lpexact | current LP data |
| col | LP column |
| val | value of coefficient |
Definition at line 5269 of file lpexact.c.
References assert(), checkLinks, colExactChgCoefPos(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_ColExact::index, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, NULL, rowExactAddCoef(), rowExactChgCoefPos(), rowExactSearchCoef(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalIsEQ(), SCIP_ColExact::vals, and SCIP_RowExact::vals.
| SCIP_RETCODE SCIProwExactIncCoef | ( | SCIP_ROWEXACT * | row, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_COLEXACT * | col, | ||
| SCIP_RATIONAL * | 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 |
| lpexact | current LP data |
| col | LP column |
| incval | value to add to the coefficient |
Definition at line 5321 of file lpexact.c.
References assert(), checkLinks, colExactChgCoefPos(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_ColExact::index, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, NULL, rowExactAddCoef(), rowExactChgCoefPos(), rowExactSearchCoef(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalAdd(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsZero(), SCIP_RowExact::validactivitylp, SCIP_ColExact::vals, and SCIP_RowExact::vals.
Referenced by SCIPvarAddToRowExact().
| SCIP_RETCODE SCIProwExactChgConstant | ( | SCIP_ROWEXACT * | row, |
| SCIP_STAT * | stat, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | constant ) |
changes constant value of a row
| row | LP row |
| stat | problem statistics |
| lpexact | current LP data |
| constant | new constant value |
Definition at line 5385 of file lpexact.c.
References assert(), SCIP_RowExact::constant, SCIP_RowExact::constantreal, SCIP_Lp::diving, SCIP_Stat::domchgcount, SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_RowExact::lhs, SCIP_Row::lppos, NULL, SCIP_RowExact::pseudoactivity, SCIP_RowExact::rhs, SCIP_OKAY, SCIPintervalSetRational(), SCIPrationalAdd(), SCIPrationalDiff(), SCIPrationalIsAbsInfinity(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsLE(), SCIPrationalSetRational(), and SCIP_Row::validpsactivitydomchg.
Referenced by SCIProwExactAddConstant().
| SCIP_RETCODE SCIProwExactAddConstant | ( | SCIP_ROWEXACT * | row, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | addval ) |
add constant value to a row
| row | LP row |
| set | global SCIP settings |
| stat | problem statistics |
| lpexact | current LP data |
| addval | constant value to add to the row |
Definition at line 5416 of file lpexact.c.
References assert(), SCIP_RowExact::constant, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_RowExact::lhs, SCIP_Row::lppos, NULL, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalAdd(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsAbsInfinity(), SCIPrationalIsLE(), SCIPrationalIsZero(), and SCIProwExactChgConstant().
Referenced by SCIProwExactCreateFromRow(), and SCIPvarAddToRowExact().
| SCIP_RETCODE SCIProwExactGetSolFeasibility | ( | SCIP_ROWEXACT * | row, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_SOL * | sol, | ||
| SCIP_RATIONAL * | result ) |
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 |
| result | result pointer |
Definition at line 5446 of file lpexact.c.
References assert(), FALSE, SCIP_RowExact::lhs, NULL, result, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalMin(), SCIProwExactGetSolActivity(), and sol.
Referenced by SCIPgetRowSolFeasibilityExact().
| SCIP_Bool SCIProwExactGetSolActivityWithErrorbound | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_SOL * | sol, | ||
| SCIP_Real * | activity, | ||
| SCIP_Real * | errorbound ) |
does activity computation with running error analysis for a row, return TRUE on success
| rowexact | LP row |
| set | global SCIP settings |
| stat | problem statistics data |
| sol | primal CIP solution |
| activity | the approximate activity |
| errorbound | the error bound |
Definition at line 5475 of file lpexact.c.
References assert(), c, SCIP_Row::cols, SCIP_Row::constant, FALSE, SCIP_RowExact::fprow, SCIP_Row::len, SCIP_RowExact::len, MAX, MIN, NULL, SCIP_Col::primsol, REALABS, SCIP_Bool, SCIP_Real, SCIP_REAL_UNITROUNDOFF, SCIP_UNKNOWN, SCIPcolGetVar(), SCIPsetInfinity(), SCIPsolGetVal(), sol, TRUE, and SCIP_Row::vals.
Referenced by SCIPgetRowSolActivityWithErrorboundExact().
| SCIP_RETCODE SCIProwExactGetSolActivity | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_SOL * | sol, | ||
| SCIP_Bool | useexact, | ||
| SCIP_RATIONAL * | result ) |
returns the activity of a row for a given solution
| rowexact | LP row |
| set | global SCIP settings |
| stat | problem statistics data |
| sol | primal CIP solution |
| useexact | should an exact solution be used |
| result | resulting activity |
Definition at line 5529 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::constant, i, SCIP_ColExact::lb, SCIP_RowExact::len, SCIP_RowExact::lhs, SCIP_RowExact::linkpos, SCIP_ColExact::lppos, NULL, result, SCIP_RowExact::rhs, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPrationalAdd(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalMultReal(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIPsolGetVal(), SCIPsolGetValExact(), sol, SCIP_ColExact::ub, SCIP_RowExact::vals, and SCIP_ColExact::var.
Referenced by SCIPgetRowSolActivityExact(), and SCIProwExactGetSolFeasibility().
| SCIP_RETCODE SCIProwExactRelease | ( | SCIP_ROWEXACT ** | row, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact ) |
decreases usage counter of LP row, and frees memory if necessary
| row | pointer to LP row |
| blkmem | block memory |
| set | global SCIP settings |
| lpexact | current LP data |
Definition at line 5583 of file lpexact.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIProwExactFree(), and SCIPsetDebugMsg.
Referenced by lpExactFlushDelRows(), SCIPlpExactDelRowset(), SCIPlpExactFree(), SCIPlpExactShrinkRows(), SCIPreleaseRowExact(), SCIProwFree(), and SCIPsepastoreExactClearCuts().
| SCIP_RETCODE SCIProwExactFree | ( | SCIP_ROWEXACT ** | row, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact ) |
frees an LP row
| row | pointer to LP row |
| blkmem | block memory |
| set | global SCIP settings |
| lpexact | current LP data |
Definition at line 5610 of file lpexact.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, NULL, rowExactUnlink(), SCIP_CALL, SCIP_OKAY, SCIPrationalFreeBlock(), and SCIPrationalFreeBlockArray().
Referenced by SCIProwExactRelease().
| SCIP_RETCODE SCIProwExactGetLPFeasibility | ( | SCIP_ROWEXACT * | row, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | result ) |
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 |
| lpexact | current LP data |
| result | rational pointer to store the result |
Definition at line 5655 of file lpexact.c.
References assert(), SCIP_RowExact::lhs, NULL, result, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalMin(), and SCIProwExactGetLPActivity().
Referenced by SCIPgetRowSolFeasibilityExact().
| SCIP_RETCODE SCIProwExactGetPseudoFeasibility | ( | SCIP_ROWEXACT * | row, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_RATIONAL * | result ) |
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 |
| result | rational pointer to store the result |
Definition at line 5684 of file lpexact.c.
References assert(), SCIP_RowExact::lhs, NULL, result, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalMin(), and SCIProwExactGetPseudoActivity().
Referenced by SCIPgetRowSolFeasibilityExact().
| SCIP_RATIONAL * SCIProwExactGetLPActivity | ( | SCIP_ROWEXACT * | row, |
| SCIP_STAT * | stat, | ||
| SCIP_LPEXACT * | lpexact ) |
returns the activity of a row in the current LP solution
| row | LP row |
| stat | problem statistics |
| lpexact | current LP data |
Definition at line 5713 of file lpexact.c.
References SCIP_Row::activity, SCIP_RowExact::activity, assert(), SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_Stat::lpcount, NULL, SCIP_INVALID, SCIProwExactRecalcLPActivity(), SCIP_Row::validactivitylp, and SCIP_Lp::validsollp.
Referenced by SCIPgetRowSolActivityExact(), and SCIProwExactGetLPFeasibility().
| SCIP_RATIONAL * SCIProwExactGetPseudoActivity | ( | SCIP_ROWEXACT * | row, |
| SCIP_STAT * | stat ) |
returns the pseudo activity of a row in the current pseudo solution
| row | LP row |
| stat | problem statistics |
Definition at line 5734 of file lpexact.c.
References assert(), SCIP_Stat::domchgcount, SCIP_RowExact::fprow, NULL, SCIP_Row::pseudoactivity, SCIP_RowExact::pseudoactivity, SCIP_INVALID, SCIProwExactRecalcPseudoActivity(), and SCIP_Row::validpsactivitydomchg.
Referenced by SCIPgetRowSolActivityExact(), and SCIProwExactGetPseudoFeasibility().
| void SCIProwExactSort | ( | SCIP_ROWEXACT * | row | ) |
sorts row entries such that LP columns precede non-LP columns and inside both parts lower column indices precede higher ones
| row | row to be sorted |
Definition at line 5755 of file lpexact.c.
References assert(), NULL, rowExactSortLP(), and rowExactSortNonLP().
Referenced by rowExactCreateFromRowLimitEncodingLength(), and rowExactMerge().
|
static |
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 5773 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, SCIP_RowExact::fprow, i, SCIP_ColExact::index, SCIP_RowExact::integral, SCIP_RowExact::len, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_Row::name, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_RowExact::nunlinked, SCIPcolIsIntegral(), SCIPintervalSetRational(), SCIPrationalAdd(), SCIPrationalIsIntegral(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIProwExactSort(), SCIPsetDebugMsg, TRUE, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.
Referenced by SCIProwExactForceSort().
| void SCIProwExactDelaySort | ( | SCIP_ROWEXACT * | rowexact | ) |
enables delaying of row sorting
| rowexact | LP rowexact |
Definition at line 5867 of file lpexact.c.
References assert(), SCIP_RowExact::delaysort, NULL, and TRUE.
Referenced by SCIPaddVarsToRowExact().
| void SCIProwExactForceSort | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_SET * | set ) |
disables delaying of row sorting, sorts row and merges coefficients with equal columns
| rowexact | LP rowexact |
| set | global SCIP settings |
Definition at line 5878 of file lpexact.c.
References assert(), SCIP_RowExact::delaysort, FALSE, NULL, and rowExactMerge().
Referenced by SCIPaddVarsToRowExact().
| void SCIProwExactRecalcLPActivity | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_STAT * | stat ) |
recalculates the current activity of a row
| rowexact | LP row |
| stat | problem statistics |
Definition at line 5891 of file lpexact.c.
References SCIP_Row::activity, SCIP_RowExact::activity, assert(), c, SCIP_Row::cols, SCIP_RowExact::cols, SCIP_RowExact::constant, SCIP_RowExact::fprow, SCIP_Row::linkpos, SCIP_Stat::lpcount, SCIP_Col::lppos, SCIP_Row::nlpcols, NULL, SCIP_Row::nunlinked, SCIP_Col::primsol, SCIP_ColExact::primsol, SCIPrationalAddProd(), SCIPrationalGetReal(), SCIPrationalIsInfinity(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIP_Row::validactivitylp, and SCIP_RowExact::vals.
Referenced by SCIProwExactGetLPActivity().
| void SCIProwExactRecalcPseudoActivity | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_STAT * | stat ) |
calculates the current pseudo activity of a row
| rowexact | row data |
| stat | problem statistics |
Definition at line 5960 of file lpexact.c.
References assert(), SCIP_RowExact::cols, SCIP_RowExact::constant, SCIP_Stat::domchgcount, SCIP_ColExact::fpcol, SCIP_RowExact::fprow, i, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Col::lppos, NULL, SCIP_Row::pseudoactivity, SCIP_RowExact::pseudoactivity, SCIP_VARSTATUS_COLUMN, SCIPcolExactGetBestBound(), SCIPrationalAddProd(), SCIPrationalGetReal(), SCIPrationalSetRational(), SCIPvarGetStatus(), SCIP_Row::validpsactivitydomchg, SCIP_RowExact::vals, and SCIP_Col::var.
Referenced by SCIProwExactGetPseudoActivity().
| SCIP_RATIONAL * SCIPcolExactGetObj | ( | SCIP_COLEXACT * | col | ) |
gets objective value of column
| col | LP column |
Definition at line 5996 of file lpexact.c.
References assert(), NULL, and SCIP_ColExact::obj.
| SCIP_RATIONAL * SCIPcolExactGetLb | ( | SCIP_COLEXACT * | col | ) |
gets lower bound of column
| col | LP column |
Definition at line 6006 of file lpexact.c.
References assert(), SCIP_ColExact::lb, and NULL.
Referenced by SCIPlpExactGetDualfarkas().
| SCIP_RATIONAL * SCIPcolExactGetUb | ( | SCIP_COLEXACT * | col | ) |
gets upper bound of column
| col | LP column |
Definition at line 6016 of file lpexact.c.
References assert(), NULL, and SCIP_ColExact::ub.
Referenced by SCIPlpExactGetDualfarkas().
| SCIP_RATIONAL * SCIPcolExactGetBestBound | ( | SCIP_COLEXACT * | col | ) |
gets best bound of column with respect to the objective function
| col | LP column |
Definition at line 6026 of file lpexact.c.
References assert(), SCIP_ColExact::lb, NULL, SCIP_ColExact::obj, SCIPrationalIsPositive(), SCIPrationalIsZero(), and SCIP_ColExact::ub.
Referenced by SCIProwExactRecalcPseudoActivity().
| SCIP_RATIONAL * SCIPcolExactGetPrimsol | ( | SCIP_COLEXACT * | col | ) |
gets the primal LP solution of a column
| col | LP column |
Definition at line 6039 of file lpexact.c.
References assert(), SCIP_ColExact::fpcol, SCIP_Col::lppos, NULL, and SCIP_ColExact::primsol.
Referenced by SCIPvarGetLPSolExact(), and SCIPvarGetLPSolExact_rec().
| SCIP_VAR * SCIPcolExactGetVar | ( | SCIP_COLEXACT * | col | ) |
gets variable this column represents
| col | LP column |
Definition at line 6052 of file lpexact.c.
References assert(), NULL, and SCIP_ColExact::var.
Referenced by certificatePrintRow(), SCIPcertificatePrintDualboundExactLP(), SCIPconsPrintCertificateExactLinear(), and SCIProwExactGenerateFpRows().
| SCIP_RETCODE SCIProwExactEnsureSize | ( | SCIP_ROWEXACT * | 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 6062 of file lpexact.c.
References assert(), BMSreallocBlockMemoryArray, SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::fprow, i, SCIP_RowExact::len, SCIP_RowExact::linkpos, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBlock(), SCIPsetCalcMemGrowSize(), SCIP_RowExact::size, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.
Referenced by rowExactAddCoef(), SCIPaddVarsToRowExact(), and SCIProwExactCreateFromRow().
|
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 6100 of file lpexact.c.
References assert(), newobj, oldobj, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalIsAbsInfinity(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalNegate(), and SCIPrationalSetReal().
Referenced by SCIPlpExactUpdateVarObj().
| SCIP_RATIONAL * SCIProwExactGetLhs | ( | SCIP_ROWEXACT * | row | ) |
returns the left hand side of the row
| row | LP row |
Definition at line 6255 of file lpexact.c.
References assert(), SCIP_RowExact::lhs, and NULL.
Referenced by SCIPconsPrintCertificateExactLinear(), and SCIPsepastoreExactAddCut().
| SCIP_RATIONAL * SCIProwExactGetRhs | ( | SCIP_ROWEXACT * | row | ) |
returns the right hand side of the row
| row | LP row |
Definition at line 6266 of file lpexact.c.
References assert(), NULL, and SCIP_RowExact::rhs.
Referenced by certificatePrintRow(), SCIPconsPrintCertificateExactLinear(), and SCIPsepastoreExactAddCut().
| SCIP_RATIONAL * SCIProwExactGetConstant | ( | SCIP_ROWEXACT * | row | ) |
returns the constant of the row
| row | LP row |
Definition at line 6277 of file lpexact.c.
References assert(), SCIP_RowExact::constant, and NULL.
Referenced by SCIPconsPrintCertificateExactLinear().
|
static |
compute the objective delta due the new lower bound
| 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 6289 of file lpexact.c.
References assert(), obj, SCIPrationalDiff(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalNegate(), and SCIPrationalSetReal().
Referenced by SCIPlpExactUpdateVarLb(), and SCIPlpExactUpdateVarLbGlobal().
|
static |
compute the objective delta due the new upper bound
| 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 6331 of file lpexact.c.
References assert(), obj, SCIPrationalDiff(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalMult(), SCIPrationalNegate(), and SCIPrationalSetReal().
Referenced by SCIPlpExactUpdateVarUb(), and SCIPlpExactUpdateVarUbGlobal().
|
static |
updates current pseudo and loose objective values for a change in a variable's objective value or bounds
| lpexact | current LP data |
| var | problem variable that changed |
| deltavalex | 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 6373 of file lpexact.c.
References assert(), SCIP_LpExact::glbpseudoobjval, SCIP_LpExact::glbpseudoobjvalinf, SCIP_LpExact::looseobjval, SCIP_LpExact::looseobjvalinf, NULL, SCIP_LpExact::pseudoobjval, SCIP_LpExact::pseudoobjvalinf, SCIP_Bool, SCIP_VARSTATUS_LOOSE, SCIPrationalAdd(), SCIPrationalIsZero(), SCIPvarGetStatusExact(), TRUE, and var.
Referenced by SCIPlpExactUpdateVarColumn(), SCIPlpExactUpdateVarLb(), SCIPlpExactUpdateVarLbGlobal(), SCIPlpExactUpdateVarLoose(), SCIPlpExactUpdateVarObj(), SCIPlpExactUpdateVarUb(), and SCIPlpExactUpdateVarUbGlobal().
| SCIP_RETCODE SCIPlpExactUpdateVarObj | ( | SCIP_SET * | set, |
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_VAR * | var, | ||
| SCIP_RATIONAL * | oldobj, | ||
| SCIP_RATIONAL * | newobj ) |
updates current pseudo and loose objective value for a change in a variable's objective value
| set | global SCIP settings |
| lpexact | current LP data |
| var | problem variable that changed |
| oldobj | old objective value of variable |
| newobj | new objective value of variable |
Definition at line 6422 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::fplp, getObjvalDeltaObjExact(), lpExactUpdateObjval(), newobj, NULL, oldobj, SCIP_Lp::probing, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPvarGetLbGlobalExact(), SCIPvarGetLbLocalExact(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbGlobalExact(), SCIPvarGetUbLocalExact(), TRUE, and var.
Referenced by SCIPeventProcess(), SCIPlpExactUpdateAddVar(), and SCIPlpExactUpdateDelVar().
| SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var, | ||
| SCIP_RATIONAL * | oldlb, | ||
| SCIP_RATIONAL * | newlb ) |
updates current root pseudo objective value for a global change in a variable's lower bound
| lpexact | 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 6469 of file lpexact.c.
References assert(), FALSE, getObjvalDeltaLbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsPositive(), SCIPvarGetObjExact(), TRUE, and var.
Referenced by SCIPeventProcess(), and updateLpExactBoundChange().
| SCIP_RETCODE SCIPlpExactUpdateVarLb | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var, | ||
| SCIP_RATIONAL * | oldlb, | ||
| SCIP_RATIONAL * | newlb ) |
updates current pseudo and loose objective value for a change in a variable's lower bound
| lpexact | 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 6501 of file lpexact.c.
References assert(), FALSE, getObjvalDeltaLbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsPositive(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), TRUE, and var.
Referenced by SCIPeventProcess(), and updateLpExactBoundChange().
| SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var, | ||
| SCIP_RATIONAL * | oldub, | ||
| SCIP_RATIONAL * | newub ) |
updates current root pseudo objective value for a global change in a variable's upper bound
| lpexact | 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 6536 of file lpexact.c.
References assert(), FALSE, getObjvalDeltaUbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPvarGetObjExact(), TRUE, and var.
Referenced by SCIPeventProcess(), and updateLpExactBoundChange().
| SCIP_RETCODE SCIPlpExactUpdateVarUb | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var, | ||
| SCIP_RATIONAL * | oldub, | ||
| SCIP_RATIONAL * | newub ) |
updates current pseudo objective value for a change in a variable's upper bound
| lpexact | 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 6568 of file lpexact.c.
References assert(), FALSE, getObjvalDeltaUbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), TRUE, and var.
Referenced by SCIPeventProcess(), and updateLpExactBoundChange().
| SCIP_RETCODE SCIPlpExactUpdateAddVar | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var ) |
informs LP, that given variable was added to the problem
| lpexact | current LP data |
| set | global SCIP settings |
| var | variable that is now a LOOSE problem variable |
Definition at line 6603 of file lpexact.c.
References assert(), SCIP_LpExact::nloosevars, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpExactUpdateVarObj(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), and var.
Referenced by SCIPprobAddVar().
| SCIP_RETCODE SCIPlpExactUpdateDelVar | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var ) |
informs LP, that given variable is to be deleted from the problem
| lpexact | current LP data |
| set | global SCIP settings |
| var | variable that will be deleted from the problem |
Definition at line 6634 of file lpexact.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpExactDecNLoosevars(), SCIPlpExactUpdateVarObj(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), and var.
| SCIP_RETCODE SCIPlpExactUpdateVarColumn | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var ) |
informs LP, that given formerly loose problem variable is now a column variable
| lpexact | current LP data |
| set | global SCIP settings |
| var | problem variable that changed from LOOSE to COLUMN |
Definition at line 6663 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::looseobjvalinf, lpExactUpdateObjval(), obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPlpExactDecNLoosevars(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalNegate(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), SCIPvarGetUbLocalExact(), TRUE, and var.
Referenced by SCIPvarColumnExact().
| SCIP_RETCODE SCIPlpExactUpdateVarLoose | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_VAR * | var ) |
informs LP, that given formerly column problem variable is now again a loose variable
| lpexact | current LP data |
| set | global SCIP settings |
| var | problem variable that changed from COLUMN to LOOSE |
Definition at line 6718 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::looseobjvalinf, lpExactUpdateObjval(), SCIP_LpExact::nloosevars, obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocalExact(), TRUE, and var.
| void SCIPlpExactDecNLoosevars | ( | SCIP_LPEXACT * | lpexact | ) |
decrease the number of loose variables by one
| lpexact | current LP data |
Definition at line 6770 of file lpexact.c.
References assert(), SCIP_LpExact::looseobjval, SCIP_LpExact::looseobjvalinf, SCIP_LpExact::nloosevars, NULL, and SCIPrationalSetReal().
Referenced by SCIPlpExactUpdateDelVar(), SCIPlpExactUpdateVarColumn(), and SCIPvarMultiaggregateExact().
| int SCIPlpExactGetNRows | ( | SCIP_LPEXACT * | lpexact | ) |
get the number of rows currently in the lp
| lpexact | current LP data |
Definition at line 6788 of file lpexact.c.
References assert(), SCIP_LpExact::nrows, and NULL.
Referenced by SCIPlpExactSyncLPs().
| SCIP_RETCODE SCIPlpExactGetSol | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_Bool * | primalfeasible, | ||
| SCIP_Bool * | dualfeasible, | ||
| SCIP_Bool | overwritefplp ) |
stores the LP solution in the columns and rows
| lpexact | 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 |
| overwritefplp | should the floating point values be overwritten, e.g. if fp lp was infeasible |
Definition at line 6853 of file lpexact.c.
References SCIP_Row::activity, SCIP_RowExact::activity, assert(), SCIP_Col::basisstatus, SCIP_ColExact::basisstatus, SCIP_Row::basisstatus, SCIP_RowExact::basisstatus, BMSclearMemoryArray, SCIP_Stat::boundingerrorexlp, c, SCIP_RowExact::constant, SCIP_Lp::dualfeasible, SCIP_LpExact::dualfeasible, SCIP_Row::dualsol, SCIP_RowExact::dualsol, FALSE, SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_RowExact::fprowrhs, SCIP_RowExact::lhs, SCIP_Stat::lpcount, SCIP_Lp::lpicols, SCIP_LpExact::lpicols, SCIP_LpExact::lpiexact, SCIP_LpExact::lpirows, SCIP_Lp::lpobjval, SCIP_LpExact::lpobjval, SCIP_Lp::lpsolstat, SCIP_LpExact::lpsolstat, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, NULL, obj, SCIP_Lp::primalfeasible, SCIP_LpExact::primalfeasible, primsol, SCIP_Col::primsol, r, REALABS, SCIP_Col::redcost, SCIP_RowExact::rhs, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIPdebug, SCIPlpiExactGetBase(), SCIPlpiExactGetSol(), SCIPrationalAdd(), SCIPrationalAddProd(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalDebugMessage, SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalGetReal(), SCIPrationalIsGE(), SCIPrationalIsGT(), SCIPrationalIsInfinity(), SCIPrationalIsLE(), SCIPrationalIsLT(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalRoundReal(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIProwIsInLP(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPvarGetName(), SCIP_LpExact::solisbasic, SCIP_Lp::solved, SCIP_LpExact::solved, TRUE, SCIP_Row::validactivitylp, SCIP_RowExact::validactivitylp, SCIP_Col::validredcostlp, SCIP_ColExact::validredcostlp, and var.
Referenced by SCIPlpExactSolveAndEval(), and SCIPlpExactStartDive().
| SCIP_RETCODE SCIPlpExactGetUnboundedSol | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_Bool * | primalfeasible, | ||
| SCIP_Bool * | rayfeasible ) |
stores LP solution with infinite objective value in the columns and rows
| lpexact | 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 7124 of file lpexact.c.
References SCIP_Bool, SCIP_ERROR, and SCIPerrorMessage.
Referenced by SCIPlpExactSolveAndEval(), and SCIPlpExactStartDive().
| SCIP_RETCODE SCIPlpExactGetPrimalRay | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_RATIONAL ** | ray ) |
returns primal ray proving the unboundedness of the current LP
| lpexact | 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 7137 of file lpexact.c.
References assert(), c, SCIP_LpExact::flushed, SCIP_LpExact::lpicols, SCIP_LpExact::lpiexact, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, SCIP_LpExact::nlpicols, NULL, SCIP_CALL, SCIP_LPERROR, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIPerrorMessage, SCIPlpiExactGetPrimalRay(), SCIPlpiExactHasPrimalRay(), SCIPrationalCreateBufferArray(), SCIPrationalFreeBufferArray(), SCIPrationalIsNegInfinity(), SCIPrationalSetRational(), SCIPsetDebugMsg, SCIPvarGetProbindex(), SCIP_LpExact::solved, SCIP_ColExact::var, and var.
| SCIP_RETCODE SCIPlpExactGetDualfarkas | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_Bool * | valid, | ||
| SCIP_Bool | overwritefplp ) |
stores the dual Farkas multipliers for infeasibility proof in rows. besides
valid is not NULL. | lpexact | current LP data |
| set | global SCIP settings |
| stat | problem statistics |
| valid | pointer to store whether the Farkas proof is valid or NULL |
| overwritefplp | should the floating point values be overwritten, e.g. if fp lp was infeasible |
Definition at line 7198 of file lpexact.c.
References assert(), SCIP_Row::basisstatus, SCIP_RowExact::basisstatus, c, SCIP_RowExact::cols, SCIP_Row::dualfarkas, SCIP_Row::dualsol, FALSE, SCIP_LpExact::flushed, SCIP_LpExact::fplp, SCIP_RowExact::len, SCIP_Lp::lpicols, SCIP_LpExact::lpicols, SCIP_LpExact::lpiexact, SCIP_Lp::lpirows, SCIP_LpExact::lpirows, SCIP_Lp::lpobjval, SCIP_ColExact::lppos, SCIP_Lp::lpsolstat, SCIP_LpExact::lpsolstat, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, NULL, primsol, SCIP_Col::primsol, r, SCIP_Col::redcost, SCIP_BASESTAT_BASIC, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_OKAY, SCIPcolExactGetLb(), SCIPcolExactGetUb(), SCIPlpiExactGetDualfarkas(), SCIPrationalAdd(), SCIPrationalAddProd(), SCIPrationalCreateBuffer(), SCIPrationalCreateBufferArray(), SCIPrationalDebugMessage, SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalFreeBufferArray(), SCIPrationalGetReal(), SCIPrationalIsAbsInfinity(), SCIPrationalIsGE(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalMult(), SCIPrationalSetInfinity(), SCIPrationalSetRational(), SCIPrationalSetReal(), SCIProwGetName(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIP_LpExact::solved, TRUE, valid, SCIP_Row::validactivitylp, SCIP_RowExact::validactivitylp, SCIP_Col::validfarkaslp, SCIP_ColExact::validfarkaslp, SCIP_Col::validredcostlp, and SCIP_ColExact::validredcostlp.
Referenced by SCIPlpExactSolveAndEval(), and SCIPlpExactStartDive().
| SCIP_RETCODE SCIPlpExactGetIterations | ( | SCIP_LPEXACT * | lpexact, |
| int * | iterations ) |
get number of iterations used in last LP solve
| lpexact | current exact LP data |
| iterations | pointer to store the iteration count |
Definition at line 7398 of file lpexact.c.
References assert(), SCIP_LpExact::lpiexact, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiExactGetIterations().
Referenced by SCIPlpExactSolveAndEval().
| void SCIPlpExactGetObjval | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_RATIONAL * | res ) |
gets objective value of current LP
| lpexact | current LP data |
| set | global SCIP settings |
| res | result pointer to store rational |
Definition at line 7416 of file lpexact.c.
References assert(), SCIP_LpExact::fplp, SCIP_Lp::hasprovedbound, SCIP_LpExact::looseobjval, SCIP_LpExact::looseobjvalinf, SCIP_LpExact::lpobjval, SCIP_LpExact::nloosevars, NULL, SCIPrationalAdd(), SCIPrationalIsAbsInfinity(), SCIPrationalIsZero(), SCIPrationalSetNegInfinity(), and SCIPrationalSetRational().
Referenced by SCIPcertificatePrintDualboundExactLP(), SCIPgetLPExactObjval(), SCIPgetSolOrigObjExact(), SCIPgetSolTransObjExact(), SCIPlpExactSetCutoffbound(), SCIPnodeUpdateLowerboundLP(), and SCIPsolLinkLPSolExact().
| void SCIPlpExactGetPseudoObjval | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_RATIONAL * | res ) |
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
| lpexact | current LP data |
| set | global SCIP settings |
| res | result pointer to store rational |
Definition at line 7438 of file lpexact.c.
References assert(), NULL, SCIP_LpExact::pseudoobjval, SCIP_LpExact::pseudoobjvalinf, SCIPrationalSetNegInfinity(), and SCIPrationalSetRational().
Referenced by SCIPcertificatePrintDualboundPseudo(), SCIPgetSolOrigObjExact(), SCIPgetSolTransObjExact(), and SCIPsolLinkPseudoSolExact().
| SCIP_RETCODE SCIPlpExactShrinkCols | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| int | newncols ) |
removes all columns after the given number of cols from the LP
| lpexact | LP data |
| set | global SCIP settings |
| newncols | new number of columns in the LP |
Definition at line 7455 of file lpexact.c.
References assert(), c, checkLinks, colExactUpdateDelLP(), SCIP_LpExact::cols, SCIP_Lp::diving, FALSE, SCIP_LpExact::flushed, SCIP_LpExact::fplp, SCIP_ColExact::len, SCIP_LpExact::lpifirstchgcol, SCIP_ColExact::lppos, MIN, SCIP_LpExact::ncols, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPvarGetColExact(), SCIPvarGetStatusExact(), and SCIP_ColExact::var.
Referenced by SCIPlpExactClear().
| SCIP_RETCODE SCIPlpExactShrinkRows | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| int | newnrows ) |
removes and releases all rows after the given number of rows from the LP
| lpexact | LP data |
| blkmem | block memory |
| set | global SCIP settings |
| newnrows | new number of rows in the LP |
Definition at line 7503 of file lpexact.c.
References assert(), checkLinks, SCIP_RowExact::cols, FALSE, SCIP_LpExact::flushed, SCIP_RowExact::len, SCIP_RowExact::lpdepth, SCIP_LpExact::lpifirstchgrow, SCIP_RowExact::lppos, MIN, SCIP_LpExact::nrows, NULL, r, rowExactUpdateDelLP(), SCIP_LpExact::rows, SCIP_CALL, SCIP_OKAY, SCIProwExactRelease(), and SCIPsetDebugMsg.
Referenced by SCIPlpExactClear().
| SCIP_RETCODE SCIPlpExactReset | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_EVENTQUEUE * | eventqueue ) |
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
| lpexact | LP data |
| blkmem | block memory |
| set | global SCIP settings |
| stat | problem statistics |
| eventqueue | event queue |
Definition at line 7550 of file lpexact.c.
References assert(), SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::lastlpalgo, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpExactClear(), SCIPlpExactFlush(), SCIPrationalSetReal(), SCIP_LpExact::solisbasic, SCIP_LpExact::solved, and TRUE.
Referenced by freeSolve().
| SCIP_RETCODE SCIPlpExactClear | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set ) |
removes all columns and rows from LP, releases all rows
| lpexact | LP data |
| blkmem | block memory |
| set | global SCIP settings |
Definition at line 7581 of file lpexact.c.
References assert(), SCIP_Lp::diving, SCIP_LpExact::fplp, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpExactShrinkCols(), SCIPlpExactShrinkRows(), and SCIPsetDebugMsg.
Referenced by SCIPlpExactFree(), and SCIPlpExactReset().
| void SCIPlpExactForceExactSolve | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set ) |
forces an exact lp to be solved in the next exact bound computation
| lpexact | exact LP data |
| set | global SCIP settings |
Definition at line 7598 of file lpexact.c.
References assert(), SCIP_LpExact::forceexactsolve, NULL, and TRUE.
Referenced by solveNode().
| void SCIPlpExactForceSafeBound | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set ) |
forces the next exact bound computation to be executed even in probing mode
| lpexact | exact LP data |
| set | global SCIP settings |
Definition at line 7614 of file lpexact.c.
References assert(), SCIP_LpExact::forcesafebound, NULL, and TRUE.
Referenced by SCIPlpSolveAndEval(), and SCIPtreeEndProbing().
| void SCIPlpExactAllowExactSolve | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_SET * | set, | ||
| SCIP_Bool | allowexact ) |
allows an exact lp to be solved in the next exact bound computation
| lpexact | exact LP data |
| set | global SCIP settings |
| allowexact | TRUE if next safe bounding call should be allowed to be exact, FALSE otherwise |
Definition at line 7630 of file lpexact.c.
References SCIP_LpExact::allowexactsolve, assert(), NULL, and SCIP_Bool.
Referenced by priceAndCutLoop(), and SCIPlpExactComputeSafeBound().
|
static |
save current LP solution values stored in each column
| colexact | exact LP column |
| blkmem | block memory |
Definition at line 7648 of file lpexact.c.
References assert(), SCIP_ColExact::basisstatus, SCIP_ColExactSolVals::basisstatus, BMSallocBlockMemory, NULL, SCIP_ColExact::primsol, SCIP_ColExactSolVals::primsol, SCIP_ColExact::redcost, SCIP_ColExactSolVals::redcost, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrationalCopyBlock(), SCIPrationalSetRational(), and SCIP_ColExact::storedsolvals.
Referenced by SCIPlpExactStartDive().
|
static |
restore LP solution values in column
| colexact | exact 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 7685 of file lpexact.c.
References assert(), SCIP_ColExact::basisstatus, SCIP_ColExactSolVals::basisstatus, BMSfreeBlockMemoryNull, NULL, SCIP_ColExact::primsol, SCIP_ColExactSolVals::primsol, SCIP_ColExact::redcost, SCIP_ColExactSolVals::redcost, SCIP_BASESTAT_ZERO, SCIP_Bool, SCIP_Longint, SCIP_OKAY, SCIPrationalSetRational(), SCIPrationalSetReal(), SCIP_ColExact::storedsolvals, SCIP_ColExact::validfarkaslp, and SCIP_ColExact::validredcostlp.
Referenced by SCIPlpExactEndDive().
|
static |
save current LP solution values stored in each column
| rowexact | exact LP row |
| blkmem | block memory |
| infeasible | is the solution infeasible? |
Definition at line 7732 of file lpexact.c.
References SCIP_RowExact::activity, SCIP_RowExactSolVals::activity, assert(), SCIP_RowExact::basisstatus, SCIP_RowExactSolVals::basisstatus, BMSallocBlockMemory, SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, SCIP_RowExactSolVals::dualsol, NULL, SCIP_ALLOC, SCIP_BASESTAT_BASIC, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPrationalCopyBlock(), SCIPrationalCreateBlock(), SCIPrationalSetInfinity(), SCIPrationalSetRational(), and SCIP_RowExact::storedsolvals.
Referenced by SCIPlpExactStartDive().
|
static |
restore LP solution values in row
| rowexact | exact 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 7789 of file lpexact.c.
References SCIP_RowExact::activity, SCIP_RowExactSolVals::activity, assert(), SCIP_RowExact::basisstatus, SCIP_RowExactSolVals::basisstatus, BMSfreeBlockMemoryNull, SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, SCIP_RowExactSolVals::dualsol, NULL, SCIP_BASESTAT_BASIC, SCIP_Bool, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIPrationalSetRational(), SCIPrationalSetReal(), SCIP_RowExact::storedsolvals, and SCIP_RowExact::validactivitylp.
Referenced by SCIPlpExactEndDive().
|
static |
save current LP values dependent on the solution
| lpexact | exact LP data |
| stat | problem statistics |
| blkmem | block memory |
Definition at line 7838 of file lpexact.c.
References assert(), BMSallocMemory, SCIP_LpExact::dualchecked, SCIP_LpExactSolVals::dualchecked, SCIP_LpExact::dualfeasible, SCIP_LpExactSolVals::dualfeasible, SCIP_LpExactSolVals::lpissolved, SCIP_LpExact::lpobjval, SCIP_LpExactSolVals::lpobjval, SCIP_LpExact::lpsolstat, SCIP_LpExactSolVals::lpsolstat, NULL, SCIP_LpExact::primalchecked, SCIP_LpExactSolVals::primalchecked, SCIP_LpExact::primalfeasible, SCIP_LpExactSolVals::primalfeasible, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrationalCopyBlock(), SCIPrationalSetRational(), SCIP_LpExact::solisbasic, SCIP_LpExactSolVals::solisbasic, SCIP_LpExact::solved, and SCIP_LpExact::storedsolvals.
Referenced by SCIPlpExactStartDive().
|
static |
restore LP solution values in column
| lpexact | exact LP data |
| blkmem | block memory |
Definition at line 7887 of file lpexact.c.
References assert(), SCIP_LpExact::dualchecked, SCIP_LpExactSolVals::dualchecked, SCIP_LpExact::dualfeasible, SCIP_LpExactSolVals::dualfeasible, FALSE, SCIP_LpExactSolVals::lpissolved, SCIP_LpExact::lpobjval, SCIP_LpExactSolVals::lpobjval, SCIP_LpExact::lpsolstat, SCIP_LpExactSolVals::lpsolstat, NULL, SCIP_LpExact::primalchecked, SCIP_LpExactSolVals::primalchecked, SCIP_LpExact::primalfeasible, SCIP_LpExactSolVals::primalfeasible, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIPrationalSetInfinity(), SCIPrationalSetRational(), SCIP_LpExact::solisbasic, SCIP_LpExactSolVals::solisbasic, SCIP_LpExact::solved, and SCIP_LpExact::storedsolvals.
Referenced by SCIPlpExactEndDive().
| void SCIProwExactLock | ( | SCIP_ROWEXACT * | row | ) |
locks an unmodifiable row, which forbids further changes; has no effect on modifiable rows
| row | exact LP row |
Definition at line 7943 of file lpexact.c.
References assert(), SCIP_RowExact::modifiable, SCIP_RowExact::nlocks, and NULL.
| void SCIProwExactUnlock | ( | SCIP_ROWEXACT * | row | ) |
unlocks a lock of an unmodifiable row; a row with no sealed lock may be modified; has no effect on modifiable rows
| row | exact LP row |
Definition at line 7957 of file lpexact.c.
References assert(), SCIP_RowExact::modifiable, SCIP_RowExact::nlocks, and NULL.
|
static |
ensures that chgrows array can store at least num entries
| lpexact | current exact LP data |
| set | global SCIP settings |
| num | minimum number of entries to store |
Definition at line 7973 of file lpexact.c.
References assert(), BMSreallocMemoryArray, SCIP_LpExact::chgrows, SCIP_LpExact::chgrowssize, SCIP_LpExact::nchgrows, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by rowExactSideChanged().
|
static |
notifies exact LP row that its sides were changed
| rowexact | exact LP row |
| set | global SCIP settings |
| lpexact | current exact LP data |
| sidetype | type of side: left or right hand side |
Definition at line 7997 of file lpexact.c.
References assert(), SCIP_LpExact::chgrows, ensureChgrowsSizeExact(), FALSE, SCIP_LpExact::flushed, SCIP_RowExact::lhschanged, SCIP_RowExact::lpipos, SCIP_LpExact::nchgrows, NULL, SCIP_RowExact::rhschanged, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPABORT, SCIPerrorMessage, and TRUE.
Referenced by SCIProwExactChgLhs(), and SCIProwExactChgRhs().
| SCIP_RETCODE SCIProwExactChgLhs | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | lhs ) |
changes left hand side of exact LP row
| rowexact | exact LP row |
| set | global SCIP settings |
| lpexact | current exact LP data |
| lhs | new left hand side |
Definition at line 8042 of file lpexact.c.
References assert(), SCIP_RowExact::lhs, SCIP_RowExact::lhsreal, NULL, rowExactSideChanged(), SCIP_CALL, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_SIDETYPE_LEFT, SCIPrationalIsEQ(), SCIPrationalRoundReal(), and SCIPrationalSetRational().
Referenced by SCIPchgRowExactLhs(), and SCIPlpExactEndDive().
| SCIP_RETCODE SCIProwExactChgRhs | ( | SCIP_ROWEXACT * | rowexact, |
| SCIP_SET * | set, | ||
| SCIP_LPEXACT * | lpexact, | ||
| SCIP_RATIONAL * | rhs ) |
changes right hand side of exact LP row
| rowexact | exact LP row |
| set | global SCIP settings |
| lpexact | current exact LP data |
| rhs | new right hand side |
Definition at line 8063 of file lpexact.c.
References assert(), NULL, SCIP_RowExact::rhs, SCIP_RowExact::rhsreal, rowExactSideChanged(), SCIP_CALL, SCIP_OKAY, SCIP_R_ROUND_UPWARDS, SCIP_SIDETYPE_RIGHT, SCIPrationalIsEQ(), SCIPrationalRoundReal(), and SCIPrationalSetRational().
Referenced by SCIPchgRowExactRhs(), and SCIPlpExactEndDive().
| SCIP_LPSOLSTAT SCIPlpExactGetSolstat | ( | SCIP_LPEXACT * | lpexact | ) |
gets solution status of current exact LP
| lpexact | current LP data |
Definition at line 8084 of file lpexact.c.
References assert(), SCIP_LpExact::flushed, SCIP_LpExact::lpsolstat, NULL, and SCIP_LPSOLSTAT_NOTSOLVED.
Referenced by SCIPgetLPExactSolstat(), SCIPlpExactEndDive(), SCIPlpExactStartDive(), SCIPnodeUpdateLowerboundLP(), and SCIPsolveExactDiveLP().
| SCIP_RETCODE SCIPlpExactGetState | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_LPISTATE ** | lpistate ) |
stores exact LP state (like basis information) into LP state object
| lpexact | exact LP data |
| blkmem | block memory |
| lpistate | pointer to LP state information (like basis information) |
Definition at line 8094 of file lpexact.c.
References assert(), SCIP_LpExact::flushed, SCIP_LpExact::lpiexact, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiExactGetState(), and SCIP_LpExact::solved.
| SCIP_RETCODE SCIPlpExactSetState | ( | SCIP_LPEXACT * | lpexact, |
| 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 exact LP state (like basis information) into solver
| lpexact | exact 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 8118 of file lpexact.c.
References assert(), SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::flushed, SCIP_LpExact::lpiexact, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPlpExactFlush(), SCIPlpiExactHasStateBasis(), SCIPlpiExactSetState(), SCIP_LpExact::solisbasic, and SCIP_LpExact::solved.
Referenced by SCIPlpExactEndDive().
| SCIP_RETCODE SCIPlpExactFreeState | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_LPISTATE ** | lpistate ) |
frees exact LP state information
| lpexact | exact LP data |
| blkmem | block memory |
| lpistate | pointer to LP state information (like basis information) |
Definition at line 8160 of file lpexact.c.
References assert(), SCIP_LpExact::lpiexact, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiExactFreeState().
Referenced by SCIPlpExactEndDive().
| SCIP_RETCODE SCIPlpExactStartDive | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat ) |
initiates exact LP diving
| lpexact | current exact LP data |
| blkmem | block memory |
| set | global SCIP settings |
| stat | problem statistics |
Definition at line 8177 of file lpexact.c.
References assert(), c, colExactStoreSolVals(), SCIP_LpExact::cols, SCIP_LpExact::divelpistate, SCIP_LpExact::divelpwasdualchecked, SCIP_LpExact::divelpwasdualfeas, SCIP_LpExact::divelpwasprimchecked, SCIP_LpExact::divelpwasprimfeas, SCIP_LpExact::divenolddomchgs, SCIP_Lp::diving, SCIP_LpExact::diving, SCIP_LpExact::divinglpiitlim, SCIP_Stat::domchgcount, SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::flushed, SCIP_LpExact::fplp, SCIP_ColExact::lb, lpExactStoreSolVals(), SCIP_LpExact::lpiexact, SCIP_LpExact::lpsolstat, SCIP_LpExactSolVals::lpsolstat, SCIP_LpExact::ncols, SCIP_LpExact::ndivechgsides, SCIP_LpExact::ndivingrows, SCIP_LpExact::nrows, NULL, SCIP_ColExact::obj, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, r, rowExactStoreSolVals(), SCIP_LpExact::rows, 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, SCIPlpExactGetDualfarkas(), SCIPlpExactGetSol(), SCIPlpExactGetSolstat(), SCIPlpExactGetUnboundedSol(), SCIPlpiExactGetIntpar(), SCIPlpiExactGetState(), SCIPrationalIsEQ(), SCIPsetDebugMsg, SCIPvarGetColExact(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), SCIPvarGetStatusExact(), SCIPvarGetUbLocalExact(), SCIP_LpExact::solved, SCIP_LpExact::storedsolvals, TRUE, SCIP_ColExact::ub, and SCIP_ColExact::var.
Referenced by SCIPstartExactDive().
| SCIP_RETCODE SCIPlpExactEndDive | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set, | ||
| SCIP_STAT * | stat, | ||
| SCIP_EVENTQUEUE * | eventqueue, | ||
| SCIP_VAR ** | vars, | ||
| int | nvars ) |
quits exact LP diving and resets bounds and objective values of columns to the current node's values
| lpexact | current exact LP data |
| blkmem | block memory |
| set | global SCIP settings |
| stat | problem statistics |
| eventqueue | event queue |
| vars | array with all active variables |
| nvars | number of active variables |
Definition at line 8280 of file lpexact.c.
References assert(), c, colExactRestoreSolVals(), SCIP_LpExact::cols, SCIP_LpExact::divechgrows, SCIP_LpExact::divechgsides, SCIP_LpExact::divechgsidetypes, SCIP_LpExact::divelpistate, SCIP_LpExact::divelpwasdualchecked, SCIP_LpExact::divelpwasdualfeas, SCIP_LpExact::divelpwasprimchecked, SCIP_LpExact::divelpwasprimfeas, SCIP_LpExact::diving, SCIP_LpExact::divinglpiitlim, SCIP_LpExact::divingobjchg, FALSE, SCIP_LpExact::flushed, SCIP_ColExact::lb, SCIP_Stat::lpcount, lpExactRestoreSolVals(), lpExactSetIterationLimit(), SCIP_LpExactSolVals::lpissolved, SCIP_LpExact::lpobjval, SCIP_LpExactSolVals::lpobjval, SCIP_LpExact::lpsolstat, SCIP_LpExactSolVals::lpsolstat, SCIP_LpExact::ncols, SCIP_LpExact::ndivechgsides, SCIP_LpExact::nrows, NULL, nvars, SCIP_ColExact::obj, r, rowExactRestoreSolVals(), SCIP_LpExact::rows, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIP_VARSTATUS_COLUMN, SCIPcolExactChgLb(), SCIPcolExactChgObj(), SCIPcolExactChgUb(), SCIPlpExactFreeState(), SCIPlpExactGetSolstat(), SCIPlpExactSetState(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalSetRational(), SCIProwExactChgLhs(), SCIProwExactChgRhs(), SCIPsetDebugMsg, SCIPvarGetColExact(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), SCIPvarGetStatus(), SCIPvarGetStatusExact(), SCIPvarGetUbLocalExact(), SCIP_LpExact::solved, SCIP_LpExact::storedsolvals, TRUE, SCIP_ColExact::ub, SCIP_ColExact::var, var, and vars.
Referenced by SCIPendExactDive().
| SCIP_Bool SCIPlpExactDiving | ( | SCIP_LPEXACT * | lpexact | ) |
returns whether the exact LP is in exact diving mode
| lpexact | current exact LP data |
Definition at line 8423 of file lpexact.c.
References SCIP_LpExact::diving, FALSE, NULL, and SCIP_Bool.
Referenced by SCIPchgRowExactLhs(), SCIPchgRowExactRhs(), SCIPchgVarLbExactDive(), SCIPchgVarUbExactDive(), SCIPendDive(), SCIPendExactDive(), SCIPinExactDive(), SCIPisExactDivePossible(), SCIPlpEndDive(), SCIPsolveExactDiveLP(), SCIPstartExactDive(), SCIPvarChgLbExactDive(), and SCIPvarChgUbExactDive().
| SCIP_RETCODE SCIPlpExactWrite | ( | SCIP_LPEXACT * | lpexact, |
| const char * | fname ) |
writes exact LP to a file
| lpexact | current LP data |
| fname | file name |
Definition at line 8434 of file lpexact.c.
References assert(), SCIP_LpExact::flushed, SCIP_LpExact::lpiexact, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiExactWriteLP().
Referenced by SCIPwriteLPexact().
| void SCIPlpExactOverwriteFpDualSol | ( | SCIP_LPEXACT * | lpexact, |
| SCIP_Bool | dualfarkas ) |
overwrites the dual values stored in the fp lp with exact values
| lpexact | current LP data |
| dualfarkas | TRUE if farkas proof, FALSE if dual sol? |
Definition at line 8449 of file lpexact.c.
References assert(), c, SCIP_LpExact::cols, SCIP_Row::dualfarkas, SCIP_RowExact::dualfarkas, SCIP_Row::dualsol, SCIP_RowExact::dualsol, SCIP_Col::farkascoef, SCIP_ColExact::farkascoef, SCIP_ColExact::fpcol, SCIP_RowExact::fprow, SCIP_LpExact::ncols, SCIP_LpExact::nrows, NULL, r, SCIP_Col::redcost, SCIP_ColExact::redcost, SCIP_LpExact::rows, SCIP_Bool, and SCIPrationalGetReal().
| SCIP_RETCODE SCIPlpExactSyncLPs | ( | SCIP_LPEXACT * | lpexact, |
| BMS_BLKMEM * | blkmem, | ||
| SCIP_SET * | set ) |
synchronizes the exact LP with cuts from the floating-point LP
| lpexact | LP data |
| blkmem | block memory |
| set | global SCIP settings |
Definition at line 8474 of file lpexact.c.
References assert(), FALSE, SCIP_LpExact::fplp, SCIP_RowExact::fprow, i, SCIP_Row::lppos, SCIP_LpExact::nrows, NULL, SCIP_Lp::rows, SCIP_LpExact::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPlpExactAddRow(), SCIPlpExactDelRowset(), SCIPlpExactGetNRows(), SCIPlpGetNRows(), SCIProwExactIsInLP(), SCIProwGetRowExact(), SCIProwIsInLP(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, and TRUE.
Referenced by lpExactFlushAndSolve(), and SCIPwriteLPexact().