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 
)