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 
    )