Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

LP management methods and data structures.

Author
Tobias Achterberg
Timo Berthold
Marc Pfetsch
Kati Wolter
Gerald Gamrath

In LP management, we have to differ 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 lpFlush().

Definition in file lp.c.

#include "lpi/lpi.h"
#include "scip/clock.h"
#include "scip/cons.h"
#include "scip/event.h"
#include "scip/intervalarith.h"
#include "scip/lp.h"
#include "scip/misc.h"
#include "scip/prob.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_var.h"
#include "scip/set.h"
#include "scip/sol.h"
#include "scip/solve.h"
#include "scip/stat.h"
#include "scip/struct_event.h"
#include "scip/struct_lp.h"
#include "scip/struct_prob.h"
#include "scip/struct_set.h"
#include "scip/struct_stat.h"
#include "scip/struct_var.h"
#include "scip/var.h"
#include <string.h>

Go to the source code of this file.

Macros

#define debugRowPrint(x, y)
 
#define debugColPrint(x, y)
 
#define checkRow(row)
 
#define checkRowSqrnorm(row)
 
#define checkRowSumnorm(row)
 
#define checkRowObjprod(row)
 
#define checkLinks(lp)
 
#define lpCutoffDisabled(set)   (set->lp_disablecutoff == 1 || (set->nactivepricers > 0 && set->lp_disablecutoff == 2))
 
#define DIVESTACKINITSIZE   100
 
#define MAXNUMTROUBLELPMSGS   10
 
#define FEASTOLTIGHTFAC   0.001
 
#define DIVESTACKGROWFACT   1.5
 

Functions

static SCIP_RETCODE ensureChgcolsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureChgrowsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureLpicolsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureLpirowsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureColsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureSoldirectionSize (SCIP_LP *lp, int num)
 
static SCIP_RETCODE ensureLazycolsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE ensureRowsSize (SCIP_LP *lp, SCIP_SET *set, int num)
 
static SCIP_RETCODE colEnsureSize (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
 
static SCIP_RETCODE lpStoreSolVals (SCIP_LP *lp, SCIP_STAT *stat, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE lpRestoreSolVals (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_Longint validlp)
 
static SCIP_RETCODE colStoreSolVals (SCIP_COL *col, BMS_BLKMEM *blkmem)
 
static SCIP_RETCODE colRestoreSolVals (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer)
 
static SCIP_RETCODE rowStoreSolVals (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_Bool infeasible)
 
static SCIP_RETCODE rowRestoreSolVals (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_Longint validlp, SCIP_Bool freebuffer, SCIP_Bool infeasible)
 
SCIP_RETCODE SCIProwEnsureSize (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
 
static void recomputeLooseObjectiveValue (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
static void recomputePseudoObjectiveValue (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
static void recomputeGlbPseudoObjectiveValue (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
static SCIP_Real getFiniteLooseObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
static SCIP_Real getFinitePseudoObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
 SCIP_DECL_SORTPTRCOMP (SCIProwComp)
 
static void colSortLP (SCIP_COL *col)
 
static void colSortNonLP (SCIP_COL *col)
 
static void rowSortLP (SCIP_ROW *row)
 
static void rowSortNonLP (SCIP_ROW *row)
 
static int colSearchCoefPart (SCIP_COL *col, const SCIP_ROW *row, int minpos, int maxpos)
 
static int colSearchCoef (SCIP_COL *col, const SCIP_ROW *row)
 
static int rowSearchCoefPart (SCIP_ROW *row, const SCIP_COL *col, int minpos, int maxpos)
 
static int rowSearchCoef (SCIP_ROW *row, const SCIP_COL *col)
 
static void colMoveCoef (SCIP_COL *col, int oldpos, int newpos)
 
static void colSwapCoefs (SCIP_COL *col, int pos1, int pos2)
 
static void rowMoveCoef (SCIP_ROW *row, int oldpos, int newpos)
 
static void rowSwapCoefs (SCIP_ROW *row, int pos1, int pos2)
 
static SCIP_RETCODE rowEventCoefChanged (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_COL *col, SCIP_Real oldval, SCIP_Real newval)
 
static SCIP_RETCODE rowEventConstantChanged (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_Real oldval, SCIP_Real newval)
 
static SCIP_RETCODE rowEventSideChanged (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_SIDETYPE side, SCIP_Real oldval, SCIP_Real newval)
 
static void coefChanged (SCIP_ROW *row, SCIP_COL *col, SCIP_LP *lp)
 
static SCIP_RETCODE rowAddCoef (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val, int linkpos)
 
static SCIP_RETCODE colAddCoef (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val, int linkpos)
 
static SCIP_RETCODE colDelCoefPos (SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, int pos)
 
static SCIP_RETCODE colChgCoefPos (SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, int pos, SCIP_Real val)
 
static void rowAddNorms (SCIP_ROW *row, SCIP_SET *set, SCIP_COL *col, SCIP_Real val, SCIP_Bool updateidxvals)
 
static void rowDelNorms (SCIP_ROW *row, SCIP_SET *set, SCIP_COL *col, SCIP_Real val, SCIP_Bool forcenormupdate, SCIP_Bool updateindex, SCIP_Bool updateval)
 
static SCIP_RETCODE rowDelCoefPos (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, int pos)
 
static SCIP_RETCODE rowChgCoefPos (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, int pos, SCIP_Real val)
 
static SCIP_RETCODE rowSideChanged (SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp, SCIP_SIDETYPE sidetype)
 
static SCIP_RETCODE colLink (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
static SCIP_RETCODE colUnlink (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
static SCIP_RETCODE rowLink (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
static SCIP_RETCODE rowUnlink (SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
 
static SCIP_RETCODE lpSetIntpar (SCIP_LP *lp, SCIP_LPPARAM lpparam, int value, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetBoolpar (SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Bool value, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetRealpar (SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Real value, SCIP_Bool *success)
 
static SCIP_RETCODE lpCheckIntpar (SCIP_LP *lp, SCIP_LPPARAM lpparam, int value)
 
static SCIP_RETCODE lpCheckBoolpar (SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Bool value)
 
static SCIP_RETCODE lpCheckRealpar (SCIP_LP *lp, SCIP_LPPARAM lpparam, SCIP_Real value)
 
static SCIP_RETCODE lpSetObjlim (SCIP_LP *lp, SCIP_SET *set, SCIP_Real objlim, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetFeastol (SCIP_LP *lp, SCIP_Real feastol, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetDualfeastol (SCIP_LP *lp, SCIP_Real dualfeastol, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetBarrierconvtol (SCIP_LP *lp, SCIP_Real barrierconvtol, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetFromscratch (SCIP_LP *lp, SCIP_Bool fromscratch, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetFastmip (SCIP_LP *lp, int fastmip, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetScaling (SCIP_LP *lp, int scaling, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetThreads (SCIP_LP *lp, int threads, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetPresolving (SCIP_LP *lp, SCIP_Bool presolving, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetRowrepswitch (SCIP_LP *lp, SCIP_Real rowrepswitch, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetIterationLimit (SCIP_LP *lp, int itlim)
 
static SCIP_RETCODE lpSetPricing (SCIP_LP *lp, SCIP_PRICING pricing)
 
static SCIP_RETCODE lpSetPricingChar (SCIP_LP *lp, char pricingchar)
 
static SCIP_RETCODE lpSetLPInfo (SCIP_LP *lp, SCIP_Bool lpinfo)
 
static SCIP_RETCODE lpSetConditionLimit (SCIP_LP *lp, SCIP_Real condlimit, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetMarkowitz (SCIP_LP *lp, SCIP_Real threshhold, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetTiming (SCIP_LP *lp, SCIP_CLOCKTYPE timing, SCIP_Bool enabled, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetRandomseed (SCIP_LP *lp, int randomseed, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetSolutionPolishing (SCIP_LP *lp, SCIP_Bool polishing, SCIP_Bool *success)
 
static SCIP_RETCODE lpSetRefactorInterval (SCIP_LP *lp, int refactor, SCIP_Bool *success)
 
SCIP_RETCODE SCIPcolCreate (SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROW **rows, SCIP_Real *vals, SCIP_Bool removable)
 
SCIP_RETCODE SCIPcolFree (SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
 
void SCIPcolPrint (SCIP_COL *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
 
void SCIPcolSort (SCIP_COL *col)
 
SCIP_RETCODE SCIPcolAddCoef (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
 
SCIP_RETCODE SCIPcolDelCoef (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row)
 
SCIP_RETCODE SCIPcolChgCoef (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
 
SCIP_RETCODE SCIPcolIncCoef (SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real incval)
 
static SCIP_RETCODE insertColChgcols (SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp)
 
static SCIP_Bool isNewValueUnreliable (SCIP_SET *set, SCIP_Real newvalue, SCIP_Real oldvalue)
 
static void lpUpdateObjNorms (SCIP_LP *lp, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)
 
SCIP_RETCODE SCIPcolChgObj (SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
 
SCIP_RETCODE SCIPcolChgLb (SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
 
SCIP_RETCODE SCIPcolChgUb (SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
 
SCIP_Real SCIPcolCalcRedcost (SCIP_COL *col, SCIP_Real *dualsol)
 
static SCIP_Real colCalcInternalRedcost (SCIP_COL *col)
 
SCIP_Real SCIPcolGetRedcost (SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_Real SCIPcolGetFeasibility (SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_Real SCIPcolCalcFarkasCoef (SCIP_COL *col, SCIP_Real *dualfarkas)
 
static SCIP_Real colCalcInternalFarkasCoef (SCIP_COL *col)
 
SCIP_Real SCIPcolGetFarkasCoef (SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_Real SCIPcolGetFarkasValue (SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_RETCODE SCIPlpStartStrongbranch (SCIP_LP *lp)
 
SCIP_RETCODE SCIPlpEndStrongbranch (SCIP_LP *lp)
 
void SCIPcolSetStrongbranchData (SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real lpobjval, SCIP_Real primsol, SCIP_Real sbdown, SCIP_Real sbup, SCIP_Bool sbdownvalid, SCIP_Bool sbupvalid, SCIP_Longint iter, int itlim)
 
void SCIPcolInvalidateStrongbranchData (SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_RETCODE SCIPcolGetStrongbranch (SCIP_COL *col, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Bool updatecol, SCIP_Bool updatestat, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
 
SCIP_RETCODE SCIPcolGetStrongbranches (SCIP_COL **cols, int ncols, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
 
void SCIPcolGetStrongbranchLast (SCIP_COL *col, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Real *solval, SCIP_Real *lpobjval)
 
SCIP_Longint SCIPcolGetStrongbranchLPAge (SCIP_COL *col, SCIP_STAT *stat)
 
void SCIPcolMarkNotRemovableLocal (SCIP_COL *col, SCIP_STAT *stat)
 
static void rowCalcNorms (SCIP_ROW *row, SCIP_SET *set)
 
static void rowCalcIdxsAndVals (SCIP_ROW *row, SCIP_SET *set)
 
static SCIP_Bool isIntegralScalar (SCIP_Real val, SCIP_Real scalar, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Real *intval)
 
static SCIP_RETCODE rowScale (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real scaleval, SCIP_Bool integralcontvars, SCIP_Real minrounddelta, SCIP_Real maxrounddelta)
 
SCIP_RETCODE SCIProwCreate (SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
 
SCIP_RETCODE SCIProwFree (SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
void SCIProwPrint (SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
 
void SCIProwCapture (SCIP_ROW *row)
 
SCIP_RETCODE SCIProwRelease (SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
 
void SCIProwLock (SCIP_ROW *row)
 
void SCIProwUnlock (SCIP_ROW *row)
 
SCIP_RETCODE SCIProwAddCoef (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
 
SCIP_RETCODE SCIProwDelCoef (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col)
 
SCIP_RETCODE SCIProwChgCoef (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
 
SCIP_RETCODE SCIProwIncCoef (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real incval)
 
SCIP_RETCODE SCIProwChgConstant (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real constant)
 
SCIP_RETCODE SCIProwAddConstant (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real addval)
 
SCIP_RETCODE SCIProwChgLhs (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real lhs)
 
SCIP_RETCODE SCIProwChgRhs (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real rhs)
 
SCIP_RETCODE SCIProwChgLocal (SCIP_ROW *row, SCIP_Bool local)
 
SCIP_RETCODE SCIProwCalcIntegralScalar (SCIP_ROW *row, SCIP_SET *set, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)
 
SCIP_RETCODE SCIProwMakeIntegral (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)
 
void SCIProwSort (SCIP_ROW *row)
 
static void rowMerge (SCIP_ROW *row, SCIP_SET *set)
 
void SCIProwDelaySort (SCIP_ROW *row)
 
void SCIProwForceSort (SCIP_ROW *row, SCIP_SET *set)
 
void SCIProwRecalcLPActivity (SCIP_ROW *row, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetLPActivity (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_Real SCIProwGetLPFeasibility (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_Real SCIProwGetRelaxFeasibility (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetNLPFeasibility (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
void SCIProwRecalcPseudoActivity (SCIP_ROW *row, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetPseudoActivity (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetPseudoFeasibility (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetSolActivity (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
 
SCIP_Real SCIProwGetSolFeasibility (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
 
static void rowCalcActivityBounds (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetMinActivity (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetMaxActivity (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Bool SCIProwIsRedundant (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetMaxval (SCIP_ROW *row, SCIP_SET *set)
 
SCIP_Real SCIProwGetMinval (SCIP_ROW *row, SCIP_SET *set)
 
int SCIProwGetMaxidx (SCIP_ROW *row, SCIP_SET *set)
 
int SCIProwGetMinidx (SCIP_ROW *row, SCIP_SET *set)
 
int SCIProwGetNumIntCols (SCIP_ROW *row, SCIP_SET *set)
 
SCIP_Real SCIProwGetLPSolCutoffDistance (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_LP *lp)
 
SCIP_Real SCIProwGetLPEfficacy (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
 
SCIP_Bool SCIProwIsLPEfficacious (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool root)
 
SCIP_Real SCIProwGetSolEfficacy (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
 
SCIP_Bool SCIProwIsSolEfficacious (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool root)
 
SCIP_Real SCIProwGetRelaxEfficacy (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetNLPEfficacy (SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_Real SCIProwGetScalarProduct (SCIP_ROW *row1, SCIP_ROW *row2)
 
static int SCIProwGetDiscreteScalarProduct (SCIP_ROW *row1, SCIP_ROW *row2)
 
SCIP_Real SCIProwGetParallelism (SCIP_ROW *row1, SCIP_ROW *row2, char orthofunc)
 
SCIP_Real SCIProwGetOrthogonality (SCIP_ROW *row1, SCIP_ROW *row2, char orthofunc)
 
SCIP_Real SCIProwGetObjParallelism (SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
 
SCIP_RETCODE SCIProwCatchEvent (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
 
SCIP_RETCODE SCIProwDropEvent (SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
 
void SCIProwMarkNotRemovableLocal (SCIP_ROW *row, SCIP_STAT *stat)
 
static void markColDeleted (SCIP_COL *col)
 
static SCIP_RETCODE lpFlushDelCols (SCIP_LP *lp)
 
static void computeLPBounds (SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, SCIP_Real lpiinf, SCIP_Real *lb, SCIP_Real *ub)
 
static SCIP_RETCODE lpFlushAddCols (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
 
static void markRowDeleted (SCIP_ROW *row)
 
static SCIP_RETCODE lpFlushDelRows (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set)
 
static SCIP_RETCODE lpFlushAddRows (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
 
static SCIP_RETCODE lpFlushChgCols (SCIP_LP *lp, SCIP_SET *set)
 
static SCIP_RETCODE lpFlushChgRows (SCIP_LP *lp, SCIP_SET *set)
 
static SCIP_RETCODE lpCopyIntegrality (SCIP_LP *lp, SCIP_SET *set)
 
SCIP_RETCODE SCIPlpFlush (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
 
SCIP_RETCODE SCIPlpMarkFlushed (SCIP_LP *lp, SCIP_SET *set)
 
static void colUpdateAddLP (SCIP_COL *col, SCIP_SET *set)
 
static void rowUpdateAddLP (SCIP_ROW *row)
 
static void colUpdateDelLP (SCIP_COL *col, SCIP_SET *set)
 
static void rowUpdateDelLP (SCIP_ROW *row)
 
static SCIP_RETCODE allocDiveChgSideArrays (SCIP_LP *lp, int initsize)
 
static SCIP_RETCODE reallocDiveChgSideArrays (SCIP_LP *lp, int minsize, SCIP_Real growfact)
 
static void freeDiveChgSideArrays (SCIP_LP *lp)
 
SCIP_RETCODE SCIPlpCreate (SCIP_LP **lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
 
SCIP_RETCODE SCIPlpFree (SCIP_LP **lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
SCIP_RETCODE SCIPlpReset (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
SCIP_RETCODE SCIPlpAddCol (SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
 
SCIP_RETCODE SCIPlpAddRow (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_ROW *row, int depth)
 
static void checkLazyColArray (SCIP_LP *lp, SCIP_SET *set)
 
SCIP_RETCODE SCIPlpShrinkCols (SCIP_LP *lp, SCIP_SET *set, int newncols)
 
SCIP_RETCODE SCIPlpShrinkRows (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int newnrows)
 
SCIP_RETCODE SCIPlpClear (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
void SCIPlpMarkSize (SCIP_LP *lp)
 
void SCIPlpSetSizeMark (SCIP_LP *lp, int nrows, int ncols)
 
SCIP_RETCODE SCIPlpGetBasisInd (SCIP_LP *lp, int *basisind)
 
SCIP_RETCODE SCIPlpGetBase (SCIP_LP *lp, int *cstat, int *rstat)
 
SCIP_RETCODE SCIPlpGetBInvRow (SCIP_LP *lp, int r, SCIP_Real *coef, int *inds, int *ninds)
 
SCIP_RETCODE SCIPlpGetBInvCol (SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
 
SCIP_RETCODE SCIPlpGetBInvARow (SCIP_LP *lp, int r, SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
 
SCIP_RETCODE SCIPlpGetBInvACol (SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
 
SCIP_RETCODE SCIPlpSumRows (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
 
SCIP_RETCODE SCIPlpGetState (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
 
SCIP_RETCODE SCIPlpSetState (SCIP_LP *lp, 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 SCIPlpFreeState (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
 
SCIP_RETCODE SCIPlpGetNorms (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
 
SCIP_RETCODE SCIPlpSetNorms (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms)
 
SCIP_RETCODE SCIPlpFreeNorms (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
 
SCIP_Real SCIPlpGetCutoffbound (SCIP_LP *lp)
 
SCIP_RETCODE SCIPlpSetCutoffbound (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
 
SCIP_Real SCIPlpGetFeastol (SCIP_LP *lp)
 
void SCIPlpSetFeastol (SCIP_LP *lp, SCIP_SET *set, SCIP_Real newfeastol)
 
void SCIPlpResetFeastol (SCIP_LP *lp, SCIP_SET *set)
 
static const char * lpalgoName (SCIP_LPALGO lpalgo)
 
static SCIP_RETCODE lpPrimalSimplex (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool instable, SCIP_Bool *lperror)
 
static SCIP_RETCODE lpDualSimplex (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool instable, SCIP_Bool *lperror)
 
static SCIP_RETCODE lpLexDualSimplex (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool *lperror)
 
static SCIP_RETCODE lpBarrier (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool crossover, SCIP_Bool keepsol, SCIP_Bool *lperror)
 
static SCIP_RETCODE lpAlgorithm (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPALGO lpalgo, SCIP_Bool resolve, SCIP_Bool keepsol, SCIP_Bool instable, SCIP_Bool *timelimit, SCIP_Bool *lperror)
 
static void lpNumericalTroubleMessage (SCIP_MESSAGEHDLR *messagehdlr, SCIP_SET *set, SCIP_STAT *stat, SCIP_VERBLEVEL verblevel, const char *formatstr,...)
 
static SCIP_RETCODE ignoreInstability (SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_LPALGO lpalgo, SCIP_Bool *success)
 
static SCIP_RETCODE lpSolveStable (SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LPALGO lpalgo, int itlim, int harditlim, SCIP_Bool resolve, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, SCIP_Bool keepsol, SCIP_Bool *timelimit, SCIP_Bool *lperror)
 
static void adjustLPobjval (SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
 
static SCIP_RETCODE lpSolve (SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LPALGO lpalgo, int resolveitlim, int harditlim, SCIP_Bool needprimalray, SCIP_Bool needdualray, SCIP_Bool resolve, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, SCIP_Bool keepsol, SCIP_Bool *lperror)
 
static SCIP_RETCODE lpFlushAndSolve (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, int resolveitlim, int harditlim, SCIP_Bool needprimalray, SCIP_Bool needdualray, int fastmip, SCIP_Bool tightprimfeastol, SCIP_Bool tightdualfeastol, SCIP_Bool fromscratch, SCIP_Bool keepsol, SCIP_Bool *lperror)
 
static void checkLazyBounds (SCIP_LP *lp, SCIP_SET *set)
 
static SCIP_RETCODE updateLazyBounds (SCIP_LP *lp, SCIP_SET *set)
 
static int lpGetResolveItlim (SCIP_SET *set, SCIP_STAT *stat, int itlim)
 
SCIP_RETCODE SCIPlpSolveAndEval (SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool limitresolveiters, SCIP_Bool aging, SCIP_Bool keepsol, SCIP_Bool *lperror)
 
SCIP_LPSOLSTAT SCIPlpGetSolstat (SCIP_LP *lp)
 
SCIP_Real SCIPlpGetObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
SCIP_Real SCIPlpGetColumnObjval (SCIP_LP *lp)
 
SCIP_Real SCIPlpGetLooseObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
void SCIPlpStoreRootObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
void SCIPlpInvalidateRootObjval (SCIP_LP *lp)
 
void SCIPlpRecomputeLocalAndGlobalPseudoObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
SCIP_Real SCIPlpGetGlobalPseudoObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
SCIP_Real SCIPlpGetPseudoObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
 
SCIP_Real SCIPlpGetModifiedPseudoObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
 
SCIP_Real SCIPlpGetModifiedProvedPseudoObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
 
static void getObjvalDeltaObj (SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj, SCIP_Real lb, SCIP_Real ub, SCIP_Real *deltaval, int *deltainf)
 
static void getObjvalDeltaLb (SCIP_SET *set, SCIP_Real obj, SCIP_Real oldlb, SCIP_Real newlb, SCIP_Real *deltaval, int *deltainf)
 
static void getObjvalDeltaUb (SCIP_SET *set, SCIP_Real obj, SCIP_Real oldub, SCIP_Real newub, SCIP_Real *deltaval, int *deltainf)
 
static void lpUpdateObjval (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real deltaval, int deltainf, SCIP_Bool local, SCIP_Bool loose, SCIP_Bool global)
 
static SCIP_RETCODE lpUpdateVarProved (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real oldlb, SCIP_Real oldub, SCIP_Real newobj, SCIP_Real newlb, SCIP_Real newub)
 
SCIP_RETCODE SCIPlpUpdateVarObj (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
 
SCIP_RETCODE SCIPlpUpdateVarLbGlobal (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
 
SCIP_RETCODE SCIPlpUpdateVarLb (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
 
SCIP_RETCODE SCIPlpUpdateVarUbGlobal (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
 
SCIP_RETCODE SCIPlpUpdateVarUb (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
 
SCIP_RETCODE SCIPlpUpdateAddVar (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPlpUpdateDelVar (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
static SCIP_RETCODE lpUpdateVarColumn (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
static SCIP_RETCODE lpUpdateVarColumnProved (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPlpUpdateVarColumn (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
static SCIP_RETCODE lpUpdateVarLoose (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
static SCIP_RETCODE lpUpdateVarLooseProved (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
SCIP_RETCODE SCIPlpUpdateVarLoose (SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
 
void SCIPlpDecNLoosevars (SCIP_LP *lp)
 
SCIP_RETCODE SCIPlpGetSol (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
 
SCIP_RETCODE SCIPlpGetUnboundedSol (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
 
SCIP_RETCODE SCIPlpGetPrimalRay (SCIP_LP *lp, SCIP_SET *set, SCIP_Real *ray)
 
SCIP_RETCODE SCIPlpGetDualfarkas (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *valid)
 
SCIP_RETCODE SCIPlpGetIterations (SCIP_LP *lp, int *iterations)
 
SCIP_RETCODE SCIPlpUpdateAges (SCIP_LP *lp, SCIP_STAT *stat)
 
static SCIP_RETCODE lpDelColset (SCIP_LP *lp, SCIP_SET *set, int *coldstat)
 
static SCIP_RETCODE lpDelRowset (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int *rowdstat)
 
static SCIP_RETCODE lpRemoveObsoleteCols (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, int firstcol)
 
static SCIP_RETCODE lpRemoveObsoleteRows (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int firstrow)
 
SCIP_RETCODE SCIPlpRemoveNewObsoletes (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
SCIP_RETCODE SCIPlpRemoveAllObsoletes (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
static SCIP_RETCODE lpCleanupCols (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, int firstcol)
 
static SCIP_RETCODE lpCleanupRows (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int firstrow)
 
SCIP_RETCODE SCIPlpCleanupNew (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
 
SCIP_RETCODE SCIPlpCleanupAll (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
 
SCIP_RETCODE SCIPlpRemoveRedundantRows (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
 
SCIP_RETCODE SCIPlpStartDive (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
 
SCIP_RETCODE SCIPlpEndDive (SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_VAR **vars, int nvars)
 
SCIP_RETCODE SCIPlpRecordOldRowSideDive (SCIP_LP *lp, SCIP_ROW *row, SCIP_SIDETYPE sidetype)
 
SCIP_RETCODE SCIPlpStartProbing (SCIP_LP *lp)
 
SCIP_RETCODE SCIPlpEndProbing (SCIP_LP *lp)
 
void SCIPlpStartStrongbranchProbing (SCIP_LP *lp)
 
void SCIPlpEndStrongbranchProbing (SCIP_LP *lp)
 
static SCIP_RETCODE provedBound (SCIP_LP *lp, SCIP_SET *set, SCIP_Bool usefarkas, SCIP_Real *bound)
 
SCIP_RETCODE SCIPlpGetProvedLowerbound (SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)
 
SCIP_RETCODE SCIPlpIsInfeasibilityProved (SCIP_LP *lp, SCIP_SET *set, SCIP_Bool *proved)
 
SCIP_RETCODE SCIPlpWrite (SCIP_LP *lp, const char *fname)
 
SCIP_RETCODE SCIPlpWriteMip (SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *fname, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_Bool lazyconss)
 
SCIP_Real SCIPcolGetObj (SCIP_COL *col)
 
SCIP_Real SCIPcolGetLb (SCIP_COL *col)
 
SCIP_Real SCIPcolGetUb (SCIP_COL *col)
 
SCIP_Real SCIPcolGetBestBound (SCIP_COL *col)
 
SCIP_Real SCIPcolGetPrimsol (SCIP_COL *col)
 
SCIP_Real SCIPcolGetMinPrimsol (SCIP_COL *col)
 
SCIP_Real SCIPcolGetMaxPrimsol (SCIP_COL *col)
 
SCIP_BASESTAT SCIPcolGetBasisStatus (SCIP_COL *col)
 
SCIP_VARSCIPcolGetVar (SCIP_COL *col)
 
int SCIPcolGetIndex (SCIP_COL *col)
 
int SCIPcolGetVarProbindex (SCIP_COL *col)
 
SCIP_Bool SCIPcolIsIntegral (SCIP_COL *col)
 
SCIP_Bool SCIPcolIsRemovable (SCIP_COL *col)
 
int SCIPcolGetLPPos (SCIP_COL *col)
 
int SCIPcolGetLPDepth (SCIP_COL *col)
 
SCIP_Bool SCIPcolIsInLP (SCIP_COL *col)
 
int SCIPcolGetNNonz (SCIP_COL *col)
 
int SCIPcolGetNLPNonz (SCIP_COL *col)
 
SCIP_ROW ** SCIPcolGetRows (SCIP_COL *col)
 
SCIP_RealSCIPcolGetVals (SCIP_COL *col)
 
SCIP_Longint SCIPcolGetStrongbranchNode (SCIP_COL *col)
 
int SCIPcolGetNStrongbranchs (SCIP_COL *col)
 
int SCIPcolGetAge (SCIP_COL *col)
 
SCIP_BOUNDTYPE SCIPboundtypeOpposite (SCIP_BOUNDTYPE boundtype)
 
int SCIProwGetNNonz (SCIP_ROW *row)
 
int SCIProwGetNLPNonz (SCIP_ROW *row)
 
SCIP_COL ** SCIProwGetCols (SCIP_ROW *row)
 
SCIP_RealSCIProwGetVals (SCIP_ROW *row)
 
SCIP_Real SCIProwGetConstant (SCIP_ROW *row)
 
SCIP_Real SCIProwGetNorm (SCIP_ROW *row)
 
SCIP_Real SCIProwGetSumNorm (SCIP_ROW *row)
 
SCIP_Real SCIProwGetLhs (SCIP_ROW *row)
 
SCIP_Real SCIProwGetRhs (SCIP_ROW *row)
 
SCIP_Real SCIProwGetDualsol (SCIP_ROW *row)
 
SCIP_Real SCIProwGetDualfarkas (SCIP_ROW *row)
 
SCIP_BASESTAT SCIProwGetBasisStatus (SCIP_ROW *row)
 
const char * SCIProwGetName (SCIP_ROW *row)
 
int SCIProwGetIndex (SCIP_ROW *row)
 
int SCIProwGetAge (SCIP_ROW *row)
 
int SCIProwGetRank (SCIP_ROW *row)
 
SCIP_Bool SCIProwIsIntegral (SCIP_ROW *row)
 
SCIP_Bool SCIProwIsLocal (SCIP_ROW *row)
 
SCIP_Bool SCIProwIsModifiable (SCIP_ROW *row)
 
SCIP_Bool SCIProwIsRemovable (SCIP_ROW *row)
 
SCIP_ROWORIGINTYPE SCIProwGetOrigintype (SCIP_ROW *row)
 
SCIP_CONSSCIProwGetOriginCons (SCIP_ROW *row)
 
SCIP_CONSHDLRSCIProwGetOriginConshdlr (SCIP_ROW *row)
 
SCIP_SEPASCIProwGetOriginSepa (SCIP_ROW *row)
 
SCIP_Bool SCIProwIsInGlobalCutpool (SCIP_ROW *row)
 
int SCIProwGetLPPos (SCIP_ROW *row)
 
int SCIProwGetLPDepth (SCIP_ROW *row)
 
SCIP_Bool SCIProwIsInLP (SCIP_ROW *row)
 
void SCIProwChgRank (SCIP_ROW *row, int rank)
 
SCIP_Longint SCIProwGetActiveLPCount (SCIP_ROW *row)
 
SCIP_Longint SCIProwGetNLPsAfterCreation (SCIP_ROW *row)
 
SCIP_COL ** SCIPlpGetCols (SCIP_LP *lp)
 
int SCIPlpGetNCols (SCIP_LP *lp)
 
SCIP_ROW ** SCIPlpGetRows (SCIP_LP *lp)
 
int SCIPlpGetNRows (SCIP_LP *lp)
 
SCIP_COL ** SCIPlpGetNewcols (SCIP_LP *lp)
 
int SCIPlpGetNNewcols (SCIP_LP *lp)
 
SCIP_ROW ** SCIPlpGetNewrows (SCIP_LP *lp)
 
int SCIPlpGetNNewrows (SCIP_LP *lp)
 
void SCIPlpRecalculateObjSqrNorm (SCIP_SET *set, SCIP_LP *lp)
 
SCIP_Real SCIPlpGetObjNorm (SCIP_LP *lp)
 
void SCIPlpSetRootLPIsRelax (SCIP_LP *lp, SCIP_Bool isrelax)
 
SCIP_Bool SCIPlpIsRootLPRelax (SCIP_LP *lp)
 
SCIP_Real SCIPlpGetRootObjval (SCIP_LP *lp)
 
SCIP_Real SCIPlpGetRootColumnObjval (SCIP_LP *lp)
 
SCIP_Real SCIPlpGetRootLooseObjval (SCIP_LP *lp)
 
SCIP_LPISCIPlpGetLPI (SCIP_LP *lp)
 
void SCIPlpSetIsRelax (SCIP_LP *lp, SCIP_Bool relax)
 
SCIP_Bool SCIPlpIsRelax (SCIP_LP *lp)
 
SCIP_Bool SCIPlpIsSolved (SCIP_LP *lp)
 
SCIP_Bool SCIPlpIsPrimalReliable (SCIP_LP *lp)
 
SCIP_Bool SCIPlpIsDualReliable (SCIP_LP *lp)
 
SCIP_Bool SCIPlpIsSolBasic (SCIP_LP *lp)
 
SCIP_Bool SCIPlpDiving (SCIP_LP *lp)
 
SCIP_Bool SCIPlpDivingObjChanged (SCIP_LP *lp)
 
void SCIPlpMarkDivingObjChanged (SCIP_LP *lp)
 
void SCIPlpUnmarkDivingObjChanged (SCIP_LP *lp)
 
SCIP_Bool SCIPlpDivingRowsChanged (SCIP_LP *lp)
 
static SCIP_RETCODE computeRelIntPoint (SCIP_LPI *lpi, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)
 
SCIP_RETCODE SCIPlpComputeRelIntPoint (SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)
 
SCIP_RETCODE SCIPlpGetDegeneracy (SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *degeneracy, SCIP_Real *varconsratio)
 

Variables

static const SCIP_Real scalars [] = {3.0, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0}
 
static const int nscalars = 9
 

Macro Definition Documentation

◆ debugRowPrint

#define debugRowPrint (   x,
  y 
)

Definition at line 112 of file lp.c.

Referenced by lpFlushAddRows(), and rowScale().

◆ debugColPrint

#define debugColPrint (   x,
  y 
)

Definition at line 145 of file lp.c.

Referenced by lpFlushAddCols().

◆ checkRow

#define checkRow (   row)

Definition at line 681 of file lp.c.

Referenced by rowSortNonLP(), and SCIProwEnsureSize().

◆ checkRowSqrnorm

#define checkRowSqrnorm (   row)

Definition at line 754 of file lp.c.

Referenced by SCIProwGetNorm(), and SCIProwGetObjParallelism().

◆ checkRowSumnorm

#define checkRowSumnorm (   row)

Definition at line 755 of file lp.c.

Referenced by SCIProwGetSumNorm().

◆ checkRowObjprod

#define checkRowObjprod (   row)

Definition at line 756 of file lp.c.

Referenced by SCIProwGetObjParallelism().

◆ checkLinks

◆ 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 2636 of file lp.c.

Referenced by lpSetObjlim(), lpSolve(), SCIPlpFlush(), SCIPlpSetCutoffbound(), and SCIPlpSolveAndEval().

◆ DIVESTACKINITSIZE

#define DIVESTACKINITSIZE   100

Definition at line 9062 of file lp.c.

Referenced by SCIPlpCreate().

◆ 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 11457 of file lp.c.

Referenced by lpNumericalTroubleMessage().

◆ FEASTOLTIGHTFAC

#define FEASTOLTIGHTFAC   0.001

Definition at line 11545 of file lp.c.

Referenced by lpSolveStable().

◆ DIVESTACKGROWFACT

#define DIVESTACKGROWFACT   1.5

Definition at line 16158 of file lp.c.

Referenced by SCIPlpRecordOldRowSideDive().

Function Documentation

◆ ensureChgcolsSize()

static SCIP_RETCODE ensureChgcolsSize ( SCIP_LP 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 154 of file lp.c.

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

Referenced by insertColChgcols().

◆ ensureChgrowsSize()

static SCIP_RETCODE ensureChgrowsSize ( SCIP_LP lp,
SCIP_SET set,
int  num 
)
static

ensures, that chgrows array can store at least num entries

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

Definition at line 177 of file lp.c.

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

Referenced by rowSideChanged().

◆ ensureLpicolsSize()

static SCIP_RETCODE ensureLpicolsSize ( SCIP_LP 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 200 of file lp.c.

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

Referenced by lpFlushAddCols().

◆ ensureLpirowsSize()

static SCIP_RETCODE ensureLpirowsSize ( SCIP_LP 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 223 of file lp.c.

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

Referenced by lpFlushAddRows().

◆ ensureColsSize()

static SCIP_RETCODE ensureColsSize ( SCIP_LP 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 246 of file lp.c.

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

Referenced by SCIPlpAddCol().

◆ ensureSoldirectionSize()

static SCIP_RETCODE ensureSoldirectionSize ( SCIP_LP lp,
int  num 
)
static

ensures, that soldirection array can store at least num entries

Parameters
lpcurrent LP data
numminimum number of entries to store

Definition at line 269 of file lp.c.

References BMSallocMemoryArray, BMSfreeMemoryArrayNull, SCIP_ALLOC, SCIP_OKAY, SCIP_Lp::soldirection, and SCIP_Lp::soldirectionsize.

Referenced by SCIProwGetLPSolCutoffDistance().

◆ ensureLazycolsSize()

static SCIP_RETCODE ensureLazycolsSize ( SCIP_LP lp,
SCIP_SET set,
int  num 
)
static

ensures, that lazy cols array can store at least num entries

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

Definition at line 289 of file lp.c.

References BMSreallocMemoryArray, SCIP_Lp::lazycols, SCIP_Lp::lazycolssize, SCIP_Lp::nlazycols, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

Referenced by SCIPlpAddCol().

◆ ensureRowsSize()

static SCIP_RETCODE ensureRowsSize ( SCIP_LP lp,
SCIP_SET set,
int  num 
)
static

ensures, that rows array can store at least num entries

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

Definition at line 312 of file lp.c.

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

Referenced by SCIPlpAddRow().

◆ colEnsureSize()

static SCIP_RETCODE colEnsureSize ( SCIP_COL 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 335 of file lp.c.

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

Referenced by colAddCoef().

◆ lpStoreSolVals()

◆ lpRestoreSolVals()

◆ colStoreSolVals()

static SCIP_RETCODE colStoreSolVals ( SCIP_COL col,
BMS_BLKMEM blkmem 
)
static

save current LP solution values stored in each column

Parameters
colLP column
blkmemblock memory

Definition at line 456 of file lp.c.

References SCIP_ColSolVals::basisstatus, SCIP_Col::basisstatus, BMSallocBlockMemory, NULL, SCIP_ColSolVals::primsol, SCIP_Col::primsol, SCIP_ColSolVals::redcost, SCIP_Col::redcost, SCIP_ALLOC, SCIP_OKAY, and SCIP_Col::storedsolvals.

Referenced by SCIPlpStartDive().

◆ colRestoreSolVals()

static SCIP_RETCODE colRestoreSolVals ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_Longint  validlp,
SCIP_Bool  freebuffer 
)
static

restore LP solution values in column

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

Definition at line 483 of file lp.c.

References SCIP_ColSolVals::basisstatus, SCIP_Col::basisstatus, BMSfreeBlockMemoryNull, NULL, SCIP_ColSolVals::primsol, SCIP_Col::primsol, SCIP_ColSolVals::redcost, SCIP_Col::redcost, SCIP_BASESTAT_ZERO, SCIP_OKAY, SCIP_Col::storedsolvals, SCIP_Col::validfarkaslp, and SCIP_Col::validredcostlp.

Referenced by SCIPlpEndDive().

◆ rowStoreSolVals()

static SCIP_RETCODE rowStoreSolVals ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_Bool  infeasible 
)
static

save current LP solution values stored in each column

Parameters
rowLP row
blkmemblock memory
infeasibleis the solution infeasible?

Definition at line 530 of file lp.c.

References SCIP_RowSolVals::activity, SCIP_Row::activity, SCIP_RowSolVals::basisstatus, SCIP_Row::basisstatus, BMSallocBlockMemory, SCIP_Row::dualfarkas, SCIP_RowSolVals::dualsol, SCIP_Row::dualsol, NULL, SCIP_ALLOC, SCIP_BASESTAT_BASIC, SCIP_INVALID, SCIP_OKAY, and SCIP_Row::storedsolvals.

Referenced by SCIPlpStartDive().

◆ rowRestoreSolVals()

static SCIP_RETCODE rowRestoreSolVals ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_Longint  validlp,
SCIP_Bool  freebuffer,
SCIP_Bool  infeasible 
)
static

restore LP solution values in row

Parameters
rowLP 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 567 of file lp.c.

References SCIP_RowSolVals::activity, SCIP_Row::activity, SCIP_RowSolVals::basisstatus, SCIP_Row::basisstatus, BMSfreeBlockMemoryNull, SCIP_Row::dualfarkas, SCIP_RowSolVals::dualsol, SCIP_Row::dualsol, NULL, SCIP_BASESTAT_BASIC, SCIP_INVALID, SCIP_OKAY, SCIP_Row::storedsolvals, and SCIP_Row::validactivitylp.

Referenced by SCIPlpEndDive().

◆ SCIProwEnsureSize()

SCIP_RETCODE SCIProwEnsureSize ( SCIP_ROW 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 615 of file lp.c.

References BMSreallocBlockMemoryArray, checkRow, SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::index, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Row::size, TRUE, and SCIP_Row::vals.

Referenced by rowAddCoef(), SCIPaddVarsToRow(), and SCIPaddVarsToRowSameCoef().

◆ recomputeLooseObjectiveValue()

static void recomputeLooseObjectiveValue ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)
static

◆ recomputePseudoObjectiveValue()

static void recomputePseudoObjectiveValue ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)
static

◆ recomputeGlbPseudoObjectiveValue()

static void recomputeGlbPseudoObjectiveValue ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)
static

◆ getFiniteLooseObjval()

static SCIP_Real getFiniteLooseObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)
static

gets finite part of objective value of current LP that results from LOOSE variables only

Parameters
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 891 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, NULL, and recomputeLooseObjectiveValue().

Referenced by computeRelIntPoint(), lpSolve(), lpSolveStable(), SCIPcolGetStrongbranch(), SCIPcolGetStrongbranches(), SCIPlpGetLooseObjval(), and SCIPlpSolveAndEval().

◆ getFinitePseudoObjval()

static SCIP_Real getFinitePseudoObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)
static

gets finite part of pseudo objective value of current LP

Parameters
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 913 of file lp.c.

References NULL, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, and recomputePseudoObjectiveValue().

Referenced by SCIPlpGetModifiedPseudoObjval().

◆ colSortLP()

static void colSortLP ( SCIP_COL 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 955 of file lp.c.

References SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::lprowssorted, SCIP_Col::nlprows, NULL, SCIP_Col::rows, SCIPsortPtrRealInt(), TRUE, and SCIP_Col::vals.

Referenced by colSearchCoef(), and SCIPcolSort().

◆ colSortNonLP()

static void colSortNonLP ( SCIP_COL 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 988 of file lp.c.

References SCIP_Row::cols, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, NULL, SCIP_Col::rows, SCIPsortPtrRealInt(), TRUE, and SCIP_Col::vals.

Referenced by colSearchCoef(), and SCIPcolSort().

◆ rowSortLP()

static void rowSortLP ( SCIP_ROW 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 1019 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Row::nlpcols, NULL, SCIP_Col::rows, SCIPsortIntPtrIntReal(), TRUE, and SCIP_Row::vals.

Referenced by computeRelIntPoint(), rowSearchCoef(), and SCIProwSort().

◆ rowSortNonLP()

static void rowSortNonLP ( SCIP_ROW 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 1052 of file lp.c.

References checkRow, SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, SCIP_Col::rows, SCIPsortIntPtrIntReal(), TRUE, and SCIP_Row::vals.

Referenced by rowSearchCoef(), and SCIProwSort().

◆ colSearchCoefPart()

static int colSearchCoefPart ( SCIP_COL col,
const SCIP_ROW 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 1087 of file lp.c.

References SCIP_Row::index, SCIP_Col::linkpos, SCIP_Row::lppos, NULL, and SCIP_Col::rows.

Referenced by colSearchCoef().

◆ colSearchCoef()

static int colSearchCoef ( SCIP_COL col,
const SCIP_ROW 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 1123 of file lp.c.

References colSearchCoefPart(), colSortLP(), colSortNonLP(), SCIP_Col::len, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, NULL, and SCIP_Col::nunlinked.

Referenced by SCIPcolChgCoef(), SCIPcolDelCoef(), and SCIPcolIncCoef().

◆ rowSearchCoefPart()

static int rowSearchCoefPart ( SCIP_ROW row,
const SCIP_COL 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 1162 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Col::lppos, and NULL.

Referenced by rowSearchCoef().

◆ rowSearchCoef()

static int rowSearchCoef ( SCIP_ROW row,
const SCIP_COL 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 1201 of file lp.c.

References SCIP_Row::cols, SCIP_Row::delaysort, SCIP_Row::len, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, SCIP_Row::nunlinked, rowSearchCoefPart(), rowSortLP(), and rowSortNonLP().

Referenced by SCIProwChgCoef(), SCIProwDelCoef(), and SCIProwIncCoef().

◆ colMoveCoef()

static void colMoveCoef ( SCIP_COL 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 1254 of file lp.c.

References SCIP_Row::cols, FALSE, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nonlprowssorted, NULL, SCIP_Col::rows, and SCIP_Col::vals.

Referenced by colAddCoef(), and colDelCoefPos().

◆ colSwapCoefs()

static void colSwapCoefs ( SCIP_COL col,
int  pos1,
int  pos2 
)
static

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

Parameters
colLP column
pos1position of first coefficient
pos2position of second coefficient

Definition at line 1290 of file lp.c.

References SCIP_Row::cols, FALSE, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nonlprowssorted, NULL, SCIP_Col::rows, SCIP_Real, and SCIP_Col::vals.

Referenced by rowAddCoef(), rowUpdateAddLP(), and rowUpdateDelLP().

◆ rowMoveCoef()

static void rowMoveCoef ( SCIP_ROW 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 1350 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nonlpcolssorted, NULL, SCIP_Col::rows, and SCIP_Row::vals.

Referenced by rowAddCoef(), and rowDelCoefPos().

◆ rowSwapCoefs()

static void rowSwapCoefs ( SCIP_ROW row,
int  pos1,
int  pos2 
)
static

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

Parameters
rowLP row
pos1position of first coefficient
pos2position of second coefficient

Definition at line 1387 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::index, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nonlpcolssorted, NULL, SCIP_Col::rows, SCIP_Real, and SCIP_Row::vals.

Referenced by colAddCoef(), colUpdateAddLP(), and colUpdateDelLP().

◆ rowEventCoefChanged()

static SCIP_RETCODE rowEventCoefChanged ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_COL col,
SCIP_Real  oldval,
SCIP_Real  newval 
)
static

issues a ROWCOEFCHANGED event on the given row

Parameters
rowrow which coefficient has changed
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
colthe column which coefficient has changed
oldvalold value of the coefficient
newvalnew value of the coefficient

Definition at line 1452 of file lp.c.

References SCIP_Row::eventfilter, SCIP_EventFilter::eventmask, SCIP_EventFilter::len, NULL, SCIP_CALL, SCIP_EVENTTYPE_ROWCOEFCHANGED, SCIP_OKAY, SCIPeventCreateRowCoefChanged(), and SCIPeventqueueAdd().

Referenced by rowAddCoef(), rowChgCoefPos(), and rowDelCoefPos().

◆ rowEventConstantChanged()

static SCIP_RETCODE rowEventConstantChanged ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_Real  oldval,
SCIP_Real  newval 
)
static

issues a ROWCONSTCHANGED event on the given row

Parameters
rowrow which coefficient has changed
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
oldvalold value of the constant
newvalnew value of the constant

Definition at line 1482 of file lp.c.

References SCIP_Row::eventfilter, SCIP_EventFilter::eventmask, SCIP_EventFilter::len, NULL, SCIP_CALL, SCIP_EVENTTYPE_ROWCONSTCHANGED, SCIP_OKAY, SCIPeventCreateRowConstChanged(), and SCIPeventqueueAdd().

Referenced by SCIProwChgConstant().

◆ rowEventSideChanged()

static SCIP_RETCODE rowEventSideChanged ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_SIDETYPE  side,
SCIP_Real  oldval,
SCIP_Real  newval 
)
static

◆ coefChanged()

◆ rowAddCoef()

◆ colAddCoef()

static SCIP_RETCODE colAddCoef ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_ROW row,
SCIP_Real  val,
int  linkpos 
)
static

adds a previously non existing coefficient to an LP column

Parameters
colLP column
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
rowLP row
valvalue of coefficient
linkposposition of column in the row's col array, or -1

Definition at line 1684 of file lp.c.

References coefChanged(), colEnsureSize(), colMoveCoef(), SCIP_Row::cols, FALSE, SCIP_Row::index, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Row::name, SCIP_Row::nlpcols, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, NULL, SCIP_Col::nunlinked, SCIP_Row::nunlinked, rowAddCoef(), SCIP_Col::rows, rowSwapCoefs(), SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIPvarGetName(), SCIP_Col::vals, and SCIP_Col::var.

Referenced by rowAddCoef(), rowLink(), SCIPcolAddCoef(), SCIPcolChgCoef(), and SCIPcolIncCoef().

◆ colDelCoefPos()

static SCIP_RETCODE colDelCoefPos ( SCIP_COL col,
SCIP_SET set,
SCIP_LP lp,
int  pos 
)
static

deletes coefficient at given position from column

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

Definition at line 1805 of file lp.c.

References coefChanged(), colMoveCoef(), SCIP_Row::cols, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, NULL, SCIP_Col::nunlinked, SCIP_Col::rows, SCIP_OKAY, and SCIP_Col::var.

Referenced by colChgCoefPos(), rowUnlink(), SCIPcolDelCoef(), and SCIProwDelCoef().

◆ colChgCoefPos()

static SCIP_RETCODE colChgCoefPos ( SCIP_COL col,
SCIP_SET set,
SCIP_LP lp,
int  pos,
SCIP_Real  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 1850 of file lp.c.

References coefChanged(), colDelCoefPos(), SCIP_Row::cols, SCIP_Col::linkpos, NULL, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIP_Col::vals, and SCIP_Col::var.

Referenced by rowScale(), SCIPcolChgCoef(), SCIPcolIncCoef(), SCIProwChgCoef(), and SCIProwIncCoef().

◆ rowAddNorms()

static void rowAddNorms ( SCIP_ROW row,
SCIP_SET set,
SCIP_COL col,
SCIP_Real  val,
SCIP_Bool  updateidxvals 
)
static

update row norms after addition of coefficient

Parameters
rowLP row
setglobal SCIP settings
colcolumn of added coefficient
valvalue of added coefficient
updateidxvalsupdate min/max idx and min/max val?

Definition at line 1894 of file lp.c.

References SCIP_Col::index, SCIP_Col::lppos, MAX, SCIP_Row::maxidx, SCIP_Row::maxval, SCIP_Row::minidx, SCIP_Row::minval, NULL, SCIP_Row::nummaxval, SCIP_Row::numminval, SCIP_Row::objprod, REALABS, SCIP_Real, SCIPsetIsGE(), SCIPsetIsGT(), SCIPsetIsLE(), SCIPsetIsLT(), SCIPsetIsZero(), SCIP_Row::sqrnorm, SCIP_Row::sumnorm, and SCIP_Col::unchangedobj.

Referenced by colUpdateAddLP(), rowAddCoef(), rowCalcNorms(), and rowChgCoefPos().

◆ rowDelNorms()

static void rowDelNorms ( SCIP_ROW row,
SCIP_SET set,
SCIP_COL col,
SCIP_Real  val,
SCIP_Bool  forcenormupdate,
SCIP_Bool  updateindex,
SCIP_Bool  updateval 
)
static

update row norms after deletion of coefficient

Parameters
rowLP row
setglobal SCIP settings
colcolumn of deleted coefficient
valvalue of deleted coefficient
forcenormupdateshould the norms be updated even if lppos of column is -1?
updateindexshould the minimal/maximal column index of row be updated?
updatevalshould the minimal/maximal value of row be updated?

Definition at line 1971 of file lp.c.

References FALSE, SCIP_Col::index, SCIP_Col::lppos, MAX, SCIP_Row::maxidx, SCIP_Row::maxval, SCIP_Row::minidx, SCIP_Row::minval, NULL, SCIP_Row::nummaxval, SCIP_Row::numminval, SCIP_Row::objprod, REALABS, SCIP_Real, SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsZero(), SCIP_Row::sqrnorm, SCIP_Row::sumnorm, SCIP_Col::unchangedobj, and SCIP_Row::validminmaxidx.

Referenced by colUpdateDelLP(), rowChgCoefPos(), and rowDelCoefPos().

◆ rowDelCoefPos()

static SCIP_RETCODE rowDelCoefPos ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
int  pos 
)
static

deletes coefficient at given position from row

Parameters
rowrow to be changed
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
posposition in row vector to delete

Definition at line 2170 of file lp.c.

References coefChanged(), SCIP_Row::cols, FALSE, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::name, SCIP_Row::nlocks, SCIP_Row::nlpcols, NULL, SCIP_Row::nunlinked, rowDelNorms(), rowEventCoefChanged(), rowMoveCoef(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, TRUE, and SCIP_Row::vals.

Referenced by colUnlink(), rowChgCoefPos(), SCIPcolDelCoef(), and SCIProwDelCoef().

◆ rowChgCoefPos()

static SCIP_RETCODE rowChgCoefPos ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
int  pos,
SCIP_Real  val 
)
static

changes a coefficient at given position of an LP row

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
posposition in row vector to change
valvalue of coefficient

Definition at line 2230 of file lp.c.

References coefChanged(), SCIP_Row::cols, FALSE, SCIP_Row::integral, SCIP_Row::name, SCIP_Row::nlocks, NULL, rowAddNorms(), rowDelCoefPos(), rowDelNorms(), rowEventCoefChanged(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPcolIsIntegral(), SCIPerrorMessage, SCIPsetIsEQ(), SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), TRUE, and SCIP_Row::vals.

Referenced by rowScale(), SCIPcolChgCoef(), SCIPcolIncCoef(), SCIProwChgCoef(), and SCIProwIncCoef().

◆ rowSideChanged()

static SCIP_RETCODE rowSideChanged ( SCIP_ROW row,
SCIP_SET set,
SCIP_LP lp,
SCIP_SIDETYPE  sidetype 
)
static

notifies LP row, that its sides were changed

Parameters
rowLP row
setglobal SCIP settings
lpcurrent LP data
sidetypetype of side: left or right hand side

Definition at line 2286 of file lp.c.

References SCIP_Lp::chgrows, ensureChgrowsSize(), FALSE, SCIP_Lp::flushed, SCIP_Row::lhschanged, SCIP_Row::lpipos, SCIP_Lp::nchgrows, NULL, SCIP_Row::rhschanged, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPABORT, SCIPerrorMessage, and TRUE.

Referenced by SCIProwChgConstant(), SCIProwChgLhs(), and SCIProwChgRhs().

◆ colLink()

static SCIP_RETCODE colLink ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)
static

insert column coefficients in corresponding rows

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

Definition at line 2339 of file lp.c.

References checkLinks, SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::nlprows, NULL, SCIP_Col::nunlinked, rowAddCoef(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsZero(), SCIPvarGetName(), SCIP_Col::vals, and SCIP_Col::var.

Referenced by lpFlushAddCols().

◆ colUnlink()

static SCIP_RETCODE colUnlink ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)
static

removes column coefficients from corresponding rows

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

Definition at line 2383 of file lp.c.

References checkLinks, SCIP_Row::cols, SCIP_Col::len, SCIP_Col::linkpos, NULL, SCIP_Col::nunlinked, rowDelCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPvarGetName(), and SCIP_Col::var.

Referenced by SCIPcolFree().

◆ rowLink()

static SCIP_RETCODE rowLink ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)
static

insert row coefficients in corresponding columns

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

Definition at line 2422 of file lp.c.

References checkLinks, colAddCoef(), SCIP_Row::cols, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::name, SCIP_Row::nlpcols, NULL, SCIP_Row::nunlinked, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetDebugMsg, SCIPsetIsZero(), and SCIP_Row::vals.

Referenced by lpFlushAddRows().

◆ rowUnlink()

static SCIP_RETCODE rowUnlink ( SCIP_ROW row,
SCIP_SET set,
SCIP_LP lp 
)
static

removes row coefficients from corresponding columns

Parameters
rowrow data
setglobal SCIP settings
lpcurrent LP data

Definition at line 2465 of file lp.c.

References colDelCoefPos(), SCIP_Row::cols, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::name, NULL, SCIP_Row::nunlinked, SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.

Referenced by SCIProwFree().

◆ lpSetIntpar()

static SCIP_RETCODE lpSetIntpar ( SCIP_LP lp,
SCIP_LPPARAM  lpparam,
int  value,
SCIP_Bool success 
)
static

sets parameter of type int in 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 2504 of file lp.c.

References FALSE, SCIP_Lp::lpi, NULL, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiSetIntpar(), and TRUE.

Referenced by lpSetBoolpar(), lpSetFastmip(), lpSetIterationLimit(), lpSetPricing(), lpSetRandomseed(), lpSetRefactorInterval(), lpSetScaling(), lpSetSolutionPolishing(), lpSetThreads(), lpSetTiming(), and SCIPlpCreate().

◆ lpSetBoolpar()

static SCIP_RETCODE lpSetBoolpar ( SCIP_LP lp,
SCIP_LPPARAM  lpparam,
SCIP_Bool  value,
SCIP_Bool success 
)
static

sets parameter of type SCIP_Bool in 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 2531 of file lp.c.

References lpSetIntpar().

Referenced by lpSetFromscratch(), lpSetLPInfo(), lpSetPresolving(), and SCIPlpCreate().

◆ lpSetRealpar()

static SCIP_RETCODE lpSetRealpar ( SCIP_LP lp,
SCIP_LPPARAM  lpparam,
SCIP_Real  value,
SCIP_Bool success 
)
static

sets parameter of type SCIP_Real in 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 2543 of file lp.c.

References FALSE, SCIP_Lp::lpi, NULL, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIPlpiSetRealpar(), and TRUE.

Referenced by lpAlgorithm(), lpSetBarrierconvtol(), lpSetConditionLimit(), lpSetDualfeastol(), lpSetFeastol(), lpSetMarkowitz(), lpSetObjlim(), lpSetRowrepswitch(), and SCIPlpCreate().

◆ lpCheckIntpar()

static SCIP_RETCODE lpCheckIntpar ( SCIP_LP lp,
SCIP_LPPARAM  lpparam,
int  value 
)
static

checks, that parameter of type int in LP solver has the given value, ignoring unknown parameters

Parameters
lpcurrent LP data
lpparamLP parameter
valuevalue parameter should have

Definition at line 2571 of file lp.c.

References SCIP_Lp::lpi, NULL, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, and SCIPlpiGetIntpar().

Referenced by lpCheckBoolpar(), lpSetFastmip(), lpSetIterationLimit(), lpSetPricing(), lpSetScaling(), lpSetThreads(), and lpSetTiming().

◆ lpCheckBoolpar()

static SCIP_RETCODE lpCheckBoolpar ( SCIP_LP lp,
SCIP_LPPARAM  lpparam,
SCIP_Bool  value 
)
static

checks, that parameter of type SCIP_Bool in LP solver has the given value, ignoring unknown parameters

Parameters
lpcurrent LP data
lpparamLP parameter
valuevalue parameter should have

Definition at line 2596 of file lp.c.

References lpCheckIntpar().

Referenced by lpSetFromscratch(), lpSetLPInfo(), and lpSetPresolving().

◆ lpCheckRealpar()

static SCIP_RETCODE lpCheckRealpar ( SCIP_LP lp,
SCIP_LPPARAM  lpparam,
SCIP_Real  value 
)
static

checks, that parameter of type SCIP_Real in LP solver has the given value, ignoring unknown parameters

Parameters
lpcurrent LP data
lpparamLP parameter
valuevalue parameter should have

Definition at line 2607 of file lp.c.

References SCIP_Lp::lpi, NULL, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIP_Real, and SCIPlpiGetRealpar().

Referenced by lpSetBarrierconvtol(), lpSetConditionLimit(), lpSetDualfeastol(), lpSetFeastol(), lpSetMarkowitz(), lpSetObjlim(), and lpSetRowrepswitch().

◆ lpSetObjlim()

static SCIP_RETCODE lpSetObjlim ( SCIP_LP lp,
SCIP_SET set,
SCIP_Real  objlim,
SCIP_Bool success 
)
static

sets the objective limit of the 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 2643 of file lp.c.

References FALSE, lpCheckRealpar(), lpCutoffDisabled, SCIP_Lp::lpi, SCIP_Lp::lpiobjlim, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_OBJLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiGetRealpar(), SCIPlpiInfinity(), SCIPsetIsInfinity(), and SCIP_Lp::solved.

Referenced by lpSolveStable().

◆ lpSetFeastol()

static SCIP_RETCODE lpSetFeastol ( SCIP_LP lp,
SCIP_Real  feastol,
SCIP_Bool success 
)
static

sets the feasibility tolerance of the LP solver

Parameters
lpcurrent LP data
feastolnew feasibility tolerance
successpointer to store whether the parameter was actually changed

Definition at line 2694 of file lp.c.

References FALSE, lpCheckRealpar(), SCIP_Lp::lpi, SCIP_Lp::lpifeastol, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::nrows, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_FEASTOL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiGetRealpar(), and SCIP_Lp::solved.

Referenced by lpSolveStable().

◆ lpSetDualfeastol()

static SCIP_RETCODE lpSetDualfeastol ( SCIP_LP lp,
SCIP_Real  dualfeastol,
SCIP_Bool success 
)
static

sets the reduced costs feasibility tolerance of the LP solver

Parameters
lpcurrent LP data
dualfeastolnew reduced costs feasibility tolerance
successpointer to store whether the parameter was actually changed

Definition at line 2737 of file lp.c.

References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, lpCheckRealpar(), SCIP_Lp::lpi, SCIP_Lp::lpidualfeastol, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::nrows, NULL, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_DUALFEASTOL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiGetRealpar(), and SCIP_Lp::solved.

Referenced by lpSolveStable().

◆ lpSetBarrierconvtol()

static SCIP_RETCODE lpSetBarrierconvtol ( SCIP_LP lp,
SCIP_Real  barrierconvtol,
SCIP_Bool success 
)
static

sets the convergence tolerance used in barrier algorithm of the LP solver

Parameters
lpcurrent LP data
barrierconvtolnew convergence tolerance used in barrier algorithm
successpointer to store whether the parameter was actually changed

Definition at line 2780 of file lp.c.

References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::lastlpalgo, lpCheckRealpar(), SCIP_Lp::lpi, SCIP_Lp::lpibarrierconvtol, SCIP_Lp::lpobjval, lpSetRealpar(), SCIP_Lp::lpsolstat, SCIP_Lp::nrows, NULL, SCIP_CALL, SCIP_INVALID, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPPAR_BARRIERCONVTOL, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, SCIP_Real, SCIPlpiGetRealpar(), and SCIP_Lp::solved.

Referenced by lpSolveStable().

◆ lpSetFromscratch()

static SCIP_RETCODE lpSetFromscratch ( SCIP_LP lp,
SCIP_Bool  fromscratch,
SCIP_Bool success 
)
static

sets the FROMSCRATCH setting of the LP solver

Parameters
lpcurrent LP data
fromscratchnew FROMSCRATCH setting
successpointer to store whether the parameter was successfully changed

Definition at line 2824 of file lp.c.

References FALSE, lpCheckBoolpar(), SCIP_Lp::lpifromscratch, lpSetBoolpar(), NULL, SCIP_CALL, SCIP_LPPAR_FROMSCRATCH, and SCIP_OKAY.

Referenced by lpSolveStable(), and SCIPlpSolveAndEval().

◆ lpSetFastmip()

static SCIP_RETCODE lpSetFastmip ( SCIP_LP lp,
int  fastmip,
SCIP_Bool success 
)
static

sets the FASTMIP setting of the LP solver

Parameters
lpcurrent LP data
fastmipnew FASTMIP setting
successpointer to store whether the parameter was successfully changed

Definition at line 2849 of file lp.c.

References FALSE, lpCheckIntpar(), SCIP_Lp::lpifastmip, lpSetIntpar(), NULL, SCIP_CALL, SCIP_LPPAR_FASTMIP, SCIP_OKAY, and SCIP_Lp::solved.

Referenced by lpSolveStable().

◆ lpSetScaling()

static SCIP_RETCODE lpSetScaling ( SCIP_LP lp,
int  scaling,
SCIP_Bool success 
)
static

sets the SCALING setting of the LP solver

Parameters
lpcurrent LP data
scalingnew SCALING setting
successpointer to store whether the parameter was successfully changed

Definition at line 2880 of file lp.c.

References FALSE, lpCheckIntpar(), SCIP_Lp::lpiscaling, lpSetIntpar(), NULL, SCIP_CALL, SCIP_LPPAR_SCALING, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetThreads()

static SCIP_RETCODE lpSetThreads ( SCIP_LP lp,
int  threads,
SCIP_Bool success 
)
static

sets the number of THREADS of the LP solver

Parameters
lpcurrent LP data
threadsnew number of threads used to solve the LP
successpointer to store whether the parameter was successfully changed

Definition at line 2905 of file lp.c.

References FALSE, lpCheckIntpar(), SCIP_Lp::lpithreads, lpSetIntpar(), NULL, SCIP_CALL, SCIP_LPPAR_THREADS, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetPresolving()

static SCIP_RETCODE lpSetPresolving ( SCIP_LP lp,
SCIP_Bool  presolving,
SCIP_Bool success 
)
static

sets the PRESOLVING setting of the LP solver

Parameters
lpcurrent LP data
presolvingnew PRESOLVING setting
successpointer to store whether the parameter was successfully changed

Definition at line 2930 of file lp.c.

References FALSE, lpCheckBoolpar(), SCIP_Lp::lpipresolving, lpSetBoolpar(), NULL, SCIP_CALL, SCIP_LPPAR_PRESOLVING, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetRowrepswitch()

static SCIP_RETCODE lpSetRowrepswitch ( SCIP_LP lp,
SCIP_Real  rowrepswitch,
SCIP_Bool success 
)
static

sets the ROWREPSWITCH setting of the LP solver

Parameters
lpcurrent LP data
rowrepswitchnew ROWREPSWITCH value
successpointer to store whether the parameter was successfully changed

Definition at line 2955 of file lp.c.

References FALSE, lpCheckRealpar(), SCIP_Lp::lpirowrepswitch, lpSetRealpar(), NULL, SCIP_CALL, SCIP_LPPAR_ROWREPSWITCH, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetIterationLimit()

static SCIP_RETCODE lpSetIterationLimit ( SCIP_LP 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 2980 of file lp.c.

References FALSE, lpCheckIntpar(), SCIP_Lp::lpiitlim, SCIP_Lp::lpobjval, lpSetIntpar(), SCIP_Lp::lpsolstat, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPPAR_LPITLIM, SCIP_LPSOLSTAT_NOTSOLVED, SCIP_OKAY, and SCIP_Lp::solved.

Referenced by lpSolveStable(), and SCIPlpEndDive().

◆ lpSetPricing()

static SCIP_RETCODE lpSetPricing ( SCIP_LP lp,
SCIP_PRICING  pricing 
)
static

sets the pricing strategy of the LP solver

Parameters
lpcurrent LP data
pricingpricing strategy

Definition at line 3016 of file lp.c.

References lpCheckIntpar(), SCIP_Lp::lpipricing, lpSetIntpar(), NULL, pricing(), SCIP_Bool, SCIP_CALL, SCIP_LPPAR_PRICING, and SCIP_OKAY.

Referenced by lpSetPricingChar().

◆ lpSetPricingChar()

static SCIP_RETCODE lpSetPricingChar ( SCIP_LP lp,
char  pricingchar 
)
static

sets the pricing strategy of the LP solver (given the character representation of the strategy)

Parameters
lpcurrent LP data
pricingcharcharacter representing the pricing strategy

Definition at line 3039 of file lp.c.

References lpSetPricing(), pricing(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_PRICING_AUTO, SCIP_PRICING_DEVEX, SCIP_PRICING_FULL, SCIP_PRICING_LPIDEFAULT, SCIP_PRICING_PARTIAL, SCIP_PRICING_STEEP, SCIP_PRICING_STEEPQSTART, and SCIPerrorMessage.

Referenced by lpSolveStable().

◆ lpSetLPInfo()

static SCIP_RETCODE lpSetLPInfo ( SCIP_LP lp,
SCIP_Bool  lpinfo 
)
static

sets the verbosity of the LP solver

Parameters
lpcurrent LP data
lpinfoshould the LP solver display status messages?

Definition at line 3081 of file lp.c.

References lpCheckBoolpar(), SCIP_Lp::lpilpinfo, lpSetBoolpar(), NULL, SCIP_Bool, SCIP_CALL, SCIP_LPPAR_LPINFO, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetConditionLimit()

static SCIP_RETCODE lpSetConditionLimit ( SCIP_LP lp,
SCIP_Real  condlimit,
SCIP_Bool success 
)
static

sets the CONDITIONLIMIT setting of the LP solver

Parameters
lpcurrent LP data
condlimitnew CONDITIONLIMIT value
successpointer to store whether the parameter was successfully changed

Definition at line 3104 of file lp.c.

References FALSE, lpCheckRealpar(), SCIP_Lp::lpiconditionlimit, lpSetRealpar(), NULL, SCIP_CALL, SCIP_LPPAR_CONDITIONLIMIT, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetMarkowitz()

static SCIP_RETCODE lpSetMarkowitz ( SCIP_LP lp,
SCIP_Real  threshhold,
SCIP_Bool success 
)
static

sets the MARKOWITZ setting of the LP solver

Parameters
lpcurrent LP data
threshholdnew MARKOWITZ value
successpointer to store whether the parameter was successfully changed

Definition at line 3129 of file lp.c.

References FALSE, lpCheckRealpar(), SCIP_Lp::lpimarkowitz, lpSetRealpar(), NULL, SCIP_CALL, SCIP_LPPAR_MARKOWITZ, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetTiming()

static SCIP_RETCODE lpSetTiming ( SCIP_LP lp,
SCIP_CLOCKTYPE  timing,
SCIP_Bool  enabled,
SCIP_Bool success 
)
static

sets the type of timer of the LP solver

Parameters
lpcurrent LP data
timingnew timing value
enabledis timing enabled?
successpointer to store whether the parameter was successfully changed

Definition at line 3154 of file lp.c.

References FALSE, lpCheckIntpar(), SCIP_Lp::lpitiming, lpSetIntpar(), NULL, SCIP_CALL, SCIP_CLOCKTYPE_CPU, SCIP_CLOCKTYPE_WALL, SCIP_LPPAR_TIMING, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetRandomseed()

static SCIP_RETCODE lpSetRandomseed ( SCIP_LP lp,
int  randomseed,
SCIP_Bool success 
)
static

sets the initial random seed of the LP solver

Parameters
lpcurrent LP data
randomseednew initial random seed
successpointer to store whether the parameter was successfully changed

Definition at line 3188 of file lp.c.

References FALSE, SCIP_Lp::lpirandomseed, lpSetIntpar(), NULL, SCIP_CALL, SCIP_LPPAR_RANDOMSEED, SCIP_OKAY, and TRUE.

Referenced by lpSolveStable().

◆ lpSetSolutionPolishing()

static SCIP_RETCODE lpSetSolutionPolishing ( SCIP_LP lp,
SCIP_Bool  polishing,
SCIP_Bool success 
)
static

sets the LP solution polishing method

Parameters
lpcurrent LP data
polishingLP solution polishing activated (0: disabled, 1: enabled)
successpointer to store whether the parameter was successfully changed

Definition at line 3218 of file lp.c.

References FALSE, SCIP_Lp::lpisolutionpolishing, lpSetIntpar(), NULL, SCIP_CALL, SCIP_LPPAR_POLISHING, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ lpSetRefactorInterval()

static SCIP_RETCODE lpSetRefactorInterval ( SCIP_LP lp,
int  refactor,
SCIP_Bool success 
)
static

sets the LP refactorization interval

Parameters
lpcurrent LP data
refactorLP refactorization interval (0: automatic)
successpointer to store whether the parameter was successfully changed

Definition at line 3241 of file lp.c.

References FALSE, SCIP_Lp::lpirefactorinterval, lpSetIntpar(), NULL, SCIP_CALL, SCIP_LPPAR_REFACTOR, and SCIP_OKAY.

Referenced by lpSolveStable().

◆ SCIPcolCreate()

SCIP_RETCODE SCIPcolCreate ( SCIP_COL **  col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_VAR var,
int  len,
SCIP_ROW **  rows,
SCIP_Real vals,
SCIP_Bool  removable 
)

creates an LP column

Parameters
colpointer to column data
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 3268 of file lp.c.

References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, FALSE, SCIP_Stat::ncolidx, NULL, SCIP_Var::obj, SCIP_ALLOC, SCIP_BASESTAT_ZERO, SCIP_INVALID, SCIP_OKAY, SCIPsetIsZero(), SCIPstatIncrement, SCIPvarGetLbLazy(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetUbLazy(), SCIPvarGetUbLocal(), SCIPvarGetUnchangedObj(), SCIPvarIsIntegral(), and TRUE.

Referenced by SCIPvarColumn().

◆ SCIPcolFree()

SCIP_RETCODE SCIPcolFree ( SCIP_COL **  col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp 
)

frees an LP column

Parameters
colpointer to LP column
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data

Definition at line 3366 of file lp.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, colUnlink(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, and SCIPvarGetStatus().

Referenced by SCIPvarLoose(), and varFree().

◆ SCIPcolPrint()

void SCIPcolPrint ( SCIP_COL 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 3396 of file lp.c.

References SCIP_Col::lb, SCIP_Col::len, SCIP_Row::name, NULL, SCIP_Col::obj, r, SCIP_Col::rows, SCIPmessageFPrintInfo(), SCIP_Col::ub, SCIP_Col::vals, and SCIP_Col::var.

◆ SCIPcolAddCoef()

SCIP_RETCODE SCIPcolAddCoef ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_ROW row,
SCIP_Real  val 
)

adds a previously non existing coefficient to an LP column

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

Definition at line 3436 of file lp.c.

References checkLinks, colAddCoef(), SCIP_Lp::diving, NULL, SCIP_CALL, and SCIP_OKAY.

◆ SCIPcolDelCoef()

SCIP_RETCODE SCIPcolDelCoef ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_ROW row 
)

deletes existing coefficient from column

Parameters
colcolumn to be changed
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
rowcoefficient to be deleted

Definition at line 3457 of file lp.c.

References checkLinks, colDelCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, colSearchCoef(), SCIP_Lp::diving, SCIP_Col::index, SCIP_Col::linkpos, SCIP_Row::name, NULL, rowDelCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPsetIsEQ(), SCIPvarGetName(), SCIP_Col::vals, SCIP_Row::vals, and SCIP_Col::var.

◆ SCIPcolChgCoef()

SCIP_RETCODE SCIPcolChgCoef ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_ROW row,
SCIP_Real  val 
)

changes or adds a coefficient to an LP column

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

Definition at line 3502 of file lp.c.

References checkLinks, colAddCoef(), colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, colSearchCoef(), SCIP_Lp::diving, SCIP_Col::index, SCIP_Col::linkpos, NULL, rowChgCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIP_Col::vals, and SCIP_Row::vals.

◆ SCIPcolIncCoef()

SCIP_RETCODE SCIPcolIncCoef ( SCIP_COL col,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_ROW row,
SCIP_Real  incval 
)

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

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

Definition at line 3553 of file lp.c.

References checkLinks, colAddCoef(), colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, colSearchCoef(), SCIP_Lp::diving, SCIP_Col::index, SCIP_Col::linkpos, NULL, rowChgCoefPos(), SCIP_Col::rows, SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIPsetIsZero(), SCIP_Col::vals, and SCIP_Row::vals.

◆ insertColChgcols()

static SCIP_RETCODE insertColChgcols ( SCIP_COL col,
SCIP_SET set,
SCIP_LP 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 3608 of file lp.c.

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

Referenced by SCIPcolChgLb(), SCIPcolChgObj(), SCIPcolChgUb(), and updateLazyBounds().

◆ isNewValueUnreliable()

static SCIP_Bool isNewValueUnreliable ( SCIP_SET set,
SCIP_Real  newvalue,
SCIP_Real  oldvalue 
)
static

Is the new value reliable or may we have cancellation?

Note
: Here we only consider cancellations which can occur during decreasing the oldvalue to newvalue; not the cancellations which can occur during increasing the oldvalue to the newvalue
Parameters
setglobal SCIP settings
newvaluenew value
oldvalueold reliable value

Definition at line 3633 of file lp.c.

References NULL, REALABS, SCIP_INVALID, SCIP_Real, and SCIPsetIsZero().

Referenced by lpUpdateObjNorms().

◆ lpUpdateObjNorms()

static void lpUpdateObjNorms ( SCIP_LP lp,
SCIP_SET set,
SCIP_Real  oldobj,
SCIP_Real  newobj 
)
static

update norms of objective function vector

Parameters
lpcurrent LP data
setglobal SCIP settings
oldobjold objective value of variable
newobjnew objective value of variable

Definition at line 3651 of file lp.c.

References isNewValueUnreliable(), MAX, SCIP_Lp::objsqrnorm, SCIP_Lp::objsqrnormunreliable, SCIP_Lp::objsumnorm, REALABS, SCIP_Real, SCIPsetIsGE(), SCIPsetIsLT(), and TRUE.

Referenced by lpDelColset(), SCIPcolChgObj(), SCIPlpAddCol(), and SCIPlpShrinkCols().

◆ SCIPcolChgObj()

◆ SCIPcolChgLb()

SCIP_RETCODE SCIPcolChgLb ( SCIP_COL col,
SCIP_SET set,
SCIP_LP lp,
SCIP_Real  newlb 
)

changes lower bound of column

Parameters
colLP column to change
setglobal SCIP settings
lpcurrent LP data
newlbnew lower bound value

Definition at line 3746 of file lp.c.

References FALSE, SCIP_Lp::flushed, insertColChgcols(), SCIP_Col::lb, SCIP_Col::lbchanged, SCIP_Col::lpipos, SCIP_Lp::nchgcols, NULL, SCIP_Col::obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), TRUE, and SCIP_Col::var.

Referenced by SCIPeventProcess(), SCIPlpEndDive(), and SCIPvarChgLbDive().

◆ SCIPcolChgUb()

SCIP_RETCODE SCIPcolChgUb ( SCIP_COL col,
SCIP_SET set,
SCIP_LP lp,
SCIP_Real  newub 
)

changes upper bound of column

Parameters
colLP column to change
setglobal SCIP settings
lpcurrent LP data
newubnew upper bound value

Definition at line 3791 of file lp.c.

References FALSE, SCIP_Lp::flushed, insertColChgcols(), SCIP_Col::lpipos, SCIP_Lp::nchgcols, NULL, SCIP_Col::obj, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), TRUE, SCIP_Col::ub, SCIP_Col::ubchanged, and SCIP_Col::var.

Referenced by SCIPeventProcess(), SCIPlpEndDive(), and SCIPvarChgUbDive().

◆ SCIPcolCalcRedcost()

SCIP_Real SCIPcolCalcRedcost ( SCIP_COL col,
SCIP_Real dualsol 
)

calculates the reduced costs of a column using the given dual solution vector

Parameters
colLP column
dualsoldual solution vector for current LP rows

Definition at line 3836 of file lp.c.

References SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, NULL, SCIP_Col::nunlinked, SCIP_Col::obj, SCIP_Col::rows, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.

◆ colCalcInternalRedcost()

static SCIP_Real colCalcInternalRedcost ( SCIP_COL col)
static

calculates the reduced costs of a column using the dual solution stored in the rows

Parameters
colLP column

Definition at line 3888 of file lp.c.

References SCIP_Row::dualsol, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, NULL, SCIP_Col::nunlinked, SCIP_Col::obj, SCIP_Col::rows, SCIP_INVALID, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.

Referenced by SCIPcolGetRedcost().

◆ SCIPcolGetRedcost()

SCIP_Real SCIPcolGetRedcost ( SCIP_COL col,
SCIP_STAT stat,
SCIP_LP lp 
)

gets the reduced costs of a column in last LP or after recalculation

Parameters
colLP column
statproblem statistics
lpcurrent LP data

Definition at line 3941 of file lp.c.

References colCalcInternalRedcost(), SCIP_Stat::lpcount, NULL, SCIP_Col::redcost, SCIP_INVALID, SCIP_Col::validredcostlp, and SCIP_Lp::validsollp.

Referenced by getImplVarRedcost(), SCIPcolGetFeasibility(), SCIPgetColRedcost(), SCIPlpGetDegeneracy(), SCIPprobUpdateBestRootSol(), and SCIPvarGetImplRedcost().

◆ SCIPcolGetFeasibility()

SCIP_Real SCIPcolGetFeasibility ( SCIP_COL col,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp 
)

gets the feasibility of (the dual row of) a column in last LP or after recalculation

Parameters
colLP column
setglobal SCIP settings
statproblem statistics
lpcurrent LP data

Definition at line 3965 of file lp.c.

References SCIP_Col::lb, SCIP_Stat::lpcount, NULL, REALABS, SCIP_Real, SCIPcolGetRedcost(), SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIP_Col::ub, and SCIP_Lp::validsollp.

Referenced by SCIPpricestoreAddProbVars().

◆ SCIPcolCalcFarkasCoef()

SCIP_Real SCIPcolCalcFarkasCoef ( SCIP_COL col,
SCIP_Real dualfarkas 
)

calculates the Farkas coefficient y^T A_i of a column i using the given dual Farkas vector y

Parameters
colLP column
dualfarkasdense dual Farkas vector for current LP rows

Definition at line 4019 of file lp.c.

References SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, NULL, SCIP_Col::nunlinked, SCIP_Col::rows, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.

◆ colCalcInternalFarkasCoef()

static SCIP_Real colCalcInternalFarkasCoef ( SCIP_COL col)
static

gets the Farkas coefficient y^T A_i of a column i in last LP (which must be infeasible)

Parameters
colLP column

Definition at line 4071 of file lp.c.

References SCIP_Row::dualfarkas, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, NULL, SCIP_Col::nunlinked, SCIP_Col::rows, SCIP_INVALID, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPvarGetCol(), SCIPvarGetStatus(), SCIP_Col::vals, and SCIP_Col::var.

Referenced by SCIPcolGetFarkasCoef().

◆ SCIPcolGetFarkasCoef()

SCIP_Real SCIPcolGetFarkasCoef ( SCIP_COL col,
SCIP_STAT stat,
SCIP_LP lp 
)

gets the Farkas coefficient of a column in last LP (which must be infeasible)

Parameters
colLP column
statproblem statistics
lpcurrent LP data

Definition at line 4124 of file lp.c.

References colCalcInternalFarkasCoef(), SCIP_Col::farkascoef, SCIP_Stat::lpcount, NULL, SCIP_INVALID, SCIP_Col::validfarkaslp, and SCIP_Lp::validfarkaslp.

Referenced by SCIPcolGetFarkasValue(), and SCIPgetColFarkasCoef().

◆ SCIPcolGetFarkasValue()

SCIP_Real SCIPcolGetFarkasValue ( SCIP_COL col,
SCIP_STAT stat,
SCIP_LP lp 
)

gets the Farkas value of a column in last LP (which must be infeasible), i.e. the Farkas coefficient y^T A_i times the best bound for this coefficient, i.e. max{y^T A_i x_i | lb <= x_i <= ub}

Parameters
colLP column
statproblem statistics
lpcurrent LP data

Definition at line 4150 of file lp.c.

References SCIP_Col::lb, NULL, SCIP_Real, SCIPcolGetFarkasCoef(), and SCIP_Col::ub.

Referenced by SCIPpricestoreAddProbVars().

◆ SCIPlpStartStrongbranch()

SCIP_RETCODE SCIPlpStartStrongbranch ( SCIP_LP lp)

start strong branching - call before any strong branching

Parameters
lpLP data

Definition at line 4169 of file lp.c.

References SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpiStartStrongbranch(), SCIP_Lp::strongbranching, and TRUE.

Referenced by SCIPstartStrongbranch().

◆ SCIPlpEndStrongbranch()

SCIP_RETCODE SCIPlpEndStrongbranch ( SCIP_LP lp)

end strong branching - call after any strong branching

Parameters
lpLP data

Definition at line 4184 of file lp.c.

References FALSE, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPdebugMessage, SCIPlpiEndStrongbranch(), and SCIP_Lp::strongbranching.

Referenced by SCIPendStrongbranch().

◆ SCIPcolSetStrongbranchData()

void SCIPcolSetStrongbranchData ( SCIP_COL col,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_Real  lpobjval,
SCIP_Real  primsol,
SCIP_Real  sbdown,
SCIP_Real  sbup,
SCIP_Bool  sbdownvalid,
SCIP_Bool  sbupvalid,
SCIP_Longint  iter,
int  itlim 
)

sets strong branching information for a column variable

Parameters
colLP column
setglobal SCIP settings
statdynamic problem statistics
lpLP data
lpobjvalobjective value of the current LP
primsolprimal solution value of the column in the current LP
sbdowndual bound after branching column down
sbupdual bound after branching column up
sbdownvalidis the returned down value a valid dual bound?
sbupvalidis the returned up value a valid dual bound?
itertotal number of strong branching iterations
itlimiteration limit applied to the strong branching call

Definition at line 4199 of file lp.c.

References SCIP_Lp::cols, SCIP_Lp::cutoffbound, SCIP_Col::lpipos, SCIP_Col::lppos, SCIP_Lp::ncols, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Col::nsbcalls, NULL, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_VARSTATUS_COLUMN, SCIPcolIsIntegral(), SCIPstatAdd, SCIPstatIncrement, SCIPvarGetCol(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::strongbranchprobing, SCIP_Col::validsblp, and SCIP_Col::var.

Referenced by SCIPgetVarStrongbranchWithPropagation(), and SCIPsetVarStrongbranchData().

◆ SCIPcolInvalidateStrongbranchData()

void SCIPcolInvalidateStrongbranchData ( SCIP_COL col,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp 
)

◆ SCIPcolGetStrongbranch()

SCIP_RETCODE SCIPcolGetStrongbranch ( SCIP_COL col,
SCIP_Bool  integral,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_LP lp,
int  itlim,
SCIP_Bool  updatecol,
SCIP_Bool  updatestat,
SCIP_Real down,
SCIP_Real up,
SCIP_Bool downvalid,
SCIP_Bool upvalid,
SCIP_Bool lperror 
)

gets strong branching information on a column variable

Parameters
colLP column
integralshould integral strong branching be performed?
setglobal SCIP settings
statdynamic problem statistics
probproblem data
lpLP data
itlimiteration limit for strong branchings
updatecolshould col be updated, or should it stay in its current state ?
updatestatshould stat be updated, or should it stay in its current state ?
downstores dual bound after branching column down
upstores dual bound after branching column up
downvalidstores whether the returned down value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value
upvalidstores whether the returned up value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 4288 of file lp.c.

References SCIP_Lp::cols, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjvalinf, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Col::lpipos, SCIP_Lp::lpobjval, SCIP_Col::lppos, SCIP_Lp::lpsolstat, SCIP_Lp::ncols, SCIP_Stat::nduallpiterations, SCIP_Stat::nduallps, SCIP_Stat::ndualresolvelpiterations, SCIP_Stat::ndualresolvelps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Stat::nprimallpiterations, SCIP_Stat::nprimallps, SCIP_Stat::nprimalresolvelpiterations, SCIP_Stat::nprimalresolvelps, SCIP_Col::nsbcalls, NULL, SCIP_Col::primsol, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_LPERROR, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPclockStart(), SCIPclockStop(), SCIPcolIsIntegral(), SCIPlpGetObjval(), SCIPlpiStrongbranchFrac(), SCIPlpiStrongbranchInt(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsFeasIntegral(), SCIPsetIsIntegral(), SCIPstatAdd, SCIPstatIncrement, SCIPvarGetCol(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::solved, SCIP_Lp::strongbranching, SCIP_Stat::strongbranchtime, TRUE, SCIP_Col::validsblp, SCIP_Lp::validsollp, and SCIP_Col::var.

Referenced by SCIPgetVarStrongbranchFrac(), and SCIPgetVarStrongbranchInt().

◆ SCIPcolGetStrongbranches()

SCIP_RETCODE SCIPcolGetStrongbranches ( SCIP_COL **  cols,
int  ncols,
SCIP_Bool  integral,
SCIP_SET set,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_LP lp,
int  itlim,
SCIP_Real down,
SCIP_Real up,
SCIP_Bool downvalid,
SCIP_Bool upvalid,
SCIP_Bool lperror 
)

gets strong branching information on column variables

Parameters
colsLP columns
ncolsnumber of columns
integralshould integral strong branching be performed?
setglobal SCIP settings
statdynamic problem statistics
probproblem data
lpLP data
itlimiteration limit for strong branchings
downstores dual bounds after branching columns down
upstores dual bounds after branching columns up
downvalidstores whether the returned down values are valid dual bounds, or NULL; otherwise, they can only be used as an estimate value
upvalidstores whether the returned up values are valid dual bounds, or NULL; otherwise, they can only be used as an estimate value
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 4473 of file lp.c.

References SCIP_Lp::cols, SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjvalinf, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Col::lpipos, SCIP_Col::lppos, SCIP_Lp::lpsolstat, SCIP_Lp::ncols, SCIP_Stat::nduallpiterations, SCIP_Stat::nduallps, SCIP_Stat::ndualresolvelpiterations, SCIP_Stat::ndualresolvelps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Stat::nprimallpiterations, SCIP_Stat::nprimallps, SCIP_Stat::nprimalresolvelpiterations, SCIP_Stat::nprimalresolvelps, SCIP_Col::nsbcalls, NULL, SCIP_Col::primsol, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sblpobjval, SCIP_Col::sbnode, SCIP_Col::sbsolval, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_LPERROR, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPclockStart(), SCIPclockStop(), SCIPcolIsIntegral(), SCIPlpGetObjval(), SCIPlpiStrongbranchesFrac(), SCIPlpiStrongbranchesInt(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasIntegral(), SCIPstatAdd, SCIPvarGetCol(), SCIPvarGetStatus(), SCIPvarIsIntegral(), SCIP_Lp::solved, SCIP_Stat::strongbranchtime, TRUE, SCIP_Col::validsblp, SCIP_Lp::validsollp, and SCIP_Col::var.

Referenced by SCIPgetVarsStrongbranchesFrac(), and SCIPgetVarsStrongbranchesInt().

◆ SCIPcolGetStrongbranchLast()

void SCIPcolGetStrongbranchLast ( SCIP_COL col,
SCIP_Real down,
SCIP_Real up,
SCIP_Bool downvalid,
SCIP_Bool upvalid,
SCIP_Real solval,
SCIP_Real lpobjval 
)

gets last strong branching information available for a column variable; returns values of SCIP_INVALID, if strong branching was not yet called on the given column; keep in mind, that the returned old values may have nothing to do with the current LP solution

Parameters
colLP column
downstores dual bound after branching column down, or NULL
upstores dual bound after branching column up, or NULL
downvalidstores whether the returned down value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value
upvalidstores whether the returned up value is a valid dual bound, or NULL; otherwise, it can only be used as an estimate value
solvalstores LP solution value of column at last strong branching call, or NULL
lpobjvalstores LP objective value at last strong branching call, or NULL

Definition at line 4696 of file lp.c.

References NULL, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sblpobjval, SCIP_Col::sbsolval, SCIP_Col::sbup, and SCIP_Col::sbupvalid.

Referenced by SCIPgetVarStrongbranchLast().

◆ SCIPcolGetStrongbranchLPAge()

SCIP_Longint SCIPcolGetStrongbranchLPAge ( SCIP_COL col,
SCIP_STAT stat 
)

if strong branching was already applied on the column at the current node, returns the number of LPs solved after the LP where the strong branching on this column was applied; if strong branching was not yet applied on the column at the current node, returns INT_MAX

Parameters
colLP column
statdynamic problem statistics

Definition at line 4728 of file lp.c.

References SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_Col::sbnode, SCIP_LONGINT_MAX, and SCIP_Col::validsblp.

Referenced by SCIPgetVarStrongbranchLPAge().

◆ SCIPcolMarkNotRemovableLocal()

void SCIPcolMarkNotRemovableLocal ( SCIP_COL col,
SCIP_STAT stat 
)

marks a column to be not removable from the LP in the current node because it became obsolete

Parameters
colLP column
statproblem statistics

Definition at line 4740 of file lp.c.

References SCIP_Stat::nnodes, NULL, and SCIP_Col::obsoletenode.

Referenced by SCIPmarkColNotRemovableLocal().

◆ rowCalcNorms()

◆ rowCalcIdxsAndVals()

◆ isIntegralScalar()

static SCIP_Bool isIntegralScalar ( SCIP_Real  val,
SCIP_Real  scalar,
SCIP_Real  mindelta,
SCIP_Real  maxdelta,
SCIP_Real intval 
)
static

checks, whether the given scalar scales the given value to an integral number with error in the given bounds

Parameters
valvalue that should be scaled to an integral value
scalarscalar that should be tried
mindeltaminimal relative allowed difference of scaled coefficient s*c and integral i
maxdeltamaximal relative allowed difference of scaled coefficient s*c and integral i
intvalpointer to store the scaled integral value, or NULL

Definition at line 4889 of file lp.c.

References FALSE, NULL, SCIP_Real, SCIPrelDiff(), and TRUE.

Referenced by buildFlowCover(), rowScale(), and SCIProwCalcIntegralScalar().

◆ rowScale()

static SCIP_RETCODE rowScale ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_Real  scaleval,
SCIP_Bool  integralcontvars,
SCIP_Real  minrounddelta,
SCIP_Real  maxrounddelta 
)
static

scales row with given factor, and rounds coefficients to integers if close enough; the constant is automatically moved to the sides; if the row's activity is proven to be integral, the sides are automatically rounded to the next integer

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
statproblem statistics
lpcurrent LP data
scalevalvalue to scale row with
integralcontvarsshould the coefficients of the continuous variables also be made integral, if they are close to integral values?
minrounddeltaminimal relative difference of scaled coefficient s*c and integral i, upto which the integral is used instead of the scaled real coefficient
maxrounddeltamaximal relative difference of scaled coefficient s*c and integral i upto which the integral is used instead of the scaled real coefficient

Definition at line 4929 of file lp.c.

References colChgCoefPos(), SCIP_Row::cols, SCIP_Row::constant, debugRowPrint, FALSE, SCIP_Row::integral, isIntegralScalar(), SCIP_Col::lb, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Row::local, SCIP_Row::modifiable, SCIP_Row::name, NULL, SCIP_Row::rhs, rowChgCoefPos(), SCIP_Col::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcolIsIntegral(), SCIProwChgConstant(), SCIProwChgLhs(), SCIProwChgRhs(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsIntegral(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPsetSumCeil(), SCIPsetSumFloor(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), TRUE, SCIP_Col::ub, SCIP_Row::validactivitylp, SCIP_Col::vals, SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIProwMakeIntegral().

◆ SCIProwCreate()

SCIP_RETCODE SCIProwCreate ( SCIP_ROW **  row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
const char *  name,
int  len,
SCIP_COL **  cols,
SCIP_Real vals,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_ROWORIGINTYPE  origintype,
void *  origin,
SCIP_Bool  local,
SCIP_Bool  modifiable,
SCIP_Bool  removable 
)

creates and captures an LP row

Parameters
rowpointer to LP row data
blkmemblock memory
setglobal SCIP settings
statproblem statistics
namename of row
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
origintypetype of origin of row
originpointer to constraint handler or separator who created the row (NULL if unkown)
localis row only valid locally?
modifiableis row modifiable during node processing (subject to column generation)?
removableshould the row be removed from the LP due to aging or cleanup?

Definition at line 5099 of file lp.c.

References BMSallocBlockMemory, BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, FALSE, SCIP_Col::index, SCIP_Stat::nrowidx, NULL, rowCalcNorms(), SCIP_ALLOC, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_ROWORIGINTYPE_CONS, SCIPconsCapture(), SCIPeventfilterCreate(), SCIProwCapture(), SCIPsetInfinity(), SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), SCIPstatIncrement, SCIPvarIsIntegral(), TRUE, and SCIP_Col::var.

Referenced by SCIPcreateEmptyRowCons(), SCIPcreateEmptyRowConshdlr(), SCIPcreateEmptyRowSepa(), SCIPcreateEmptyRowUnspec(), SCIPcreateRowCons(), SCIPcreateRowConshdlr(), SCIPcreateRowSepa(), SCIPcreateRowUnspec(), and SCIPreoptApplyCuts().

◆ SCIProwFree()

SCIP_RETCODE SCIProwFree ( SCIP_ROW **  row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LP lp 
)

frees an LP row

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

Definition at line 5247 of file lp.c.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, BMSfreeBlockMemoryArrayNull, BMSfreeBlockMemoryNull, NULL, rowUnlink(), SCIP_CALL, SCIP_OKAY, SCIP_ROWORIGINTYPE_CONS, SCIPconsRelease(), and SCIPeventfilterFree().

Referenced by SCIProwRelease().

◆ SCIProwPrint()

void SCIProwPrint ( SCIP_ROW row,
SCIP_MESSAGEHDLR messagehdlr,
FILE *  file 
)

output row to file stream

Parameters
rowLP row
messagehdlrmessage handler
fileoutput file (or NULL for standard output)

Definition at line 5287 of file lp.c.

References SCIP_Row::cols, SCIP_Row::constant, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::name, NULL, REALABS, SCIP_Row::rhs, SCIP_DEFAULT_EPSILON, SCIP_VARSTATUS_COLUMN, SCIPmessageFPrintInfo(), SCIPvarGetName(), SCIPvarGetStatus(), SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIPprintRow().

◆ SCIProwCapture()

void SCIProwCapture ( SCIP_ROW row)

increases usage counter of LP row

Parameters
rowLP row

Definition at line 5327 of file lp.c.

References SCIP_Row::name, SCIP_Row::nlocks, NULL, SCIP_Row::nuses, and SCIPdebugMessage.

Referenced by cutCreate(), forkCreate(), forkFree(), lpFlushAddRows(), pseudoforkCreate(), SCIPcaptureRow(), SCIPlpAddRow(), SCIProwCreate(), and SCIPsepastoreAddCut().

◆ SCIProwRelease()

SCIP_RETCODE SCIProwRelease ( SCIP_ROW **  row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_LP lp 
)

decreases usage counter of LP row, and frees memory if necessary

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

Definition at line 5340 of file lp.c.

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

Referenced by cutFree(), forkFree(), lpDelRowset(), lpFlushDelRows(), pseudoforkFree(), SCIPlpFree(), SCIPlpShrinkRows(), SCIPreleaseRow(), SCIPreoptApplyCuts(), SCIPsepastoreAddCut(), SCIPsepastoreClearCuts(), sepastoreDelCut(), and subrootFree().

◆ SCIProwAddCoef()

SCIP_RETCODE SCIProwAddCoef ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_COL col,
SCIP_Real  val 
)

adds a previously non existing coefficient to an LP row

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

Definition at line 5397 of file lp.c.

References checkLinks, SCIP_Lp::diving, SCIP_Row::lppos, NULL, rowAddCoef(), SCIP_CALL, and SCIP_OKAY.

◆ SCIProwDelCoef()

SCIP_RETCODE SCIProwDelCoef ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_COL col 
)

deletes coefficient from row

Parameters
rowrow to be changed
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
colcoefficient to be deleted

Definition at line 5418 of file lp.c.

References checkLinks, colDelCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Lp::diving, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Row::name, NULL, rowDelCoefPos(), SCIP_Col::rows, rowSearchCoef(), SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPsetIsEQ(), SCIPvarGetName(), SCIP_Col::vals, SCIP_Row::vals, and SCIP_Col::var.

◆ SCIProwChgCoef()

SCIP_RETCODE SCIProwChgCoef ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_COL col,
SCIP_Real  val 
)

changes or adds a coefficient to an LP row

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

Definition at line 5464 of file lp.c.

References checkLinks, colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Lp::diving, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lppos, NULL, rowAddCoef(), rowChgCoefPos(), SCIP_Col::rows, rowSearchCoef(), SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIP_Col::vals, and SCIP_Row::vals.

◆ SCIProwIncCoef()

SCIP_RETCODE SCIProwIncCoef ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_COL col,
SCIP_Real  incval 
)

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

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

Definition at line 5516 of file lp.c.

References checkLinks, colChgCoefPos(), SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Lp::diving, SCIP_Col::index, SCIP_Row::linkpos, SCIP_Row::lppos, NULL, rowAddCoef(), rowChgCoefPos(), SCIP_Col::rows, rowSearchCoef(), SCIP_CALL, SCIP_OKAY, SCIPsetIsEQ(), SCIPsetIsZero(), SCIP_Row::validactivitylp, SCIP_Col::vals, and SCIP_Row::vals.

Referenced by SCIPvarAddToRow().

◆ SCIProwChgConstant()

SCIP_RETCODE SCIProwChgConstant ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_Real  constant 
)

changes constant value of a row

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
lpcurrent LP data
constantnew constant value

Definition at line 5573 of file lp.c.

References SCIP_Row::constant, SCIP_Lp::diving, SCIP_Stat::domchgcount, SCIP_Row::lhs, SCIP_Row::lppos, SCIP_Row::maxactivity, SCIP_Row::minactivity, NULL, SCIP_Row::pseudoactivity, REALABS, SCIP_Row::rhs, rowEventConstantChanged(), rowSideChanged(), SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_SIDETYPE_RIGHT, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIP_Row::validactivitybdsdomchg, and SCIP_Row::validpsactivitydomchg.

Referenced by rowScale(), and SCIProwAddConstant().

◆ SCIProwAddConstant()

SCIP_RETCODE SCIProwAddConstant ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_Real  addval 
)

add constant value to a row

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
lpcurrent LP data
addvalconstant value to add to the row

Definition at line 5628 of file lp.c.

References SCIP_Row::constant, SCIP_Lp::diving, SCIP_Row::lhs, SCIP_Row::lppos, NULL, REALABS, SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, SCIProwChgConstant(), SCIPsetIsInfinity(), and SCIPsetIsZero().

Referenced by SCIPvarAddToRow().

◆ SCIProwChgLhs()

SCIP_RETCODE SCIProwChgLhs ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_Real  lhs 
)

changes left hand side of LP row

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
lhsnew left hand side

Definition at line 5654 of file lp.c.

References SCIP_Lp::diving, SCIP_Row::lhs, NULL, rowEventSideChanged(), rowSideChanged(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, and SCIPsetIsEQ().

Referenced by rowScale(), SCIPchgRowLhs(), SCIPchgRowLhsDive(), and SCIPlpEndDive().

◆ SCIProwChgRhs()

SCIP_RETCODE SCIProwChgRhs ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_LP lp,
SCIP_Real  rhs 
)

changes right hand side of LP row

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
lpcurrent LP data
rhsnew right hand side

Definition at line 5686 of file lp.c.

References SCIP_Lp::diving, NULL, SCIP_Row::rhs, rowEventSideChanged(), rowSideChanged(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_RIGHT, and SCIPsetIsEQ().

Referenced by rowScale(), SCIPchgRowRhs(), SCIPchgRowRhsDive(), and SCIPlpEndDive().

◆ SCIProwChgLocal()

SCIP_RETCODE SCIProwChgLocal ( SCIP_ROW row,
SCIP_Bool  local 
)

changes the local flag of LP row

Parameters
rowLP row
localnew value for local flag

Definition at line 5718 of file lp.c.

References SCIP_Row::local, NULL, and SCIP_OKAY.

Referenced by SCIPsepastoreAddCut().

◆ SCIProwCalcIntegralScalar()

SCIP_RETCODE SCIProwCalcIntegralScalar ( SCIP_ROW row,
SCIP_SET set,
SCIP_Real  mindelta,
SCIP_Real  maxdelta,
SCIP_Longint  maxdnom,
SCIP_Real  maxscale,
SCIP_Bool  usecontvars,
SCIP_Real intscalar,
SCIP_Bool success 
)

tries to find a value, such that all row coefficients, if scaled with this value become integral

Parameters
rowLP row
setglobal SCIP settings
mindeltaminimal relative allowed difference of scaled coefficient s*c and integral i
maxdeltamaximal relative allowed difference of scaled coefficient s*c and integral i
maxdnommaximal denominator allowed in rational numbers
maxscalemaximal allowed scalar
usecontvarsshould the coefficients of the continuous variables also be made integral?
intscalarpointer to store scalar that would make the coefficients integral, or NULL
successstores whether returned value is valid

Definition at line 5735 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, isIntegralScalar(), SCIP_Row::len, nscalars, NULL, REALABS, SCIP_Bool, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_REAL_MAX, SCIP_VARSTATUS_COLUMN, SCIPcalcGreComDiv(), SCIPcolIsIntegral(), SCIPdebug, SCIPrealToRational(), SCIProwGetName(), SCIPsetDebugMsg, SCIPsetIsInfinity(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetStatus(), TRUE, SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIPcalcRowIntegralScalar(), and SCIProwMakeIntegral().

◆ SCIProwMakeIntegral()

SCIP_RETCODE SCIProwMakeIntegral ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_Real  mindelta,
SCIP_Real  maxdelta,
SCIP_Longint  maxdnom,
SCIP_Real  maxscale,
SCIP_Bool  usecontvars,
SCIP_Bool success 
)

tries to scale row, s.t. all coefficients become integral

Parameters
rowLP row
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
statproblem statistics
lpcurrent LP data
mindeltaminimal relative allowed difference of scaled coefficient s*c and integral i
maxdeltamaximal relative allowed difference of scaled coefficient s*c and integral i
maxdnommaximal denominator allowed in rational numbers
maxscalemaximal value to scale row with
usecontvarsshould the coefficients of the continuous variables also be made integral?
successstores whether row could be made rational

Definition at line 5969 of file lp.c.

References NULL, rowScale(), SCIP_CALL, SCIP_OKAY, SCIP_Real, and SCIProwCalcIntegralScalar().

Referenced by SCIPmakeRowIntegral().

◆ rowMerge()

static void rowMerge ( SCIP_ROW 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 6037 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::delaysort, SCIP_Col::index, SCIP_Row::integral, SCIP_Row::len, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Row::name, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, SCIP_Row::nunlinked, rowCalcNorms(), SCIP_Real, SCIPcolIsIntegral(), SCIProwSort(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetIsZero(), SCIPsetRound(), TRUE, and SCIP_Row::vals.

Referenced by SCIProwForceSort().

◆ SCIProwDelaySort()

void SCIProwDelaySort ( SCIP_ROW row)

enables delaying of row sorting

Parameters
rowLP row

Definition at line 6136 of file lp.c.

References SCIP_Row::delaysort, NULL, and TRUE.

Referenced by SCIPaddVarsToRow(), SCIPaddVarsToRowSameCoef(), and SCIPcacheRowExtensions().

◆ SCIProwForceSort()

void SCIProwForceSort ( SCIP_ROW row,
SCIP_SET set 
)

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

Parameters
rowLP row
setglobal SCIP settings

Definition at line 6147 of file lp.c.

References SCIP_Row::delaysort, FALSE, NULL, and rowMerge().

Referenced by SCIPaddVarsToRow(), SCIPaddVarsToRowSameCoef(), and SCIPflushRowExtensions().

◆ SCIProwRecalcLPActivity()

void SCIProwRecalcLPActivity ( SCIP_ROW row,
SCIP_STAT stat 
)

◆ SCIProwGetLPActivity()

SCIP_Real SCIProwGetLPActivity ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp 
)

returns the activity of a row in the current LP solution

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics
lpcurrent LP data

Definition at line 6212 of file lp.c.

References SCIP_Row::activity, SCIP_Interval::inf, SCIP_Stat::lpcount, MAX, NULL, SCIP_INVALID, SCIP_Real, SCIProwRecalcLPActivity(), SCIPsetInfinity(), SCIP_Row::validactivitylp, and SCIP_Lp::validsollp.

Referenced by SCIPgetRowActivity(), SCIPgetRowLPActivity(), SCIPgetRowSolActivity(), SCIPlpGetDegeneracy(), and SCIProwGetLPFeasibility().

◆ SCIProwGetLPFeasibility()

SCIP_Real SCIProwGetLPFeasibility ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp 
)

returns the feasibility of a row in the current LP solution: negative value means infeasibility

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics
lpcurrent LP data

Definition at line 6242 of file lp.c.

References SCIP_Row::lhs, NULL, SCIP_Row::rhs, SCIP_Real, and SCIProwGetLPActivity().

Referenced by SCIPcutpoolSeparate(), SCIPgetRowFeasibility(), SCIPgetRowLPFeasibility(), SCIPgetRowSolFeasibility(), SCIProwGetLPEfficacy(), and SCIProwGetLPSolCutoffDistance().

◆ SCIProwGetRelaxFeasibility()

SCIP_Real SCIProwGetRelaxFeasibility ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns the feasibility of a row in the relaxed solution solution: negative value means infeasibility

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics

Definition at line 6262 of file lp.c.

References SCIP_Row::cols, SCIP_Row::constant, SCIP_Interval::inf, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Col::lppos, MAX, SCIP_Row::nlpcols, NULL, SCIP_Row::nunlinked, SCIP_Row::rhs, SCIP_Real, SCIPsetInfinity(), SCIPvarGetRelaxSol(), SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIProwGetRelaxEfficacy().

◆ SCIProwGetNLPFeasibility()

SCIP_Real SCIProwGetNLPFeasibility ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns the feasibility of a row in the current NLP solution: negative value means infeasibility

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics

Definition at line 6324 of file lp.c.

References SCIP_Row::cols, SCIP_Row::constant, SCIP_Interval::inf, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Col::lppos, MAX, SCIP_Row::nlpcols, NULL, SCIP_Row::nunlinked, SCIP_Row::rhs, SCIP_Real, SCIPsetInfinity(), SCIPvarGetNLPSol(), SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIProwGetNLPEfficacy().

◆ SCIProwRecalcPseudoActivity()

◆ SCIProwGetPseudoActivity()

SCIP_Real SCIProwGetPseudoActivity ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

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

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics

Definition at line 6410 of file lp.c.

References SCIP_Stat::domchgcount, SCIP_Interval::inf, MAX, NULL, SCIP_Row::pseudoactivity, SCIP_INVALID, SCIP_Real, SCIProwRecalcPseudoActivity(), SCIPsetInfinity(), and SCIP_Row::validpsactivitydomchg.

Referenced by SCIPgetRowActivity(), SCIPgetRowPseudoActivity(), SCIPgetRowSolActivity(), and SCIProwGetPseudoFeasibility().

◆ SCIProwGetPseudoFeasibility()

SCIP_Real SCIProwGetPseudoFeasibility ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics

Definition at line 6438 of file lp.c.

References SCIP_Row::lhs, NULL, SCIP_Row::rhs, SCIP_Real, and SCIProwGetPseudoActivity().

Referenced by SCIPgetRowFeasibility(), SCIPgetRowPseudoFeasibility(), and SCIPgetRowSolFeasibility().

◆ SCIProwGetSolActivity()

SCIP_Real SCIProwGetSolActivity ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL sol 
)

returns the activity of a row for a given solution

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

Definition at line 6454 of file lp.c.

References SCIP_Row::cols, SCIP_Row::constant, SCIP_Interval::inf, SCIP_Col::lb, SCIP_Row::len, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Col::lppos, MAX, NULL, SCIP_Row::rhs, SCIP_Real, SCIP_UNKNOWN, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsolGetVal(), SCIP_Col::ub, SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIPgetRowSolActivity(), SCIProwGetSolFeasibility(), and SCIPsolAdjustImplicitSolVals().

◆ SCIProwGetSolFeasibility()

SCIP_Real SCIProwGetSolFeasibility ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL sol 
)

returns the feasibility of a row for the given solution

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

Definition at line 6496 of file lp.c.

References SCIP_Row::lhs, NULL, SCIP_Row::rhs, SCIP_Real, and SCIProwGetSolActivity().

Referenced by SCIPcutpoolSeparate(), SCIPgetRowSolFeasibility(), and SCIProwGetSolEfficacy().

◆ rowCalcActivityBounds()

static void rowCalcActivityBounds ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)
static

◆ SCIProwGetMinActivity()

SCIP_Real SCIProwGetMinActivity ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns the minimal activity of a row w.r.t. the columns' bounds

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data

Definition at line 6586 of file lp.c.

References SCIP_Stat::domchgcount, SCIP_Row::maxactivity, SCIP_Row::minactivity, NULL, rowCalcActivityBounds(), SCIP_INVALID, and SCIP_Row::validactivitybdsdomchg.

Referenced by SCIPaddRow(), SCIPgetRowMinActivity(), SCIPlpGetDegeneracy(), SCIPlpRemoveRedundantRows(), SCIProwIsRedundant(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().

◆ SCIProwGetMaxActivity()

SCIP_Real SCIProwGetMaxActivity ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns the maximal activity of a row w.r.t. the columns' bounds

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data

Definition at line 6607 of file lp.c.

References SCIP_Stat::domchgcount, SCIP_Row::maxactivity, SCIP_Row::minactivity, NULL, rowCalcActivityBounds(), SCIP_INVALID, and SCIP_Row::validactivitybdsdomchg.

Referenced by SCIPaddRow(), SCIPgetRowMaxActivity(), SCIPlpGetDegeneracy(), SCIPlpRemoveRedundantRows(), SCIProwIsRedundant(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().

◆ SCIProwIsRedundant()

SCIP_Bool SCIProwIsRedundant ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns whether the row is unmodifiable and redundant w.r.t. the columns' bounds

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data

Definition at line 6628 of file lp.c.

References FALSE, SCIP_Row::lhs, SCIP_Row::modifiable, NULL, SCIP_Row::rhs, SCIP_Real, SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsInfinity(), and TRUE.

Referenced by SCIPlpRemoveRedundantRows().

◆ SCIProwGetMaxval()

SCIP_Real SCIProwGetMaxval ( SCIP_ROW row,
SCIP_SET set 
)

gets maximal absolute value of row vector coefficients

Parameters
rowLP row
setglobal SCIP settings

Definition at line 6659 of file lp.c.

References SCIP_Row::len, SCIP_Row::maxval, NULL, SCIP_Row::nummaxval, and rowCalcIdxsAndVals().

Referenced by SCIP_DECL_HASHKEYEQ(), SCIP_DECL_HASHKEYVAL(), SCIPcutpoolAddRow(), SCIPcutpoolIsCutNew(), SCIPgetRowMaxCoef(), SCIProwGetLPEfficacy(), SCIProwGetNLPEfficacy(), SCIProwGetRelaxEfficacy(), and SCIProwGetSolEfficacy().

◆ SCIProwGetMinval()

SCIP_Real SCIProwGetMinval ( SCIP_ROW row,
SCIP_SET set 
)

gets minimal absolute value of row vector's non-zero coefficients

Parameters
rowLP row
setglobal SCIP settings

Definition at line 6675 of file lp.c.

References SCIP_Row::len, SCIP_Row::minval, NULL, SCIP_Row::numminval, and rowCalcIdxsAndVals().

Referenced by SCIP_DECL_HASHKEYEQ(), and SCIPgetRowMinCoef().

◆ SCIProwGetMaxidx()

int SCIProwGetMaxidx ( SCIP_ROW row,
SCIP_SET set 
)

gets maximal column index of row entries

Parameters
rowLP row
setglobal SCIP settings

Definition at line 6691 of file lp.c.

References SCIP_Row::len, SCIP_Row::maxidx, NULL, rowCalcIdxsAndVals(), and SCIP_Row::validminmaxidx.

Referenced by SCIPcutpoolAddNewRow().

◆ SCIProwGetMinidx()

int SCIProwGetMinidx ( SCIP_ROW row,
SCIP_SET set 
)

gets minimal column index of row entries

Parameters
rowLP row
setglobal SCIP settings

Definition at line 6707 of file lp.c.

References SCIP_Row::len, SCIP_Row::minidx, NULL, rowCalcIdxsAndVals(), and SCIP_Row::validminmaxidx.

◆ SCIProwGetNumIntCols()

int SCIProwGetNumIntCols ( SCIP_ROW row,
SCIP_SET set 
)

gets number of integral columns in row

Parameters
rowLP row
setglobal SCIP settings

Definition at line 6723 of file lp.c.

References SCIP_Row::len, NULL, SCIP_Row::numintcols, and rowCalcIdxsAndVals().

Referenced by SCIPgetRowNumIntCols(), and SCIPselectCuts().

◆ SCIProwGetLPSolCutoffDistance()

SCIP_Real SCIProwGetLPSolCutoffDistance ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL sol,
SCIP_LP lp 
)

returns row's cutoff distance in the direction of the given primal solution

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data
solsolution to compute direction for cutoff distance; must not be NULL
lpcurrent LP data

Definition at line 6739 of file lp.c.

References SCIP_Row::cols, SCIP_Lp::cols, ensureSoldirectionSize(), SCIP_Stat::lpcount, SCIP_Col::lppos, SCIP_Lp::ncols, SCIP_Row::nlpcols, NULL, SCIP_Col::primsol, SCIP_CALL_ABORT, SCIP_Real, SCIProwGetLPFeasibility(), SCIPsetIsSumZero(), SCIPsolGetVal(), SCIP_Lp::soldirection, SCIP_Lp::validsoldirlp, SCIP_Lp::validsoldirsol, SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIPselectCuts().

◆ SCIProwGetLPEfficacy()

SCIP_Real SCIProwGetLPEfficacy ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp 
)

returns row's efficacy with respect to the current LP solution: e = -feasibility/norm

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data
lpcurrent LP data

Definition at line 6796 of file lp.c.

References eps, SCIP_Row::len, MAX, NULL, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetLPFeasibility(), SCIProwGetMaxval(), SCIProwGetNorm(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().

Referenced by SCIPcutpoolAddNewRow(), SCIPcutpoolSeparate(), SCIPgetCutEfficacy(), SCIProwIsLPEfficacious(), SCIPselectCuts(), SCIPsepastoreApplyCuts(), and SCIPsepastoreRemoveInefficaciousCuts().

◆ SCIProwIsLPEfficacious()

SCIP_Bool SCIProwIsLPEfficacious ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LP lp,
SCIP_Bool  root 
)

returns whether the row's efficacy with respect to the current LP solution is greater than the minimal cut efficacy

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data
lpcurrent LP data
rootshould the root's minimal cut efficacy be used?

Definition at line 6837 of file lp.c.

References SCIP_Real, SCIProwGetLPEfficacy(), and SCIPsetIsEfficacious().

Referenced by SCIPisCutEfficacious().

◆ SCIProwGetSolEfficacy()

SCIP_Real SCIProwGetSolEfficacy ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL sol 
)

returns row's efficacy with respect to the given primal solution: e = -feasibility/norm

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

Definition at line 6853 of file lp.c.

References eps, SCIP_Row::len, MAX, NULL, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetMaxval(), SCIProwGetNorm(), SCIProwGetSolFeasibility(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().

Referenced by SCIPcutpoolSeparate(), SCIPgetCutEfficacy(), and SCIProwIsSolEfficacious().

◆ SCIProwIsSolEfficacious()

SCIP_Bool SCIProwIsSolEfficacious ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat,
SCIP_SOL sol,
SCIP_Bool  root 
)

returns whether the row's efficacy with respect to the given primal solution is greater than the minimal cut efficacy

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data
solprimal CIP solution
rootshould the root's minimal cut efficacy be used?

Definition at line 6896 of file lp.c.

References SCIP_Real, SCIProwGetSolEfficacy(), and SCIPsetIsEfficacious().

Referenced by SCIPisCutEfficacious().

◆ SCIProwGetRelaxEfficacy()

SCIP_Real SCIProwGetRelaxEfficacy ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns row's efficacy with respect to the relaxed solution: e = -feasibility/norm

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data

Definition at line 6912 of file lp.c.

References eps, SCIP_Row::len, MAX, NULL, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetMaxval(), SCIProwGetNorm(), SCIProwGetRelaxFeasibility(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().

Referenced by SCIPsepastoreRemoveInefficaciousCuts().

◆ SCIProwGetNLPEfficacy()

SCIP_Real SCIProwGetNLPEfficacy ( SCIP_ROW row,
SCIP_SET set,
SCIP_STAT stat 
)

returns row's efficacy with respect to the NLP solution: e = -feasibility/norm

Parameters
rowLP row
setglobal SCIP settings
statproblem statistics data

Definition at line 6952 of file lp.c.

References eps, SCIP_Row::len, MAX, NULL, SCIP_Real, SCIPABORT, SCIPerrorMessage, SCIProwGetMaxval(), SCIProwGetNLPFeasibility(), SCIProwGetNorm(), SCIProwGetSumNorm(), and SCIPsetSumepsilon().

Referenced by SCIPsepastoreRemoveInefficaciousCuts().

◆ SCIProwGetDiscreteScalarProduct()

static int SCIProwGetDiscreteScalarProduct ( SCIP_ROW row1,
SCIP_ROW row2 
)
static

returns the discrete scalar product of the coefficient vectors of the two given rows

Parameters
row1first LP row
row2second LP row

Definition at line 7353 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Col::index, SCIP_Row::len, SCIP_Row::lpcolssorted, SCIP_Col::lppos, MAX, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, SCIP_Row::nunlinked, SCIP_Bool, SCIProwSort(), SCIPswapPointers(), and TRUE.

Referenced by SCIProwGetParallelism().

◆ SCIProwGetObjParallelism()

SCIP_Real SCIProwGetObjParallelism ( SCIP_ROW row,
SCIP_SET set,
SCIP_LP lp 
)

gets parallelism of row with objective function: if the returned value is 1, the row is parallel to the objective function, if the value is 0, it is orthogonal to the objective function

Parameters
rowLP row
setglobal SCIP settings
lpcurrent LP data

Definition at line 7788 of file lp.c.

References checkRowObjprod, checkRowSqrnorm, MAX, NULL, SCIP_Row::objprod, SCIP_Lp::objsqrnorm, SCIP_Lp::objsqrnormunreliable, REALABS, SCIP_Real, SCIPlpRecalculateObjSqrNorm(), SCIPsetIsPositive(), SCIPsetIsSumGE(), SCIPsetIsSumLE(), and SCIP_Row::sqrnorm.

Referenced by SCIPgetRowObjParallelism(), and SCIPselectCuts().

◆ SCIProwCatchEvent()

SCIP_RETCODE SCIProwCatchEvent ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTTYPE  eventtype,
SCIP_EVENTHDLR eventhdlr,
SCIP_EVENTDATA eventdata,
int *  filterpos 
)

includes event handler with given data in row's event filter

Parameters
rowrow
blkmemblock memory
setglobal SCIP settings
eventtypeevent type to catch
eventhdlrevent handler to call for the event processing
eventdataevent data to pass to the event handler for the event processing
filterpospointer to store position of event filter entry, or NULL

Definition at line 7821 of file lp.c.

References SCIP_Row::eventfilter, SCIP_Row::name, NULL, SCIP_CALL, SCIP_EVENTTYPE_FORMAT, SCIP_EVENTTYPE_ROWCHANGED, SCIP_OKAY, SCIPeventfilterAdd(), and SCIPsetDebugMsg.

Referenced by SCIPcatchRowEvent().

◆ SCIProwDropEvent()

SCIP_RETCODE SCIProwDropEvent ( SCIP_ROW row,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTTYPE  eventtype,
SCIP_EVENTHDLR eventhdlr,
SCIP_EVENTDATA eventdata,
int  filterpos 
)

deletes event handler with given data from row's event filter

Parameters
rowrow
blkmemblock memory
setglobal SCIP settings
eventtypeevent type mask of dropped event
eventhdlrevent handler to call for the event processing
eventdataevent data to pass to the event handler for the event processing
filterposposition of event filter entry returned by SCIPvarCatchEvent(), or -1

Definition at line 7845 of file lp.c.

References SCIP_Row::eventfilter, SCIP_Row::name, NULL, SCIP_CALL, SCIP_OKAY, SCIPeventfilterDel(), and SCIPsetDebugMsg.

Referenced by SCIPdropRowEvent().

◆ SCIProwMarkNotRemovableLocal()

void SCIProwMarkNotRemovableLocal ( SCIP_ROW row,
SCIP_STAT stat 
)

marks a row to be not removable from the LP in the current node because it became obsolete

Parameters
rowLP row
statproblem statistics

Definition at line 7866 of file lp.c.

References SCIP_Stat::nnodes, NULL, and SCIP_Row::obsoletenode.

Referenced by SCIPmarkRowNotRemovableLocal().

◆ markColDeleted()

static void markColDeleted ( SCIP_COL col)
static

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

Parameters
colcolumn to be marked deleted

Definition at line 7885 of file lp.c.

References SCIP_Col::basisstatus, FALSE, SCIP_Col::farkascoef, SCIP_Col::lpipos, NULL, SCIP_Col::primsol, SCIP_Col::redcost, SCIP_Col::sbdown, SCIP_Col::sbdownvalid, SCIP_Col::sbitlim, SCIP_Col::sbup, SCIP_Col::sbupvalid, SCIP_BASESTAT_ZERO, SCIP_INVALID, SCIP_Col::validfarkaslp, and SCIP_Col::validredcostlp.

Referenced by lpDelColset(), and lpFlushDelCols().

◆ lpFlushDelCols()

◆ computeLPBounds()

static void computeLPBounds ( SCIP_LP lp,
SCIP_SET set,
SCIP_COL col,
SCIP_Real  lpiinf,
SCIP_Real lb,
SCIP_Real ub 
)
static

computes for the given column the lower and upper bound that should be flushed into the LP depending on lazy bounds and diving mode; in diving mode, lazy bounds are ignored, i.e., the bounds are explicitly added to the LP in any case

Parameters
lpcurrent LP data
setglobal SCIP settings
colcolumn to compute bounds for
lpiinfinfinity value if the LP solver
lbpointer to store the new lower bound
ubpointer to store the new upper bound

Definition at line 7958 of file lp.c.

References SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Col::lb, NULL, SCIPlpDiving(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), and SCIP_Col::ub.

Referenced by lpFlushAddCols(), and lpFlushChgCols().

◆ lpFlushAddCols()

◆ markRowDeleted()

static void markRowDeleted ( SCIP_ROW row)
static

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

Parameters
rowrow to be marked deleted

Definition at line 8151 of file lp.c.

References SCIP_Row::activity, SCIP_Row::basisstatus, SCIP_Row::dualfarkas, SCIP_Row::dualsol, SCIP_Row::lpipos, NULL, SCIP_BASESTAT_BASIC, SCIP_INVALID, and SCIP_Row::validactivitylp.

Referenced by lpDelRowset(), and lpFlushDelRows().

◆ lpFlushDelRows()

static SCIP_RETCODE lpFlushDelRows ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set 
)
static

◆ lpFlushAddRows()

◆ lpFlushChgCols()

◆ lpFlushChgRows()

◆ lpCopyIntegrality()

static SCIP_RETCODE lpCopyIntegrality ( SCIP_LP lp,
SCIP_SET set 
)
static

copy integrality information to the LP

Parameters
lpcurrent LP data
setglobal SCIP settings

Definition at line 8611 of file lp.c.

References SCIP_Lp::cols, FALSE, SCIP_Lp::lpi, SCIP_Lp::ncols, NULL, SCIP_CALL, SCIP_OKAY, SCIPcolGetVar(), SCIPlpiSetIntegralityInformation(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPvarIsBinary(), SCIPvarIsIntegral(), and SCIP_Lp::updateintegrality.

Referenced by lpSolveStable().

◆ SCIPlpFlush()

◆ SCIPlpMarkFlushed()

◆ colUpdateAddLP()

static void colUpdateAddLP ( SCIP_COL col,
SCIP_SET set 
)
static

updates link data after addition of column

Parameters
colLP column
setglobal SCIP settings

Definition at line 8849 of file lp.c.

References SCIP_Row::cols, FALSE, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lpcolssorted, SCIP_Col::lppos, SCIP_Row::nlpcols, NULL, rowAddNorms(), SCIP_Col::rows, rowSwapCoefs(), and SCIP_Row::vals.

Referenced by SCIPlpAddCol().

◆ rowUpdateAddLP()

static void rowUpdateAddLP ( SCIP_ROW row)
static

updates link data after addition of row

Parameters
rowLP row

Definition at line 8889 of file lp.c.

References SCIP_Row::cols, colSwapCoefs(), FALSE, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::lprowssorted, SCIP_Col::nlprows, NULL, and SCIP_Col::rows.

Referenced by SCIPlpAddRow().

◆ colUpdateDelLP()

static void colUpdateDelLP ( SCIP_COL col,
SCIP_SET set 
)
static

updates link data after removal of column

Parameters
colLP column
setglobal SCIP settings

Definition at line 8924 of file lp.c.

References SCIP_Row::cols, FALSE, SCIP_Col::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Col::lppos, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, rowDelNorms(), SCIP_Col::rows, rowSwapCoefs(), TRUE, and SCIP_Row::vals.

Referenced by lpDelColset(), and SCIPlpShrinkCols().

◆ rowUpdateDelLP()

static void rowUpdateDelLP ( SCIP_ROW row)
static

updates link data after removal of row

Parameters
rowLP row

Definition at line 8963 of file lp.c.

References SCIP_Row::cols, colSwapCoefs(), FALSE, SCIP_Row::len, SCIP_Col::linkpos, SCIP_Row::linkpos, SCIP_Row::lppos, SCIP_Col::nlprows, SCIP_Col::nonlprowssorted, NULL, and SCIP_Col::rows.

Referenced by lpDelRowset(), and SCIPlpShrinkRows().

◆ allocDiveChgSideArrays()

static SCIP_RETCODE allocDiveChgSideArrays ( SCIP_LP lp,
int  initsize 
)
static
Parameters
lpLP data object
initsizeinitial size of the arrays

Definition at line 8997 of file lp.c.

References BMSallocMemoryArray, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, SCIP_Lp::ndivechgsides, NULL, SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPlpCreate().

◆ reallocDiveChgSideArrays()

static SCIP_RETCODE reallocDiveChgSideArrays ( SCIP_LP lp,
int  minsize,
SCIP_Real  growfact 
)
static
Parameters
lpLP data object
minsizeminimal number of elements
growfactgrowing factor

Definition at line 9019 of file lp.c.

References BMSreallocMemoryArray, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, MAX, SCIP_Lp::ndivechgsides, NULL, SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPlpRecordOldRowSideDive().

◆ freeDiveChgSideArrays()

static void freeDiveChgSideArrays ( SCIP_LP lp)
static

◆ SCIPlpCreate()

◆ SCIPlpFree()

SCIP_RETCODE SCIPlpFree ( SCIP_LP **  lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

frees LP data object

Parameters
lppointer to LP data object
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
eventfilterglobal event filter

Definition at line 9357 of file lp.c.

References BMSfreeMemory, BMSfreeMemoryArrayNull, BMSfreeMemoryNull, freeDiveChgSideArrays(), NULL, SCIP_CALL, SCIP_OKAY, SCIPlpClear(), SCIPlpiFree(), and SCIProwRelease().

Referenced by freeTransform().

◆ SCIPlpReset()

SCIP_RETCODE SCIPlpReset ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

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
lpLP data
blkmemblock memory
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter

Definition at line 9402 of file lp.c.

References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpClear(), SCIPlpFlush(), SCIP_Lp::solisbasic, SCIP_Lp::solved, TRUE, SCIP_Lp::validdegeneracylp, SCIP_Lp::validfarkaslp, SCIP_Lp::validsoldirlp, SCIP_Lp::validsoldirsol, and SCIP_Lp::validsollp.

Referenced by freeReoptSolve(), freeSolve(), and initSolve().

◆ SCIPlpAddCol()

◆ SCIPlpAddRow()

◆ checkLazyColArray()

static void checkLazyColArray ( SCIP_LP lp,
SCIP_SET set 
)
static

method checks if all columns in the lazycols array have at least one lazy bound and also have a counter part in the cols array; furthermore, it is checked if columns in the cols array which have a lazy bound have a counter part in the lazycols array

Parameters
lpLP data
setglobal SCIP settings

Definition at line 9566 of file lp.c.

References SCIP_Lp::cols, FALSE, SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Lp::ncols, SCIP_Lp::nlazycols, NULL, SCIP_Bool, SCIPsetIsInfinity(), and TRUE.

Referenced by lpDelColset(), and SCIPlpShrinkCols().

◆ SCIPlpShrinkCols()

◆ SCIPlpShrinkRows()

SCIP_RETCODE SCIPlpShrinkRows ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
int  newnrows 
)

removes and releases all rows after the given number of rows from the LP

Parameters
lpLP data
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
eventfilterglobal event filter
newnrowsnew number of rows in the LP

Definition at line 9691 of file lp.c.

References checkLinks, SCIP_Row::cols, SCIP_EventFilter::eventmask, FALSE, SCIP_Lp::flushed, SCIP_EventFilter::len, SCIP_Row::len, SCIP_Row::lpdepth, SCIP_Lp::lpifirstchgrow, SCIP_Row::lppos, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, NULL, r, SCIP_Row::removable, SCIP_Lp::rows, rowUpdateDelLP(), SCIP_CALL, SCIP_EVENTTYPE_ROWDELETEDLP, SCIP_OKAY, SCIPeventCreateRowDeletedLP(), SCIPeventqueueAdd(), SCIProwRelease(), SCIProwUnlock(), and SCIPsetDebugMsg.

Referenced by focusnodeToFork(), SCIPlpClear(), SCIPlpEndDive(), SCIPtreeLoadLP(), and treeBacktrackProbing().

◆ SCIPlpClear()

SCIP_RETCODE SCIPlpClear ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

removes all columns and rows from LP, releases all rows

Parameters
lpLP data
blkmemblock memory
setglobal SCIP settings
eventqueueevent queue
eventfilterglobal event filter

Definition at line 9757 of file lp.c.

References SCIP_Lp::diving, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpShrinkCols(), SCIPlpShrinkRows(), and SCIPsetDebugMsg.

Referenced by SCIPlpFree(), SCIPlpReset(), and SCIPtreeLoadLP().

◆ SCIPlpMarkSize()

void SCIPlpMarkSize ( SCIP_LP lp)

remembers number of columns and rows to track the newly added ones

Parameters
lpcurrent LP data

Definition at line 9776 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, SCIP_Lp::ncols, SCIP_Lp::nrows, and NULL.

Referenced by SCIPnodeFocus(), SCIPtreeLoadLP(), and treeCreateProbingNode().

◆ SCIPlpSetSizeMark()

void SCIPlpSetSizeMark ( SCIP_LP lp,
int  nrows,
int  ncols 
)

sets the remembered number of columns and rows to the given values

Parameters
lpcurrent LP data
nrowsnumber of rows to set the size marker to
ncolsnumber of columns to set the size marker to

Definition at line 9788 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, and NULL.

Referenced by treeBacktrackProbing().

◆ SCIPlpGetBasisInd()

SCIP_RETCODE SCIPlpGetBasisInd ( SCIP_LP lp,
int *  basisind 
)

gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1

Parameters
lpLP data
basisindpointer to store basis indices ready to keep number of rows entries

Definition at line 9802 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBasisInd(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPgetLPBasisInd().

◆ SCIPlpGetBase()

SCIP_RETCODE SCIPlpGetBase ( SCIP_LP lp,
int *  cstat,
int *  rstat 
)

gets current basis status for columns and rows; arrays must be large enough to store the basis status

Parameters
lpLP data
cstatarray to store column basis status, or NULL
rstatarray to store row basis status, or NULL

Definition at line 9819 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBase(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

◆ SCIPlpGetBInvRow()

SCIP_RETCODE SCIPlpGetBInvRow ( SCIP_LP lp,
int  r,
SCIP_Real coef,
int *  inds,
int *  ninds 
)

gets a row from the inverse basis matrix B^-1

Parameters
lpLP data
rrow number
coefpointer to store the coefficients of the row
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 9836 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvRow(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPgetLPBInvRow().

◆ SCIPlpGetBInvCol()

SCIP_RETCODE SCIPlpGetBInvCol ( SCIP_LP lp,
int  c,
SCIP_Real coef,
int *  inds,
int *  ninds 
)

gets a column from the inverse basis matrix B^-1

Parameters
lpLP data
ccolumn number of B^-1; this is NOT the number of the column in the LP returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd() to get the array which links the B^-1 column numbers to the row and column numbers of the LP! c must be between 0 and nrows-1, since the basis has the size nrows * nrows
coefpointer to store the coefficients of the column
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 9858 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvCol(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPgetLPBInvCol().

◆ SCIPlpGetBInvARow()

SCIP_RETCODE SCIPlpGetBInvARow ( SCIP_LP lp,
int  r,
SCIP_Real binvrow,
SCIP_Real coef,
int *  inds,
int *  ninds 
)

gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A)

Parameters
lpLP data
rrow number
binvrowrow in B^-1 from prior call to SCIPlpGetBInvRow(), or NULL
coefpointer to store the coefficients of the row
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 9884 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvARow(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPgetLPBInvARow().

◆ SCIPlpGetBInvACol()

SCIP_RETCODE SCIPlpGetBInvACol ( SCIP_LP lp,
int  c,
SCIP_Real coef,
int *  inds,
int *  ninds 
)

gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A), i.e., it computes B^-1 * A_c with A_c being the c'th column of A

Parameters
lpLP data
ccolumn number which can be accessed by SCIPcolGetLPPos()
coefpointer to store the coefficients of the column
indsarray to store the non-zero indices, or NULL
nindspointer to store the number of non-zero indices, or NULL (-1: if we do not store sparsity informations)

Definition at line 9909 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetBInvACol(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPgetLPBInvACol().

◆ SCIPlpSumRows()

SCIP_RETCODE SCIPlpSumRows ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob,
SCIP_Real weights,
SCIP_REALARRAY sumcoef,
SCIP_Real sumlhs,
SCIP_Real sumrhs 
)

calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding LP row are swapped in the summation

Parameters
lpLP data
setglobal SCIP settings
probproblem data
weightsrow weights in row summation
sumcoefarray to store sum coefficients indexed by variables' probindex
sumlhspointer to store the left hand side of the row summation
sumrhspointer to store the right hand side of the row summation

Definition at line 9933 of file lp.c.

References SCIP_Row::cols, SCIP_Row::cols_index, SCIP_Row::constant, FALSE, SCIP_Row::len, SCIP_Row::lhs, SCIP_Lp::nrows, NULL, SCIP_Prob::nvars, r, SCIP_Row::rhs, SCIP_Lp::rows, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIPrealarrayClear(), SCIPrealarrayExtend(), SCIPrealarrayIncVal(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetCol(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIP_Row::vals, SCIP_Col::var, and SCIP_Col::var_probindex.

Referenced by SCIPsumLPRows().

◆ SCIPlpGetState()

SCIP_RETCODE SCIPlpGetState ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_LPISTATE **  lpistate 
)

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

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

Definition at line 10019 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetState(), and SCIP_Lp::solved.

Referenced by forkCreate(), forkFree(), probingnodeUpdate(), and SCIPtreeStartProbing().

◆ SCIPlpSetState()

SCIP_RETCODE SCIPlpSetState ( SCIP_LP lp,
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 LP state (like basis information) into solver

Parameters
lpLP 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 10043 of file lp.c.

References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_CALL, SCIP_OKAY, SCIPlpFlush(), SCIPlpiHasStateBasis(), SCIPlpiSetState(), SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPlpEndDive(), SCIPtreeEndProbing(), SCIPtreeLoadLPState(), and SCIPtreeLoadProbingLPState().

◆ SCIPlpFreeState()

SCIP_RETCODE SCIPlpFreeState ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_LPISTATE **  lpistate 
)

frees LP state information

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

Definition at line 10085 of file lp.c.

References SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiFreeState().

Referenced by forkReleaseLPIState(), probingnodeFree(), probingnodeUpdate(), SCIPlpEndDive(), SCIPtreeEndProbing(), SCIPtreeSetProbingLPState(), and subrootReleaseLPIState().

◆ SCIPlpGetNorms()

SCIP_RETCODE SCIPlpGetNorms ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_LPINORMS **  lpinorms 
)

stores pricing norms into LP norms object

Parameters
lpLP data
blkmemblock memory
lpinormspointer to LP pricing norms information

Definition at line 10102 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, NULL, SCIP_CALL, SCIP_OKAY, SCIPlpiGetNorms(), and SCIP_Lp::solved.

Referenced by probingnodeUpdate(), and SCIPtreeStartProbing().

◆ SCIPlpSetNorms()

SCIP_RETCODE SCIPlpSetNorms ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_LPINORMS lpinorms 
)

loads pricing norms from LP norms object into solver

Parameters
lpLP data
blkmemblock memory
lpinormsLP pricing norms information

Definition at line 10126 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiSetNorms().

Referenced by SCIPtreeEndProbing(), and SCIPtreeLoadProbingLPState().

◆ SCIPlpFreeNorms()

SCIP_RETCODE SCIPlpFreeNorms ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_LPINORMS **  lpinorms 
)

frees pricing norms information

Parameters
lpLP data
blkmemblock memory
lpinormspointer to LP pricing norms information

Definition at line 10146 of file lp.c.

References SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiFreeNorms().

Referenced by probingnodeFree(), probingnodeUpdate(), SCIPtreeEndProbing(), and SCIPtreeSetProbingLPState().

◆ SCIPlpGetCutoffbound()

SCIP_Real SCIPlpGetCutoffbound ( SCIP_LP lp)

return the current cutoff bound of the lp

Parameters
lpcurrent LP data

Definition at line 10160 of file lp.c.

References SCIP_Lp::cutoffbound, and NULL.

Referenced by SCIPreoptCheckCutoff().

◆ SCIPlpSetCutoffbound()

SCIP_RETCODE SCIPlpSetCutoffbound ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob,
SCIP_Real  cutoffbound 
)

◆ SCIPlpGetFeastol()

SCIP_Real SCIPlpGetFeastol ( SCIP_LP lp)

gets current primal feasibility tolerance of LP solver

Parameters
lpcurrent LP data

Definition at line 10215 of file lp.c.

References SCIP_Lp::feastol, and NULL.

Referenced by SCIPgetLPFeastol(), and SCIPsetExitsolPlugins().

◆ SCIPlpSetFeastol()

void SCIPlpSetFeastol ( SCIP_LP lp,
SCIP_SET set,
SCIP_Real  newfeastol 
)

sets primal feasibility tolerance of LP solver

Parameters
lpcurrent LP data
setglobal SCIP settings
newfeastolnew primal feasibility tolerance for LP

Definition at line 10225 of file lp.c.

References FALSE, SCIP_Lp::feastol, SCIP_Lp::lpsolstat, NULL, SCIP_LPSOLSTAT_NOTSOLVED, SCIPsetDebugMsg, and SCIP_Lp::solved.

Referenced by SCIPlpResetFeastol(), and SCIPsetLPFeastol().

◆ SCIPlpResetFeastol()

void SCIPlpResetFeastol ( SCIP_LP lp,
SCIP_SET set 
)

resets primal feasibility tolerance of LP solver

Sets primal feasibility tolerance to min of numerics/lpfeastolfactor * numerics/feastol and relaxfeastol.

Parameters
lpcurrent LP data
setglobal SCIP settings

Definition at line 10250 of file lp.c.

References NULL, SCIP_INVALID, SCIPlpSetFeastol(), SCIPsetDebugMsg, SCIPsetFeastol(), SCIPsetLPFeastolFactor(), and SCIPsetRelaxfeastol().

Referenced by SCIPlpCreate(), SCIPresetLPFeastol(), SCIPsetExitsolPlugins(), and solveNode().

◆ lpalgoName()

static const char* lpalgoName ( SCIP_LPALGO  lpalgo)
static

returns the name of the given LP algorithm

Parameters
lpalgoLP algorithm

Definition at line 10267 of file lp.c.

References SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIPABORT, and SCIPerrorMessage.

Referenced by ignoreInstability(), lpAlgorithm(), lpSolve(), and lpSolveStable().

◆ lpPrimalSimplex()

static SCIP_RETCODE lpPrimalSimplex ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_Bool  resolve,
SCIP_Bool  keepsol,
SCIP_Bool  instable,
SCIP_Bool lperror 
)
static

calls LPI to perform primal simplex, measures time and counts iterations, gets basis feasibility status

Parameters
lpcurrent LP data
setglobal SCIP settings
statproblem statistics
resolveis this a resolving call (starting with feasible basis)?
keepsolshould the old LP solution be kept if no iterations were performed?
instableis this a resolving call to avoid instable LPs?
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 10290 of file lp.c.

References SCIP_Lp::diving, SCIP_Stat::divinglptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpidualfeastol, SCIP_Lp::lpifastmip, SCIP_Lp::lpifeastol, SCIP_Lp::lpifromscratch, SCIP_Lp::lpiobjlim, SCIP_Lp::lpipresolving, SCIP_Lp::lpiscaling, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Stat::nprimallps, SCIP_Lp::nrows, NULL, SCIP_Stat::primallptime, SCIP_Lp::probing, SCIP_Stat::resolveinstablelptime, SCIP_CALL, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_LPERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPlpGetIterations(), SCIPlpiSolvePrimal(), SCIPlpWrite(), SCIPsetDebugMsg, SCIPsnprintf(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.

Referenced by lpAlgorithm().

◆ lpDualSimplex()

static SCIP_RETCODE lpDualSimplex ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_Bool  resolve,
SCIP_Bool  keepsol,
SCIP_Bool  instable,
SCIP_Bool lperror 
)
static

calls LPI to perform dual simplex, measures time and counts iterations

Parameters
lpcurrent LP data
setglobal SCIP settings
statproblem statistics
resolveis this a resolving call (starting with feasible basis)?
keepsolshould the old LP solution be kept if no iterations were performed?
instableis this a resolving call to avoid instable LPs?
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 10448 of file lp.c.

References SCIP_Lp::diving, SCIP_Stat::divinglptime, SCIP_Stat::duallptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpidualfeastol, SCIP_Lp::lpifastmip, SCIP_Lp::lpifeastol, SCIP_Lp::lpifromscratch, SCIP_Lp::lpiobjlim, SCIP_Lp::lpipresolving, SCIP_Lp::lpiscaling, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nduallps, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, NULL, SCIP_Lp::probing, SCIP_Stat::resolveinstablelptime, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPERROR, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPlpGetIterations(), SCIPlpiSolveDual(), SCIPlpWrite(), SCIPsetDebugMsg, SCIPsnprintf(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.

Referenced by lpAlgorithm().

◆ lpLexDualSimplex()

static SCIP_RETCODE lpLexDualSimplex ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_Bool  resolve,
SCIP_Bool  keepsol,
SCIP_Bool lperror 
)
static

calls LPI to perform lexicographic dual simplex to find a lexicographically minimal optimal solution, measures time and counts iterations

We follow the approach of the following paper to find a lexicographically minimal optimal solution:

Zanette, Fischetti, Balas
Can pure cutting plane algorithms work?
IPCO 2008, Bertinoro, Italy.

We do, however, not aim for the exact lexicographically minimal optimal solutions, but perform a heuristic, i.e., we limit the number of components which are minimized.

More precisely, we first solve the problem with the dual simplex algorithm. Then we fix those nonbasic variables to their current value (i.e., one of the bounds except maybe for free variables) that have nonzero reduced cost. This fixes the objective function value, because only pivots that will not change the objective are allowed afterwards.

Then the not yet fixed variables are considered in turn. If they are at their lower bounds and nonbasic, they are fixed to this bound, since their value cannot be decreased further. Once a candidate is found, we set the objective to minimize this variable. We run the primal simplex algorithm (since the objective is changed the solution is not dual feasible anymore; if variables out of the basis have been fixed to their lower bound, the basis is also not primal feasible anymore). After the optimization, we again fix nonbasic variables that have nonzero reduced cost. We then choose the next variable and iterate.

We stop the process once we do not find candidates or have performed a maximum number of iterations.

Parameters
lpcurrent LP data
setglobal SCIP settings
statproblem statistics
resolveis this a resolving call (starting with feasible basis)?
keepsolshould the old LP solution be kept if no iterations were performed?
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 10639 of file lp.c.

References SCIP_Lp::diving, SCIP_Stat::divinglptime, SCIP_Stat::duallptime, FALSE, SCIP_Lp::flushed, SCIP_Lp::lastlpalgo, SCIP_Stat::lexduallptime, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpifromscratch, SCIP_Lp::ncols, SCIP_Stat::ndivinglps, SCIP_Stat::nduallps, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, NULL, SCIP_Lp::probing, r, SCIP_BASESTAT_BASIC, SCIP_BASESTAT_LOWER, SCIP_BASESTAT_UPPER, SCIP_BASESTAT_ZERO, SCIP_Bool, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPERROR, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPclockGetTime(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPlpGetIterations(), SCIPlpiChgBounds(), SCIPlpiChgObj(), SCIPlpiChgSides(), SCIPlpiGetBase(), SCIPlpiGetBounds(), SCIPlpiGetObj(), SCIPlpiGetSides(), SCIPlpiGetSol(), SCIPlpiIsOptimal(), SCIPlpiSolveDual(), SCIPlpiSolvePrimal(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsDualfeasZero(), SCIPsetIsFeasEQ(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPsetIsInfinity(), SCIPsetIsIntegral(), SCIPstatAdd, SCIPstatIncrement, SCIPstatUpdate, SCIP_Lp::solisbasic, SCIP_Lp::strongbranchprobing, SCIP_Stat::strongbranchtime, TRUE, SCIP_Lp::validfarkaslp, and SCIP_Lp::validsollp.

Referenced by lpAlgorithm().

◆ lpBarrier()

static SCIP_RETCODE lpBarrier ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_Bool  crossover,
SCIP_Bool  keepsol,
SCIP_Bool lperror 
)
static

◆ lpAlgorithm()

static SCIP_RETCODE lpAlgorithm ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_LPALGO  lpalgo,
SCIP_Bool  resolve,
SCIP_Bool  keepsol,
SCIP_Bool  instable,
SCIP_Bool timelimit,
SCIP_Bool lperror 
)
static

solves the LP with the given algorithm

Parameters
lpcurrent LP data
setglobal SCIP settings
statproblem statistics
lpalgoLP algorithm that should be applied
resolveis this a resolving call (starting with feasible basis)?
keepsolshould the old LP solution be kept if no iterations were performed?
instableis this a resolving call to avoid instable LPs?
timelimitpointer to store whether the time limit was hit
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 11374 of file lp.c.

References SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, SCIP_Lp::installing, lpalgoName(), lpBarrier(), lpDualSimplex(), SCIP_Lp::lpi, lpLexDualSimplex(), lpPrimalSimplex(), lpSetRealpar(), SCIP_Stat::maxdepth, NULL, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_LPPAR_LPTILIM, SCIP_OKAY, SCIP_Real, SCIPclockGetTime(), SCIPerrorMessage, SCIPlpiGetSolFeasibility(), SCIPlpiInfinity(), SCIPsetDebugMsg, SCIP_Stat::solvingtime, and TRUE.

Referenced by lpSolveStable().

◆ lpNumericalTroubleMessage()

static void lpNumericalTroubleMessage ( 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

Definition at line 11466 of file lp.c.

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

Referenced by ignoreInstability(), lpSolveStable(), SCIPlpEndDive(), and SCIPlpSolveAndEval().

◆ ignoreInstability()

static SCIP_RETCODE ignoreInstability ( SCIP_LP lp,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_LPALGO  lpalgo,
SCIP_Bool success 
)
static
Parameters
lpcurrent LP data
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
lpalgoLP algorithm that should be applied
successwas instability successfully ignored

Definition at line 11519 of file lp.c.

References SCIP_Lp::dualfeasible, lpalgoName(), SCIP_Lp::lpi, lpNumericalTroubleMessage(), NULL, SCIP_Lp::primalchecked, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_FULL, SCIPlpiIgnoreInstability(), and TRUE.

Referenced by lpSolveStable().

◆ lpSolveStable()

static SCIP_RETCODE lpSolveStable ( SCIP_LP lp,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_LPALGO  lpalgo,
int  itlim,
int  harditlim,
SCIP_Bool  resolve,
int  fastmip,
SCIP_Bool  tightprimfeastol,
SCIP_Bool  tightdualfeastol,
SCIP_Bool  fromscratch,
SCIP_Bool  keepsol,
SCIP_Bool timelimit,
SCIP_Bool lperror 
)
static

solves the LP with the given LP algorithm, and tries to resolve numerical problems

Parameters
lpcurrent LP data
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
probproblem data
lpalgoLP algorithm that should be applied
itlimmaximal number of LP iterations to perform in first LP calls (before solving from scratch), or -1 for no limit
harditlimmaximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit
resolveis this a resolving call (starting with feasible basis)?
fastmipwhich FASTMIP setting of LP solver should be used?
tightprimfeastolshould a tighter primal feasibility tolerance be used?
tightdualfeastolshould a tighter dual feasibility tolerance be used?
fromscratchshould the LP be solved from scratch without using current basis?
keepsolshould the old LP solution be kept if no iterations were performed?
timelimitpointer to store whether the time limit was hit
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 11548 of file lp.c.

References SCIP_Lp::cutoffbound, SCIP_Lp::diving, FALSE, SCIP_Lp::feastol, FEASTOLTIGHTFAC, SCIP_Lp::flushed, getFiniteLooseObjval(), ignoreInstability(), SCIP_Lp::looseobjvalinf, lpalgoName(), lpAlgorithm(), lpCopyIntegrality(), SCIP_Lp::lpi, SCIP_Lp::lpihaspolishing, lpNumericalTroubleMessage(), lpSetBarrierconvtol(), lpSetConditionLimit(), lpSetDualfeastol(), lpSetFastmip(), lpSetFeastol(), lpSetFromscratch(), lpSetIterationLimit(), lpSetLPInfo(), lpSetMarkowitz(), lpSetObjlim(), lpSetPresolving(), lpSetPricingChar(), lpSetRandomseed(), lpSetRefactorInterval(), lpSetRowrepswitch(), lpSetScaling(), lpSetSolutionPolishing(), lpSetThreads(), lpSetTiming(), SCIP_Stat::nnodes, NULL, SCIP_Lp::probing, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_OKAY, SCIP_UNUSED, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIPerrorMessage, SCIPlpiIsIterlimExc(), SCIPlpiIsStable(), SCIPsetBarrierconvtol(), SCIPsetDualfeastol(), SCIPsetInitializeRandomSeed(), SCIPsetIsInfinity(), SCIP_Lp::strongbranchprobing, TRUE, and SCIP_Lp::updateintegrality.

Referenced by lpSolve().

◆ adjustLPobjval()

static void adjustLPobjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr 
)
static

adjust the LP objective value if it is greater/less than +/- SCIPsetInfinity()

Parameters
lpcurrent LP data
setglobal SCIP settings
messagehdlrmessage handler

Definition at line 11963 of file lp.c.

References SCIP_Lp::adjustlpval, SCIP_Lp::lpobjval, NULL, SCIPmessagePrintWarning(), SCIPsetInfinity(), SCIPsetIsInfinity(), and TRUE.

Referenced by lpSolve().

◆ lpSolve()

static SCIP_RETCODE lpSolve ( SCIP_LP lp,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_LPALGO  lpalgo,
int  resolveitlim,
int  harditlim,
SCIP_Bool  needprimalray,
SCIP_Bool  needdualray,
SCIP_Bool  resolve,
int  fastmip,
SCIP_Bool  tightprimfeastol,
SCIP_Bool  tightdualfeastol,
SCIP_Bool  fromscratch,
SCIP_Bool  keepsol,
SCIP_Bool lperror 
)
static

solves the LP with the given algorithm and evaluates return status

Parameters
lpcurrent LP data
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
probproblem data
lpalgoLP algorithm that should be applied
resolveitlimmaximal number of LP iterations to perform in resolving calls, or -1 for no limit
harditlimmaximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit
needprimalrayif the LP is unbounded, do we need a primal ray?
needdualrayif the LP is infeasible, do we need a dual ray?
resolveis this a resolving call (starting with feasible basis)?
fastmipwhich FASTMIP setting of LP solver should be used?
tightprimfeastolshould a tighter primal feasibility tolerance be used?
tightdualfeastolshould a tighter dual feasibility tolerance be used?
fromscratchshould the LP be solved from scratch without using current basis?
keepsolshould the old LP solution be kept if no iterations were performed?
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 11994 of file lp.c.

References adjustLPobjval(), checkLinks, SCIP_Lp::cutoffbound, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::lastlpalgo, lpalgoName(), lpCutoffDisabled, SCIP_Lp::lpi, SCIP_Lp::lpiobjlim, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, lpSolveStable(), SCIP_Stat::nlps, SCIP_Stat::nnodes, NULL, SCIP_Lp::primalfeasible, REALABS, SCIP_Bool, SCIP_CALL, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, 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_VERBLEVEL_FULL, SCIPerrorMessage, SCIPlpiExistsPrimalRay(), SCIPlpiGetInternalStatus(), SCIPlpiGetObjval(), SCIPlpiHasDualRay(), SCIPlpiInfinity(), SCIPlpiIsDualFeasible(), SCIPlpiIsIterlimExc(), SCIPlpiIsObjlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsPrimalFeasible(), SCIPlpiIsPrimalInfeasible(), SCIPlpiIsPrimalUnbounded(), SCIPlpiIsTimelimExc(), SCIPmessagePrintVerbInfo(), SCIPsetDebugMsg, SCIPsetInfinity(), SCIPsetIsGE(), SCIPsetIsInfinity(), SCIPsetIsLE(), SCIP_Lp::solved, and TRUE.

Referenced by lpFlushAndSolve(), and SCIPlpSolveAndEval().

◆ lpFlushAndSolve()

static SCIP_RETCODE lpFlushAndSolve ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_PROB prob,
SCIP_EVENTQUEUE eventqueue,
int  resolveitlim,
int  harditlim,
SCIP_Bool  needprimalray,
SCIP_Bool  needdualray,
int  fastmip,
SCIP_Bool  tightprimfeastol,
SCIP_Bool  tightdualfeastol,
SCIP_Bool  fromscratch,
SCIP_Bool  keepsol,
SCIP_Bool lperror 
)
static

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

Parameters
lpcurrent LP data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
probproblem data
eventqueueevent queue
resolveitlimmaximal number of LP iterations to perform in resolving calls, or -1 for no limit
harditlimmaximal number of LP iterations to perform (hard limit for all LP calls), or -1 for no limit
needprimalrayif the LP is unbounded, do we need a primal ray?
needdualrayif the LP is infeasible, do we need a dual ray?
fastmipwhich FASTMIP setting of LP solver should be used?
tightprimfeastolshould a tighter primal feasibility tolerance be used?
tightdualfeastolshould a tighter dual feasibility tolerance be used?
fromscratchshould the LP be solved from scratch without using current basis?
keepsolshould the old LP solution be kept if no iterations were performed?
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 12173 of file lp.c.

References SCIP_Lp::dualfeasible, SCIP_Lp::flushaddedcols, SCIP_Lp::flushdeletedcols, lpSolve(), NULL, SCIP_Lp::primalfeasible, SCIP_Bool, SCIP_CALL, SCIP_LPALGO_BARRIER, SCIP_LPALGO_BARRIERCROSSOVER, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIPerrorMessage, SCIPlpFlush(), SCIPsetDebugMsg, SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by SCIPlpSolveAndEval().

◆ checkLazyBounds()

static void checkLazyBounds ( SCIP_LP lp,
SCIP_SET set 
)
static

checks if the lazy bounds are valid

Parameters
lpLP data
setglobal SCIP settings

Definition at line 12262 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Lp::nlazycols, SCIP_Col::primsol, SCIPsetIsFeasGE(), SCIPsetIsFeasLE(), and SCIPsetIsInfinity().

Referenced by SCIPlpSolveAndEval().

◆ updateLazyBounds()

static SCIP_RETCODE updateLazyBounds ( SCIP_LP lp,
SCIP_SET set 
)
static

marks all lazy columns to be changed; this is needed for reloading/removing bounds of these columns before and after diving

Parameters
lpLP data
setglobal SCIP settings

Definition at line 12289 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::divinglazyapplied, SCIP_Col::flushedlb, SCIP_Col::flushedub, insertColChgcols(), SCIP_Lp::lazycols, SCIP_Col::lazylb, SCIP_Col::lazyub, SCIP_Col::lb, SCIP_Col::lbchanged, SCIP_Lp::lpi, SCIP_Lp::nlazycols, SCIP_CALL, SCIP_OKAY, SCIPlpiInfinity(), SCIPsetDebugMsg, SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), TRUE, SCIP_Col::ub, and SCIP_Col::ubchanged.

Referenced by SCIPlpEndDive(), and SCIPlpSolveAndEval().

◆ lpGetResolveItlim()

static int lpGetResolveItlim ( SCIP_SET set,
SCIP_STAT stat,
int  itlim 
)
static

returns the iteration limit for an LP resolving call

Parameters
setglobal SCIP settings
statdynamic problem statistics
itlimhard iteration limit

Definition at line 12351 of file lp.c.

References MAX, SCIP_Stat::nlpiterations, SCIP_Stat::nlps, SCIP_Stat::nrootlpiterations, SCIP_Stat::nrootlps, and SCIP_Real.

Referenced by SCIPlpSolveAndEval().

◆ SCIPlpSolveAndEval()

SCIP_RETCODE SCIPlpSolveAndEval ( SCIP_LP lp,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
BMS_BLKMEM blkmem,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_PROB prob,
SCIP_Longint  itlim,
SCIP_Bool  limitresolveiters,
SCIP_Bool  aging,
SCIP_Bool  keepsol,
SCIP_Bool lperror 
)

solves the LP with simplex algorithm, and copy the solution into the column's data

Parameters
lpLP data
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory buffers
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter
probproblem data
itlimmaximal number of LP iterations to perform, or -1 for no limit
limitresolveitersshould LP iterations for resolving calls be limited? (limit is computed within the method w.r.t. the average LP iterations)
agingshould aging and removal of obsolete cols/rows be applied?
keepsolshould the old LP solution be kept if no iterations were performed?
lperrorpointer to store whether an unresolved LP error occurred

Definition at line 12371 of file lp.c.

References checkLazyBounds(), SCIP_Lp::cutoffbound, SCIP_Lp::diving, SCIP_Lp::divinglazyapplied, SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, FALSE, SCIP_Lp::flushaddedcols, SCIP_Lp::flushdeletedcols, SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::lastlpalgo, lpCutoffDisabled, lpFlushAndSolve(), lpGetResolveItlim(), SCIP_Lp::lpi, SCIP_Lp::lpifromscratch, SCIP_Lp::lpihasfastmip, SCIP_Lp::lpiobjlim, lpNumericalTroubleMessage(), SCIP_Lp::lpobjval, lpSetFromscratch(), SCIP_Lp::lpsolstat, lpSolve(), SCIP_Stat::nclockskipsleft, SCIP_Lp::ncols, SCIP_Lp::nlazycols, SCIP_Stat::nlps, SCIP_Stat::nnodes, SCIP_Lp::nrows, NULL, SCIP_Prob::nvars, SCIP_Lp::primalchecked, SCIP_Lp::primalfeasible, SCIP_Lp::probing, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_Longint, SCIP_LPALGO_DUALSIMPLEX, SCIP_LPALGO_PRIMALSIMPLEX, 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_Real, SCIP_STATUS_TIMELIMIT, SCIP_UNUSED, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIPerrorMessage, SCIPlpFlush(), SCIPlpGetDualfarkas(), SCIPlpGetLPI(), SCIPlpGetSol(), SCIPlpGetSolstat(), SCIPlpGetUnboundedSol(), SCIPlpiGetObjval(), SCIPlpiHasDualRay(), SCIPlpiInfinity(), SCIPlpiIsObjlimExc(), SCIPlpRemoveNewObsoletes(), SCIPlpUpdateAges(), SCIPmessagePrintVerbInfo(), SCIPmessagePrintWarning(), SCIPprobAllColsInLP(), SCIPsetDebugMsg, SCIPsetGetCharParam(), SCIPsetInfinity(), SCIPsetIsFeasNegative(), SCIPsetIsGE(), SCIPsetIsLT(), SCIPsetSetCharParam(), SCIPsolveIsStopped(), SCIP_Lp::solved, SCIP_Stat::status, TRUE, and updateLazyBounds().

Referenced by focusnodeToFork(), priceAndCutLoop(), SCIPlpEndDive(), SCIPpriceLoop(), SCIPsolveDiveLP(), SCIPtreeEndProbing(), separationRoundResolveLP(), solveNodeInitialLP(), solveNodeLP(), and solveProbingLP().

◆ SCIPlpGetSolstat()

◆ SCIPlpGetObjval()

SCIP_Real SCIPlpGetObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)

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
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 13063 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Lp::looseobjvalinf, SCIP_Lp::lpobjval, SCIP_Lp::nloosevars, NULL, recomputeLooseObjectiveValue(), SCIP_INVALID, SCIPsetInfinity(), SCIPsetIsInfinity(), and SCIP_Lp::solved.

Referenced by addCurrentSolution(), analyzeStrongbranch(), enforceConstraints(), forkCreate(), forkFree(), priceAndCutLoop(), propAndSolve(), SCIPcolGetStrongbranch(), SCIPcolGetStrongbranches(), SCIPgetLPObjval(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPlpSetCutoffbound(), SCIPnodeUpdateLowerboundLP(), SCIPprobUpdateBestRootSol(), SCIPsolLinkLPSol(), SCIPsolveCIP(), solveNode(), solveNodeInitialLP(), solveNodeLP(), and updatePseudocost().

◆ SCIPlpGetColumnObjval()

SCIP_Real SCIPlpGetColumnObjval ( SCIP_LP lp)

gets part of objective value of current LP that results from COLUMN variables only

Parameters
lpcurrent LP data

Definition at line 13091 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpobjval, NULL, SCIP_INVALID, and SCIP_Lp::solved.

Referenced by SCIPgetLPColumnObjval(), SCIPlpStoreRootObjval(), and SCIPprobStoreRootSol().

◆ SCIPlpGetLooseObjval()

SCIP_Real SCIPlpGetLooseObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)

gets part of objective value of current LP that results from LOOSE variables only

Parameters
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 13102 of file lp.c.

References SCIP_Lp::flushed, getFiniteLooseObjval(), SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, NULL, SCIP_INVALID, SCIPsetInfinity(), and SCIP_Lp::solved.

Referenced by performStrongbranchWithPropagation(), SCIPgetLPLooseObjval(), SCIPlpStoreRootObjval(), and SCIPsolLinkLPSol().

◆ SCIPlpStoreRootObjval()

void SCIPlpStoreRootObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)

remembers the current LP objective value as root solution value

Parameters
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 13122 of file lp.c.

References NULL, SCIP_Lp::rootlooseobjval, SCIP_Lp::rootlpobjval, SCIPlpGetColumnObjval(), and SCIPlpGetLooseObjval().

Referenced by SCIPprobStoreRootSol().

◆ SCIPlpInvalidateRootObjval()

void SCIPlpInvalidateRootObjval ( SCIP_LP lp)

invalidates the root LP solution value

Parameters
lpcurrent LP data

Definition at line 13135 of file lp.c.

References NULL, SCIP_Lp::rootlooseobjval, SCIP_Lp::rootlpobjval, and SCIP_INVALID.

Referenced by freeReoptSolve(), and freeSolve().

◆ SCIPlpRecomputeLocalAndGlobalPseudoObjval()

◆ SCIPlpGetGlobalPseudoObjval()

SCIP_Real SCIPlpGetGlobalPseudoObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)

gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective function) global bound

Parameters
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 13214 of file lp.c.

References SCIP_Lp::glbpseudoobjval, SCIP_Lp::glbpseudoobjvalid, SCIP_Lp::glbpseudoobjvalinf, NULL, recomputeGlbPseudoObjectiveValue(), SCIPsetInfinity(), and SCIPsetIsInfinity().

Referenced by SCIPgetGlobalPseudoObjval(), and solveNode().

◆ SCIPlpGetPseudoObjval()

SCIP_Real SCIPlpGetPseudoObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob 
)

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
lpcurrent LP data
setglobal SCIP settings
probproblem data

Definition at line 13246 of file lp.c.

References NULL, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, recomputePseudoObjectiveValue(), SCIPsetInfinity(), and SCIPsetIsInfinity().

Referenced by applyBounding(), enforceConstraints(), SCIPconflictAnalyzePseudo(), SCIPgetPseudoObjval(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPprimalHeuristics(), SCIPsolLinkPseudoSol(), and solveNode().

◆ SCIPlpGetModifiedPseudoObjval()

SCIP_Real SCIPlpGetModifiedPseudoObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_PROB prob,
SCIP_VAR var,
SCIP_Real  oldbound,
SCIP_Real  newbound,
SCIP_BOUNDTYPE  boundtype 
)

gets pseudo objective value, if a bound of the given variable would be modified in the given way

Parameters
lpcurrent LP data
setglobal SCIP settings
probproblem data
varproblem variable
oldboundold value for bound
newboundnew value for bound
boundtypetype of bound: lower or upper bound

Definition at line 13276 of file lp.c.

References getFinitePseudoObjval(), SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_Real, SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetBestBoundType(), and SCIPvarGetObj().

Referenced by SCIPnodeAddBoundinfer().

◆ SCIPlpGetModifiedProvedPseudoObjval()

SCIP_Real SCIPlpGetModifiedProvedPseudoObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldbound,
SCIP_Real  newbound,
SCIP_BOUNDTYPE  boundtype 
)

gets pseudo objective value, if a bound of the given variable would be modified in the given way; perform calculations with interval arithmetic to get an exact lower bound

Parameters
lpcurrent LP data
setglobal SCIP settings
varproblem variable
oldboundold value for bound
newboundnew value for bound
boundtypetype of bound: lower or upper bound

Definition at line 13316 of file lp.c.

References SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_Real, SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSub(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsZero(), SCIPvarGetBestBoundType(), and SCIPvarGetObj().

Referenced by SCIPnodeAddBoundinfer().

◆ getObjvalDeltaObj()

static void getObjvalDeltaObj ( SCIP_SET set,
SCIP_Real  oldobj,
SCIP_Real  newobj,
SCIP_Real  lb,
SCIP_Real  ub,
SCIP_Real 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 13374 of file lp.c.

References REALABS, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsetIsNegative(), and SCIPsetIsPositive().

Referenced by SCIPlpUpdateVarObj().

◆ getObjvalDeltaLb()

static void getObjvalDeltaLb ( SCIP_SET set,
SCIP_Real  obj,
SCIP_Real  oldlb,
SCIP_Real  newlb,
SCIP_Real deltaval,
int *  deltainf 
)
static

compute the objective delta due the new lower bound

Parameters
setglobal SCIP settings
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 13505 of file lp.c.

References REALABS, SCIPsetIsInfinity(), and SCIPsetIsPositive().

Referenced by SCIPlpUpdateVarLb(), and SCIPlpUpdateVarLbGlobal().

◆ getObjvalDeltaUb()

static void getObjvalDeltaUb ( SCIP_SET set,
SCIP_Real  obj,
SCIP_Real  oldub,
SCIP_Real  newub,
SCIP_Real deltaval,
int *  deltainf 
)
static

compute the objective delta due the new upper bound

Parameters
setglobal SCIP settings
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 13546 of file lp.c.

References REALABS, SCIPsetIsInfinity(), and SCIPsetIsNegative().

Referenced by SCIPlpUpdateVarUb(), and SCIPlpUpdateVarUbGlobal().

◆ lpUpdateObjval()

static void lpUpdateObjval ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  deltaval,
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
lpcurrent LP data
setglobal SCIP settings
varproblem variable that changed
deltavaldelta 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 13587 of file lp.c.

References FALSE, SCIP_Lp::glbpseudoobjval, SCIP_Lp::glbpseudoobjvalid, SCIP_Lp::glbpseudoobjvalinf, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalid, SCIP_Lp::looseobjvalinf, NULL, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalid, SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_Lp::relglbpseudoobjval, SCIP_Lp::rellooseobjval, SCIP_Lp::relpseudoobjval, SCIP_VARSTATUS_LOOSE, SCIPsetIsUpdateUnreliable(), SCIPvarGetStatus(), and TRUE.

Referenced by lpUpdateVarColumn(), lpUpdateVarLoose(), SCIPlpUpdateVarLb(), SCIPlpUpdateVarLbGlobal(), SCIPlpUpdateVarObj(), SCIPlpUpdateVarUb(), and SCIPlpUpdateVarUbGlobal().

◆ lpUpdateVarProved()

static SCIP_RETCODE lpUpdateVarProved ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldobj,
SCIP_Real  oldlb,
SCIP_Real  oldub,
SCIP_Real  newobj,
SCIP_Real  newlb,
SCIP_Real  newub 
)
static

updates current pseudo and loose objective values for a change in a variable's objective value or bounds; pseudo objective value is calculated with interval arithmetics to get a proved lower bound

Parameters
lpcurrent LP data
setglobal SCIP settings
varproblem variable that changed
oldobjold objective value of variable
oldlbold objective value of variable
oldubold objective value of variable
newobjnew objective value of variable
newlbnew objective value of variable
newubnew objective value of variable

Definition at line 13669 of file lp.c.

References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, NULL, SCIP_Lp::pseudoobjval, SCIP_Lp::pseudoobjvalinf, REALABS, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPerrorMessage, SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSub(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPvarGetProbindex(), and SCIPvarGetStatus().

Referenced by SCIPlpUpdateVarLb(), SCIPlpUpdateVarObj(), and SCIPlpUpdateVarUb().

◆ SCIPlpUpdateVarObj()

SCIP_RETCODE SCIPlpUpdateVarObj ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldobj,
SCIP_Real  newobj 
)

updates current pseudo and loose objective value for a change in a variable's objective coefficient

Parameters
lpcurrent LP data
setglobal SCIP settings
varproblem variable that changed
oldobjold objective coefficient of variable
newobjnew objective coefficient of variable

Definition at line 13782 of file lp.c.

References FALSE, getObjvalDeltaObj(), lpUpdateObjval(), lpUpdateVarProved(), NULL, SCIP_Lp::probing, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsEQ(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIPeventProcess(), SCIPlpUpdateAddVar(), and SCIPlpUpdateDelVar().

◆ SCIPlpUpdateVarLbGlobal()

SCIP_RETCODE SCIPlpUpdateVarLbGlobal ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldlb,
SCIP_Real  newlb 
)

updates current root pseudo objective value for a global change in a variable's lower bound

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

Definition at line 13836 of file lp.c.

References FALSE, getObjvalDeltaLb(), lpUpdateObjval(), NULL, SCIP_OKAY, SCIP_Real, SCIPsetIsEQ(), SCIPsetIsPositive(), SCIPvarGetObj(), and TRUE.

Referenced by SCIPeventProcess().

◆ SCIPlpUpdateVarLb()

SCIP_RETCODE SCIPlpUpdateVarLb ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldlb,
SCIP_Real  newlb 
)

updates current pseudo and loose objective value for a change in a variable's lower bound

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

Definition at line 13863 of file lp.c.

References FALSE, getObjvalDeltaLb(), lpUpdateObjval(), lpUpdateVarProved(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsEQ(), SCIPsetIsPositive(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIPeventProcess().

◆ SCIPlpUpdateVarUbGlobal()

SCIP_RETCODE SCIPlpUpdateVarUbGlobal ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldub,
SCIP_Real  newub 
)

updates current root pseudo objective value for a global change in a variable's upper bound

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

Definition at line 13904 of file lp.c.

References FALSE, getObjvalDeltaUb(), lpUpdateObjval(), NULL, SCIP_OKAY, SCIP_Real, SCIPsetIsEQ(), SCIPsetIsNegative(), SCIPvarGetObj(), and TRUE.

Referenced by SCIPeventProcess().

◆ SCIPlpUpdateVarUb()

SCIP_RETCODE SCIPlpUpdateVarUb ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var,
SCIP_Real  oldub,
SCIP_Real  newub 
)

updates current pseudo objective value for a change in a variable's upper bound

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

Definition at line 13931 of file lp.c.

References FALSE, getObjvalDeltaUb(), lpUpdateObjval(), lpUpdateVarProved(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetIsEQ(), SCIPsetIsNegative(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), and TRUE.

Referenced by SCIPeventProcess().

◆ SCIPlpUpdateAddVar()

SCIP_RETCODE SCIPlpUpdateAddVar ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)

informs LP, that given variable was added to the problem

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

Definition at line 13972 of file lp.c.

References SCIP_Lp::nloosevars, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpUpdateVarObj(), SCIPvarGetObj(), SCIPvarGetProbindex(), and SCIPvarGetStatus().

Referenced by SCIPprobAddVar().

◆ SCIPlpUpdateDelVar()

SCIP_RETCODE SCIPlpUpdateDelVar ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)

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

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

Definition at line 13993 of file lp.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPlpDecNLoosevars(), SCIPlpUpdateVarObj(), SCIPvarGetObj(), SCIPvarGetProbindex(), and SCIPvarGetStatus().

Referenced by SCIPprobPerformVarDeletions().

◆ lpUpdateVarColumn()

static SCIP_RETCODE lpUpdateVarColumn ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)
static

informs LP, that given formerly loose problem variable is now a column variable

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

Definition at line 14017 of file lp.c.

References FALSE, SCIP_Lp::looseobjvalinf, lpUpdateObjval(), SCIP_Lp::nloosevars, NULL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPlpDecNLoosevars(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIPlpUpdateVarColumn().

◆ lpUpdateVarColumnProved()

static SCIP_RETCODE lpUpdateVarColumnProved ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)
static

informs LP, that given formerly loose problem variable is now a column variable pseudo objective value is calculated with interval arithmetics to get a proved lower bound

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

Definition at line 14064 of file lp.c.

References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, NULL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSub(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().

Referenced by SCIPlpUpdateVarColumn().

◆ SCIPlpUpdateVarColumn()

SCIP_RETCODE SCIPlpUpdateVarColumn ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)

informs LP, that given formerly loose problem variable is now a column variable

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

Definition at line 14129 of file lp.c.

References lpUpdateVarColumn(), lpUpdateVarColumnProved(), NULL, SCIP_CALL, and SCIP_OKAY.

Referenced by SCIPvarColumn().

◆ lpUpdateVarLoose()

static SCIP_RETCODE lpUpdateVarLoose ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)
static

informs LP, that given formerly column problem variable is now again a loose variable

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

Definition at line 14151 of file lp.c.

References FALSE, SCIP_Lp::looseobjvalinf, lpUpdateObjval(), SCIP_Lp::nloosevars, NULL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_LOOSE, SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIPlpUpdateVarLoose().

◆ lpUpdateVarLooseProved()

static SCIP_RETCODE lpUpdateVarLooseProved ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)
static

informs LP, that given formerly column problem variable is now again a loose variable pseudo objective value is calculated with interval arithmetics to get a proved lower bound

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

Definition at line 14196 of file lp.c.

References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, NULL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_LOOSE, SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), and SCIPvarGetUbLocal().

Referenced by SCIPlpUpdateVarLoose().

◆ SCIPlpUpdateVarLoose()

SCIP_RETCODE SCIPlpUpdateVarLoose ( SCIP_LP lp,
SCIP_SET set,
SCIP_VAR var 
)

informs LP, that given formerly column problem variable is now again a loose variable

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

Definition at line 14253 of file lp.c.

References lpUpdateVarLoose(), lpUpdateVarLooseProved(), NULL, SCIP_CALL, and SCIP_OKAY.

Referenced by SCIPvarLoose().

◆ SCIPlpDecNLoosevars()

void SCIPlpDecNLoosevars ( SCIP_LP lp)

decrease the number of loose variables by one

Parameters
lpcurrent LP data

Definition at line 14274 of file lp.c.

References SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::nloosevars, and NULL.

Referenced by lpUpdateVarColumn(), SCIPlpUpdateDelVar(), SCIPvarFix(), and SCIPvarMultiaggregate().

◆ SCIPlpGetSol()

SCIP_RETCODE SCIPlpGetSol ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_Bool primalfeasible,
SCIP_Bool dualfeasible 
)

◆ SCIPlpGetUnboundedSol()

SCIP_RETCODE SCIPlpGetUnboundedSol ( SCIP_LP lp,
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
lpcurrent 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 14586 of file lp.c.

References SCIP_Row::activity, SCIP_Row::cols, SCIP_Row::constant, SCIP_Row::dualsol, FALSE, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Row::lhs, SCIP_Row::linkpos, SCIP_Stat::lpcount, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::lpobjval, SCIP_Col::lppos, SCIP_Lp::lpsolstat, MAX, SCIP_Row::nlpcols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, NULL, SCIP_Row::nunlinked, SCIP_Col::obj, SCIP_Col::primsol, r, SCIP_Col::redcost, SCIP_Row::rhs, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_LPERROR, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPlpiGetPrimalRay(), SCIPlpiGetSol(), SCIPlpiHasPrimalRay(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsFeasZero(), SCIPsetIsInfinity(), SCIPsetIsNegative(), SCIPsetIsPositive(), SCIPsetIsZero(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIP_Lp::solved, TRUE, SCIP_Col::ub, SCIP_Row::validactivitylp, SCIP_Col::validredcostlp, SCIP_Lp::validsollp, SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIPlpSolveAndEval(), and SCIPlpStartDive().

◆ SCIPlpGetPrimalRay()

SCIP_RETCODE SCIPlpGetPrimalRay ( SCIP_LP lp,
SCIP_SET set,
SCIP_Real ray 
)

returns primal ray proving the unboundedness of the current LP

Parameters
lpcurrent 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 14863 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, SCIP_Lp::lpicols, SCIP_Lp::lpobjval, SCIP_Lp::lpsolstat, SCIP_Lp::nlpicols, NULL, SCIP_CALL, SCIP_LPERROR, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPlpiGetPrimalRay(), SCIPlpiHasPrimalRay(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPvarGetProbindex(), SCIP_Lp::solved, and SCIP_Col::var.

Referenced by updatePrimalRay().

◆ SCIPlpGetDualfarkas()

◆ SCIPlpGetIterations()

SCIP_RETCODE SCIPlpGetIterations ( SCIP_LP lp,
int *  iterations 
)

get number of iterations used in last LP solve

Parameters
lpcurrent LP data
iterationspointer to store the iteration count

Definition at line 15097 of file lp.c.

References SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiGetIterations().

Referenced by lpBarrier(), lpDualSimplex(), lpLexDualSimplex(), and lpPrimalSimplex().

◆ SCIPlpUpdateAges()

SCIP_RETCODE SCIPlpUpdateAges ( SCIP_LP lp,
SCIP_STAT stat 
)

increases age of columns with solution value 0.0 and basic rows with activity not at its bounds, resets age of non-zero columns and sharp rows

Parameters
lpcurrent LP data
statproblem statistics

Definition at line 15112 of file lp.c.

References SCIP_Row::activeinlpcounter, SCIP_Col::age, SCIP_Row::age, SCIP_Lp::cols, SCIP_Lp::flushed, SCIP_Stat::lpcount, SCIP_Lp::lpicols, SCIP_Lp::lpirows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Row::nlpsaftercreation, SCIP_Lp::nrows, NULL, r, SCIP_Lp::rows, SCIP_OKAY, SCIPdebugMessage, SCIP_Lp::solved, and SCIP_Lp::validsollp.

Referenced by SCIPlpSolveAndEval().

◆ lpDelColset()

◆ lpDelRowset()

◆ lpRemoveObsoleteCols()

static SCIP_RETCODE lpRemoveObsoleteCols ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
int  firstcol 
)
static

removes all non-basic columns, that are too old, beginning with the given firstcol

Parameters
lpcurrent LP data
setglobal SCIP settings
statproblem statistics
firstcolfirst column to check for clean up

Definition at line 15369 of file lp.c.

References SCIP_Col::age, SCIP_Col::basisstatus, BMSclearMemoryArray, SCIP_Lp::cols, SCIP_Lp::diving, SCIP_Lp::flushed, lpDelColset(), SCIP_Lp::lpicols, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Stat::nnodes, SCIP_Lp::nremovablecols, NULL, SCIP_Col::obsoletenode, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPcolGetBestBound(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsZero(), SCIPvarGetName(), and SCIP_Lp::solisbasic.

Referenced by SCIPlpRemoveAllObsoletes(), and SCIPlpRemoveNewObsoletes().

◆ lpRemoveObsoleteRows()

static SCIP_RETCODE lpRemoveObsoleteRows ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
int  firstrow 
)
static

removes all basic rows, that are too old, beginning with the given firstrow

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter
firstrowfirst row to check for clean up

Definition at line 15445 of file lp.c.

References SCIP_Row::age, SCIP_Row::basisstatus, BMSclearMemoryArray, SCIP_Lp::diving, SCIP_Lp::flushed, lpDelRowset(), SCIP_Lp::lpirows, SCIP_Lp::nlpirows, SCIP_Stat::nnodes, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, NULL, SCIP_Row::obsoletenode, r, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, and SCIP_Lp::solisbasic.

Referenced by SCIPlpRemoveAllObsoletes(), and SCIPlpRemoveNewObsoletes().

◆ SCIPlpRemoveNewObsoletes()

SCIP_RETCODE SCIPlpRemoveNewObsoletes ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

removes all non-basic columns and basic rows in the part of the LP created at the current node, that are too old

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter

Definition at line 15521 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, lpRemoveObsoleteCols(), lpRemoveObsoleteRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, NULL, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, and SCIP_Lp::solved.

Referenced by SCIPlpSolveAndEval().

◆ SCIPlpRemoveAllObsoletes()

SCIP_RETCODE SCIPlpRemoveAllObsoletes ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

removes all non-basic columns and basic rows in whole LP, that are too old

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter

Definition at line 15552 of file lp.c.

References SCIP_Lp::diving, lpRemoveObsoleteCols(), lpRemoveObsoleteRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, NULL, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, and SCIP_Lp::solved.

Referenced by focusnodeToFork().

◆ lpCleanupCols()

static SCIP_RETCODE lpCleanupCols ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
int  firstcol 
)
static

removes all non-basic columns at 0.0 beginning with the given firstcol

Parameters
lpcurrent LP data
setglobal SCIP settings
statproblem statistics
firstcolfirst column to check for clean up

Definition at line 15583 of file lp.c.

References BMSclearMemoryArray, SCIP_Lp::cols, SCIP_Lp::diving, SCIP_Lp::flushed, SCIP_Stat::lpcount, lpDelColset(), SCIP_Lp::lpicols, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nremovablecols, NULL, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPcolGetBestBound(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPsetIsZero(), SCIP_Lp::solisbasic, and SCIP_Lp::validsollp.

Referenced by SCIPlpCleanupAll(), and SCIPlpCleanupNew().

◆ lpCleanupRows()

static SCIP_RETCODE lpCleanupRows ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
int  firstrow 
)
static

removes all basic rows beginning with the given firstrow

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter
firstrowfirst row to check for clean up

Definition at line 15650 of file lp.c.

References BMSclearMemoryArray, SCIP_Lp::diving, SCIP_Lp::flushed, SCIP_Stat::lpcount, lpDelRowset(), SCIP_Lp::lpirows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Lp::nremovablerows, SCIP_Lp::nrows, NULL, r, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIP_Lp::solisbasic, and SCIP_Lp::validsollp.

Referenced by SCIPlpCleanupAll(), and SCIPlpCleanupNew().

◆ SCIPlpCleanupNew()

SCIP_RETCODE SCIPlpCleanupNew ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_Bool  root 
)

removes all non-basic columns at 0.0 and basic rows in the part of the LP created at the current node

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter
rootare we at the root node?

Definition at line 15721 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::firstnewcol, SCIP_Lp::firstnewrow, SCIP_Lp::lastlpalgo, lpCleanupCols(), lpCleanupRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, NULL, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by focusnodeToFork().

◆ SCIPlpCleanupAll()

SCIP_RETCODE SCIPlpCleanupAll ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_Bool  root 
)

removes all non-basic columns at 0.0 and basic rows in the whole LP

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter
rootare we at the root node?

Definition at line 15760 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::lastlpalgo, lpCleanupCols(), lpCleanupRows(), SCIP_Lp::ncols, SCIP_Lp::nrows, NULL, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPlpGetSolstat(), SCIPsetDebugMsg, SCIP_Lp::solisbasic, and SCIP_Lp::solved.

Referenced by focusnodeToFork().

◆ SCIPlpRemoveRedundantRows()

SCIP_RETCODE SCIPlpRemoveRedundantRows ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter 
)

removes all redundant rows that were added at the current node

Parameters
lpcurrent LP data
blkmemblock memory buffers
setglobal SCIP settings
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter

Definition at line 15799 of file lp.c.

References SCIP_Row::basisstatus, BMSclearMemoryArray, SCIP_Lp::diving, SCIP_Lp::firstnewrow, SCIP_Lp::flushed, SCIP_Stat::lpcount, lpDelRowset(), SCIP_Lp::lpirows, SCIP_Lp::ncols, SCIP_Lp::nlpicols, SCIP_Lp::nlpirows, SCIP_Lp::nrows, NULL, r, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_CALL, SCIP_OKAY, SCIProwGetLhs(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsRedundant(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIP_Lp::solisbasic, and SCIP_Lp::validsollp.

Referenced by priceAndCutLoop().

◆ SCIPlpStartDive()

SCIP_RETCODE SCIPlpStartDive ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_STAT stat 
)

◆ SCIPlpEndDive()

SCIP_RETCODE SCIPlpEndDive ( SCIP_LP lp,
BMS_BLKMEM blkmem,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_STAT stat,
SCIP_EVENTQUEUE eventqueue,
SCIP_EVENTFILTER eventfilter,
SCIP_PROB prob,
SCIP_VAR **  vars,
int  nvars 
)

quits LP diving and resets bounds and objective values of columns to the current node's values

Parameters
lpcurrent LP data
blkmemblock memory
setglobal SCIP settings
messagehdlrmessage handler
statproblem statistics
eventqueueevent queue
eventfilterglobal event filter
probproblem data
varsarray with all active variables
nvarsnumber of active variables

Definition at line 15979 of file lp.c.

References colRestoreSolVals(), SCIP_Lp::cols, SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidetypes, SCIP_Lp::divelpistate, SCIP_Lp::divelpwasdualchecked, SCIP_Lp::divelpwasdualfeas, SCIP_Lp::divelpwasprimchecked, SCIP_Lp::divelpwasprimfeas, SCIP_Lp::divenolddomchgs, SCIP_Lp::diving, SCIP_Lp::divinglazyapplied, SCIP_Lp::divinglpiitlim, SCIP_Lp::divingobjchg, SCIP_Stat::domchgcount, FALSE, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Stat::lpcount, SCIP_LpSolVals::lpissolved, lpNumericalTroubleMessage(), lpRestoreSolVals(), lpSetIterationLimit(), SCIP_LpSolVals::lpsolstat, SCIP_Lp::ncols, SCIP_Lp::ndivechgsides, SCIP_Lp::ndivingrows, SCIP_Lp::nlazycols, SCIP_Lp::nrows, NULL, SCIP_Col::obj, r, SCIP_Lp::resolvelperror, rowRestoreSolVals(), SCIP_Lp::rows, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_ITERLIMIT, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_TIMELIMIT, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIP_Real, SCIP_SIDETYPE_LEFT, SCIP_VARSTATUS_COLUMN, SCIP_VERBLEVEL_FULL, SCIPcolChgLb(), SCIPcolChgObj(), SCIPcolChgUb(), SCIPlpFlush(), SCIPlpFreeState(), SCIPlpGetSolstat(), SCIPlpSetState(), SCIPlpShrinkRows(), SCIPlpSolveAndEval(), SCIPmessagePrintVerbInfo(), SCIProwChgLhs(), SCIProwChgRhs(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPstatIncrement, SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIP_Lp::storedsolvals, TRUE, SCIP_Col::ub, updateLazyBounds(), and SCIP_Col::var.

Referenced by SCIPendDive().

◆ SCIPlpRecordOldRowSideDive()

SCIP_RETCODE SCIPlpRecordOldRowSideDive ( SCIP_LP lp,
SCIP_ROW row,
SCIP_SIDETYPE  sidetype 
)

records a current row side such that any change will be undone after diving

Parameters
lpLP data object
rowrow affected by the change
sidetypeside type

Definition at line 16161 of file lp.c.

References SCIP_Lp::divechgrows, SCIP_Lp::divechgsides, SCIP_Lp::divechgsidessize, SCIP_Lp::divechgsidetypes, DIVESTACKGROWFACT, SCIP_Row::lhs, SCIP_Lp::ndivechgsides, NULL, reallocDiveChgSideArrays(), SCIP_Row::rhs, SCIP_CALL, SCIP_OKAY, and SCIP_SIDETYPE_LEFT.

Referenced by SCIPchgRowLhsDive(), and SCIPchgRowRhsDive().

◆ SCIPlpStartProbing()

SCIP_RETCODE SCIPlpStartProbing ( SCIP_LP lp)

informs the LP that probing mode was initiated

Parameters
lpcurrent LP data

Definition at line 16185 of file lp.c.

References NULL, SCIP_Lp::probing, SCIP_OKAY, SCIP_Lp::strongbranching, SCIP_Lp::strongbranchprobing, and TRUE.

Referenced by SCIPtreeStartProbing().

◆ SCIPlpEndProbing()

SCIP_RETCODE SCIPlpEndProbing ( SCIP_LP lp)

informs the LP that probing mode was finished

Parameters
lpcurrent LP data

Definition at line 16200 of file lp.c.

References FALSE, NULL, SCIP_Lp::probing, SCIP_OKAY, SCIP_Lp::strongbranching, and SCIP_Lp::strongbranchprobing.

Referenced by SCIPtreeEndProbing().

◆ SCIPlpStartStrongbranchProbing()

void SCIPlpStartStrongbranchProbing ( SCIP_LP lp)

informs the LP that the probing mode is now used for strongbranching

Parameters
lpcurrent LP data

Definition at line 16215 of file lp.c.

References NULL, SCIP_Lp::probing, SCIP_Lp::strongbranching, SCIP_Lp::strongbranchprobing, and TRUE.

Referenced by SCIPstartStrongbranch().

◆ SCIPlpEndStrongbranchProbing()

void SCIPlpEndStrongbranchProbing ( SCIP_LP lp)

informs the LP that the probing mode is not used for strongbranching anymore

Parameters
lpcurrent LP data

Definition at line 16228 of file lp.c.

References FALSE, NULL, SCIP_Lp::probing, SCIP_Lp::strongbranching, and SCIP_Lp::strongbranchprobing.

Referenced by SCIPendStrongbranch().

◆ provedBound()

static SCIP_RETCODE provedBound ( SCIP_LP lp,
SCIP_SET set,
SCIP_Bool  usefarkas,
SCIP_Real bound 
)
static

calculates y*b + min{(c - y*A)*x | lb <= x <= ub} for given vectors y and c; the vector b is defined with b[i] = lhs[i] if y[i] >= 0, b[i] = rhs[i] if y[i] < 0 Calculating this value in interval arithmetics gives a proved lower LP bound for the following reason (assuming, we have only left hand sides): min{cx | b <= Ax, lb <= x <= ub} >= min{cx | yb <= yAx, lb <= x <= ub} (restriction in minimum is relaxed) == yb + min{cx - yb | yb <= yAx, lb <= x <= ub} (added yb - yb == 0) >= yb + min{cx - yAx | yb <= yAx, lb <= x <= ub} (because yAx >= yb inside minimum) >= yb + min{cx - yAx | lb <= x <= ub} (restriction in minimum is relaxed)

Parameters
lpcurrent LP data
setglobal SCIP settings
usefarkasuse y = dual Farkas and c = 0 instead of y = dual solution and c = obj?
boundresult of interval arithmetic minimization

Definition at line 16251 of file lp.c.

References a, b, SCIP_Lp::cols, SCIP_Row::constant, SCIP_Row::dualfarkas, SCIP_Row::dualsol, SCIP_Col::lb, SCIP_Row::lhs, SCIP_Col::linkpos, SCIP_Row::lppos, SCIP_Lp::ncols, SCIP_Col::nlprows, SCIP_Lp::nrows, NULL, SCIP_Col::nunlinked, SCIP_Col::obj, SCIP_Row::rhs, SCIP_Col::rows, SCIP_Lp::rows, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcolGetLb(), SCIPcolGetUb(), SCIPintervalAdd(), SCIPintervalGetInf(), SCIPintervalMul(), SCIPintervalSet(), SCIPintervalSetBounds(), SCIPintervalSub(), SCIPsetAllocBufferArray, SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIP_Lp::solved, SCIP_Col::ub, SCIP_Col::vals, x, and y.

Referenced by SCIPlpGetProvedLowerbound(), and SCIPlpIsInfeasibilityProved().

◆ SCIPlpGetProvedLowerbound()

SCIP_RETCODE SCIPlpGetProvedLowerbound ( SCIP_LP lp,
SCIP_SET set,
SCIP_Real bound 
)

gets proven lower (dual) bound of last LP solution

Parameters
lpcurrent LP data
setglobal SCIP settings
boundpointer to store proven dual bound

Definition at line 16361 of file lp.c.

References FALSE, provedBound(), SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.

Referenced by SCIPnodeUpdateLowerboundLP(), and solveNodeInitialLP().

◆ SCIPlpIsInfeasibilityProved()

SCIP_RETCODE SCIPlpIsInfeasibilityProved ( SCIP_LP lp,
SCIP_SET set,
SCIP_Bool proved 
)

gets proven dual bound of last LP solution

Parameters
lpcurrent LP data
setglobal SCIP settings
provedpointer to store whether infeasibility is proven

Definition at line 16375 of file lp.c.

References bound, NULL, provedBound(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPsetDebugMsg, and TRUE.

◆ SCIPlpWrite()

SCIP_RETCODE SCIPlpWrite ( SCIP_LP lp,
const char *  fname 
)

writes LP to a file

Parameters
lpcurrent LP data
fnamefile name

Definition at line 16397 of file lp.c.

References SCIP_Lp::flushed, SCIP_Lp::lpi, NULL, SCIP_CALL, SCIP_OKAY, and SCIPlpiWriteLP().

Referenced by lpBarrier(), lpDualSimplex(), lpPrimalSimplex(), and SCIPwriteLP().

◆ SCIPlpWriteMip()

SCIP_RETCODE SCIPlpWriteMip ( SCIP_LP lp,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
const char *  fname,
SCIP_Bool  genericnames,
SCIP_Bool  origobj,
SCIP_OBJSENSE  objsense,
SCIP_Real  objscale,
SCIP_Real  objoffset,
SCIP_Bool  lazyconss 
)

writes MIP relaxation of the current B&B node to a file

Note
the transformed problem in SCIP is always a minimization problem
Parameters
lpcurrent LP data
setglobal SCIP settings
messagehdlrmessage handler
fnamefile name
genericnamesshould generic names like x_i and row_j be used in order to avoid troubles with reserved symbols?
origobjshould the original objective function be used?
objsenseobjective sense
objscaleobjective scaling factor
objoffsetobjective offset, e.g., caused by variable fixings in presolving
lazyconssoutput removable rows as lazy constraints?

Definition at line 16412 of file lp.c.

References SCIP_Row::cols, SCIP_Lp::cols, SCIP_Row::constant, SCIP_Lp::flushed, SCIP_Col::lb, SCIP_Row::lhs, SCIP_Col::lppos, SCIP_Row::lppos, SCIP_Row::name, SCIP_Var::name, SCIP_Lp::ncols, SCIP_Row::nlpcols, SCIP_Lp::nrows, NULL, SCIP_Col::obj, REALABS, SCIP_Row::rhs, SCIP_Lp::rows, SCIP_ERROR, SCIP_FILECREATEERROR, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPmessageFPrintInfo(), SCIPmessagePrintWarning(), SCIPprintSysError(), SCIProwIsRemovable(), SCIPsetDebugMsg, SCIPsetIsEQ(), SCIPsetIsInfinity(), SCIPsnprintf(), SCIPvarIsIntegral(), SCIP_Col::ub, SCIP_Row::vals, and SCIP_Col::var.

Referenced by SCIPwriteMIP().

◆ SCIPlpGetCols()

SCIP_COL** SCIPlpGetCols ( SCIP_LP lp)

gets array with columns of the LP

Parameters
lpcurrent LP data

Definition at line 17427 of file lp.c.

References SCIP_Lp::cols, and NULL.

Referenced by branchcandCalcLPCands(), forkFree(), SCIPcomputeLPRelIntPoint(), SCIPgetLPCols(), SCIPgetLPColsData(), and SCIPsolLinkLPSol().

◆ SCIPlpGetNCols()

◆ SCIPlpGetRows()

SCIP_ROW** SCIPlpGetRows ( SCIP_LP lp)

gets array with rows of the LP

Parameters
lpcurrent LP data

Definition at line 17447 of file lp.c.

References NULL, and SCIP_Lp::rows.

Referenced by forkFree(), getDualProof(), getFarkasProof(), runBoundHeuristic(), SCIPgetLPRows(), SCIPgetLPRowsData(), and storeCuts().

◆ SCIPlpGetNRows()

int SCIPlpGetNRows ( SCIP_LP lp)

◆ SCIPlpGetNewcols()

SCIP_COL** SCIPlpGetNewcols ( SCIP_LP lp)

gets array with newly added columns after the last mark

Parameters
lpcurrent LP data

Definition at line 17467 of file lp.c.

References SCIP_Lp::cols, SCIP_Lp::firstnewcol, SCIP_Lp::ncols, and NULL.

Referenced by forkCreate(), and pseudoforkCreate().

◆ SCIPlpGetNNewcols()

int SCIPlpGetNNewcols ( SCIP_LP lp)

gets number of newly added columns after the last mark

Parameters
lpcurrent LP data

Definition at line 17478 of file lp.c.

References SCIP_Lp::firstnewcol, SCIP_Lp::ncols, and NULL.

Referenced by focusnodeCleanupVars(), focusnodeToFork(), focusnodeToJunction(), forkCreate(), pseudoforkCreate(), and SCIPnodeFocus().

◆ SCIPlpGetNewrows()

SCIP_ROW** SCIPlpGetNewrows ( SCIP_LP lp)

gets array with newly added rows after the last mark

Parameters
lpcurrent LP data

Definition at line 17489 of file lp.c.

References SCIP_Lp::firstnewrow, SCIP_Lp::nrows, NULL, and SCIP_Lp::rows.

Referenced by forkCreate(), and pseudoforkCreate().

◆ SCIPlpGetNNewrows()

int SCIPlpGetNNewrows ( SCIP_LP lp)

gets number of newly added rows after the last mark

Parameters
lpcurrent LP data

Definition at line 17500 of file lp.c.

References SCIP_Lp::firstnewrow, SCIP_Lp::nrows, and NULL.

Referenced by focusnodeToFork(), forkCreate(), pseudoforkCreate(), and SCIPnodeFocus().

◆ SCIPlpRecalculateObjSqrNorm()

void SCIPlpRecalculateObjSqrNorm ( SCIP_SET set,
SCIP_LP lp 
)

recalculates Euclidean norm of objective function vector of column variables if it have gotten unreliable during calculation

Parameters
setglobal SCIP settings
lpLP data

Definition at line 17511 of file lp.c.

References SCIP_Lp::cols, FALSE, MAX, SCIP_Lp::ncols, NULL, SCIP_Lp::objsqrnorm, SCIP_Lp::objsqrnormunreliable, and SCIPsetIsGE().

Referenced by SCIPgetObjNorm(), and SCIProwGetObjParallelism().

◆ SCIPlpGetObjNorm()

SCIP_Real SCIPlpGetObjNorm ( SCIP_LP lp)

gets Euclidean norm of objective function vector of column variables, only use this method if lp->objsqrnormunreliable == FALSE, so probably you have to call SCIPlpRecalculateObjSqrNorm before

Parameters
lpLP data

Definition at line 17542 of file lp.c.

References NULL, SCIP_Lp::objsqrnorm, and SCIP_Lp::objsqrnormunreliable.

Referenced by SCIPgetObjNorm().

◆ SCIPlpSetRootLPIsRelax()

void SCIPlpSetRootLPIsRelax ( SCIP_LP lp,
SCIP_Bool  isrelax 
)

sets whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound

Parameters
lpLP data
isrelaxis the root lp a relaxation of the problem?

Definition at line 17554 of file lp.c.

References NULL, and SCIP_Lp::rootlpisrelax.

Referenced by SCIPprobStoreRootSol().

◆ SCIPlpIsRootLPRelax()

SCIP_Bool SCIPlpIsRootLPRelax ( SCIP_LP lp)

returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound

Parameters
lpLP data

Definition at line 17565 of file lp.c.

References NULL, and SCIP_Lp::rootlpisrelax.

Referenced by SCIPisRootLPRelax().

◆ SCIPlpGetRootObjval()

SCIP_Real SCIPlpGetRootObjval ( SCIP_LP lp)

gets the objective value of the root node LP; returns SCIP_INVALID if the root node LP was not (yet) solved

Parameters
lpLP data

Definition at line 17575 of file lp.c.

References NULL, SCIP_Lp::rootlooseobjval, SCIP_Lp::rootlpobjval, and SCIP_INVALID.

Referenced by SCIPgetLPRootObjval().

◆ SCIPlpGetRootColumnObjval()

SCIP_Real SCIPlpGetRootColumnObjval ( SCIP_LP lp)

gets part of the objective value of the root node LP that results from COLUMN variables only; returns SCIP_INVALID if the root node LP was not (yet) solved

Parameters
lpLP data

Definition at line 17587 of file lp.c.

References NULL, and SCIP_Lp::rootlpobjval.

Referenced by SCIPgetLPRootColumnObjval().

◆ SCIPlpGetRootLooseObjval()

SCIP_Real SCIPlpGetRootLooseObjval ( SCIP_LP lp)

gets part of the objective value of the root node LP that results from LOOSE variables only; returns SCIP_INVALID if the root node LP was not (yet) solved

Parameters
lpLP data

Definition at line 17599 of file lp.c.

References NULL, and SCIP_Lp::rootlooseobjval.

Referenced by SCIPgetLPRootLooseObjval().

◆ SCIPlpGetLPI()

SCIP_LPI* SCIPlpGetLPI ( SCIP_LP lp)

gets the LP solver interface

Parameters
lpcurrent LP data

Definition at line 17609 of file lp.c.

References SCIP_Lp::lpi, and NULL.

Referenced by conflictAnalyzeLP(), SCIPconflictAnalyzeLP(), SCIPgetLPI(), SCIPlpSolveAndEval(), SCIPprintLPSolutionQuality(), solveNodeLP(), undoBdchgsDualfarkas(), and undoBdchgsDualsol().

◆ SCIPlpSetIsRelax()

void SCIPlpSetIsRelax ( SCIP_LP lp,
SCIP_Bool  relax 
)

sets whether the current LP is a relaxation of the current problem and its optimal objective value is a local lower bound

Parameters
lpLP data
relaxis the current lp a relaxation?

Definition at line 17619 of file lp.c.

References SCIP_Lp::isrelax, and NULL.

Referenced by SCIPpriceLoop(), SCIPtreeEndProbing(), and solveProbingLP().

◆ SCIPlpIsRelax()

SCIP_Bool SCIPlpIsRelax ( SCIP_LP lp)

returns whether the current LP is a relaxation of the problem for which it has been solved and its solution value a valid local lower bound?

Parameters
lpLP data

Definition at line 17632 of file lp.c.

References SCIP_Lp::isrelax, and NULL.

Referenced by priceAndCutLoop(), propAndSolve(), SCIPendDive(), SCIPisLPRelax(), SCIPprobStoreRootSol(), SCIPtreeEndProbing(), solveNodeInitialLP(), and updateEstimate().

◆ SCIPlpIsSolved()

SCIP_Bool SCIPlpIsSolved ( SCIP_LP lp)

returns whether the current LP is flushed and solved

Parameters
lpcurrent LP data

Definition at line 17642 of file lp.c.

References SCIP_Lp::flushed, NULL, and SCIP_Lp::solved.

Referenced by priceAndCutLoop(), SCIPendDive(), SCIPlinkLPSol(), SCIPsolCreateLPSol(), and SCIPsolLinkCurrentSol().

◆ SCIPlpIsPrimalReliable()

SCIP_Bool SCIPlpIsPrimalReliable ( SCIP_LP lp)

return whether the current LP solution passed the primal feasibility check

Parameters
lpcurrent LP data

Definition at line 17652 of file lp.c.

References NULL, SCIP_Lp::primalchecked, and SCIP_Lp::primalfeasible.

Referenced by SCIPisLPPrimalReliable().

◆ SCIPlpIsDualReliable()

SCIP_Bool SCIPlpIsDualReliable ( SCIP_LP lp)

return whether the current LP solution passed the dual feasibility check

Parameters
lpcurrent LP data

Definition at line 17662 of file lp.c.

References SCIP_Lp::dualchecked, SCIP_Lp::dualfeasible, and NULL.

Referenced by analyzeStrongbranch(), SCIPisLPDualReliable(), SCIPlpGetDegeneracy(), and SCIPprobUpdateBestRootSol().

◆ SCIPlpIsSolBasic()

SCIP_Bool SCIPlpIsSolBasic ( SCIP_LP lp)

returns whether the current LP solution is a basic solution

Parameters
lpcurrent LP data

Definition at line 17672 of file lp.c.

References NULL, and SCIP_Lp::solisbasic.

Referenced by getImplVarRedcost(), SCIPgetLPBasisInd(), SCIPgetLPBInvACol(), SCIPgetLPBInvARow(), SCIPgetLPBInvCol(), SCIPgetLPBInvRow(), SCIPisLPSolBasic(), SCIPprobUpdateBestRootSol(), and SCIPvarGetImplRedcost().

◆ SCIPlpDiving()

◆ SCIPlpDivingObjChanged()

SCIP_Bool SCIPlpDivingObjChanged ( SCIP_LP lp)

returns whether the LP is in diving mode and the objective value of at least one column was changed

Parameters
lpcurrent LP data

Definition at line 17692 of file lp.c.

References SCIP_Lp::divingobjchg, and NULL.

Referenced by conflictAnalyzeBoundexceedingLP(), conflictAnalyzeInfeasibleLP(), conflictAnalyzeLP(), getFarkasProof(), runBoundHeuristic(), SCIPchgVarObjProbing(), SCIPlpSetCutoffbound(), SCIPsolLinkLPSol(), SCIPsolveDiveLP(), and SCIPtreeEndProbing().

◆ SCIPlpMarkDivingObjChanged()

void SCIPlpMarkDivingObjChanged ( SCIP_LP lp)

marks the diving LP to have a changed objective function

Parameters
lpcurrent LP data

Definition at line 17702 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::divingobjchg, NULL, SCIP_Lp::probing, and TRUE.

Referenced by SCIPchgVarObjDive(), SCIPchgVarObjProbing(), and SCIPpropagateProbing().

◆ SCIPlpUnmarkDivingObjChanged()

void SCIPlpUnmarkDivingObjChanged ( SCIP_LP lp)

marks the diving LP to not have a changed objective function anymore

Parameters
lpcurrent LP data

Definition at line 17713 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::divingobjchg, FALSE, NULL, and SCIP_Lp::probing.

Referenced by SCIPpropagateProbing(), and treeBacktrackProbing().

◆ SCIPlpDivingRowsChanged()

SCIP_Bool SCIPlpDivingRowsChanged ( SCIP_LP lp)
Parameters
lpcurrent LP data

Definition at line 17724 of file lp.c.

References SCIP_Lp::diving, SCIP_Lp::ndivechgsides, and NULL.

Referenced by SCIPsolveDiveLP().

◆ computeRelIntPoint()

static SCIP_RETCODE computeRelIntPoint ( SCIP_LPI lpi,
SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_LP lp,
SCIP_PROB prob,
SCIP_Bool  relaxrows,
SCIP_Bool  inclobjcutoff,
SCIP_Real  timelimit,
int  iterlimit,
SCIP_Real point,
SCIP_Bool success 
)
static

compute relative interior point with auxiliary lpi, see SCIPlpComputeRelIntPoint()

Parameters
lpiauxiliary LP interface
setglobal SCIP settings
messagehdlrmessage handler
lpLP data
probproblem data
relaxrowsshould the rows be relaxed
inclobjcutoffshould a row for the objective cutoff be included
timelimittime limit for LP solver
iterlimititeration limit for LP solver
pointarray to store relative interior point on exit
successbuffer to indicate whether interior point was successfully computed

Definition at line 17736 of file lp.c.

References SCIP_Row::cols, SCIP_Lp::cols, SCIP_Row::constant, SCIP_Lp::cutoffbound, SCIP_Lp::feastol, getFiniteLooseObjval(), SCIP_Col::lb, SCIP_Row::lhs, SCIP_Lp::looseobjvalinf, SCIP_Row::lpcolssorted, SCIP_Col::lppos, MAX, SCIP_Lp::ncols, SCIP_Row::nlpcols, SCIP_Lp::nrows, NULL, SCIP_Col::obj, REALABS, SCIP_Row::rhs, SCIP_Lp::rows, rowSortLP(), SCIP_CALL, SCIP_LPERROR, SCIP_LPPAR_DUALFEASTOL, SCIP_LPPAR_FEASTOL, SCIP_LPPAR_LPITLIM, SCIP_LPPAR_LPTILIM, SCIP_OKAY, SCIP_PARAMETERUNKNOWN, SCIP_Real, SCIPlpiAddCols(), SCIPlpiAddRows(), SCIPlpiGetNCols(), SCIPlpiGetSol(), SCIPlpiInfinity(), SCIPlpiIsIterlimExc(), SCIPlpiIsOptimal(), SCIPlpiIsTimelimExc(), SCIPlpiSetIntpar(), SCIPlpiSetRealpar(), SCIPlpiSolveDual(), SCIPlpiWriteLP(), SCIPmessagePrintWarning(), SCIProwIsModifiable(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetDualfeastol(), SCIPsetFreeBufferArray, SCIPsetInfinity(), SCIPsetIsEQ(), SCIPsetIsFeasEQ(), SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsFeasZero(), SCIPsetIsInfinity(), SCIPsetIsZero(), TRUE, SCIP_Col::ub, and SCIP_Row::vals.

Referenced by SCIPlpComputeRelIntPoint().

◆ SCIPlpComputeRelIntPoint()

SCIP_RETCODE SCIPlpComputeRelIntPoint ( SCIP_SET set,
SCIP_MESSAGEHDLR messagehdlr,
SCIP_LP lp,
SCIP_PROB prob,
SCIP_Bool  relaxrows,
SCIP_Bool  inclobjcutoff,
SCIP_Real  timelimit,
int  iterlimit,
SCIP_Real point,
SCIP_Bool success 
)

compute relative interior point

We use the approach of

R. Freund, R. Roundy, M. J. Todd
"Identifying the Set of Always-Active Constraints in a System of Linear Inequalities by a Single Linear Program"
Tech. Rep, No. 1674-85, Sloan School, M.I.T., 1985

to compute a relative interior point for the current LP.

Assume the original LP looks as follows:

\[ \begin{array}{rrl} \min & c^T x &\\ & A x & \geq a\\ & B x & \leq b\\ & D x & = d. \end{array} \]

Note that bounds should be included in the system.

To find an interior point the following LP does the job:

\[ \begin{array}{rrl} \max & 1^T y &\\ & A x - y - \alpha a & \geq 0\\ & B x + y - \alpha b & \leq 0\\ & D x - \alpha d & = 0\\ & 0 \leq y & \leq 1\\ & \alpha & \geq 1. \end{array} \]

If the original LP is feasible, this LP is feasible as well. Any optimal solution yields the relative interior point \(x^*_j/\alpha^*\). Note that this will just produce some relative interior point. It does not produce a particular relative interior point, e.g., one that maximizes the distance to the boundary in some norm.

Parameters
setglobal SCIP settings
messagehdlrmessage handler
lpLP data
probproblem data
relaxrowsshould the rows be relaxed
inclobjcutoffshould a row for the objective cutoff be included
timelimittime limit for LP solver
iterlimititeration limit for LP solver
pointarray to store relative interior point on exit
successbuffer to indicate whether interior point was successfully computed

Definition at line 18438 of file lp.c.

References BMSclearMemoryArray, computeRelIntPoint(), SCIP_Lp::cutoffbound, FALSE, SCIP_Lp::looseobjval, SCIP_Lp::looseobjvalinf, SCIP_Lp::ncols, SCIP_Lp::nrows, NULL, SCIP_CALL, SCIP_INVALID, SCIP_LPERROR, SCIP_OBJSEN_MAXIMIZE, SCIP_OKAY, SCIPlpiCreate(), SCIPlpiFree(), SCIPsetDebugMsg, SCIPsetIsInfinity(), and TRUE.

Referenced by SCIPcomputeLPRelIntPoint().

◆ SCIPlpGetDegeneracy()

SCIP_RETCODE SCIPlpGetDegeneracy ( SCIP_LP lp,
SCIP_SET set,
SCIP_STAT stat,
SCIP_Real degeneracy,
SCIP_Real varconsratio 
)

computes the changes to the problem when fixing to the optimal face

returns the degeneracy rate, i.e., the number of nonbasic variables with reduced cost 0 and the variable constraint ratio, i.e., the number of unfixed variables in relation to the basis size

Parameters
lpLP data
setglobal SCIP settings
statproblem statistics
degeneracypointer to store degeneracy share
varconsratiopointer to store variable constraint ratio

Definition at line 18509 of file lp.c.

References SCIP_Lp::cols, SCIP_Lp::degeneracy, SCIP_Lp::flushed, SCIP_Lp::ncols, SCIP_Stat::nlps, SCIP_Lp::nrows, NULL, r, SCIP_Lp::rows, SCIP_BASESTAT_BASIC, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPcolGetBasisStatus(), SCIPcolGetLb(), SCIPcolGetRedcost(), SCIPcolGetUb(), SCIPcolIsInLP(), SCIPlpGetSolstat(), SCIPlpIsDualReliable(), SCIProwGetBasisStatus(), SCIProwGetDualsol(), SCIProwGetLhs(), SCIProwGetLPActivity(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetRhs(), SCIProwIsInLP(), SCIPsetIsDualfeasNegative(), SCIPsetIsDualfeasPositive(), SCIPsetIsEQ(), SCIPsetIsGE(), SCIPsetIsLE(), SCIPsetIsZero(), SCIP_Lp::solved, SCIP_Lp::validdegeneracylp, and SCIP_Lp::varconsratio.

Referenced by SCIPgetLPDegeneracy().

Variable Documentation

◆ scalars

const SCIP_Real scalars[] = {3.0, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0}
static

additional scalars that are tried in integrality scaling

Definition at line 5731 of file lp.c.

Referenced by disaggregate(), multiAggregateBinvar(), presolveAddKKTAggregatedVars(), SCIPconflictAddBound(), SCIPsolGetRayVal(), SCIPsolGetVal(), SCIPvarMultiaggregate(), and writeExpandedSolutions().

◆ nscalars

const int nscalars = 9
static

Definition at line 5732 of file lp.c.

Referenced by SCIProwCalcIntegralScalar().