Scippy

SCIP

Solving Constraint Integer Programs

lpexact.h File Reference

Detailed Description

internal methods for exact LP management

Author
Leon Eifler

Definition in file lpexact.h.

#include <stdio.h>
#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/rational.h"
#include "scip/type_event.h"
#include "scip/type_lpexact.h"
#include "scip/type_misc.h"
#include "scip/type_prob.h"
#include "scip/type_rational.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_sol.h"
#include "scip/type_var.h"
#include "scip/pub_lpexact.h"

Go to the source code of this file.

Functions

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)
 
SCIP_RETCODE SCIPcolExactFree (SCIP_COLEXACT **col, BMS_BLKMEM *blkmem)
 
void SCIPcolExactPrint (SCIP_COLEXACT *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
 
SCIP_RETCODE SCIPcolExactAddCoef (SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
 
SCIP_RETCODE SCIPcolExactDelCoef (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row)
 
SCIP_RETCODE SCIPcolExactChgCoef (SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
 
SCIP_RETCODE SCIPcolExactIncCoef (SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *incval)
 
SCIP_RETCODE SCIPcolExactChgObj (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newobj)
 
SCIP_RETCODE SCIPcolExactChgLb (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
 
SCIP_RETCODE SCIPcolExactChgUb (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
 
void SCIProwExactCapture (SCIP_ROWEXACT *row)
 
void SCIProwExactPrint (SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
 
int SCIProwExactGetIndex (SCIP_ROWEXACT *row)
 
SCIP_Bool SCIProwExactIsModifiable (SCIP_ROWEXACT *row)
 
SCIP_Bool SCIProwHasExRow (SCIP_LPEXACT *lpexact, SCIP_ROW *row)
 
SCIP_RETCODE SCIProwExactChgLhs (SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *lhs)
 
SCIP_RETCODE SCIProwExactChgRhs (SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *rhs)
 
SCIP_COLEXACTSCIPcolGetColExact (SCIP_COL *col)
 
SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_RATIONAL *result, SCIP_RATIONAL **dual, SCIP_Bool usefarkas)
 
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)
 
SCIP_RETCODE SCIProwExactCreateFromRow (SCIP_ROW *fprow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact)
 
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)
 
SCIP_RETCODE SCIPlpExactFlush (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
 
SCIP_RETCODE SCIPlpExactLink (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
 
SCIP_Bool SCIPlpExactBoundShiftUseful (SCIP_LPEXACT *lpexact)
 
SCIP_Bool SCIPlpExactProjectShiftPossible (SCIP_LPEXACT *lpexact)
 
SCIP_Bool SCIPlpExactIsSynced (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
 
SCIP_RETCODE SCIPlpExactCreate (SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_LP *fplp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
 
SCIP_RETCODE SCIPlpExactFree (SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
 
SCIP_RETCODE SCIPlpExactAddCol (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_COLEXACT *col)
 
SCIP_RETCODE SCIPlpExactAddRow (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_ROWEXACT *rowexact)
 
SCIP_RETCODE SCIProwExactGetSolFeasibility (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_RATIONAL *result)
 
SCIP_Bool SCIProwExactGetSolActivityWithErrorbound (SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
 
SCIP_RETCODE SCIProwExactGetSolActivity (SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
 
SCIP_RETCODE SCIProwExactRelease (SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
 
SCIP_RETCODE SCIProwExactFree (SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
 
SCIP_RETCODE SCIProwExactEnsureSize (SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
 
SCIP_RETCODE SCIProwExactAddConstant (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
 
SCIP_RETCODE SCIProwExactAddCoef (SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *colexact, SCIP_RATIONAL *val)
 
SCIP_RETCODE SCIProwExactDelCoef (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col)
 
SCIP_RETCODE SCIProwExactChgCoef (SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *val)
 
SCIP_RETCODE SCIProwExactIncCoef (SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *incval)
 
SCIP_RETCODE SCIProwExactChgConstant (SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *constant)
 
SCIP_RETCODE SCIProwExactGetLPFeasibility (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *result)
 
SCIP_RETCODE SCIProwExactGetPseudoFeasibility (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_RATIONAL *result)
 
SCIP_RATIONALSCIProwExactGetLPActivity (SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact)
 
SCIP_RATIONALSCIProwExactGetPseudoActivity (SCIP_ROWEXACT *row, SCIP_STAT *stat)
 
void SCIProwExactDelaySort (SCIP_ROWEXACT *rowexact)
 
void SCIProwExactForceSort (SCIP_ROWEXACT *rowexact, SCIP_SET *set)
 
void SCIProwExactRecalcLPActivity (SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
 
void SCIProwExactRecalcPseudoActivity (SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
 
SCIP_RATIONALSCIPcolExactGetObj (SCIP_COLEXACT *col)
 
SCIP_RATIONALSCIPcolExactGetLb (SCIP_COLEXACT *col)
 
SCIP_RATIONALSCIPcolExactGetUb (SCIP_COLEXACT *col)
 
SCIP_RATIONALSCIPcolExactGetBestBound (SCIP_COLEXACT *col)
 
SCIP_RATIONALSCIPcolExactGetPrimsol (SCIP_COLEXACT *col)
 
SCIP_RETCODE SCIPlpExactUpdateVarObj (SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
 
SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
 
SCIP_RETCODE SCIPlpExactUpdateVarLb (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
 
SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
 
SCIP_RETCODE SCIPlpExactUpdateVarUb (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
 
SCIP_RETCODE SCIPlpExactUpdateAddVar (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPlpExactUpdateDelVar (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPlpExactUpdateVarColumn (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPlpExactUpdateVarLoose (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
 
void SCIPlpExactDecNLoosevars (SCIP_LPEXACT *lpexact)
 
int SCIPlpExactGetNRows (SCIP_LPEXACT *lpexact)
 
SCIP_RETCODE SCIPlpExactGetSol (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible, SCIP_Bool overwritefplp)
 
SCIP_RETCODE SCIPlpExactGetUnboundedSol (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
 
SCIP_RETCODE SCIPlpExactGetPrimalRay (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL **ray)
 
SCIP_RETCODE SCIPlpExactGetDualfarkas (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *valid, SCIP_Bool overwritefplp)
 
SCIP_RETCODE SCIPlpExactGetIterations (SCIP_LPEXACT *lpexact, int *iterations)
 
void SCIPlpExactGetObjval (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
 
void SCIPlpExactGetPseudoObjval (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
 
SCIP_RETCODE SCIPlpExactShrinkCols (SCIP_LPEXACT *lpexact, SCIP_SET *set, int newncols)
 
SCIP_RETCODE SCIPlpExactShrinkRows (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int newnrows)
 
SCIP_RETCODE SCIPlpExactDelRowset (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int *rowdstat)
 
SCIP_RETCODE SCIPlpExactReset (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue)
 
SCIP_RETCODE SCIPlpExactClear (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
 
void SCIPlpExactForceExactSolve (SCIP_LPEXACT *lpexact, SCIP_SET *set)
 
void SCIPlpExactForceSafeBound (SCIP_LPEXACT *lpexact, SCIP_SET *set)
 
void SCIPlpExactAllowExactSolve (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Bool allowexact)
 
SCIP_LPSOLSTAT SCIPlpExactGetSolstat (SCIP_LPEXACT *lpexact)
 
SCIP_RETCODE SCIPlpExactSetCutoffbound (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Real cutoffbound)
 
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)
 
SCIP_RETCODE SCIPlpExactGetState (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
 
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)
 
SCIP_RETCODE SCIPlpExactFreeState (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
 
SCIP_RETCODE SCIPlpExactStartDive (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_RETCODE SCIPlpExactEndDive (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR **vars, int nvars)
 
SCIP_RETCODE SCIPlpExactWrite (SCIP_LPEXACT *lpexact, const char *fname)
 
void SCIPlpExactOverwriteFpDualSol (SCIP_LPEXACT *lpexact, SCIP_Bool dualfarkas)
 
SCIP_RETCODE SCIPlpExactSyncLPs (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
 

Function Documentation

◆ SCIPcolExactCreate()

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

Parameters
colpointer to column data
fpcolthe corresponding fp col
blkmemblock memory
setglobal SCIP settings
statproblem statistics
varvariable, this column represents
lennumber of nonzeros in the column
rowsarray with rows of column entries
valsarray with coefficients of column entries
removableshould the column be removed from the LP due to aging or cleanup?

Definition at line 2410 of file lpexact.c.

References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrationalCopyBlock(), SCIPrationalCopyBlockArray(), SCIPrationalCreateBlock(), SCIPrationalCreateString(), SCIPrationalIsZero(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), and SCIPvarGetUbLocalExact().

Referenced by SCIPvarColumnExact().

◆ SCIPcolExactFree()

SCIP_RETCODE SCIPcolExactFree ( SCIP_COLEXACT **  col,
BMS_BLKMEM blkmem 
)

frees an LP column

Parameters
colpointer to LP column
blkmemblock memory

Definition at line 2754 of file lpexact.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryNull, NULL, SCIP_OKAY, SCIPrationalFreeBlock(), and SCIPrationalFreeBlockArray().

Referenced by varFreeExactData().

◆ SCIPcolExactPrint()

void SCIPcolExactPrint ( SCIP_COLEXACT col,
SCIP_MESSAGEHDLR messagehdlr,
FILE *  file 
)

output column to file stream

Parameters
colLP column
messagehdlrmessage handler
fileoutput file (or NULL for standard output)

Definition at line 2796 of file lpexact.c.

References 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.

◆ SCIPcolExactAddCoef()

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

Parameters
colLP column
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpexactcurrent LP data
rowLP row
valvalue of coefficient

Definition at line 2834 of file lpexact.c.

References colExactAddCoef(), NULL, SCIP_CALL, and SCIP_OKAY.

◆ SCIPcolExactDelCoef()

SCIP_RETCODE SCIPcolExactDelCoef ( SCIP_COLEXACT col,
SCIP_SET set,
SCIP_LPEXACT lpexact,
SCIP_ROWEXACT row 
)

◆ SCIPcolExactChgCoef()

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

Parameters
colLP column
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpexactcurrent LP data
rowLP row
valvalue of coefficient

Definition at line 2894 of file lpexact.c.

References 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.

◆ SCIPcolExactIncCoef()

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

Parameters
colLP column
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpexactcurrent LP data
rowLP row
incvalvalue to add to the coefficient

Definition at line 2945 of file lpexact.c.

References 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.

◆ SCIPcolExactChgObj()

◆ SCIPcolExactChgLb()

◆ SCIPcolExactChgUb()

SCIP_RETCODE SCIPcolExactChgUb ( SCIP_COLEXACT col,
SCIP_SET set,
SCIP_LPEXACT lpexact,
SCIP_RATIONAL newub 
)

◆ SCIProwExactCapture()

void SCIProwExactCapture ( SCIP_ROWEXACT row)

◆ SCIProwExactPrint()

◆ SCIProwExactGetIndex()

int SCIProwExactGetIndex ( SCIP_ROWEXACT row)

get the index of an exact row

Parameters
rowLP row

Definition at line 4996 of file lpexact.c.

References SCIP_RowExact::index, and NULL.

Referenced by SCIP_DECL_SORTPTRCOMP().

◆ SCIProwExactIsModifiable()

SCIP_Bool SCIProwExactIsModifiable ( SCIP_ROWEXACT row)

return TRUE iff row is modifiable

Parameters
rowLP row

Definition at line 5046 of file lpexact.c.

References SCIP_RowExact::fprow, SCIP_Row::modifiable, and NULL.

◆ SCIProwHasExRow()

SCIP_Bool SCIProwHasExRow ( SCIP_LPEXACT lpexact,
SCIP_ROW row 
)

returns true, if an exact row for this fprow was already created

Parameters
lpexactexact lp data structure
rowSCIP row

Definition at line 5057 of file lpexact.c.

References NULL, and SCIP_Row::rowexact.

◆ SCIProwExactChgLhs()

SCIP_RETCODE SCIProwExactChgLhs ( SCIP_ROWEXACT rowexact,
SCIP_SET set,
SCIP_LPEXACT lpexact,
SCIP_RATIONAL lhs 
)

changes left hand side of exact LP row

Parameters
rowexactexact LP row
setglobal SCIP settings
lpexactcurrent exact LP data
lhsnew left hand side

Definition at line 8042 of file lpexact.c.

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

◆ SCIProwExactChgRhs()

SCIP_RETCODE SCIProwExactChgRhs ( SCIP_ROWEXACT rowexact,
SCIP_SET set,
SCIP_LPEXACT lpexact,
SCIP_RATIONAL rhs 
)

changes right hand side of exact LP row

Parameters
rowexactexact LP row
setglobal SCIP settings
lpexactcurrent exact LP data
rhsnew right hand side

Definition at line 8063 of file lpexact.c.

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

◆ SCIPcolGetColExact()

SCIP_COLEXACT * SCIPcolGetColExact ( SCIP_COL col)

returns exact col corresponding to fpcol, if it exists. Otherwise returns NULL

Parameters
colSCIP col

Definition at line 5099 of file lpexact.c.

References SCIP_VarDataExact::colexact, SCIP_Var::exactdata, NULL, and SCIP_Col::var.

Referenced by rowExactCreateFromRowLimitEncodingLength().

◆ SCIPcolExactCalcFarkasRedcostCoef()

SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef ( SCIP_COLEXACT col,
SCIP_SET set,
SCIP_RATIONAL result,
SCIP_RATIONAL **  dual,
SCIP_Bool  usefarkas 
)

calculates the Farkas coefficient or reduced cost of a column i using the given dual Farkas vector y

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

Parameters
colLP column
setSCIP settings pointer
resultrational to store the result
dualdense dual vector, NULL to use internal row-values
usefarkasshould the farkas coefficient be computed ?

Definition at line 5111 of file lpexact.c.

References SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, SCIP_ColExact::lb, SCIP_ColExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::nunlinked, SCIP_ColExact::obj, SCIP_ColExact::rows, 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.

◆ SCIProwExactCreate()

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

Parameters
rowpointer to LP row data
fprowcorresponding fp row
fprowrhsrhs-part of fp-relaxation of this row if necessary, NULL otherwise
blkmemblock memory
setglobal SCIP settings
statproblem statistics
lpexactcurrent LP data
lennumber of nonzeros in the row
colsarray with columns of row entries
valsarray with coefficients of row entries
lhsleft hand side of row
rhsright hand side of row
isfprelaxableis it possible to make fp-relaxation of this row

Definition at line 3138 of file lpexact.c.

References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, FALSE, SCIP_ColExact::index, SCIP_Stat::nrowidx, NULL, SCIP_Row::nuses, SCIP_Row::rowexact, SCIP_ALLOC, 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, and SCIP_ColExact::var.

Referenced by SCIPcreateEmptyRowConsExact(), SCIPcreateRowExact(), and SCIProwExactCreateFromRow().

◆ 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

Note
This may change the floating-point coefficients slightly if the rational representation is rounded to smaller denominators according to parameter exact/cutmaxdenom.
Parameters
fprowcorresponding fp row to create from
blkmemblock memory
setglobal SCIP settings
statproblem statistics
eventqueuethe eventqueue
probscip prob structure
lpexactcurrent LP data

Definition at line 3373 of file lpexact.c.

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

◆ SCIProwExactGenerateFpRows()

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 
)

◆ SCIPlpExactFlush()

◆ SCIPlpExactLink()

◆ SCIPlpExactBoundShiftUseful()

SCIP_Bool SCIPlpExactBoundShiftUseful ( SCIP_LPEXACT lpexact)

returns whether the success rate of the Neumaier-Shcherbina safe bounding method is sufficiently high

Parameters
lpexactpointer to LP data object

Definition at line 3899 of file lpexact.c.

References SCIP_LpExact::boundshiftuseful, and NULL.

◆ SCIPlpExactProjectShiftPossible()

SCIP_Bool SCIPlpExactProjectShiftPossible ( SCIP_LPEXACT lpexact)

returns whether it is possible to use project and shift bounding method

Parameters
lpexactpointer to LP data object

Definition at line 3909 of file lpexact.c.

References NULL, and SCIP_LpExact::projshiftdata.

◆ SCIPlpExactIsSynced()

SCIP_Bool SCIPlpExactIsSynced ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_MESSAGEHDLR msg 
)

checks that lp and fplp are properly synced

Parameters
lpexactpointer to LP data object
setglobal SCIP settings
msgmessage handler for debug output

Definition at line 3920 of file lpexact.c.

References lpExactInSync(), and NULL.

Referenced by lpExactFlushAndSolve().

◆ SCIPlpExactCreate()

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

Parameters
lpexactpointer to LP data object
blkmemblock memory data structure
fplpthe floating point LP
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
nameproblem name

Definition at line 3933 of file lpexact.c.

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

◆ SCIPlpExactFree()

SCIP_RETCODE SCIPlpExactFree ( SCIP_LPEXACT **  lpexact,
BMS_BLKMEM blkmem,
SCIP_SET set 
)

frees LP data object

Parameters
lpexactpointer to exact LP data object
blkmemblock memory
setglobal SCIP settings

Definition at line 4039 of file lpexact.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, BMSfreeMemoryNull, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpExactClear(), SCIPlpExactProjectShiftFree(), SCIPlpiExactFree(), SCIPrationalFreeBlock(), and SCIProwExactRelease().

Referenced by freeTransform().

◆ SCIPlpExactAddCol()

◆ SCIPlpExactAddRow()

◆ SCIProwExactGetSolFeasibility()

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

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data
solprimal CIP solution
resultresult pointer

Definition at line 5446 of file lpexact.c.

References FALSE, SCIP_RowExact::lhs, NULL, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalMin(), and SCIProwExactGetSolActivity().

Referenced by SCIPgetRowSolFeasibilityExact().

◆ SCIProwExactGetSolActivityWithErrorbound()

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

Parameters
rowexactLP row
setglobal SCIP settings
statproblem statistics data
solprimal CIP solution
activitythe approximate activity
errorboundthe error bound

Definition at line 5475 of file lpexact.c.

References SCIP_Row::cols, SCIP_Row::constant, FALSE, SCIP_RowExact::fprow, SCIP_Row::len, SCIP_RowExact::len, MAX, MIN, NULL, SCIP_Col::primsol, REALABS, SCIP_Real, SCIP_REAL_UNITROUNDOFF, SCIP_UNKNOWN, SCIPcolGetVar(), SCIPsetInfinity(), SCIPsolGetVal(), TRUE, and SCIP_Row::vals.

Referenced by SCIPgetRowSolActivityWithErrorboundExact().

◆ SCIProwExactGetSolActivity()

SCIP_RETCODE SCIProwExactGetSolActivity ( SCIP_ROWEXACT rowexact,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL sol,
SCIP_Bool  useexact,
SCIP_RATIONAL result 
)

◆ SCIProwExactRelease()

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

Parameters
rowpointer to LP row
blkmemblock memory
setglobal SCIP settings
lpexactcurrent LP data

Definition at line 5583 of file lpexact.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIProwExactFree(), and SCIPsetDebugMsg.

Referenced by lpExactFlushDelRows(), SCIPlpExactDelRowset(), SCIPlpExactFree(), SCIPlpExactShrinkRows(), SCIPreleaseRowExact(), SCIProwFree(), and SCIPsepastoreExactClearCuts().

◆ SCIProwExactFree()

SCIP_RETCODE SCIProwExactFree ( SCIP_ROWEXACT **  row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LPEXACT lpexact 
)

frees an LP row

Parameters
rowpointer to LP row
blkmemblock memory
setglobal SCIP settings
lpexactcurrent LP data

Definition at line 5610 of file lpexact.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, NULL, rowExactUnlink(), SCIP_CALL, SCIP_OKAY, SCIPrationalFreeBlock(), and SCIPrationalFreeBlockArray().

Referenced by SCIProwExactRelease().

◆ SCIProwExactEnsureSize()

SCIP_RETCODE SCIProwExactEnsureSize ( SCIP_ROWEXACT row,
BMS_BLKMEM blkmem,
SCIP_SET set,
int  num 
)

ensuresr, that column array of row can store at least num entries

ensures, that column array of row can store at least num entries

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
numminimum number of entries to store

Definition at line 6062 of file lpexact.c.

References BMSreallocBlockMemoryArray, SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::fprow, 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().

◆ 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

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics
lpexactcurrent LP data
addvalconstant value to add to the row

Definition at line 5416 of file lpexact.c.

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

◆ SCIProwExactAddCoef()

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

Parameters
rowexactLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpexactcurrent LP data
colexactLP column
valvalue of coefficient

Definition at line 5200 of file lpexact.c.

References checkLinks, SCIP_Lp::diving, SCIP_LpExact::fplp, SCIP_RowExact::fprow, SCIP_Row::lppos, NULL, rowExactAddCoef(), SCIP_CALL, and SCIP_OKAY.

Referenced by rowExactCreateFromRowLimitEncodingLength().

◆ SCIProwExactDelCoef()

◆ SCIProwExactChgCoef()

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

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpexactcurrent LP data
colLP column
valvalue of coefficient

Definition at line 5269 of file lpexact.c.

References 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.

◆ SCIProwExactIncCoef()

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 nonexisting coefficient in an LP column

increases value of an existing or non-existing coefficient in an LP row

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpexactcurrent LP data
colLP column
incvalvalue to add to the coefficient

Definition at line 5321 of file lpexact.c.

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

◆ SCIProwExactChgConstant()

◆ SCIProwExactGetLPFeasibility()

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

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics
lpexactcurrent LP data
resultrational pointer to store the result

Definition at line 5655 of file lpexact.c.

References SCIP_RowExact::lhs, NULL, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalMin(), and SCIProwExactGetLPActivity().

Referenced by SCIPgetRowSolFeasibilityExact().

◆ SCIProwExactGetPseudoFeasibility()

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

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics
resultrational pointer to store the result

Definition at line 5684 of file lpexact.c.

References SCIP_RowExact::lhs, NULL, SCIP_RowExact::rhs, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalMin(), and SCIProwExactGetPseudoActivity().

Referenced by SCIPgetRowSolFeasibilityExact().

◆ SCIProwExactGetLPActivity()

SCIP_RATIONAL * SCIProwExactGetLPActivity ( SCIP_ROWEXACT row,
SCIP_STAT stat,
SCIP_LPEXACT lpexact 
)

returns the activity of a row in the current LP solution

Parameters
rowLP row
statproblem statistics
lpexactcurrent LP data

Definition at line 5713 of file lpexact.c.

References SCIP_Row::activity, SCIP_RowExact::activity, 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().

◆ SCIProwExactGetPseudoActivity()

SCIP_RATIONAL * SCIProwExactGetPseudoActivity ( SCIP_ROWEXACT row,
SCIP_STAT stat 
)

returns the pseudo activity of a row in the current pseudo solution

Parameters
rowLP row
statproblem statistics

Definition at line 5734 of file lpexact.c.

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

◆ SCIProwExactDelaySort()

void SCIProwExactDelaySort ( SCIP_ROWEXACT rowexact)

enables delaying of row sorting

Parameters
rowexactLP rowexact

Definition at line 5867 of file lpexact.c.

References SCIP_RowExact::delaysort, NULL, and TRUE.

Referenced by SCIPaddVarsToRowExact().

◆ SCIProwExactForceSort()

void SCIProwExactForceSort ( SCIP_ROWEXACT rowexact,
SCIP_SET set 
)

disables delaying of row sorting, sorts row and merges coefficients with equal columns

Parameters
rowexactLP rowexact
setglobal SCIP settings

Definition at line 5878 of file lpexact.c.

References SCIP_RowExact::delaysort, FALSE, NULL, and rowExactMerge().

Referenced by SCIPaddVarsToRowExact().

◆ SCIProwExactRecalcLPActivity()

◆ SCIProwExactRecalcPseudoActivity()

◆ SCIPcolExactGetObj()

SCIP_RATIONAL * SCIPcolExactGetObj ( SCIP_COLEXACT col)

gets objective value of column

Parameters
colLP column

Definition at line 5996 of file lpexact.c.

References NULL, and SCIP_ColExact::obj.

◆ SCIPcolExactGetLb()

SCIP_RATIONAL * SCIPcolExactGetLb ( SCIP_COLEXACT col)

gets lower bound of column

Parameters
colLP column

Definition at line 6006 of file lpexact.c.

References SCIP_ColExact::lb, and NULL.

Referenced by SCIPlpExactGetDualfarkas().

◆ SCIPcolExactGetUb()

SCIP_RATIONAL * SCIPcolExactGetUb ( SCIP_COLEXACT col)

gets upper bound of column

Parameters
colLP column

Definition at line 6016 of file lpexact.c.

References NULL, and SCIP_ColExact::ub.

Referenced by SCIPlpExactGetDualfarkas().

◆ SCIPcolExactGetBestBound()

SCIP_RATIONAL * SCIPcolExactGetBestBound ( SCIP_COLEXACT col)

gets best bound of column with respect to the objective function

Parameters
colLP column

Definition at line 6026 of file lpexact.c.

References SCIP_ColExact::lb, NULL, SCIP_ColExact::obj, SCIPrationalIsPositive(), SCIPrationalIsZero(), and SCIP_ColExact::ub.

Referenced by SCIProwExactRecalcPseudoActivity().

◆ SCIPcolExactGetPrimsol()

SCIP_RATIONAL * SCIPcolExactGetPrimsol ( SCIP_COLEXACT col)

gets the primal LP solution of a column

Parameters
colLP column

Definition at line 6039 of file lpexact.c.

References SCIP_ColExact::fpcol, SCIP_Col::lppos, NULL, and SCIP_ColExact::primsol.

Referenced by SCIPvarGetLPSolExact(), and SCIPvarGetLPSolExact_rec().

◆ SCIPlpExactUpdateVarObj()

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

Parameters
setglobal SCIP settings
lpexactcurrent LP data
varproblem variable that changed
oldobjold objective value of variable
newobjnew objective value of variable

Definition at line 6422 of file lpexact.c.

References FALSE, SCIP_LpExact::fplp, getObjvalDeltaObjExact(), lpExactUpdateObjval(), NULL, SCIP_Lp::probing, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPvarGetLbGlobalExact(), SCIPvarGetLbLocalExact(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbGlobalExact(), SCIPvarGetUbLocalExact(), and TRUE.

Referenced by SCIPeventProcess(), SCIPlpExactUpdateAddVar(), and SCIPlpExactUpdateDelVar().

◆ SCIPlpExactUpdateVarLbGlobal()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varproblem variable that changed
oldlbold lower bound of variable
newlbnew lower bound of variable

Definition at line 6469 of file lpexact.c.

References FALSE, getObjvalDeltaLbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsPositive(), SCIPvarGetObjExact(), and TRUE.

Referenced by SCIPeventProcess(), and updateLpExactBoundChange().

◆ SCIPlpExactUpdateVarLb()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varproblem variable that changed
oldlbold lower bound of variable
newlbnew lower bound of variable

Definition at line 6501 of file lpexact.c.

References FALSE, getObjvalDeltaLbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsPositive(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), and TRUE.

Referenced by SCIPeventProcess(), and updateLpExactBoundChange().

◆ SCIPlpExactUpdateVarUbGlobal()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varproblem variable that changed
oldubold upper bound of variable
newubnew upper bound of variable

Definition at line 6536 of file lpexact.c.

References FALSE, getObjvalDeltaUbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPvarGetObjExact(), and TRUE.

Referenced by SCIPeventProcess(), and updateLpExactBoundChange().

◆ SCIPlpExactUpdateVarUb()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varproblem variable that changed
oldubold upper bound of variable
newubnew upper bound of variable

Definition at line 6568 of file lpexact.c.

References FALSE, getObjvalDeltaUbExact(), lpExactUpdateObjval(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsNegative(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatusExact(), and TRUE.

Referenced by SCIPeventProcess(), and updateLpExactBoundChange().

◆ SCIPlpExactUpdateAddVar()

SCIP_RETCODE SCIPlpExactUpdateAddVar ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_VAR var 
)

informs LP, that given variable was added to the problem

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varvariable that is now a LOOSE problem variable

Definition at line 6603 of file lpexact.c.

References SCIP_LpExact::nloosevars, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpExactUpdateVarObj(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), and SCIPvarGetStatusExact().

Referenced by SCIPprobAddVar().

◆ SCIPlpExactUpdateDelVar()

SCIP_RETCODE SCIPlpExactUpdateDelVar ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_VAR var 
)

informs LP, that given variable is to be deleted from the problem

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varvariable that will be deleted from the problem

Definition at line 6634 of file lpexact.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpExactDecNLoosevars(), SCIPlpExactUpdateVarObj(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), and SCIPvarGetStatusExact().

◆ SCIPlpExactUpdateVarColumn()

SCIP_RETCODE SCIPlpExactUpdateVarColumn ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_VAR var 
)

◆ SCIPlpExactUpdateVarLoose()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
varproblem variable that changed from COLUMN to LOOSE

Definition at line 6718 of file lpexact.c.

References FALSE, SCIP_LpExact::looseobjvalinf, lpExactUpdateObjval(), SCIP_LpExact::nloosevars, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_LOOSE, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPvarGetLbLocalExact(), SCIPvarGetObjExact(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocalExact(), and TRUE.

◆ SCIPlpExactDecNLoosevars()

void SCIPlpExactDecNLoosevars ( SCIP_LPEXACT lpexact)

decrease the number of loose variables by one

Parameters
lpexactcurrent LP data

Definition at line 6770 of file lpexact.c.

References SCIP_LpExact::looseobjval, SCIP_LpExact::looseobjvalinf, SCIP_LpExact::nloosevars, NULL, and SCIPrationalSetReal().

Referenced by SCIPlpExactUpdateDelVar(), SCIPlpExactUpdateVarColumn(), and SCIPvarMultiaggregateExact().

◆ SCIPlpExactGetNRows()

int SCIPlpExactGetNRows ( SCIP_LPEXACT lpexact)

get the number of rows currently in the lp

Parameters
lpexactcurrent LP data

Definition at line 6788 of file lpexact.c.

References SCIP_LpExact::nrows, and NULL.

Referenced by SCIPlpExactSyncLPs().

◆ SCIPlpExactGetSol()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
statproblem statistics
primalfeasiblepointer to store whether the solution is primal feasible, or NULL
dualfeasiblepointer to store whether the solution is dual feasible, or NULL
overwritefplpshould 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, SCIP_Col::basisstatus, SCIP_Row::basisstatus, SCIP_ColExact::basisstatus, SCIP_RowExact::basisstatus, BMSclearMemoryArray, SCIP_Stat::boundingerrorexlp, SCIP_RowExact::constant, SCIP_Lp::dualfeasible, SCIP_LpExact::dualfeasible, SCIP_Row::dualsol, SCIP_RowExact::dualsol, FALSE, SCIP_LpExact::fplp, 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, SCIP_Lp::primalfeasible, SCIP_LpExact::primalfeasible, 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, and SCIP_ColExact::validredcostlp.

Referenced by SCIPlpExactSolveAndEval(), and SCIPlpExactStartDive().

◆ SCIPlpExactGetUnboundedSol()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
statproblem statistics
primalfeasiblepointer to store whether the solution is primal feasible, or NULL
rayfeasiblepointer to store whether the primal ray is a feasible unboundedness proof, or NULL

Definition at line 7124 of file lpexact.c.

References SCIP_ERROR, and SCIPerrorMessage.

Referenced by SCIPlpExactSolveAndEval(), and SCIPlpExactStartDive().

◆ SCIPlpExactGetPrimalRay()

SCIP_RETCODE SCIPlpExactGetPrimalRay ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_RATIONAL **  ray 
)

returns primal ray proving the unboundedness of the current LP

Parameters
lpexactcurrent LP data
setglobal SCIP settings
rayarray 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 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, and SCIP_ColExact::var.

◆ SCIPlpExactGetDualfarkas()

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

Note
The Farkas proof is checked for validity if lp/checkfarkas = TRUE and valid is not NULL.
Parameters
lpexactcurrent LP data
setglobal SCIP settings
statproblem statistics
validpointer to store whether the Farkas proof is valid or NULL
overwritefplpshould the floating point values be overwritten, e.g. if fp lp was infeasible

Definition at line 7198 of file lpexact.c.

References SCIP_Row::basisstatus, SCIP_RowExact::basisstatus, 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, 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, SCIP_Row::validactivitylp, SCIP_RowExact::validactivitylp, SCIP_Col::validfarkaslp, SCIP_ColExact::validfarkaslp, SCIP_Col::validredcostlp, and SCIP_ColExact::validredcostlp.

Referenced by SCIPlpExactSolveAndEval(), and SCIPlpExactStartDive().

◆ SCIPlpExactGetIterations()

SCIP_RETCODE SCIPlpExactGetIterations ( SCIP_LPEXACT lpexact,
int *  iterations 
)

get number of iterations used in last LP solve

Parameters
lpexactcurrent exact LP data
iterationspointer to store the iteration count

Definition at line 7398 of file lpexact.c.

References SCIP_LpExact::lpiexact, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiExactGetIterations().

Referenced by SCIPlpExactSolveAndEval().

◆ SCIPlpExactGetObjval()

void SCIPlpExactGetObjval ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_RATIONAL res 
)

gets objective value of current LP

Note
This method returns the objective value of the current LP solution, which might be primal or dual infeasible if a limit was hit during solving. It must not be used as a dual bound if the LP solution status is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
Parameters
lpexactcurrent LP data
setglobal SCIP settings
resresult pointer to store rational

Definition at line 7416 of file lpexact.c.

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

◆ SCIPlpExactGetPseudoObjval()

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

Parameters
lpexactcurrent LP data
setglobal SCIP settings
resresult pointer to store rational

Definition at line 7438 of file lpexact.c.

References NULL, SCIP_LpExact::pseudoobjval, SCIP_LpExact::pseudoobjvalinf, SCIPrationalSetNegInfinity(), and SCIPrationalSetRational().

Referenced by SCIPcertificatePrintDualboundPseudo(), SCIPgetSolOrigObjExact(), SCIPgetSolTransObjExact(), and SCIPsolLinkPseudoSolExact().

◆ SCIPlpExactShrinkCols()

SCIP_RETCODE SCIPlpExactShrinkCols ( SCIP_LPEXACT lpexact,
SCIP_SET set,
int  newncols 
)

removes all columns after the given number of cols from the LP

Parameters
lpexactLP data
setglobal SCIP settings
newncolsnew number of columns in the LP

Definition at line 7455 of file lpexact.c.

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

◆ SCIPlpExactShrinkRows()

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

Parameters
lpexactLP data
blkmemblock memory
setglobal SCIP settings
newnrowsnew number of rows in the LP

Definition at line 7503 of file lpexact.c.

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

◆ SCIPlpExactDelRowset()

◆ SCIPlpExactReset()

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

Parameters
lpexactLP data
blkmemblock memory
setglobal SCIP settings
statproblem statistics
eventqueueevent queue

Definition at line 7550 of file lpexact.c.

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

◆ SCIPlpExactClear()

SCIP_RETCODE SCIPlpExactClear ( SCIP_LPEXACT lpexact,
BMS_BLKMEM blkmem,
SCIP_SET set 
)

removes all columns and rows from LP, releases all rows

Parameters
lpexactLP data
blkmemblock memory
setglobal SCIP settings

Definition at line 7581 of file lpexact.c.

References SCIP_Lp::diving, SCIP_LpExact::fplp, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpExactShrinkCols(), SCIPlpExactShrinkRows(), and SCIPsetDebugMsg.

Referenced by SCIPlpExactFree(), and SCIPlpExactReset().

◆ SCIPlpExactForceExactSolve()

void SCIPlpExactForceExactSolve ( SCIP_LPEXACT lpexact,
SCIP_SET set 
)

forces an exact lp to be solved in the next exact bound computation

Parameters
lpexactexact LP data
setglobal SCIP settings

Definition at line 7598 of file lpexact.c.

References SCIP_LpExact::forceexactsolve, NULL, and TRUE.

Referenced by solveNode().

◆ SCIPlpExactForceSafeBound()

void SCIPlpExactForceSafeBound ( SCIP_LPEXACT lpexact,
SCIP_SET set 
)

forces the next exact bound computation to be executed even in probing mode

Parameters
lpexactexact LP data
setglobal SCIP settings

Definition at line 7614 of file lpexact.c.

References SCIP_LpExact::forcesafebound, NULL, and TRUE.

Referenced by SCIPlpSolveAndEval(), and SCIPtreeEndProbing().

◆ SCIPlpExactAllowExactSolve()

void SCIPlpExactAllowExactSolve ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_Bool  allowexact 
)

allows an exact lp to be solved in the next exact bound computation

Parameters
lpexactexact LP data
setglobal SCIP settings
allowexactTRUE 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, and NULL.

Referenced by priceAndCutLoop(), and SCIPlpExactComputeSafeBound().

◆ SCIPlpExactGetSolstat()

SCIP_LPSOLSTAT SCIPlpExactGetSolstat ( SCIP_LPEXACT lpexact)

gets solution status of current exact LP

Parameters
lpexactcurrent LP data

Definition at line 8084 of file lpexact.c.

References SCIP_LpExact::flushed, SCIP_LpExact::lpsolstat, NULL, and SCIP_LPSOLSTAT_NOTSOLVED.

Referenced by SCIPgetLPExactSolstat(), SCIPlpExactEndDive(), SCIPlpExactStartDive(), SCIPnodeUpdateLowerboundLP(), and SCIPsolveExactDiveLP().

◆ SCIPlpExactSetCutoffbound()

SCIP_RETCODE SCIPlpExactSetCutoffbound ( SCIP_LPEXACT lpexact,
SCIP_SET set,
SCIP_Real  cutoffbound 
)

◆ 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

Parameters
lpexactLP data
lpLP data
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory buffers
statproblem statistics
eventqueueevent queue
probproblem data
itlimmaximal number of LP iterations to perform, or -1 for no limit
lperrorpointer to store whether an unresolved LP error occurred
usefarkasare we aiming to prove infeasibility?

Definition at line 4477 of file lpexact.c.

References SCIP_Lp::cutoffbound, SCIP_LpExact::cutoffbound, SCIP_Lp::dualchecked, SCIP_LpExact::dualfeasible, FALSE, getFiniteLooseObjvalExact(), SCIP_Lp::hasprovedbound, lpCutoffDisabled, 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, SCIP_Lp::primalchecked, SCIP_LpExact::primalfeasible, SCIP_Stat::provedfeaslptime, SCIP_Stat::provedinfeaslptime, SCIP_Bool, SCIP_CALL, SCIP_ERROR, 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().

◆ SCIPlpExactGetState()

SCIP_RETCODE SCIPlpExactGetState ( SCIP_LPEXACT lpexact,
BMS_BLKMEM blkmem,
SCIP_LPISTATE **  lpistate 
)

stores exact LP state (like basis information) into LP state object

Parameters
lpexactexact LP data
blkmemblock memory
lpistatepointer to LP state information (like basis information)

Definition at line 8094 of file lpexact.c.

References SCIP_LpExact::flushed, SCIP_LpExact::lpiexact, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiExactGetState(), and SCIP_LpExact::solved.

◆ SCIPlpExactSetState()

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

Parameters
lpexactexact LP data
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpistateLP state information (like basis information)
wasprimfeasprimal feasibility when LP state information was stored
wasprimcheckedtrue if the LP solution has passed the primal feasibility check
wasdualfeasdual feasibility when LP state information was stored
wasdualcheckedtrue if the LP solution has passed the dual feasibility check

Definition at line 8118 of file lpexact.c.

References SCIP_LpExact::dualchecked, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::flushed, SCIP_LpExact::lpiexact, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_CALL, SCIP_OKAY, SCIPlpExactFlush(), SCIPlpiExactHasStateBasis(), SCIPlpiExactSetState(), SCIP_LpExact::solisbasic, and SCIP_LpExact::solved.

Referenced by SCIPlpExactEndDive().

◆ SCIPlpExactFreeState()

SCIP_RETCODE SCIPlpExactFreeState ( SCIP_LPEXACT lpexact,
BMS_BLKMEM blkmem,
SCIP_LPISTATE **  lpistate 
)

frees exact LP state information

Parameters
lpexactexact LP data
blkmemblock memory
lpistatepointer to LP state information (like basis information)

Definition at line 8160 of file lpexact.c.

References SCIP_LpExact::lpiexact, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiExactFreeState().

Referenced by SCIPlpExactEndDive().

◆ SCIPlpExactStartDive()

SCIP_RETCODE SCIPlpExactStartDive ( SCIP_LPEXACT lpexact,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat 
)

starts exact LP diving and saves bounds and objective values of columns to the current nodes's values

initiates exact LP diving

Parameters
lpexactcurrent exact LP data
blkmemblock memory
setglobal SCIP settings
statproblem statistics

Definition at line 8177 of file lpexact.c.

References 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_LpExactSolVals::lpsolstat, SCIP_LpExact::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().

◆ SCIPlpExactEndDive()

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

Parameters
lpexactcurrent exact LP data
blkmemblock memory
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
varsarray with all active variables
nvarsnumber of active variables

Definition at line 8280 of file lpexact.c.

References 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_LpExactSolVals::lpobjval, SCIP_LpExact::lpobjval, SCIP_LpExactSolVals::lpsolstat, SCIP_LpExact::lpsolstat, SCIP_LpExact::ncols, SCIP_LpExact::ndivechgsides, SCIP_LpExact::nrows, NULL, 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, and SCIP_ColExact::var.

Referenced by SCIPendExactDive().

◆ SCIPlpExactWrite()

SCIP_RETCODE SCIPlpExactWrite ( SCIP_LPEXACT lpexact,
const char *  fname 
)

writes exact LP to a file

Parameters
lpexactcurrent LP data
fnamefile name

Definition at line 8434 of file lpexact.c.

References SCIP_LpExact::flushed, SCIP_LpExact::lpiexact, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiExactWriteLP().

Referenced by SCIPwriteLPexact().

◆ SCIPlpExactOverwriteFpDualSol()

void SCIPlpExactOverwriteFpDualSol ( SCIP_LPEXACT lpexact,
SCIP_Bool  dualfarkas 
)

overwrites the dual values stored in the fp lp with exact values

Parameters
lpexactcurrent LP data
dualfarkasTRUE if farkas proof, FALSE if dual sol?

Definition at line 8449 of file lpexact.c.

References 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, and SCIPrationalGetReal().

◆ SCIPlpExactSyncLPs()

SCIP_RETCODE SCIPlpExactSyncLPs ( SCIP_LPEXACT lpexact,
BMS_BLKMEM blkmem,
SCIP_SET set 
)