Scippy

    SCIP

    Solving Constraint Integer Programs

    lpexact.c File Reference

    Detailed Description

    LP management methods and data structures for exact mirror of LP.

    Author
    Leon Eifler

    In LP management, we have to distinguish between the current LP and the SCIP_LP stored in the LP solver. All LP methods affect the current LP only. Before solving the current LP with the LP solver or setting an LP state, the LP solvers data has to be updated to the current LP with a call to lpExactFlush().

    Definition in file lpexact.c.

    #include "lpi/lpi.h"
    #include "lpiexact/lpiexact.h"
    #include "scip/clock.h"
    #include "scip/cutpool.h"
    #include "scip/event.h"
    #include "scip/intervalarith.h"
    #include "scip/lp.h"
    #include "scip/lpexact.h"
    #include "scip/misc.h"
    #include "scip/prob.h"
    #include "scip/pub_cons.h"
    #include "scip/pub_lp.h"
    #include "scip/pub_lpexact.h"
    #include "scip/pub_message.h"
    #include "scip/pub_misc.h"
    #include "scip/pub_misc_sort.h"
    #include "scip/pub_var.h"
    #include "scip/pub_tree.h"
    #include "scip/rational.h"
    #include "scip/scip_lp.h"
    #include "scip/scip_lpexact.h"
    #include "scip/scip_message.h"
    #include "scip/set.h"
    #include "scip/sepastoreexact.h"
    #include "scip/sol.h"
    #include "scip/solve.h"
    #include "scip/stat.h"
    #include "scip/struct_event.h"
    #include "scip/struct_lpexact.h"
    #include "scip/struct_prob.h"
    #include "scip/struct_set.h"
    #include "scip/struct_stat.h"
    #include "scip/struct_var.h"
    #include "scip/struct_cutpool.h"
    #include "scip/var.h"
    #include <string.h>
    #include <inttypes.h>

    Go to the source code of this file.

    Macros

    #define checkLinks(lp)
     
    #define lpCutoffDisabled(set)   (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2))
     
    #define MAXNUMTROUBLELPMSGS   10
     

    Functions

     SCIP_DECL_SORTPTRCOMP (SCIProwExactComp)
     
    static SCIP_Bool colExactInSync (SCIP_COLEXACT *colexact, SCIP_SET *set)
     
    static SCIP_Bool rowExactInSync (SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
     
    static SCIP_Bool lpExactInSync (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
     
    static SCIP_RETCODE ensureRowexsSize (SCIP_LPEXACT *lpexact, SCIP_SET *set, int num)
     
    static void colExactSortLP (SCIP_COLEXACT *col)
     
    static void colExactSortNonLP (SCIP_COLEXACT *col)
     
    static void rowExactSortLP (SCIP_ROWEXACT *row)
     
    static void rowExactSortNonLP (SCIP_ROWEXACT *row)
     
    static SCIP_RETCODE colExactEnsureSize (SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
     
    static SCIP_RETCODE ensureColexsSize (SCIP_LPEXACT *lp, SCIP_SET *set, int num)
     
    static SCIP_RETCODE ensureChgcolsSize (SCIP_LPEXACT *lp, SCIP_SET *set, int num)
     
    static SCIP_RETCODE ensureLpiExactcolsSize (SCIP_LPEXACT *lp, SCIP_SET *set, int num)
     
    static SCIP_RETCODE ensureLpirowexactsSize (SCIP_LPEXACT *lp, SCIP_SET *set, int num)
     
    static int colExactSearchCoefPart (SCIP_COLEXACT *col, const SCIP_ROWEXACT *row, int minpos, int maxpos)
     
    static int colExactSearchCoef (SCIP_COLEXACT *col, const SCIP_ROWEXACT *row)
     
    static int rowExactSearchCoefPart (SCIP_ROWEXACT *row, const SCIP_COLEXACT *col, int minpos, int maxpos)
     
    static int rowExactSearchCoef (SCIP_ROWEXACT *row, const SCIP_COLEXACT *col)
     
    static void coefChangedExact (SCIP_ROWEXACT *row, SCIP_COLEXACT *col, SCIP_LPEXACT *lp)
     
    static void colExactMoveCoef (SCIP_COLEXACT *col, int oldpos, int newpos)
     
    static SCIP_RETCODE colExactSwapCoefs (SCIP_COLEXACT *col, BMS_BUFMEM *buffer, int pos1, int pos2)
     
    static void rowExactMoveCoef (SCIP_ROWEXACT *row, int oldpos, int newpos)
     
    static SCIP_RETCODE rowExactSwapCoefs (SCIP_ROWEXACT *row, BMS_BUFMEM *buffer, int pos1, int pos2)
     
    static SCIP_RETCODE rowExactAddCoef (SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp, SCIP_COLEXACT *col, SCIP_RATIONAL *val, int linkpos)
     
    static SCIP_RETCODE insertColChgcols (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lp)
     
    static SCIP_RETCODE colExactAddCoef (SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp, SCIP_ROWEXACT *row, SCIP_RATIONAL *val, int linkpos)
     
    static SCIP_RETCODE colExactDelCoefPos (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, int pos)
     
    static SCIP_RETCODE colExactChgCoefPos (SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lp, int pos, SCIP_RATIONAL *val)
     
    static SCIP_RETCODE rowExactDelCoefPos (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lp, int pos)
     
    static SCIP_RETCODE rowExactChgCoefPos (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lp, int pos, SCIP_RATIONAL *val)
     
    static SCIP_RETCODE colExactLink (SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp)
     
    static SCIP_RETCODE rowExactLink (SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lp)
     
    static SCIP_RETCODE rowExactUnlink (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lp)
     
    static SCIP_RETCODE colExactUpdateAddLP (SCIP_COLEXACT *col, SCIP_SET *set)
     
    static SCIP_RETCODE rowExactUpdateAddLP (SCIP_ROWEXACT *row, SCIP_SET *set)
     
    static SCIP_RETCODE colExactUpdateDelLP (SCIP_COLEXACT *col, SCIP_SET *set)
     
    static SCIP_RETCODE rowExactUpdateDelLP (SCIP_ROWEXACT *row, SCIP_SET *set)
     
    static void markColexDeleted (SCIP_COLEXACT *col)
     
    static SCIP_RETCODE lpExactFlushDelCols (SCIP_LPEXACT *lp)
     
    static SCIP_RETCODE lpExactFlushAddCols (SCIP_LPEXACT *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
     
    static void markRowexDeleted (SCIP_ROWEXACT *row)
     
    static SCIP_RETCODE lpExactFlushDelRows (SCIP_LPEXACT *lp, BMS_BLKMEM *blkmem, SCIP_SET *set)
     
    static SCIP_RETCODE lpExactFlushAddRows (SCIP_LPEXACT *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
     
    static SCIP_RETCODE lpExactFlushChgCols (SCIP_LPEXACT *lp, SCIP_SET *set)
     
    static SCIP_RETCODE lpExactFlushChgRows (SCIP_LPEXACT *lp, SCIP_SET *set)
     
    static SCIP_RATIONALgetFiniteLooseObjvalExact (SCIP_LPEXACT *lp, SCIP_SET *set, SCIP_PROB *prob)
     
    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)
     
    static SCIP_RETCODE lpExactSetRealpar (SCIP_LPEXACT *lp, SCIP_LPPARAM lpparam, SCIP_Real value, SCIP_Bool *success)
     
    static SCIP_RETCODE lpExactSetIntpar (SCIP_LPEXACT *lp, SCIP_LPPARAM lpparam, int value, SCIP_Bool *success)
     
    static SCIP_RETCODE lpExactSetObjlim (SCIP_LPEXACT *lp, SCIP_SET *set, SCIP_Real objlim, SCIP_Bool *success)
     
    static SCIP_RETCODE lpExactSetIterationLimit (SCIP_LPEXACT *lp, int itlim)
     
    static void markRowExactDeleted (SCIP_ROWEXACT *row)
     
    SCIP_RETCODE SCIPlpExactDelRowset (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int *rowdstat)
     
    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)
     
    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)
     
    static SCIP_RETCODE rowExactCreateFromRowLimitEncodingLength (SCIP_ROW *row, SCIP_ROWEXACT *rowexact, SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact)
     
    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)
     
    static SCIP_RETCODE SCIPlpPsdataCreate (SCIP_LPEXACT *lpexact, SCIP_SET *set, BMS_BLKMEM *blkmem)
     
    static SCIP_RETCODE SCIPlpExactProjectShiftFreeLPIExact (SCIP_LPIEXACT **lpiexact)
     
    static SCIP_RETCODE SCIPlpExactProjectShiftFree (SCIP_LPEXACT *lpexact, SCIP_SET *set, BMS_BLKMEM *blkmem)
     
    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 SCIPlpExactSetCutoffbound (SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Real cutoffbound)
     
    static void lpExactNumericalTroubleMessage (SCIP_MESSAGEHDLR *messagehdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_VERBLEVEL verblevel, const char *formatstr,...)
     
    static SCIP_RETCODE lpExactFlushAndSolve (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, int harditlim, SCIP_Bool fromscratch, SCIP_Bool *lperror)
     
    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)
     
    void SCIProwExactCapture (SCIP_ROWEXACT *row)
     
    void SCIProwExactPrint (SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
     
    int SCIProwExactGetIndex (SCIP_ROWEXACT *row)
     
    int SCIProwExactGetNNonz (SCIP_ROWEXACT *row)
     
    SCIP_RATIONAL ** SCIProwExactGetVals (SCIP_ROWEXACT *row)
     
    SCIP_COLEXACT ** SCIProwExactGetCols (SCIP_ROWEXACT *row)
     
    SCIP_Bool SCIProwExactIsInLP (SCIP_ROWEXACT *row)
     
    SCIP_Bool SCIProwExactIsModifiable (SCIP_ROWEXACT *row)
     
    SCIP_Bool SCIProwHasExRow (SCIP_LPEXACT *lpexact, SCIP_ROW *row)
     
    SCIP_ROWSCIProwExactGetRow (SCIP_ROWEXACT *row)
     
    SCIP_ROWSCIProwExactGetRowRhs (SCIP_ROWEXACT *row)
     
    SCIP_Bool SCIProwExactHasFpRelax (SCIP_ROWEXACT *row)
     
    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 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 SCIProwExactAddConstant (SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
     
    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 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 SCIProwExactSort (SCIP_ROWEXACT *row)
     
    static void rowExactMerge (SCIP_ROWEXACT *row, SCIP_SET *set)
     
    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_VARSCIPcolExactGetVar (SCIP_COLEXACT *col)
     
    SCIP_RETCODE SCIProwExactEnsureSize (SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
     
    static SCIP_RETCODE getObjvalDeltaObjExact (SCIP_SET *set, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj, SCIP_RATIONAL *lb, SCIP_RATIONAL *ub, SCIP_RATIONAL *deltaval, int *deltainf)
     
    SCIP_RATIONALSCIProwExactGetLhs (SCIP_ROWEXACT *row)
     
    SCIP_RATIONALSCIProwExactGetRhs (SCIP_ROWEXACT *row)
     
    SCIP_RATIONALSCIProwExactGetConstant (SCIP_ROWEXACT *row)
     
    static void getObjvalDeltaLbExact (SCIP_RATIONAL *obj, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb, SCIP_RATIONAL *deltaval, int *deltainf)
     
    static void getObjvalDeltaUbExact (SCIP_RATIONAL *obj, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub, SCIP_RATIONAL *deltaval, int *deltainf)
     
    static void lpExactUpdateObjval (SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *deltavalex, int deltainf, SCIP_Bool local, SCIP_Bool loose, SCIP_Bool global)
     
    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 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)
     
    static SCIP_RETCODE colExactStoreSolVals (SCIP_COLEXACT *colexact, BMS_BLKMEM *blkmem)
     
    static SCIP_RETCODE colExactRestoreSolVals (SCIP_COLEXACT *colexact, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer)
     
    static SCIP_RETCODE rowExactStoreSolVals (SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_Bool infeasible)
     
    static SCIP_RETCODE rowExactRestoreSolVals (SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer, SCIP_Bool infeasible)
     
    static SCIP_RETCODE lpExactStoreSolVals (SCIP_LPEXACT *lpexact, SCIP_STAT *stat, BMS_BLKMEM *blkmem)
     
    static SCIP_RETCODE lpExactRestoreSolVals (SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem)
     
    void SCIProwExactLock (SCIP_ROWEXACT *row)
     
    void SCIProwExactUnlock (SCIP_ROWEXACT *row)
     
    static SCIP_RETCODE ensureChgrowsSizeExact (SCIP_LPEXACT *lpexact, SCIP_SET *set, int num)
     
    static SCIP_RETCODE rowExactSideChanged (SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_SIDETYPE sidetype)
     
    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_LPSOLSTAT SCIPlpExactGetSolstat (SCIP_LPEXACT *lpexact)
     
    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_Bool SCIPlpExactDiving (SCIP_LPEXACT *lpexact)
     
    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)
     

    Macro Definition Documentation

    ◆ checkLinks

    #define checkLinks (   lp)

    Definition at line 170 of file lpexact.c.

    ◆ lpCutoffDisabled

    #define lpCutoffDisabled (   set)    (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2))

    should the objective limit of the LP solver be disabled

    Definition at line 4175 of file lpexact.c.

    ◆ MAXNUMTROUBLELPMSGS

    #define MAXNUMTROUBLELPMSGS   10

    maximal number of verblevel-high messages about numerical trouble in LP that will be printed when this number is reached and display/verblevel is not full, then further messages are suppressed in this run

    Definition at line 4224 of file lpexact.c.

    Function Documentation

    ◆ SCIP_DECL_SORTPTRCOMP()

    SCIP_DECL_SORTPTRCOMP ( SCIProwExactComp  )

    comparison method for sorting rows by non-decreasing index

    Definition at line 77 of file lpexact.c.

    References NULL, and SCIProwExactGetIndex().

    ◆ colExactInSync()

    ◆ rowExactInSync()

    ◆ lpExactInSync()

    static SCIP_Bool lpExactInSync ( SCIP_LPEXACT lpexact,
    SCIP_SET set,
    SCIP_MESSAGEHDLR msg 
    )
    static

    checks if the exact lp and lp are consistent (same number of rows/cols, and all cols/rows in sync)

    Parameters
    lpexactexact lp
    setglobal SCIP settings
    msgmessage handler for debug output

    Definition at line 237 of file lpexact.c.

    References colExactInSync(), SCIP_LpExact::cols, SCIP_LpExact::fplp, SCIP_Lp::ncols, SCIP_LpExact::ncols, SCIP_Lp::nrows, SCIP_LpExact::nrows, NULL, rowExactInSync(), SCIP_LpExact::rows, and TRUE.

    Referenced by SCIPlpExactIsSynced().

    ◆ ensureRowexsSize()

    static SCIP_RETCODE ensureRowexsSize ( SCIP_LPEXACT lpexact,
    SCIP_SET set,
    int  num 
    )
    static

    ensures that rows array can store at least num entries

    Parameters
    lpexactcurrent LP data
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 270 of file lpexact.c.

    References BMSreallocMemoryArray, SCIP_LpExact::nrows, SCIP_LpExact::rows, SCIP_LpExact::rowssize, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by SCIPlpExactAddRow().

    ◆ colExactSortLP()

    static void colExactSortLP ( SCIP_COLEXACT col)
    static

    sorts column entries of linked rows currently in the LP such that lower row indices precede higher ones

    Parameters
    colcolumn to be sorted

    Definition at line 293 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::rows, SCIPsortPtrPtrInt(), TRUE, and SCIP_ColExact::vals.

    Referenced by colExactSearchCoef().

    ◆ colExactSortNonLP()

    static void colExactSortNonLP ( SCIP_COLEXACT col)
    static

    sorts column entries of unlinked rows or rows currently not in the LP such that lower row indices precede higher ones

    Parameters
    colcolumn to be sorted

    Definition at line 326 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::nlprows, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIPsortPtrPtrInt(), TRUE, and SCIP_ColExact::vals.

    Referenced by colExactSearchCoef().

    ◆ rowExactSortLP()

    static void rowExactSortLP ( SCIP_ROWEXACT row)
    static

    sorts row entries of linked columns currently in the LP such that lower column indices precede higher ones

    Parameters
    rowrow to be sorted

    Definition at line 360 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_RowExact::nlpcols, NULL, SCIP_ColExact::rows, SCIPsortIntIntPtrPtrInterval(), TRUE, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.

    Referenced by rowExactSearchCoef(), and SCIProwExactSort().

    ◆ rowExactSortNonLP()

    static void rowExactSortNonLP ( SCIP_ROWEXACT row)
    static

    sorts row entries of unlinked columns or columns currently not in the LP such that lower column indices precede higher ones

    Parameters
    rowrow to be sorted

    Definition at line 394 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, SCIP_RowExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::rows, SCIPsortIntIntPtrPtrInterval(), TRUE, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.

    Referenced by rowExactSearchCoef(), and SCIProwExactSort().

    ◆ colExactEnsureSize()

    static SCIP_RETCODE colExactEnsureSize ( SCIP_COLEXACT col,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    int  num 
    )
    static

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

    Parameters
    colLP column
    blkmemblock memory
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 427 of file lpexact.c.

    References BMSreallocBlockMemoryArray, SCIP_ColExact::len, SCIP_ColExact::linkpos, NULL, SCIP_ColExact::rows, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBlock(), SCIPsetCalcMemGrowSize(), SCIP_ColExact::size, and SCIP_ColExact::vals.

    Referenced by colExactAddCoef().

    ◆ ensureColexsSize()

    static SCIP_RETCODE ensureColexsSize ( SCIP_LPEXACT lp,
    SCIP_SET set,
    int  num 
    )
    static

    ensures, that cols array can store at least num entries

    Parameters
    lpcurrent LP data
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 463 of file lpexact.c.

    References BMSreallocMemoryArray, SCIP_LpExact::cols, SCIP_LpExact::colssize, SCIP_LpExact::ncols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by SCIPlpExactAddCol().

    ◆ ensureChgcolsSize()

    static SCIP_RETCODE ensureChgcolsSize ( SCIP_LPEXACT lp,
    SCIP_SET set,
    int  num 
    )
    static

    ensures, that chgcols array can store at least num entries

    Parameters
    lpcurrent LP data
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 486 of file lpexact.c.

    References BMSreallocMemoryArray, SCIP_LpExact::chgcols, SCIP_LpExact::chgcolssize, SCIP_LpExact::nchgcols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by insertColChgcols().

    ◆ ensureLpiExactcolsSize()

    static SCIP_RETCODE ensureLpiExactcolsSize ( SCIP_LPEXACT lp,
    SCIP_SET set,
    int  num 
    )
    static

    ensures, that lpicols array can store at least num entries

    Parameters
    lpcurrent LP data
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 509 of file lpexact.c.

    References BMSreallocMemoryArray, SCIP_LpExact::lpicols, SCIP_LpExact::lpicolssize, SCIP_LpExact::nlpicols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by lpExactFlushAddCols().

    ◆ ensureLpirowexactsSize()

    static SCIP_RETCODE ensureLpirowexactsSize ( SCIP_LPEXACT lp,
    SCIP_SET set,
    int  num 
    )
    static

    ensures, that lpirows array can store at least num entries

    Parameters
    lpcurrent LP data
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 532 of file lpexact.c.

    References BMSreallocMemoryArray, SCIP_LpExact::lpirows, SCIP_LpExact::lpirowssize, SCIP_LpExact::nlpirows, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by lpExactFlushAddRows().

    ◆ colExactSearchCoefPart()

    static int colExactSearchCoefPart ( SCIP_COLEXACT col,
    const SCIP_ROWEXACT row,
    int  minpos,
    int  maxpos 
    )
    static

    searches coefficient in part of the column, returns position in col vector or -1 if not found

    Parameters
    colcolumn to be searched in
    rowcoefficient to be searched for
    minposfirst position of search range
    maxposlast position of search range

    Definition at line 555 of file lpexact.c.

    References SCIP_RowExact::index, SCIP_ColExact::linkpos, SCIP_RowExact::lppos, NULL, and SCIP_ColExact::rows.

    Referenced by colExactSearchCoef().

    ◆ colExactSearchCoef()

    static int colExactSearchCoef ( SCIP_COLEXACT col,
    const SCIP_ROWEXACT row 
    )
    static

    searches coefficient in column, returns position in col vector or -1 if not found

    Parameters
    colcolumn to be searched in
    rowcoefficient to be searched for

    Definition at line 591 of file lpexact.c.

    References colExactSearchCoefPart(), colExactSortLP(), colExactSortNonLP(), SCIP_ColExact::len, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nlprows, SCIP_ColExact::nonlprowssorted, NULL, and SCIP_ColExact::nunlinked.

    Referenced by SCIPcolExactChgCoef(), SCIPcolExactDelCoef(), and SCIPcolExactIncCoef().

    ◆ rowExactSearchCoefPart()

    static int rowExactSearchCoefPart ( SCIP_ROWEXACT row,
    const SCIP_COLEXACT col,
    int  minpos,
    int  maxpos 
    )
    static

    searches coefficient in part of the row, returns position in col vector or -1 if not found

    Parameters
    rowrow to be searched in
    colcoefficient to be searched for
    minposfirst position of search range
    maxposlast position of search range

    Definition at line 630 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_ColExact::index, SCIP_RowExact::linkpos, SCIP_ColExact::lppos, and NULL.

    Referenced by rowExactSearchCoef().

    ◆ rowExactSearchCoef()

    static int rowExactSearchCoef ( SCIP_ROWEXACT row,
    const SCIP_COLEXACT col 
    )
    static

    searches coefficient in row, returns position in row vector or -1 if not found; if the sorting of the row is delayed, returns -1

    Parameters
    rowrow to be searched in
    colcoefficient to be searched for

    Definition at line 669 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::delaysort, SCIP_RowExact::len, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_RowExact::nunlinked, rowExactSearchCoefPart(), rowExactSortLP(), and rowExactSortNonLP().

    Referenced by SCIProwExactChgCoef(), SCIProwExactDelCoef(), and SCIProwExactIncCoef().

    ◆ coefChangedExact()

    ◆ colExactMoveCoef()

    static void colExactMoveCoef ( SCIP_COLEXACT col,
    int  oldpos,
    int  newpos 
    )
    static

    moves a coefficient in a column to a different place, and updates all corresponding data structures

    Parameters
    colLP column
    oldposold position of coefficient
    newposnew position of coefficient

    Definition at line 772 of file lpexact.c.

    References SCIP_RowExact::cols, FALSE, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIPrationalSetRational(), and SCIP_ColExact::vals.

    Referenced by colExactAddCoef(), and colExactDelCoefPos().

    ◆ colExactSwapCoefs()

    static SCIP_RETCODE colExactSwapCoefs ( SCIP_COLEXACT col,
    BMS_BUFMEM buffer,
    int  pos1,
    int  pos2 
    )
    static

    swaps two coefficients in a column, and updates all corresponding data structures

    Parameters
    colLP column
    bufferbuffer for temp real
    pos1position of first coefficient
    pos2position of second coefficient

    Definition at line 809 of file lpexact.c.

    References SCIP_RowExact::cols, FALSE, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nonlprowssorted, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetRational(), and SCIP_ColExact::vals.

    Referenced by rowExactAddCoef(), rowExactUpdateAddLP(), and rowExactUpdateDelLP().

    ◆ rowExactMoveCoef()

    static void rowExactMoveCoef ( SCIP_ROWEXACT row,
    int  oldpos,
    int  newpos 
    )
    static

    moves a coefficient in a row to a different place, and updates all corresponding data structures

    Parameters
    rowLP row
    oldposold position of coefficient
    newposnew position of coefficient

    Definition at line 877 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::cols_index, FALSE, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::rows, SCIPrationalSetRational(), SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.

    Referenced by rowExactAddCoef(), and rowExactDelCoefPos().

    ◆ rowExactSwapCoefs()

    static SCIP_RETCODE rowExactSwapCoefs ( SCIP_ROWEXACT row,
    BMS_BUFMEM buffer,
    int  pos1,
    int  pos2 
    )
    static

    swaps two coefficients in a row, and updates all corresponding data structures

    Parameters
    rowLP row
    bufferbuffer for temp real
    pos1position of first coefficient
    pos2position of second coefficient

    Definition at line 915 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::cols_index, FALSE, SCIP_ColExact::index, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetRational(), SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.

    Referenced by colExactAddCoef(), colExactUpdateAddLP(), and colExactUpdateDelLP().

    ◆ rowExactAddCoef()

    static SCIP_RETCODE rowExactAddCoef ( SCIP_ROWEXACT row,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_LPEXACT lp,
    SCIP_COLEXACT col,
    SCIP_RATIONAL val,
    int  linkpos 
    )
    static

    ◆ insertColChgcols()

    static SCIP_RETCODE insertColChgcols ( SCIP_COLEXACT col,
    SCIP_SET set,
    SCIP_LPEXACT lp 
    )
    static

    insert column in the chgcols list (if not already there)

    Parameters
    colLP column to change
    setglobal SCIP settings
    lpcurrent LP data

    Definition at line 1005 of file lpexact.c.

    References SCIP_LpExact::chgcols, ensureChgcolsSize(), FALSE, SCIP_LpExact::flushed, SCIP_ColExact::lbchanged, SCIP_LpExact::nchgcols, SCIP_ColExact::objchanged, SCIP_CALL, SCIP_OKAY, and SCIP_ColExact::ubchanged.

    Referenced by SCIPcolExactChgLb(), SCIPcolExactChgObj(), and SCIPcolExactChgUb().

    ◆ colExactAddCoef()

    ◆ colExactDelCoefPos()

    static SCIP_RETCODE colExactDelCoefPos ( SCIP_COLEXACT col,
    SCIP_SET set,
    SCIP_LPEXACT lpexact,
    int  pos 
    )
    static

    deletes coefficient at given position from column

    Parameters
    colcolumn to be changed
    setglobal SCIP settings
    lpexactcurrent LP data
    posposition in column vector to delete

    Definition at line 1154 of file lpexact.c.

    References coefChangedExact(), colExactMoveCoef(), SCIP_RowExact::cols, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::nunlinked, SCIP_ColExact::rows, SCIP_OKAY, SCIPrationalDebugMessage, SCIPvarGetName(), SCIP_ColExact::vals, and SCIP_ColExact::var.

    Referenced by colExactChgCoefPos(), rowExactUnlink(), SCIPcolExactDelCoef(), and SCIProwExactDelCoef().

    ◆ colExactChgCoefPos()

    static SCIP_RETCODE colExactChgCoefPos ( SCIP_COLEXACT col,
    SCIP_SET set,
    SCIP_LPEXACT lp,
    int  pos,
    SCIP_RATIONAL val 
    )
    static

    changes a coefficient at given position of an LP column

    Parameters
    colLP column
    setglobal SCIP settings
    lpcurrent LP data
    posposition in column vector to change
    valvalue of coefficient

    Definition at line 1200 of file lpexact.c.

    References coefChangedExact(), colExactDelCoefPos(), SCIP_RowExact::cols, SCIP_RowExact::fprow, SCIP_ColExact::linkpos, SCIP_Row::name, NULL, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarGetName(), SCIP_ColExact::vals, and SCIP_ColExact::var.

    Referenced by SCIPcolExactChgCoef(), SCIPcolExactIncCoef(), SCIProwExactChgCoef(), and SCIProwExactIncCoef().

    ◆ rowExactDelCoefPos()

    static SCIP_RETCODE rowExactDelCoefPos ( SCIP_ROWEXACT row,
    SCIP_SET set,
    SCIP_LPEXACT lp,
    int  pos 
    )
    static

    ◆ rowExactChgCoefPos()

    ◆ colExactLink()

    static SCIP_RETCODE colExactLink ( SCIP_COLEXACT col,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_LPEXACT lp 
    )
    static

    insert column coefficients in corresponding rows

    Parameters
    colcolumn data
    blkmemblock memory
    setglobal SCIP settings
    eventqueueevent queue
    lpcurrent LP data

    Definition at line 1473 of file lpexact.c.

    References checkLinks, SCIP_RowExact::cols, SCIP_ColExact::fpcol, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::nunlinked, rowExactAddCoef(), SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalIsZero(), SCIPsetDebugMsg, SCIPvarGetName(), SCIP_ColExact::vals, SCIP_Col::var, and SCIP_ColExact::var.

    Referenced by lpExactFlushAddCols(), and SCIPlpExactLink().

    ◆ rowExactLink()

    static SCIP_RETCODE rowExactLink ( SCIP_ROWEXACT row,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_LPEXACT lp 
    )
    static

    insert row coefficients in corresponding columns

    Parameters
    rowrow data
    blkmemblock memory
    setglobal SCIP settings
    eventqueueevent queue
    lpcurrent LP data

    Definition at line 1517 of file lpexact.c.

    References checkLinks, colExactAddCoef(), SCIP_RowExact::cols, SCIP_RowExact::fprow, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_Row::name, SCIP_RowExact::nlpcols, NULL, SCIP_RowExact::nunlinked, SCIP_ColExact::rows, SCIP_CALL, SCIP_OKAY, SCIPrationalIsZero(), SCIPsetDebugMsg, and SCIP_RowExact::vals.

    Referenced by lpExactFlushAddRows(), and SCIPlpExactLink().

    ◆ rowExactUnlink()

    static SCIP_RETCODE rowExactUnlink ( SCIP_ROWEXACT row,
    SCIP_SET set,
    SCIP_LPEXACT lp 
    )
    static

    removes row coefficients from corresponding columns

    Parameters
    rowrow data
    setglobal SCIP settings
    lpcurrent LP data

    Definition at line 1560 of file lpexact.c.

    References colExactDelCoefPos(), SCIP_RowExact::len, NULL, SCIP_RowExact::nunlinked, SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.

    Referenced by SCIProwExactFree().

    ◆ colExactUpdateAddLP()

    static SCIP_RETCODE colExactUpdateAddLP ( SCIP_COLEXACT col,
    SCIP_SET set 
    )
    static

    updates link data after addition of column

    Parameters
    colLP column
    setglobal SCIP settings

    Definition at line 1592 of file lpexact.c.

    References SCIP_RowExact::cols, FALSE, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_ColExact::lppos, SCIP_RowExact::nlpcols, NULL, rowExactSwapCoefs(), SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.

    Referenced by SCIPlpExactAddCol().

    ◆ rowExactUpdateAddLP()

    static SCIP_RETCODE rowExactUpdateAddLP ( SCIP_ROWEXACT row,
    SCIP_SET set 
    )
    static

    updates link data after addition of row

    Parameters
    rowLP row
    setglobal SCIP settings

    Definition at line 1631 of file lpexact.c.

    References colExactSwapCoefs(), SCIP_RowExact::cols, FALSE, SCIP_RowExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_RowExact::lppos, SCIP_ColExact::lprowssorted, SCIP_ColExact::nlprows, NULL, SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.

    Referenced by SCIPlpExactAddRow().

    ◆ colExactUpdateDelLP()

    static SCIP_RETCODE colExactUpdateDelLP ( SCIP_COLEXACT col,
    SCIP_SET set 
    )
    static

    updates link data after removal of column

    Parameters
    colLP column
    setglobal SCIP settings

    Definition at line 1669 of file lpexact.c.

    References SCIP_RowExact::cols, FALSE, SCIP_ColExact::len, SCIP_ColExact::linkpos, SCIP_RowExact::linkpos, SCIP_ColExact::lppos, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, rowExactSwapCoefs(), SCIP_ColExact::rows, SCIP_CALL, and SCIP_OKAY.

    Referenced by SCIPlpExactShrinkCols().

    ◆ rowExactUpdateDelLP()

    static SCIP_RETCODE rowExactUpdateDelLP ( SCIP_ROWEXACT row,
    SCIP_SET set 
    )
    static

    ◆ markColexDeleted()

    static void markColexDeleted ( SCIP_COLEXACT col)
    static

    resets column data to represent a column not in the LP solver

    Parameters
    colcolumn to be marked deleted

    Definition at line 1749 of file lpexact.c.

    References SCIP_ColExact::basisstatus, SCIP_ColExact::lpipos, NULL, SCIP_BASESTAT_ZERO, SCIP_ColExact::validfarkaslp, and SCIP_ColExact::validredcostlp.

    Referenced by lpExactFlushDelCols().

    ◆ lpExactFlushDelCols()

    ◆ lpExactFlushAddCols()

    static SCIP_RETCODE lpExactFlushAddCols ( SCIP_LPEXACT lp,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue 
    )
    static

    ◆ markRowexDeleted()

    static void markRowexDeleted ( SCIP_ROWEXACT row)
    static

    resets row data to represent a row not in the LP solver

    Parameters
    rowrow to be marked deleted

    Definition at line 1952 of file lpexact.c.

    References SCIP_RowExact::basisstatus, SCIP_RowExact::lpipos, NULL, SCIP_BASESTAT_BASIC, and SCIP_RowExact::validactivitylp.

    Referenced by lpExactFlushDelRows().

    ◆ lpExactFlushDelRows()

    ◆ lpExactFlushAddRows()

    ◆ lpExactFlushChgCols()

    ◆ lpExactFlushChgRows()

    ◆ getFiniteLooseObjvalExact()

    static SCIP_RATIONAL * getFiniteLooseObjvalExact ( SCIP_LPEXACT lp,
    SCIP_SET set,
    SCIP_PROB prob 
    )
    static

    gets finite part of objective value of current LP that results from LOOSE variables only. returns reference, so be careful not to change!

    Parameters
    lpcurrent LP data
    setglobal SCIP settings
    probproblem data

    Definition at line 2390 of file lpexact.c.

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

    Referenced by lpExactFlushAndSolve(), and SCIPlpExactSolveAndEval().

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

    ◆ lpExactSetRealpar()

    static SCIP_RETCODE lpExactSetRealpar ( SCIP_LPEXACT lp,
    SCIP_LPPARAM  lpparam,
    SCIP_Real  value,
    SCIP_Bool success 
    )
    static

    sets parameter of type SCIP_Real in exact LP solver, ignoring unknown parameters

    Parameters
    lpcurrent LP data
    lpparamLP parameter
    valuevalue to set parameter to
    successpointer to store whether the parameter was successfully changed

    Definition at line 2488 of file lpexact.c.

    References FALSE, SCIP_LpExact::lpiexact, NULL, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiExactSetRealpar(), and TRUE.

    Referenced by lpExactFlushAndSolve(), and lpExactSetObjlim().

    ◆ lpExactSetIntpar()

    static SCIP_RETCODE lpExactSetIntpar ( SCIP_LPEXACT lp,
    SCIP_LPPARAM  lpparam,
    int  value,
    SCIP_Bool success 
    )
    static

    sets parameter of type SCIP_Real in exact LP solver, ignoring unknown parameters

    Parameters
    lpcurrent LP data
    lpparamLP parameter
    valuevalue to set parameter to
    successpointer to store whether the parameter was successfully changed

    Definition at line 2515 of file lpexact.c.

    References FALSE, SCIP_LpExact::lpiexact, NULL, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiExactSetIntpar(), and TRUE.

    Referenced by lpExactSetIterationLimit().

    ◆ lpExactSetObjlim()

    static SCIP_RETCODE lpExactSetObjlim ( SCIP_LPEXACT lp,
    SCIP_SET set,
    SCIP_Real  objlim,
    SCIP_Bool success 
    )
    static

    sets the objective limit of the exact LP solver

    Note that we are always minimizing.

    Parameters
    lpcurrent LP data
    setglobal SCIP settings
    objlimnew objective limit
    successpointer to store whether the parameter was actually changed

    Definition at line 2545 of file lpexact.c.

    References FALSE, lpExactSetRealpar(), SCIP_LpExact::lpiexact, SCIP_LpExact::lpiobjlim, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, NULL, SCIP_LpExact::primalchecked, SCIP_LpExact::primalfeasible, SCIP_CALL, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiExactGetRealpar(), SCIPlpiExactInfinity(), SCIPrationalSetInfinity(), SCIPsetIsInfinity(), and SCIP_LpExact::solved.

    Referenced by lpExactFlushAndSolve().

    ◆ lpExactSetIterationLimit()

    static SCIP_RETCODE lpExactSetIterationLimit ( SCIP_LPEXACT lp,
    int  itlim 
    )
    static

    sets the iteration limit of the LP solver

    Parameters
    lpcurrent LP data
    itlimmaximal number of LP iterations to perform, or -1 for no limit

    Definition at line 2594 of file lpexact.c.

    References FALSE, lpExactSetIntpar(), SCIP_LpExact::lpiitlim, SCIP_LpExact::lpobjval, SCIP_LpExact::lpsolstat, NULL, SCIP_Bool, SCIP_CALL, SCIP_LPPAR_LPITLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIPrationalSetInfinity(), and SCIP_LpExact::solved.

    Referenced by lpExactFlushAndSolve(), and SCIPlpExactEndDive().

    ◆ markRowExactDeleted()

    static void markRowExactDeleted ( SCIP_ROWEXACT row)
    static

    resets row data to represent a row not in the LP solver

    Parameters
    rowrow to be marked deleted

    Definition at line 2628 of file lpexact.c.

    References SCIP_RowExact::activity, SCIP_RowExact::basisstatus, SCIP_RowExact::dualfarkas, SCIP_RowExact::dualsol, SCIP_RowExact::lpipos, NULL, SCIP_BASESTAT_BASIC, SCIPrationalSetInfinity(), SCIPrationalSetReal(), and SCIP_RowExact::validactivitylp.

    Referenced by SCIPlpExactDelRowset().

    ◆ SCIPlpExactDelRowset()

    ◆ 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()

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

    ◆ rowExactCreateFromRowLimitEncodingLength()

    static SCIP_RETCODE rowExactCreateFromRowLimitEncodingLength ( SCIP_ROW row,
    SCIP_ROWEXACT rowexact,
    SCIP_SET set,
    BMS_BLKMEM blkmem,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_LPEXACT lpexact 
    )
    static

    ◆ 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()

    ◆ SCIPlpPsdataCreate()

    static SCIP_RETCODE SCIPlpPsdataCreate ( SCIP_LPEXACT lpexact,
    SCIP_SET set,
    BMS_BLKMEM blkmem 
    )
    static

    creates the data needed for project and shift bounding method

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

    Definition at line 3775 of file lpexact.c.

    References BMSallocBlockMemory, FALSE, NULL, SCIP_LpExact::projshiftdata, SCIP_ALLOC, SCIP_OKAY, and TRUE.

    Referenced by SCIPlpExactCreate().

    ◆ SCIPlpExactProjectShiftFreeLPIExact()

    static SCIP_RETCODE SCIPlpExactProjectShiftFreeLPIExact ( SCIP_LPIEXACT **  lpiexact)
    static

    frees the exact LPI in project-and-shift

    Parameters
    lpiexactpointer to LPI object

    Definition at line 3822 of file lpexact.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiExactClear(), SCIPlpiExactDelCols(), SCIPlpiExactDelRows(), SCIPlpiExactFree(), SCIPlpiExactGetNCols(), and SCIPlpiExactGetNRows().

    Referenced by SCIPlpExactProjectShiftFree().

    ◆ SCIPlpExactProjectShiftFree()

    static SCIP_RETCODE SCIPlpExactProjectShiftFree ( SCIP_LPEXACT lpexact,
    SCIP_SET set,
    BMS_BLKMEM blkmem 
    )
    static

    frees the data needed for project and shift bounding method

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

    Definition at line 3846 of file lpexact.c.

    References BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, NULL, SCIP_LpExact::projshiftdata, SCIP_CALL, SCIP_OKAY, SCIPlpExactProjectShiftFreeLPIExact(), SCIPrationalFreeBlock(), and SCIPrationalFreeBlockArray().

    Referenced by SCIPlpExactFree().

    ◆ 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()

    ◆ SCIPlpExactSetCutoffbound()

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

    ◆ lpExactNumericalTroubleMessage()

    static void lpExactNumericalTroubleMessage ( SCIP_MESSAGEHDLR messagehdlr,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_VERBLEVEL  verblevel,
    const char *  formatstr,
      ... 
    )
    static

    prints message about numerical trouble

    If message has verblevel at most high and display/verblevel is not full, then the message is not printed if already MAXNUMTROUBLELPMSGS messages were printed before in the current run.

    Parameters
    messagehdlrmessage handler
    setglobal SCIP settings
    statproblem statistics
    verblevelverbosity level of message
    formatstrmessage format string
    ...arguments to format string

    Definition at line 4233 of file lpexact.c.

    References MAXNUMTROUBLELPMSGS, SCIP_Stat::nexlp, SCIP_Stat::nnodes, SCIP_Stat::nnumtroublelpmsgs, NULL, SCIP_LONGINT_FORMAT, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIP_VERBLEVEL_NONE, SCIPmessagePrintInfo(), and SCIPmessageVFPrintInfo().

    Referenced by SCIPlpExactSolveAndEval().

    ◆ lpExactFlushAndSolve()

    static SCIP_RETCODE lpExactFlushAndSolve ( SCIP_LPEXACT lpexact,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_MESSAGEHDLR messagehdlr,
    SCIP_STAT stat,
    SCIP_PROB prob,
    SCIP_EVENTQUEUE eventqueue,
    int  harditlim,
    SCIP_Bool  fromscratch,
    SCIP_Bool lperror 
    )
    static

    flushes the exact LP and solves it with the primal or dual simplex algorithm, depending on the current basis feasibility

    Parameters
    lpexactcurrent exact LP data
    blkmemblock memory
    setglobal SCIP settings
    messagehdlrmessage handler
    statproblem statistics
    probproblem data
    eventqueueevent queue
    harditlimmaximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit
    fromscratchshould the LP be solved from scratch without using current basis?
    lperrorpointer to store whether an unresolved LP error occurred

    Definition at line 4287 of file lpexact.c.

    References SCIP_LpExact::cutoffbound, SCIP_LpExact::dualfeasible, FALSE, SCIP_LpExact::fplp, getFiniteLooseObjvalExact(), SCIP_Stat::lpcount, lpExactSetIterationLimit(), lpExactSetObjlim(), lpExactSetRealpar(), SCIP_Lp::lpi, SCIP_LpExact::lpiexact, SCIP_Lp::lpiobjlim, SCIP_LpExact::lpiobjlim, SCIP_Lp::lpobjval, SCIP_LpExact::lpobjval, SCIP_Lp::lpsolstat, SCIP_LpExact::lpsolstat, SCIP_LpExact::nlpicols, SCIP_LpExact::nlpirows, SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_LpExact::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_LPERROR, SCIP_LPPAR_FROMSCRATCH, SCIP_LPPAR_LPINFO, SCIP_LPPAR_LPTILIM, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_R_ROUND_DOWNWARDS, SCIP_Real, SCIPABORT, SCIPclockGetTime(), SCIPdebugMessage, SCIPerrorMessage, SCIPlpExactFlush(), SCIPlpExactIsSynced(), SCIPlpExactSyncLPs(), SCIPlpiExactExistsPrimalRay(), SCIPlpiExactGetInternalStatus(), SCIPlpiExactGetObjval(), SCIPlpiExactGetSolFeasibility(), SCIPlpiExactInfinity(), SCIPlpiExactIsDualFeasible(), SCIPlpiExactIsIterlimExc(), SCIPlpiExactIsObjlimExc(), SCIPlpiExactIsOptimal(), SCIPlpiExactIsPrimalFeasible(), SCIPlpiExactIsPrimalInfeasible(), SCIPlpiExactIsPrimalUnbounded(), SCIPlpiExactIsTimelimExc(), SCIPlpiExactSetBase(), SCIPlpiExactSetIntpar(), SCIPlpiExactSolveDual(), SCIPlpiFreeState(), SCIPlpiGetBase(), SCIPlpiGetState(), SCIPlpiHasStateBasis(), SCIPrationalDebugMessage, SCIPrationalIsGTReal(), SCIPrationalRoundReal(), SCIPrationalSetInfinity(), SCIPrationalSetNegInfinity(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIP_LpExact::solisbasic, SCIP_Lp::solved, SCIP_LpExact::solved, SCIP_Stat::solvingtime, TRUE, and SCIP_Lp::validsollp.

    Referenced by SCIPlpExactSolveAndEval().

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

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

    ◆ SCIProwExactGetNNonz()

    int SCIProwExactGetNNonz ( SCIP_ROWEXACT row)

    ◆ SCIProwExactGetVals()

    SCIP_RATIONAL ** SCIProwExactGetVals ( SCIP_ROWEXACT row)

    gets array with coefficients of nonzero entries

    Parameters
    rowLP row

    Definition at line 5016 of file lpexact.c.

    References NULL, and SCIP_RowExact::vals.

    Referenced by certificatePrintRow(), printActivityConflictToCertificate(), SCIPconsPrintCertificateExactLinear(), and SCIProwExactCreateFromRow().

    ◆ SCIProwExactGetCols()

    SCIP_COLEXACT ** SCIProwExactGetCols ( SCIP_ROWEXACT row)

    gets array of exact columns

    Parameters
    rowLP row

    Definition at line 5026 of file lpexact.c.

    References SCIP_RowExact::cols, and NULL.

    Referenced by certificatePrintRow(), SCIPcertificatePrintDualboundExactLP(), and SCIPconsPrintCertificateExactLinear().

    ◆ SCIProwExactIsInLP()

    SCIP_Bool SCIProwExactIsInLP ( SCIP_ROWEXACT row)

    returns TRUE iff row is member of current LP

    Parameters
    rowLP row

    Definition at line 5036 of file lpexact.c.

    References SCIP_RowExact::lppos, and NULL.

    Referenced by checkCons(), and SCIPlpExactSyncLPs().

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

    ◆ SCIProwExactGetRow()

    SCIP_ROW * SCIProwExactGetRow ( SCIP_ROWEXACT row)

    returns fp row corresponding to exact row, if it exists. Otherwise returns NULL

    Parameters
    rowSCIP row

    Definition at line 5069 of file lpexact.c.

    References SCIP_RowExact::fprow, and NULL.

    Referenced by certificatePrintRow(), and SCIPcertificatePrintDualboundExactLP().

    ◆ SCIProwExactGetRowRhs()

    SCIP_ROW * SCIProwExactGetRowRhs ( SCIP_ROWEXACT row)

    returns rhs-relaxation part of exact row, if it exists. Otherwise returns NULL

    Parameters
    rowSCIP row

    Definition at line 5079 of file lpexact.c.

    References SCIP_RowExact::fprowrhs, and NULL.

    Referenced by addOneRowSafely(), cutsSubstituteMIRSafely(), and SCIPaggrRowAddRowSafely().

    ◆ SCIProwExactHasFpRelax()

    SCIP_Bool SCIProwExactHasFpRelax ( SCIP_ROWEXACT row)

    true if row can be relaxed (possibly as two fp rows)

    Parameters
    rowSCIP row

    Definition at line 5089 of file lpexact.c.

    References SCIP_RowExact::fprelaxable, and NULL.

    Referenced by addOneRowSafely(), cutsSubstituteMIRSafely(), and SCIPaggrRowAddRowSafely().

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

    ◆ 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 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()

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

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

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

    ◆ SCIProwExactSort()

    void SCIProwExactSort ( SCIP_ROWEXACT row)

    sorts row entries such that LP columns precede non-LP columns and inside both parts lower column indices precede higher ones

    Parameters
    rowrow to be sorted

    Definition at line 5755 of file lpexact.c.

    References NULL, rowExactSortLP(), and rowExactSortNonLP().

    Referenced by rowExactCreateFromRowLimitEncodingLength(), and rowExactMerge().

    ◆ rowExactMerge()

    static void rowExactMerge ( SCIP_ROWEXACT row,
    SCIP_SET set 
    )
    static

    sorts row, and merges equal column entries (resulting from lazy sorting and adding) into a single entry; removes zero entries from row the row must not be linked to the columns; otherwise, we would need to update the columns as well, which is too expensive

    Parameters
    rowrow to be sorted
    setglobal SCIP settings

    Definition at line 5773 of file lpexact.c.

    References SCIP_RowExact::cols, SCIP_RowExact::cols_index, SCIP_RowExact::delaysort, SCIP_RowExact::fprow, SCIP_ColExact::index, SCIP_RowExact::integral, SCIP_RowExact::len, SCIP_RowExact::linkpos, SCIP_RowExact::lpcolssorted, SCIP_Row::name, SCIP_RowExact::nlpcols, SCIP_RowExact::nonlpcolssorted, NULL, SCIP_RowExact::nunlinked, SCIPcolIsIntegral(), SCIPintervalSetRational(), SCIPrationalAdd(), SCIPrationalIsIntegral(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIProwExactSort(), SCIPsetDebugMsg, TRUE, SCIP_RowExact::vals, and SCIP_RowExact::valsinterval.

    Referenced by SCIProwExactForceSort().

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

    ◆ SCIPcolExactGetVar()

    SCIP_VAR * SCIPcolExactGetVar ( SCIP_COLEXACT col)

    gets variable this column represents

    Parameters
    colLP column

    Definition at line 6052 of file lpexact.c.

    References NULL, and SCIP_ColExact::var.

    Referenced by certificatePrintRow(), SCIPcertificatePrintDualboundExactLP(), SCIPconsPrintCertificateExactLinear(), and SCIProwExactGenerateFpRows().

    ◆ SCIProwExactEnsureSize()

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

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

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

    ◆ getObjvalDeltaObjExact()

    static SCIP_RETCODE getObjvalDeltaObjExact ( SCIP_SET set,
    SCIP_RATIONAL oldobj,
    SCIP_RATIONAL newobj,
    SCIP_RATIONAL lb,
    SCIP_RATIONAL ub,
    SCIP_RATIONAL deltaval,
    int *  deltainf 
    )
    static

    compute the objective delta due the new objective coefficient

    Parameters
    setglobal SCIP settings
    oldobjold objective value of variable
    newobjnew objective value of variable
    lblower bound of variable
    ubupper bound of variable
    deltavalpointer to store the delta value
    deltainfpointer to store the number of variables with infinite best bound

    Definition at line 6100 of file lpexact.c.

    References SCIP_CALL, SCIP_OKAY, SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalIsAbsInfinity(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalNegate(), and SCIPrationalSetReal().

    Referenced by SCIPlpExactUpdateVarObj().

    ◆ SCIProwExactGetLhs()

    SCIP_RATIONAL * SCIProwExactGetLhs ( SCIP_ROWEXACT row)

    returns the left hand side of the row

    Parameters
    rowLP row

    Definition at line 6255 of file lpexact.c.

    References SCIP_RowExact::lhs, and NULL.

    Referenced by SCIPconsPrintCertificateExactLinear(), and SCIPsepastoreExactAddCut().

    ◆ SCIProwExactGetRhs()

    SCIP_RATIONAL * SCIProwExactGetRhs ( SCIP_ROWEXACT row)

    returns the right hand side of the row

    Parameters
    rowLP row

    Definition at line 6266 of file lpexact.c.

    References NULL, and SCIP_RowExact::rhs.

    Referenced by certificatePrintRow(), SCIPconsPrintCertificateExactLinear(), and SCIPsepastoreExactAddCut().

    ◆ SCIProwExactGetConstant()

    SCIP_RATIONAL * SCIProwExactGetConstant ( SCIP_ROWEXACT row)

    returns the constant of the row

    Parameters
    rowLP row

    Definition at line 6277 of file lpexact.c.

    References SCIP_RowExact::constant, and NULL.

    Referenced by SCIPconsPrintCertificateExactLinear().

    ◆ getObjvalDeltaLbExact()

    static void getObjvalDeltaLbExact ( SCIP_RATIONAL obj,
    SCIP_RATIONAL oldlb,
    SCIP_RATIONAL newlb,
    SCIP_RATIONAL deltaval,
    int *  deltainf 
    )
    static

    compute the objective delta due the new lower bound

    Parameters
    objobjective value of variable
    oldlbold lower bound of variable
    newlbnew lower bound of variable
    deltavalpointer to store the delta value
    deltainfpointer to store the number of variables with infinite best bound

    Definition at line 6289 of file lpexact.c.

    References SCIPrationalDiff(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalMult(), SCIPrationalNegate(), and SCIPrationalSetReal().

    Referenced by SCIPlpExactUpdateVarLb(), and SCIPlpExactUpdateVarLbGlobal().

    ◆ getObjvalDeltaUbExact()

    static void getObjvalDeltaUbExact ( SCIP_RATIONAL obj,
    SCIP_RATIONAL oldub,
    SCIP_RATIONAL newub,
    SCIP_RATIONAL deltaval,
    int *  deltainf 
    )
    static

    compute the objective delta due the new upper bound

    Parameters
    objobjective value of variable
    oldubold upper bound of variable
    newubnew upper bound of variable
    deltavalpointer to store the delta value
    deltainfpointer to store the number of variables with infinite best bound

    Definition at line 6331 of file lpexact.c.

    References SCIPrationalDiff(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalMult(), SCIPrationalNegate(), and SCIPrationalSetReal().

    Referenced by SCIPlpExactUpdateVarUb(), and SCIPlpExactUpdateVarUbGlobal().

    ◆ lpExactUpdateObjval()

    static void lpExactUpdateObjval ( SCIP_LPEXACT lpexact,
    SCIP_VAR var,
    SCIP_RATIONAL deltavalex,
    int  deltainf,
    SCIP_Bool  local,
    SCIP_Bool  loose,
    SCIP_Bool  global 
    )
    static

    updates current pseudo and loose objective values for a change in a variable's objective value or bounds

    Parameters
    lpexactcurrent LP data
    varproblem variable that changed
    deltavalexdelta value in the objective function
    deltainfdelta value for the number of variables with infinite best bound
    localshould the local pseudo objective value be updated?
    looseshould the loose objective value be updated?
    globalshould the global pseudo objective value be updated?

    Definition at line 6373 of file lpexact.c.

    References SCIP_LpExact::glbpseudoobjval, SCIP_LpExact::glbpseudoobjvalinf, SCIP_LpExact::looseobjval, SCIP_LpExact::looseobjvalinf, NULL, SCIP_LpExact::pseudoobjval, SCIP_LpExact::pseudoobjvalinf, SCIP_VARSTATUS_LOOSE, SCIPrationalAdd(), SCIPrationalIsZero(), SCIPvarGetStatusExact(), and TRUE.

    Referenced by SCIPlpExactUpdateVarColumn(), SCIPlpExactUpdateVarLb(), SCIPlpExactUpdateVarLbGlobal(), SCIPlpExactUpdateVarLoose(), SCIPlpExactUpdateVarObj(), SCIPlpExactUpdateVarUb(), and SCIPlpExactUpdateVarUbGlobal().

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

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

    ◆ colExactStoreSolVals()

    static SCIP_RETCODE colExactStoreSolVals ( SCIP_COLEXACT colexact,
    BMS_BLKMEM blkmem 
    )
    static

    ◆ colExactRestoreSolVals()

    static SCIP_RETCODE colExactRestoreSolVals ( SCIP_COLEXACT colexact,
    BMS_BLKMEM blkmem,
    SCIP_Longint  validlp,
    SCIP_Bool  freebuffer 
    )
    static

    restore LP solution values in column

    Parameters
    colexactexact LP column
    blkmemblock memory
    validlpnumber of lp for which restored values are valid
    freebuffershould buffer for LP solution values be freed?

    Definition at line 7685 of file lpexact.c.

    References SCIP_ColExactSolVals::basisstatus, SCIP_ColExact::basisstatus, BMSfreeBlockMemoryNull, NULL, SCIP_ColExactSolVals::primsol, SCIP_ColExact::primsol, SCIP_ColExactSolVals::redcost, SCIP_ColExact::redcost, SCIP_BASESTAT_ZERO, SCIP_OKAY, SCIPrationalSetRational(), SCIPrationalSetReal(), SCIP_ColExact::storedsolvals, SCIP_ColExact::validfarkaslp, and SCIP_ColExact::validredcostlp.

    Referenced by SCIPlpExactEndDive().

    ◆ rowExactStoreSolVals()

    static SCIP_RETCODE rowExactStoreSolVals ( SCIP_ROWEXACT rowexact,
    BMS_BLKMEM blkmem,
    SCIP_Bool  infeasible 
    )
    static

    ◆ rowExactRestoreSolVals()

    static SCIP_RETCODE rowExactRestoreSolVals ( SCIP_ROWEXACT rowexact,
    BMS_BLKMEM blkmem,
    SCIP_Longint  validlp,
    SCIP_Bool  freebuffer,
    SCIP_Bool  infeasible 
    )
    static

    restore LP solution values in row

    Parameters
    rowexactexact LP column
    blkmemblock memory
    validlpnumber of lp for which restored values are valid
    freebuffershould buffer for LP solution values be freed?
    infeasibleis the solution infeasible?

    Definition at line 7789 of file lpexact.c.

    References SCIP_RowExactSolVals::activity, SCIP_RowExact::activity, SCIP_RowExactSolVals::basisstatus, SCIP_RowExact::basisstatus, BMSfreeBlockMemoryNull, SCIP_RowExact::dualfarkas, SCIP_RowExactSolVals::dualsol, SCIP_RowExact::dualsol, NULL, SCIP_BASESTAT_BASIC, SCIP_INVALID, SCIP_OKAY, SCIPrationalSetRational(), SCIPrationalSetReal(), SCIP_RowExact::storedsolvals, and SCIP_RowExact::validactivitylp.

    Referenced by SCIPlpExactEndDive().

    ◆ lpExactStoreSolVals()

    ◆ lpExactRestoreSolVals()

    ◆ SCIProwExactLock()

    void SCIProwExactLock ( SCIP_ROWEXACT row)

    locks an unmodifiable row, which forbids further changes; has no effect on modifiable rows

    Parameters
    rowexact LP row

    Definition at line 7943 of file lpexact.c.

    References SCIP_RowExact::modifiable, SCIP_RowExact::nlocks, and NULL.

    ◆ SCIProwExactUnlock()

    void SCIProwExactUnlock ( SCIP_ROWEXACT row)

    unlocks a lock of an unmodifiable row; a row with no sealed lock may be modified; has no effect on modifiable rows

    Parameters
    rowexact LP row

    Definition at line 7957 of file lpexact.c.

    References SCIP_RowExact::modifiable, SCIP_RowExact::nlocks, and NULL.

    ◆ ensureChgrowsSizeExact()

    static SCIP_RETCODE ensureChgrowsSizeExact ( SCIP_LPEXACT lpexact,
    SCIP_SET set,
    int  num 
    )
    static

    ensures that chgrows array can store at least num entries

    Parameters
    lpexactcurrent exact LP data
    setglobal SCIP settings
    numminimum number of entries to store

    Definition at line 7973 of file lpexact.c.

    References BMSreallocMemoryArray, SCIP_LpExact::chgrows, SCIP_LpExact::chgrowssize, SCIP_LpExact::nchgrows, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by rowExactSideChanged().

    ◆ rowExactSideChanged()

    static SCIP_RETCODE rowExactSideChanged ( SCIP_ROWEXACT rowexact,
    SCIP_SET set,
    SCIP_LPEXACT lpexact,
    SCIP_SIDETYPE  sidetype 
    )
    static

    notifies exact LP row that its sides were changed

    Parameters
    rowexactexact LP row
    setglobal SCIP settings
    lpexactcurrent exact LP data
    sidetypetype of side: left or right hand side

    Definition at line 7997 of file lpexact.c.

    References SCIP_LpExact::chgrows, ensureChgrowsSizeExact(), FALSE, SCIP_LpExact::flushed, SCIP_RowExact::lhschanged, SCIP_RowExact::lpipos, SCIP_LpExact::nchgrows, NULL, SCIP_RowExact::rhschanged, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPABORT, SCIPerrorMessage, and TRUE.

    Referenced by SCIProwExactChgLhs(), and SCIProwExactChgRhs().

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

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

    ◆ 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 
    )

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

    ◆ SCIPlpExactDiving()

    SCIP_Bool SCIPlpExactDiving ( SCIP_LPEXACT lpexact)

    ◆ 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 
    )