Scippy

SCIP

Solving Constraint Integer Programs

cons_linear.c File Reference

Detailed Description

Constraint handler for linear constraints in their most general form, $lhs <= a^T x <= rhs$.

Author
Tobias Achterberg
Timo Berthold
Marc Pfetsch
Kati Wolter
Michael Winkler
Gerald Gamrath
Domenico Salvagnin

Linear constraints are separated with a high priority, because they are easy to separate. Instead of using the global cut pool, the same effect can be implemented by adding linear constraints to the root node, such that they are separated each time, the linear constraints are separated. A constraint handler, which generates linear constraints in this way should have a lower separation priority than the linear constraint handler, and it should have a separation frequency that is a multiple of the frequency of the linear constraint handler. In this way, it can be avoided to separate the same cut twice, because if a separation run of the handler is always preceded by a separation of the linear constraints, the priorily added constraints are always satisfied.

Linear constraints are enforced and checked with a very low priority. Checking of (many) linear constraints is much more involved than checking the solution values for integrality. Because we are separating the linear constraints quite often, it is only necessary to enforce them for integral solutions. A constraint handler which generates pool cuts in its enforcing method should have an enforcing priority smaller than that of the linear constraint handler to avoid regenerating constraints which already exist.

Definition in file cons_linear.c.

#include <assert.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
#include "scip/cons_linear.h"
#include "scip/cons_knapsack.h"
#include "scip/cons_quadratic.h"
#include "scip/cons_nonlinear.h"
#include "scip/pub_misc.h"
#include "scip/debug.h"

Go to the source code of this file.

Macros

#define CONSHDLR_NAME   "linear"
 
#define CONSHDLR_DESC   "linear constraints of the form lhs <= a^T x <= rhs"
 
#define CONSHDLR_SEPAPRIORITY   +100000
 
#define CONSHDLR_ENFOPRIORITY   -1000000
 
#define CONSHDLR_CHECKPRIORITY   -1000000
 
#define CONSHDLR_SEPAFREQ   0
 
#define CONSHDLR_PROPFREQ   1
 
#define CONSHDLR_EAGERFREQ   100
 
#define CONSHDLR_MAXPREROUNDS   -1
 
#define CONSHDLR_DELAYSEPA   FALSE
 
#define CONSHDLR_DELAYPROP   FALSE
 
#define CONSHDLR_DELAYPRESOL   FALSE
 
#define CONSHDLR_NEEDSCONS   TRUE
 
#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP
 
#define EVENTHDLR_NAME   "linear"
 
#define EVENTHDLR_DESC   "bound change event handler for linear constraints"
 
#define CONFLICTHDLR_NAME   "linear"
 
#define CONFLICTHDLR_DESC   "conflict handler creating linear constraints"
 
#define CONFLICTHDLR_PRIORITY   -1000000
 
#define DEFAULT_TIGHTENBOUNDSFREQ   1
 
#define DEFAULT_MAXROUNDS   5
 
#define DEFAULT_MAXROUNDSROOT   -1
 
#define DEFAULT_MAXSEPACUTS   50
 
#define DEFAULT_MAXSEPACUTSROOT   200
 
#define DEFAULT_PRESOLPAIRWISE   TRUE
 
#define DEFAULT_PRESOLUSEHASHING   TRUE
 
#define DEFAULT_NMINCOMPARISONS   200000
 
#define DEFAULT_MINGAINPERNMINCOMP   1e-06
 
#define DEFAULT_SORTVARS   TRUE
 
#define DEFAULT_CHECKRELMAXABS   FALSE
 
#define DEFAULT_MAXAGGRNORMSCALE   0.0
 
#define DEFAULT_MAXCARDBOUNDDIST   0.0
 
#define DEFAULT_SEPARATEALL   FALSE
 
#define DEFAULT_AGGREGATEVARIABLES   TRUE
 
#define DEFAULT_SIMPLIFYINEQUALITIES   TRUE
 
#define DEFAULT_DUALPRESOLVING   TRUE
 
#define DEFAULT_DETECTCUTOFFBOUND   TRUE
 
#define DEFAULT_DETECTLOWERBOUND   TRUE
 
#define DEFAULT_DETECTPARTIALOBJECTIVE   TRUE
 
#define MAXDNOM   10000LL
 
#define MAXSCALEDCOEF   1e+03
 
#define MAXSCALEDCOEFINTEGER   1e+05
 
#define HASHSIZE_LINEARCONS   131101
 
#define QUADCONSUPGD_PRIORITY   1000000
 
#define NONLINCONSUPGD_PRIORITY   1000000
 
#define MAXTIGHTENROUNDS   10
 
#define MAXACTIVITYDELTATHR   1e6
 
#define MAX_CLIQUE_NONZEROS_PER_CONS   1000000
 
#define MAXVALRECOMP   1e+06
 
#define MAXMULTIAGGRQUOTIENT   1e+03
 
#define BINWEIGHT   1
 
#define INTWEIGHT   4
 
#define CONTWEIGHT   8
 
#define MULTIPLIER   2048
 
#define MAXCONSPRESOLROUNDS   10
 

Typedefs

typedef enum Proprule PROPRULE
 
typedef struct InferInfo INFERINFO
 

Enumerations

enum  Proprule {
  PROPRULE_1,
  PROPRULE_2,
  PROPRULE_3,
  PROPRULE_4,
  PROPRULE_INVALID,
  PROPRULE_INVALID = 0,
  PROPRULE_1 = 1,
  PROPRULE_2 = 2,
  PROPRULE_3 = 3,
  PROPRULE_4 = 4,
  PROPRULE_1_CORETIMES = 1,
  PROPRULE_2_EDGEFINDING = 2,
  PROPRULE_3_TTEF = 3,
  PROPRULE_1_RHS = 1,
  PROPRULE_1_LHS = 2,
  PROPRULE_INVALID = 0,
  PROPRULE_1,
  PROPRULE_2,
  PROPRULE_3,
  PROPRULE_4,
  PROPRULE_INVALID,
  PROPRULE_1,
  PROPRULE_2,
  PROPRULE_3,
  PROPRULE_4,
  PROPRULE_0,
  PROPRULE_1,
  PROPRULE_INTLB,
  PROPRULE_INTUB,
  PROPRULE_INVALID
}
 

Functions

static INFERINFO intToInferInfo (int i)
 
static int inferInfoToInt (INFERINFO inferinfo)
 
static int inferInfoGetProprule (INFERINFO inferinfo)
 
static int inferInfoGetPos (INFERINFO inferinfo)
 
static INFERINFO getInferInfo (PROPRULE proprule, int pos)
 
static int getInferInt (PROPRULE proprule, int pos)
 
static SCIP_RETCODE conshdlrdataEnsureLinconsupgradesSize (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, int num)
 
static SCIP_RETCODE consdataEnsureVarsSize (SCIP *scip, SCIP_CONSDATA *consdata, int num)
 
static SCIP_RETCODE linconsupgradeCreate (SCIP *scip, SCIP_LINCONSUPGRADE **linconsupgrade, SCIP_DECL_LINCONSUPGD((*linconsupgd)), int priority)
 
static void linconsupgradeFree (SCIP *scip, SCIP_LINCONSUPGRADE **linconsupgrade)
 
static SCIP_RETCODE conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
 
static void conshdlrdataFree (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
 
static SCIP_Bool conshdlrdataHasUpgrade (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_DECL_LINCONSUPGD((*linconsupgd)), const char *conshdlrname)
 
static SCIP_RETCODE conshdlrdataIncludeUpgrade (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_LINCONSUPGRADE *linconsupgrade)
 
static SCIP_RETCODE lockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
static SCIP_RETCODE unlockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
static SCIP_RETCODE consCatchEvent (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos)
 
static SCIP_RETCODE consDropEvent (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos)
 
static SCIP_RETCODE consCatchAllEvents (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr)
 
static SCIP_RETCODE consDropAllEvents (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr)
 
static SCIP_Bool needEvents (SCIP *scip)
 
static SCIP_RETCODE consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs)
 
static SCIP_RETCODE consdataFree (SCIP *scip, SCIP_CONSDATA **consdata)
 
static SCIP_RETCODE consdataPrint (SCIP *scip, SCIP_CONSDATA *consdata, FILE *file)
 
static void consdataInvalidateActivities (SCIP_CONSDATA *consdata)
 
static SCIP_Real consdataComputePseudoActivity (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void consdataRecomputeMinactivity (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void consdataRecomputeMaxactivity (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void consdataRecomputeGlbMinactivity (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void consdataRecomputeGlbMaxactivity (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void consdataRecomputeMaxActivityDelta (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void consdataUpdateActivities (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_Real val, SCIP_BOUNDTYPE boundtype, SCIP_Bool global, SCIP_Bool checkreliability)
 
static void consdataUpdateActivitiesLb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb, SCIP_Real val, SCIP_Bool checkreliability)
 
static void consdataUpdateActivitiesUb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub, SCIP_Real val, SCIP_Bool checkreliability)
 
static void consdataUpdateActivitiesGlbLb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real oldlb, SCIP_Real newlb, SCIP_Real val, SCIP_Bool checkreliability)
 
static void consdataUpdateActivitiesGlbUb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real oldub, SCIP_Real newub, SCIP_Real val, SCIP_Bool checkreliability)
 
static void consdataUpdateAddCoef (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real val, SCIP_Bool checkreliability)
 
static void consdataUpdateDelCoef (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real val, SCIP_Bool checkreliability)
 
static void consdataUpdateChgCoef (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real oldval, SCIP_Real newval, SCIP_Bool checkreliability)
 
static void consdataCalcMaxAbsval (SCIP_CONSDATA *consdata)
 
static SCIP_Real consdataGetMaxAbsval (SCIP_CONSDATA *consdata)
 
static void consdataCalcActivities (SCIP *scip, SCIP_CONSDATA *consdata)
 
static void getMinActivity (SCIP *scip, SCIP_CONSDATA *consdata, int posinf, int neginf, int poshuge, int neghuge, SCIP_Real delta, SCIP_Bool global, SCIP_Bool goodrelax, SCIP_Real *minactivity, SCIP_Bool *isrelax, SCIP_Bool *issettoinfinity)
 
static void getMaxActivity (SCIP *scip, SCIP_CONSDATA *consdata, int posinf, int neginf, int poshuge, int neghuge, SCIP_Real delta, SCIP_Bool global, SCIP_Bool goodrelax, SCIP_Real *maxactivity, SCIP_Bool *isrelax, SCIP_Bool *issettoinfinity)
 
static void consdataGetActivityBounds (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Bool goodrelax, SCIP_Real *minactivity, SCIP_Real *maxactivity, SCIP_Bool *minisrelax, SCIP_Bool *maxisrelax)
 
static void consdataGetReliableResidualActivity (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *cancelvar, SCIP_Real *resactivity, SCIP_Bool isminresact, SCIP_Bool useglobalbounds)
 
static void consdataGetActivityResiduals (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real val, SCIP_Bool goodrelax, SCIP_Real *minresactivity, SCIP_Real *maxresactivity, SCIP_Bool *minisrelax, SCIP_Bool *maxisrelax, SCIP_Bool *isminsettoinfinity, SCIP_Bool *ismaxsettoinfinity)
 
static void consdataGetGlbActivityBounds (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Bool goodrelax, SCIP_Real *glbminactivity, SCIP_Real *glbmaxactivity, SCIP_Bool *minisrelax, SCIP_Bool *maxisrelax, SCIP_Bool *isminsettoinfinity, SCIP_Bool *ismaxsettoinfinity)
 
static void consdataGetGlbActivityResiduals (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real val, SCIP_Bool goodrelax, SCIP_Real *minresactivity, SCIP_Real *maxresactivity, SCIP_Bool *minisrelax, SCIP_Bool *maxisrelax, SCIP_Bool *isminsettoinfinity, SCIP_Bool *ismaxsettoinfinity)
 
static SCIP_Real consdataGetActivity (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol)
 
static SCIP_Real consdataGetFeasibility (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol)
 
static SCIP_Longint getVarSignature (SCIP_VAR *var)
 
static void consdataUpdateSignatures (SCIP_CONSDATA *consdata, int pos)
 
static void consdataCalcSignatures (SCIP_CONSDATA *consdata)
 
static SCIP_DECL_SORTINDCOMP (consdataCompVar)
 
static void permSortConsdata (SCIP_CONSDATA *consdata, int *perm, int nvars)
 
static SCIP_RETCODE consdataSort (SCIP *scip, SCIP_CONSDATA *consdata)
 
static SCIP_RETCODE chgLhs (SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
 
static SCIP_RETCODE chgRhs (SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
 
static SCIP_RETCODE addCoef (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
static SCIP_RETCODE delCoefPos (SCIP *scip, SCIP_CONS *cons, int pos)
 
static SCIP_RETCODE chgCoefPos (SCIP *scip, SCIP_CONS *cons, int pos, SCIP_Real newval)
 
static SCIP_RETCODE scaleCons (SCIP *scip, SCIP_CONS *cons, SCIP_Real scalar)
 
static SCIP_RETCODE performVarDeletions (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss)
 
static SCIP_RETCODE normalizeCons (SCIP *scip, SCIP_CONS *cons)
 
static SCIP_RETCODE mergeMultiples (SCIP *scip, SCIP_CONS *cons)
 
static SCIP_RETCODE applyFixings (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible)
 
static SCIP_RETCODE addConflictBounds (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, SCIP_BDCHGIDX *bdchgidx, int inferpos, SCIP_Bool reasonisrhs)
 
static SCIP_RETCODE resolvePropagation (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, INFERINFO inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_RESULT *result)
 
static SCIP_RETCODE analyzeConflict (SCIP *scip, SCIP_CONS *cons, SCIP_Bool reasonisrhs)
 
static SCIP_Bool canTightenBounds (SCIP *scip, SCIP_CONS *cons)
 
static SCIP_RETCODE tightenVarUb (SCIP *scip, SCIP_CONS *cons, int pos, PROPRULE proprule, SCIP_Real newub, SCIP_Real oldub, SCIP_Bool *cutoff, int *nchgbds, SCIP_Bool force)
 
static SCIP_RETCODE tightenVarLb (SCIP *scip, SCIP_CONS *cons, int pos, PROPRULE proprule, SCIP_Real newlb, SCIP_Real oldlb, SCIP_Bool *cutoff, int *nchgbds, SCIP_Bool force)
 
static SCIP_RETCODE tightenVarBoundsEasy (SCIP *scip, SCIP_CONS *cons, int pos, SCIP_Bool *cutoff, int *nchgbds, SCIP_Bool force)
 
static SCIP_RETCODE tightenVarBounds (SCIP *scip, SCIP_CONS *cons, int pos, SCIP_Bool *cutoff, int *nchgbds, SCIP_Bool force)
 
static SCIP_RETCODE tightenBounds (SCIP *scip, SCIP_CONS *cons, SCIP_Bool sortvars, SCIP_Bool *cutoff, int *nchgbds)
 
static SCIP_RETCODE checkCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checklprows, SCIP_Bool checkrelmaxabs, SCIP_Bool *violated)
 
static SCIP_RETCODE createRow (SCIP *scip, SCIP_CONS *cons)
 
static SCIP_RETCODE addRelaxation (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *cutoff)
 
static SCIP_RETCODE separateCons (SCIP *scip, SCIP_CONS *cons, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_SOL *sol, SCIP_Bool separatecards, SCIP_Bool separateall, int *ncuts, SCIP_Bool *cutoff)
 
static SCIP_RETCODE propagateCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool tightenbounds, SCIP_Bool sortvars, SCIP_Bool *cutoff, int *nchgbds)
 
static SCIP_RETCODE fixVariables (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars)
 
static SCIP_RETCODE extractCliques (SCIP *scip, SCIP_CONS *cons, SCIP_Bool sortvars, int *nfixedvars, int *nchgbds, SCIP_Bool *cutoff)
 
static SCIP_RETCODE tightenSides (SCIP *scip, SCIP_CONS *cons, int *nchgsides)
 
static SCIP_RETCODE consdataTightenCoefs (SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *nchgsides)
 
static SCIP_RETCODE convertUnaryEquality (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars, int *ndelconss)
 
static SCIP_RETCODE convertBinaryEquality (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *naggrvars, int *ndelconss)
 
static void getNewSidesAfterAggregation (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *slackvar, SCIP_Real slackcoef, SCIP_Real *newlhs, SCIP_Real *newrhs)
 
static SCIP_RETCODE convertLongEquality (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *naggrvars, int *ndelconss)
 
static SCIP_Bool checkEqualObjective (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real *scale, SCIP_Real *offset)
 
static SCIP_RETCODE checkPartialObjective (SCIP *scip, SCIP_CONS *cons, SCIP_CONSHDLRDATA *conshdlrdata)
 
static SCIP_RETCODE updateCutoffbound (SCIP *scip, SCIP_CONS *cons, SCIP_Real primalbound)
 
static SCIP_RETCODE checkParallelObjective (SCIP *scip, SCIP_CONS *cons, SCIP_CONSHDLRDATA *conshdlrdata)
 
static SCIP_RETCODE convertEquality (SCIP *scip, SCIP_CONS *cons, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *ndelconss)
 
static SCIP_Bool consdataIsResidualIntegral (SCIP *scip, SCIP_CONSDATA *consdata, int pos, SCIP_Real val)
 
static void calculateMinvalAndMaxval (SCIP *scip, SCIP_Real side, SCIP_Real val, SCIP_Real minresactivity, SCIP_Real maxresactivity, SCIP_Real *minval, SCIP_Real *maxval)
 
static SCIP_RETCODE dualPresolve (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *ndelconss)
 
static int getVarWeight (SCIP_VAR *var)
 
static SCIP_RETCODE aggregateVariables (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff, int *nfixedvars, int *naggrvars, int *ndelconss)
 
static SCIP_DECL_SORTINDCOMP (consdataCompSim)
 
static SCIP_RETCODE rangedRowSimplify (SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *nchgsides)
 
static SCIP_RETCODE simplifyInequalities (SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *nchgsides)
 
static SCIP_RETCODE aggregateConstraints (SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1, int *commonidx0, int *commonidx1, int *diffidx0minus1, int *diffidx1minus0, int nvarscommon, int commonidxweight, int diffidx0minus1weight, int diffidx1minus0weight, SCIP_Real maxaggrnormscale, int *nchgcoefs, SCIP_Bool *aggregated)
 
static SCIP_DECL_HASHGETKEY (hashGetKeyLinearcons)
 
static SCIP_DECL_HASHKEYEQ (hashKeyEqLinearcons)
 
static SCIP_DECL_HASHKEYVAL (hashKeyValLinearcons)
 
static SCIP_RETCODE detectRedundantConstraints (SCIP *scip, BMS_BLKMEM *blkmem, SCIP_CONS **conss, int nconss, int *firstchange, SCIP_Bool *cutoff, int *ndelconss, int *nchgsides)
 
static SCIP_RETCODE preprocessConstraintPairs (SCIP *scip, SCIP_CONS **conss, int firstchange, int chkind, SCIP_Real maxaggrnormscale, SCIP_Bool *cutoff, int *ndelconss, int *nchgsides, int *nchgcoefs)
 
static SCIP_RETCODE fullDualPresolve (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool *cutoff, int *nchgbds)
 
static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyLinear)
 
static SCIP_DECL_CONSFREE (consFreeLinear)
 
static SCIP_DECL_CONSINIT (consInitLinear)
 
static SCIP_DECL_CONSEXIT (consExitLinear)
 
static SCIP_DECL_CONSEXITPRE (consExitpreLinear)
 
static SCIP_DECL_CONSEXITSOL (consExitsolLinear)
 
static SCIP_DECL_CONSDELETE (consDeleteLinear)
 
static SCIP_DECL_CONSTRANS (consTransLinear)
 
static SCIP_DECL_CONSINITLP (consInitlpLinear)
 
static SCIP_DECL_CONSSEPALP (consSepalpLinear)
 
static SCIP_DECL_CONSSEPASOL (consSepasolLinear)
 
static SCIP_DECL_CONSENFOLP (consEnfolpLinear)
 
static SCIP_DECL_CONSENFOPS (consEnfopsLinear)
 
static SCIP_DECL_CONSCHECK (consCheckLinear)
 
static SCIP_DECL_CONSPROP (consPropLinear)
 
static SCIP_DECL_CONSPRESOL (consPresolLinear)
 
static SCIP_DECL_CONSRESPROP (consRespropLinear)
 
static SCIP_DECL_CONSLOCK (consLockLinear)
 
static SCIP_DECL_CONSDELVARS (consDelvarsLinear)
 
static SCIP_DECL_CONSPRINT (consPrintLinear)
 
static SCIP_DECL_CONSCOPY (consCopyLinear)
 
static SCIP_DECL_CONSPARSE (consParseLinear)
 
static SCIP_DECL_CONSGETVARS (consGetVarsLinear)
 
static SCIP_DECL_CONSGETNVARS (consGetNVarsLinear)
 
static SCIP_DECL_EVENTEXEC (eventExecLinear)
 
static SCIP_DECL_CONFLICTEXEC (conflictExecLinear)
 
static SCIP_DECL_QUADCONSUPGD (upgradeConsQuadratic)
 
static SCIP_DECL_NONLINCONSUPGD (upgradeConsNonlinear)
 
SCIP_RETCODE SCIPincludeConshdlrLinear (SCIP *scip)
 
SCIP_RETCODE SCIPincludeLinconsUpgrade (SCIP *scip, SCIP_DECL_LINCONSUPGD((*linconsupgd)), int priority, const char *conshdlrname)
 
SCIP_RETCODE SCIPcreateConsLinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
 
SCIP_RETCODE SCIPcreateConsBasicLinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs)
 
SCIP_RETCODE SCIPcopyConsLinear (SCIP *scip, SCIP_CONS **cons, SCIP *sourcescip, const char *name, int nvars, SCIP_VAR **sourcevars, SCIP_Real *sourcecoefs, SCIP_Real lhs, SCIP_Real rhs, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool global, SCIP_Bool *valid)
 
SCIP_RETCODE SCIPaddCoefLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
 
SCIP_Real SCIPgetLhsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetRhsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPchgLhsLinear (SCIP *scip, SCIP_CONS *cons, SCIP_Real lhs)
 
SCIP_RETCODE SCIPchgRhsLinear (SCIP *scip, SCIP_CONS *cons, SCIP_Real rhs)
 
int SCIPgetNVarsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_VAR ** SCIPgetVarsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RealSCIPgetValsLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetActivityLinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
 
SCIP_Real SCIPgetFeasibilityLinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
 
SCIP_Real SCIPgetDualsolLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_Real SCIPgetDualfarkasLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_ROWSCIPgetRowLinear (SCIP *scip, SCIP_CONS *cons)
 
SCIP_RETCODE SCIPupgradeConsLinear (SCIP *scip, SCIP_CONS *cons, SCIP_CONS **upgdcons)
 

Macro Definition Documentation

#define CONSHDLR_DESC   "linear constraints of the form lhs <= a^T x <= rhs"

Definition at line 62 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_SEPAPRIORITY   +100000

priority of the constraint handler for separation

Definition at line 63 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_ENFOPRIORITY   -1000000

priority of the constraint handler for constraint enforcing

Definition at line 64 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_CHECKPRIORITY   -1000000

priority of the constraint handler for checking feasibility

Definition at line 65 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_SEPAFREQ   0

frequency for separating cuts; zero means to separate only in the root node

Definition at line 66 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_PROPFREQ   1

frequency for propagating domains; zero means only preprocessing propagation

Definition at line 67 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_EAGERFREQ   100

frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only

Definition at line 68 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_MAXPREROUNDS   -1

maximal number of presolving rounds the constraint handler participates in (-1: no limit)

Definition at line 70 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_DELAYSEPA   FALSE

should separation method be delayed, if other separators found cuts?

Definition at line 71 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_DELAYPROP   FALSE

should propagation method be delayed, if other propagators found reductions?

Definition at line 72 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_DELAYPRESOL   FALSE

should presolving method be delayed, if other presolvers found reductions?

Definition at line 73 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_NEEDSCONS   TRUE

should the constraint handler be skipped, if no constraints are available?

Definition at line 74 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP

Definition at line 76 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define EVENTHDLR_NAME   "linear"

Definition at line 78 of file cons_linear.c.

Referenced by SCIP_DECL_EVENTEXEC(), and SCIPincludeConshdlrLinear().

#define EVENTHDLR_DESC   "bound change event handler for linear constraints"

Definition at line 79 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONFLICTHDLR_NAME   "linear"

Definition at line 81 of file cons_linear.c.

Referenced by SCIP_DECL_CONFLICTEXEC(), and SCIPincludeConshdlrLinear().

#define CONFLICTHDLR_DESC   "conflict handler creating linear constraints"

Definition at line 82 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define CONFLICTHDLR_PRIORITY   -1000000

Definition at line 83 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_TIGHTENBOUNDSFREQ   1

multiplier on propagation frequency, how often the bounds are tightened

Definition at line 85 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MAXROUNDS   5

maximal number of separation rounds per node (-1: unlimited)

Definition at line 86 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MAXROUNDSROOT   -1

maximal number of separation rounds in the root node (-1: unlimited)

Definition at line 87 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MAXSEPACUTS   50

maximal number of cuts separated per separation round

Definition at line 88 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MAXSEPACUTSROOT   200

maximal number of cuts separated per separation round in root node

Definition at line 89 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_PRESOLPAIRWISE   TRUE

should pairwise constraint comparison be performed in presolving?

Definition at line 90 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_PRESOLUSEHASHING   TRUE

should hash table be used for detecting redundant constraints in advance

Definition at line 91 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_NMINCOMPARISONS   200000

number for minimal pairwise presolving comparisons

Definition at line 92 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MINGAINPERNMINCOMP   1e-06

minimal gain per minimal pairwise presolving comparisons to repeat pairwise comparison round

Definition at line 93 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_SORTVARS   TRUE

should variables be sorted after presolve w.r.t their coefficient absolute for faster propagation?

Definition at line 95 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_CHECKRELMAXABS   FALSE

should the violation for a constraint with side 0.0 be checked relative to 1.0 (FALSE) or to the maximum absolute value in the activity (TRUE)?

Definition at line 97 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MAXAGGRNORMSCALE   0.0

maximal allowed relative gain in maximum norm for constraint aggregation (0.0: disable constraint aggregation)

Definition at line 99 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_MAXCARDBOUNDDIST   0.0

maximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for separating knapsack cardinality cuts

Definition at line 101 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_SEPARATEALL   FALSE

should all constraints be subject to cardinality cut generation instead of only the ones with non-zero dual value?

Definition at line 103 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_AGGREGATEVARIABLES   TRUE

should presolving search for redundant variables in equations

Definition at line 105 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_SIMPLIFYINEQUALITIES   TRUE

should presolving try to simplify inequalities

Definition at line 106 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_DUALPRESOLVING   TRUE

should dual presolving steps be performed?

Definition at line 107 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_DETECTCUTOFFBOUND   TRUE

should presolving try to detect constraints parallel to the objective function defining an upper bound and prevent these constraints from entering the LP

Definition at line 108 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_DETECTLOWERBOUND   TRUE

should presolving try to detect constraints parallel to the objective function defining a lower bound and prevent these constraints from entering the LP

Definition at line 111 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define DEFAULT_DETECTPARTIALOBJECTIVE   TRUE

should presolving try to detect subsets of constraints parallel to the objective function

Definition at line 114 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define MAXDNOM   10000LL

maximal denominator for simple rational fixed values

Definition at line 117 of file cons_linear.c.

Referenced by convertUnaryEquality(), fixVariables(), SCIP_DECL_PRESOLEXEC(), and tryAggregateIntVars().

#define MAXSCALEDCOEF   1e+03

maximal coefficient value after scaling

Definition at line 118 of file cons_linear.c.

Referenced by normalizeCons().

#define MAXSCALEDCOEFINTEGER   1e+05

maximal coefficient value after scaling if all variables are of integral type

Definition at line 119 of file cons_linear.c.

Referenced by normalizeCons().

#define HASHSIZE_LINEARCONS   131101

minimal size of hash table in linear constraint tables

Definition at line 123 of file cons_linear.c.

Referenced by detectRedundantConstraints().

#define QUADCONSUPGD_PRIORITY   1000000

priority of the constraint handler for upgrading of quadratic constraints

Definition at line 125 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define NONLINCONSUPGD_PRIORITY   1000000

priority of the constraint handler for upgrading of nonlinear constraints

Definition at line 126 of file cons_linear.c.

Referenced by SCIPincludeConshdlrLinear().

#define MAXTIGHTENROUNDS   10

Definition at line 5242 of file cons_linear.c.

Referenced by tightenBounds().

#define MAXACTIVITYDELTATHR   1e6

Definition at line 5243 of file cons_linear.c.

Referenced by SCIP_DECL_CONSEXITPRE(), and tightenBounds().

#define MAX_CLIQUE_NONZEROS_PER_CONS   1000000

Definition at line 5924 of file cons_linear.c.

Referenced by extractCliques().

#define MAXVALRECOMP   1e+06

Definition at line 7005 of file cons_linear.c.

Referenced by consdataTightenCoefs().

#define MAXMULTIAGGRQUOTIENT   1e+03

Definition at line 7627 of file cons_linear.c.

Referenced by convertLongEquality().

#define BINWEIGHT   1

Definition at line 9025 of file cons_linear.c.

Referenced by getVarWeight().

#define INTWEIGHT   4

Definition at line 9026 of file cons_linear.c.

Referenced by getVarWeight().

#define CONTWEIGHT   8

Definition at line 9027 of file cons_linear.c.

Referenced by getVarWeight().

#define MULTIPLIER   2048

Definition at line 10946 of file cons_linear.c.

Referenced by SCIP_DECL_HASHKEYVAL().

#define MAXCONSPRESOLROUNDS   10

Definition at line 13252 of file cons_linear.c.

Referenced by SCIP_DECL_CONSPRESOL().

Typedef Documentation

typedef enum Proprule PROPRULE

Definition at line 298 of file cons_linear.c.

typedef struct InferInfo INFERINFO

Definition at line 313 of file cons_linear.c.

Enumeration Type Documentation

enum Proprule
Enumerator:
PROPRULE_1 

left hand side and bounds on z -> lower bound on x

PROPRULE_2 

left hand side and upper bound on x -> bound on z

PROPRULE_3 

right hand side and bounds on z -> upper bound on x

PROPRULE_4 

right hand side and lower bound on x -> bound on z

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

PROPRULE_1 

v_i = FALSE => r = FALSE

PROPRULE_2 

r = TRUE => v_i = TRUE for all i

PROPRULE_3 

v_i = TRUE for all i => r = TRUE

PROPRULE_4 

r = FALSE, v_i = TRUE for all i except j => v_j = FALSE

PROPRULE_1_CORETIMES 

core-time propagator

PROPRULE_2_EDGEFINDING 

edge-finder

PROPRULE_3_TTEF 

time-table edeg-finding

PROPRULE_1_RHS 

activity residuals of all other variables tighten bounds of single variable due to the right hand side of the inequality

PROPRULE_1_LHS 

activity residuals of all other variables tighten bounds of single variable due to the left hand side of the inequality

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

PROPRULE_1 

v_i = TRUE => r = TRUE

PROPRULE_2 

r = FALSE => v_i = FALSE for all i

PROPRULE_3 

v_i = FALSE for all i => r = FALSE

PROPRULE_4 

r = TRUE, v_i = FALSE for all i except j => v_j = TRUE

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

PROPRULE_1 

left hand side and bounds on y -> lower bound on x

PROPRULE_2 

left hand side and upper bound on x -> bound on y

PROPRULE_3 

right hand side and bounds on y -> upper bound on x

PROPRULE_4 

right hand side and lower bound on x -> bound on y

PROPRULE_0 

all variables are fixed => fix integral variable

PROPRULE_1 

all except one variable fixed => fix remaining variable

PROPRULE_INTLB 

lower bound propagation of integral variable

PROPRULE_INTUB 

upper bound propagation of integral variable

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

Definition at line 290 of file cons_linear.c.

Function Documentation

static INFERINFO intToInferInfo ( int  i)
static

converts an integer into an inference information

Parameters
iinteger to convert

Definition at line 317 of file cons_linear.c.

Referenced by SCIP_DECL_CONSRESPROP().

static int inferInfoToInt ( INFERINFO  inferinfo)
static

converts an inference information into an int

Parameters
inferinfoinference information to convert

Definition at line 330 of file cons_linear.c.

Referenced by getInferInt().

static int inferInfoGetProprule ( INFERINFO  inferinfo)
static

returns the propagation rule stored in the inference information

Parameters
inferinfoinference information to convert

Definition at line 339 of file cons_linear.c.

Referenced by resolvePropagation().

static int inferInfoGetPos ( INFERINFO  inferinfo)
static

returns the position stored in the inference information

Parameters
inferinfoinference information to convert

Definition at line 348 of file cons_linear.c.

Referenced by resolvePropagation().

static INFERINFO getInferInfo ( PROPRULE  proprule,
int  pos 
)
static

constructs an inference information out of a propagation rule and a position number

Parameters
proprulepropagation rule that deduced the value
posvariable position, the propagation rule was applied at

Definition at line 357 of file cons_linear.c.

Referenced by getInferInt().

static int getInferInt ( PROPRULE  proprule,
int  pos 
)
static

constructs an inference information out of a propagation rule and a position number, returns info as int

Parameters
proprulepropagation rule that deduced the value
posvariable position, the propagation rule was applied at

Definition at line 373 of file cons_linear.c.

References getInferInfo(), and inferInfoToInt().

Referenced by tightenVarBounds(), tightenVarLb(), and tightenVarUb().

static SCIP_RETCODE conshdlrdataEnsureLinconsupgradesSize ( SCIP scip,
SCIP_CONSHDLRDATA conshdlrdata,
int  num 
)
static

ensures, that linconsupgrades array can store at least num entries

Parameters
scipSCIP data structure
conshdlrdatalinear constraint handler data
numminimum number of entries to store

Definition at line 388 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocMemoryArray.

Referenced by conshdlrdataIncludeUpgrade().

static SCIP_RETCODE consdataEnsureVarsSize ( SCIP scip,
SCIP_CONSDATA consdata,
int  num 
)
static

ensures, that vars and vals arrays can store at least num entries

Parameters
scipSCIP data structure
consdatalinear constraint data
numminimum number of entries to store

Definition at line 413 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPcalcMemGrowSize(), and SCIPreallocBlockMemoryArray.

Referenced by addCoef().

static SCIP_RETCODE linconsupgradeCreate ( SCIP scip,
SCIP_LINCONSUPGRADE **  linconsupgrade,
SCIP_DECL_LINCONSUPGD((*linconsupgd))  ,
int  priority 
)
static

creates a linear constraint upgrade data object

Parameters
scipSCIP data structure
linconsupgradepointer to store the linear constraint upgrade
prioritypriority of upgrading method

Definition at line 448 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocMemory, and TRUE.

Referenced by SCIPincludeLinconsUpgrade().

static void linconsupgradeFree ( SCIP scip,
SCIP_LINCONSUPGRADE **  linconsupgrade 
)
static

frees a linear constraint upgrade data object

Parameters
scipSCIP data structure
linconsupgradepointer to the linear constraint upgrade

Definition at line 469 of file cons_linear.c.

References NULL, and SCIPfreeMemory.

Referenced by conshdlrdataFree().

static SCIP_RETCODE conshdlrdataCreate ( SCIP scip,
SCIP_CONSHDLRDATA **  conshdlrdata,
SCIP_EVENTHDLR eventhdlr 
)
static

creates constraint handler data for linear constraint handler

Parameters
scipSCIP data structure
conshdlrdatapointer to store the constraint handler data
eventhdlrevent handler

Definition at line 483 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocMemory.

Referenced by SCIPincludeConshdlrLinear().

static void conshdlrdataFree ( SCIP scip,
SCIP_CONSHDLRDATA **  conshdlrdata 
)
static

frees constraint handler data for linear constraint handler

Parameters
scipSCIP data structure
conshdlrdatapointer to the constraint handler data

Definition at line 506 of file cons_linear.c.

References linconsupgradeFree(), NULL, SCIPfreeMemory, and SCIPfreeMemoryArrayNull.

Referenced by SCIP_DECL_CONSFREE().

static SCIP_Bool conshdlrdataHasUpgrade ( SCIP scip,
SCIP_CONSHDLRDATA conshdlrdata,
SCIP_DECL_LINCONSUPGD((*linconsupgd))  ,
const char *  conshdlrname 
)
static

creates a linear constraint upgrade data object

Parameters
scipSCIP data structure
conshdlrdataconstraint handler data
conshdlrnamename of the constraint handler

Definition at line 528 of file cons_linear.c.

References FALSE, NULL, SCIPwarningMessage(), and TRUE.

Referenced by SCIPincludeLinconsUpgrade().

static SCIP_RETCODE conshdlrdataIncludeUpgrade ( SCIP scip,
SCIP_CONSHDLRDATA conshdlrdata,
SCIP_LINCONSUPGRADE linconsupgrade 
)
static

adds a linear constraint update method to the constraint handler's data

Parameters
scipSCIP data structure
conshdlrdataconstraint handler data
linconsupgradelinear constraint upgrade method

Definition at line 558 of file cons_linear.c.

References conshdlrdataEnsureLinconsupgradesSize(), NULL, SCIP_LinConsUpgrade::priority, SCIP_CALL, and SCIP_OKAY.

Referenced by SCIPincludeLinconsUpgrade().

static SCIP_RETCODE lockRounding ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  val 
)
static

installs rounding locks for the given variable associated to the given coefficient in the linear constraint

Parameters
scipSCIP data structure
conslinear constraint
varvariable of constraint entry
valcoefficient of constraint entry

Definition at line 590 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPisInfinity(), SCIPisPositive(), SCIPisZero(), and SCIPlockVarCons().

Referenced by addCoef(), and chgCoefPos().

static SCIP_RETCODE unlockRounding ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  val 
)
static

removes rounding locks for the given variable associated to the given coefficient in the linear constraint

Parameters
scipSCIP data structure
conslinear constraint
varvariable of constraint entry
valcoefficient of constraint entry

Definition at line 623 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPisInfinity(), SCIPisPositive(), SCIPisZero(), and SCIPunlockVarCons().

Referenced by chgCoefPos(), and delCoefPos().

static SCIP_RETCODE consCatchEvent ( SCIP scip,
SCIP_CONS cons,
SCIP_EVENTHDLR eventhdlr,
int  pos 
)
static

creates event data for variable at given position, and catches events

Parameters
scipSCIP data structure
conslinear constraint
eventhdlrevent handler to call for the event processing
posarray position of variable to catch bound change events for

Definition at line 656 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_GBDCHANGED, SCIP_EVENTTYPE_VARDELETED, SCIP_EVENTTYPE_VARFIXED, SCIP_EVENTTYPE_VARUNLOCKED, SCIP_OKAY, SCIPallocBlockMemory, SCIPcatchVarEvent(), SCIPconsGetData(), and SCIPvarIsTransformed().

Referenced by addCoef(), and consCatchAllEvents().

static SCIP_RETCODE consDropEvent ( SCIP scip,
SCIP_CONS cons,
SCIP_EVENTHDLR eventhdlr,
int  pos 
)
static

deletes event data for variable at given position, and drops events

Parameters
scipSCIP data structure
conslinear constraint
eventhdlrevent handler to call for the event processing
posarray position of variable to catch bound change events for

Definition at line 692 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDCHANGED, SCIP_EVENTTYPE_GBDCHANGED, SCIP_EVENTTYPE_VARDELETED, SCIP_EVENTTYPE_VARFIXED, SCIP_EVENTTYPE_VARUNLOCKED, SCIP_OKAY, SCIPconsGetData(), SCIPdropVarEvent(), and SCIPfreeBlockMemory.

Referenced by consDropAllEvents(), and delCoefPos().

static SCIP_RETCODE consCatchAllEvents ( SCIP scip,
SCIP_CONS cons,
SCIP_EVENTHDLR eventhdlr 
)
static

catches bound change events for all variables in transformed linear constraint

Parameters
scipSCIP data structure
conslinear constraint
eventhdlrevent handler to call for the event processing

Definition at line 726 of file cons_linear.c.

References BMSclearMemoryArray, consCatchEvent(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, and SCIPconsGetData().

Referenced by SCIP_DECL_CONSINIT(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsLinear().

static SCIP_RETCODE consDropAllEvents ( SCIP scip,
SCIP_CONS cons,
SCIP_EVENTHDLR eventhdlr 
)
static

drops bound change events for all variables in transformed linear constraint

Parameters
scipSCIP data structure
conslinear constraint
eventhdlrevent handler to call for the event processing

Definition at line 758 of file cons_linear.c.

References consDropEvent(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), and SCIPfreeBlockMemoryArray.

Referenced by SCIP_DECL_CONSDELETE(), and SCIP_DECL_CONSEXIT().

static SCIP_Bool needEvents ( SCIP scip)
static

returns whether we are in a stage, where the variable events should be caught

Parameters
scipSCIP data structure

Definition at line 789 of file cons_linear.c.

References NULL, SCIP_STAGE_FREETRANS, SCIP_STAGE_TRANSFORMED, and SCIPgetStage().

Referenced by SCIP_DECL_CONSTRANS(), and SCIPcreateConsLinear().

static SCIP_RETCODE consdataCreate ( SCIP scip,
SCIP_CONSDATA **  consdata,
int  nvars,
SCIP_VAR **  vars,
SCIP_Real vals,
SCIP_Real  lhs,
SCIP_Real  rhs 
)
static

creates a linear constraint data

Parameters
scipSCIP data structure
consdatapointer to linear constraint data
nvarsnumber of nonzeros in the constraint
varsarray with variables of constraint entries
valsarray with coefficients of constraint entries
lhsleft hand side of row
rhsright hand side of row

Definition at line 800 of file cons_linear.c.

References FALSE, NULL, SCIP_CALL, SCIP_INVALID, SCIP_INVALIDDATA, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPduplicateBlockMemoryArray, SCIPerrorMessage, SCIPgetTransformedVars(), SCIPinfinity(), SCIPisGT(), SCIPisInfinity(), SCIPisTransformed(), SCIPisZero(), and TRUE.

Referenced by SCIP_DECL_CONSTRANS(), and SCIPcreateConsLinear().

static SCIP_RETCODE consdataFree ( SCIP scip,
SCIP_CONSDATA **  consdata 
)
static

frees a linear constraint data

Parameters
scipSCIP data structure
consdatapointer to linear constraint data

Definition at line 937 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, SCIPisZero(), SCIPreleaseRow(), and SCIPreleaseVar().

Referenced by SCIP_DECL_CONSDELETE().

static SCIP_RETCODE consdataPrint ( SCIP scip,
SCIP_CONSDATA consdata,
FILE *  file 
)
static

prints linear constraint in CIP format to file stream

Parameters
scipSCIP data structure
consdatalinear constraint data
fileoutput file (or NULL for standard output)

Definition at line 972 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPinfoMessage(), SCIPisEQ(), SCIPisInfinity(), SCIPwriteVarsLinearsum(), and TRUE.

Referenced by SCIP_DECL_CONSPRINT().

static void consdataInvalidateActivities ( SCIP_CONSDATA consdata)
static

invalidates activity bounds, such that they are recalculated in next get

Parameters
consdatalinear constraint

Definition at line 1011 of file cons_linear.c.

References FALSE, NULL, and SCIP_INVALID.

Referenced by delCoefPos(), and scaleCons().

static SCIP_Real consdataComputePseudoActivity ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

compute the pseudo activity of a constraint

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1051 of file cons_linear.c.

References SCIP_BOUNDTYPE_LOWER, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetBestBoundType(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by checkCons(), and consdataGetActivity().

static void consdataRecomputeMinactivity ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

recompute the minactivity of a constraint

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1102 of file cons_linear.c.

References SCIP_Real, SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.

Referenced by consdataTightenCoefs(), getMinActivity(), and tightenVarBoundsEasy().

static void consdataRecomputeMaxactivity ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

recompute the maxactivity of a constraint

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1129 of file cons_linear.c.

References SCIP_Real, SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.

Referenced by consdataTightenCoefs(), getMaxActivity(), and tightenVarBoundsEasy().

static void consdataRecomputeGlbMinactivity ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

recompute the global minactivity of a constraint

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1156 of file cons_linear.c.

References SCIP_Real, SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by extractCliques(), and getMinActivity().

static void consdataRecomputeGlbMaxactivity ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

recompute the global maxactivity of a constraint

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1182 of file cons_linear.c.

References SCIP_Real, SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by extractCliques(), and getMaxActivity().

static void consdataRecomputeMaxActivityDelta ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

recompute maximal activity contribution for a single variable

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1208 of file cons_linear.c.

References MAX, REALABS, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by SCIP_DECL_CONSEXITPRE(), simplifyInequalities(), and tightenBounds().

static void consdataUpdateActivities ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  oldbound,
SCIP_Real  newbound,
SCIP_Real  val,
SCIP_BOUNDTYPE  boundtype,
SCIP_Bool  global,
SCIP_Bool  checkreliability 
)
static

updates activities for a change in a bound

Parameters
scipSCIP data structure
consdatalinear constraint data
varvariable that has been changed; can be NULL for global bound changes
oldboundold bound of variable
newboundnew bound of variable
valcoefficient of constraint entry
boundtypetype of the bound change
globalis it a global or a local bound change?
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1242 of file cons_linear.c.

References FALSE, NULL, REALABS, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_INVALID, SCIP_Real, SCIPdebugMessage, SCIPisHugeValue(), SCIPisInfinity(), and SCIPisUpdateUnreliable().

Referenced by consdataUpdateActivitiesGlbLb(), consdataUpdateActivitiesGlbUb(), consdataUpdateActivitiesLb(), and consdataUpdateActivitiesUb().

static void consdataUpdateActivitiesLb ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  oldlb,
SCIP_Real  newlb,
SCIP_Real  val,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum activity for a change in lower bound

Parameters
scipSCIP data structure
consdatalinear constraint data
varvariable that has been changed
oldlbold lower bound of variable
newlbnew lower bound of variable
valcoefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1600 of file cons_linear.c.

References consdataUpdateActivities(), FALSE, NULL, SCIP_BOUNDTYPE_LOWER, and SCIPisInfinity().

Referenced by consdataUpdateAddCoef(), consdataUpdateDelCoef(), and SCIP_DECL_EVENTEXEC().

static void consdataUpdateActivitiesUb ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  oldub,
SCIP_Real  newub,
SCIP_Real  val,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum activity for a change in upper bound

Parameters
scipSCIP data structure
consdatalinear constraint data
varvariable that has been changed
oldubold upper bound of variable
newubnew upper bound of variable
valcoefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1625 of file cons_linear.c.

References consdataUpdateActivities(), FALSE, NULL, SCIP_BOUNDTYPE_UPPER, and SCIPisInfinity().

Referenced by consdataUpdateAddCoef(), consdataUpdateDelCoef(), and SCIP_DECL_EVENTEXEC().

static void consdataUpdateActivitiesGlbLb ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Real  oldlb,
SCIP_Real  newlb,
SCIP_Real  val,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum global activity for a change in the global lower bound

Parameters
scipSCIP data structure
consdatalinear constraint data
oldlbold lower bound of variable
newlbnew lower bound of variable
valcoefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1650 of file cons_linear.c.

References consdataUpdateActivities(), NULL, SCIP_BOUNDTYPE_LOWER, SCIPisInfinity(), and TRUE.

Referenced by consdataUpdateAddCoef(), consdataUpdateDelCoef(), and SCIP_DECL_EVENTEXEC().

static void consdataUpdateActivitiesGlbUb ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Real  oldub,
SCIP_Real  newub,
SCIP_Real  val,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum global activity for a change in global upper bound

Parameters
scipSCIP data structure
consdatalinear constraint data
oldubold upper bound of variable
newubnew upper bound of variable
valcoefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1673 of file cons_linear.c.

References consdataUpdateActivities(), NULL, SCIP_BOUNDTYPE_UPPER, SCIPisInfinity(), and TRUE.

Referenced by consdataUpdateAddCoef(), consdataUpdateDelCoef(), and SCIP_DECL_EVENTEXEC().

static void consdataUpdateAddCoef ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  val,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum activity and maximum absolute value for coefficient addition

Parameters
scipSCIP data structure
consdatalinear constraint data
varvariable of constraint entry
valcoefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1696 of file cons_linear.c.

References consdataUpdateActivitiesGlbLb(), consdataUpdateActivitiesGlbUb(), consdataUpdateActivitiesLb(), consdataUpdateActivitiesUb(), MAX, NULL, REALABS, SCIP_INVALID, SCIP_Real, SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().

Referenced by addCoef(), consdataCalcActivities(), and consdataUpdateChgCoef().

static void consdataUpdateDelCoef ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  val,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum activity for coefficient deletion, invalidates maximum absolute value if necessary

Parameters
scipSCIP data structure
consdatalinear constraint data
varvariable of constraint entry
valcoefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1736 of file cons_linear.c.

References consdataUpdateActivitiesGlbLb(), consdataUpdateActivitiesGlbUb(), consdataUpdateActivitiesLb(), consdataUpdateActivitiesUb(), FALSE, NULL, REALABS, SCIP_INVALID, SCIP_Real, SCIPisEQ(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().

Referenced by consdataUpdateChgCoef(), and delCoefPos().

static void consdataUpdateChgCoef ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  oldval,
SCIP_Real  newval,
SCIP_Bool  checkreliability 
)
static

updates minimum and maximum activity for coefficient change, invalidates maximum absolute value if necessary

Parameters
scipSCIP data structure
consdatalinear constraint data
varvariable of constraint entry
oldvalold coefficient of constraint entry
newvalnew coefficient of constraint entry
checkreliabilityshould the reliability of the recalculated activity be checked?

Definition at line 1779 of file cons_linear.c.

References consdataUpdateAddCoef(), consdataUpdateDelCoef(), FALSE, NULL, REALABS, SCIP_INVALID, SCIP_Real, SCIPisEQ(), SCIPisGE(), and SCIPisZero().

Referenced by chgCoefPos().

static void consdataCalcMaxAbsval ( SCIP_CONSDATA consdata)
static

calculates maximum absolute value of coefficients

Parameters
consdatalinear constraint data

Definition at line 1827 of file cons_linear.c.

References MAX, NULL, REALABS, SCIP_INVALID, SCIP_Real, and TRUE.

Referenced by consdataGetMaxAbsval(), and normalizeCons().

static SCIP_Real consdataGetMaxAbsval ( SCIP_CONSDATA consdata)
static

returns the maximum absolute value of all coefficients in the constraint

Parameters
consdatalinear constraint data

Definition at line 1850 of file cons_linear.c.

References consdataCalcMaxAbsval(), NULL, and SCIP_INVALID.

Referenced by aggregateConstraints(), normalizeCons(), and SCIP_DECL_HASHKEYVAL().

static void consdataCalcActivities ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

calculates minimum and maximum local and global activity for constraint from scratch; additionally recalculates maximum absolute value of coefficients

Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 1868 of file cons_linear.c.

References consdataUpdateAddCoef(), FALSE, NULL, SCIP_INVALID, and TRUE.

Referenced by consdataGetActivityBounds(), consdataGetActivityResiduals(), consdataGetGlbActivityBounds(), consdataGetGlbActivityResiduals(), extractCliques(), and tightenVarBoundsEasy().

static void getMinActivity ( SCIP scip,
SCIP_CONSDATA consdata,
int  posinf,
int  neginf,
int  poshuge,
int  neghuge,
SCIP_Real  delta,
SCIP_Bool  global,
SCIP_Bool  goodrelax,
SCIP_Real minactivity,
SCIP_Bool isrelax,
SCIP_Bool issettoinfinity 
)
static

gets minimal activity for constraint and given values of counters for infinite and huge contributions and (if needed) delta to subtract from stored finite part of activity in case of a residual activity

Parameters
scipSCIP data structure
consdatalinear constraint
posinfnumber of coefficients contributing pos. infinite value
neginfnumber of coefficients contributing neg. infinite value
poshugenumber of coefficients contributing huge pos. value
neghugenumber of coefficients contributing huge neg. value
deltavalue to subtract from stored minactivity (contribution of the variable set to zero when getting residual activity)
globalshould the global or local minimal activity be returned?
goodrelaxshould a good relaxation be computed or are relaxed acticities ignored, anyway?
minactivitypointer to store the minimal activity
isrelaxpointer to store whether the activity is a relaxation, i.e. is <= the exact minactivity (in case of huge contributing values)
issettoinfinitypointer to store whether minactivity was set to infinity or calculated

Definition at line 1928 of file cons_linear.c.

References consdataRecomputeGlbMinactivity(), consdataRecomputeMinactivity(), FALSE, NULL, SCIP_Real, SCIPgetHugeValue(), SCIPinfinity(), and TRUE.

Referenced by consdataGetActivityBounds(), consdataGetActivityResiduals(), consdataGetGlbActivityBounds(), and consdataGetGlbActivityResiduals().

static void getMaxActivity ( SCIP scip,
SCIP_CONSDATA consdata,
int  posinf,
int  neginf,
int  poshuge,
int  neghuge,
SCIP_Real  delta,
SCIP_Bool  global,
SCIP_Bool  goodrelax,
SCIP_Real maxactivity,
SCIP_Bool isrelax,
SCIP_Bool issettoinfinity 
)
static

gets maximal activity for constraint and given values of counters for infinite and huge contributions and (if needed) delta to subtract from stored finite part of activity in case of a residual activity

Parameters
scipSCIP data structure
consdatalinear constraint
posinfnumber of coefficients contributing pos. infinite value
neginfnumber of coefficients contributing neg. infinite value
poshugenumber of coefficients contributing huge pos. value
neghugenumber of coefficients contributing huge neg. value
deltavalue to subtract from stored maxactivity (contribution of the variable set to zero when getting residual activity)
globalshould the global or local maximal activity be returned?
goodrelaxshould a good relaxation be computed or are relaxed acticities ignored, anyway?
maxactivitypointer to store the maximal activity
isrelaxpointer to store whether the activity is a relaxation, i.e. is >= the exact maxactivity (in case of huge contributing values)
issettoinfinitypointer to store whether maxactivity was set to infinity or calculated

Definition at line 2029 of file cons_linear.c.

References consdataRecomputeGlbMaxactivity(), consdataRecomputeMaxactivity(), FALSE, NULL, SCIP_Real, SCIPgetHugeValue(), SCIPinfinity(), and TRUE.

Referenced by consdataGetActivityBounds(), consdataGetActivityResiduals(), consdataGetGlbActivityBounds(), and consdataGetGlbActivityResiduals().

static void consdataGetActivityBounds ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Bool  goodrelax,
SCIP_Real minactivity,
SCIP_Real maxactivity,
SCIP_Bool minisrelax,
SCIP_Bool maxisrelax 
)
static

gets activity bounds for constraint

Parameters
scipSCIP data structure
consdatalinear constraint
goodrelaxif we have huge contributions, do we need a good relaxation or are relaxed acticities ignored, anyway?
minactivitypointer to store the minimal activity
maxactivitypointer to store the maximal activity
minisrelaxpointer to store whether the returned minactivity is just a relaxation, i.e. <= the exact minactivity (in case of huge contributions), or equal to the exact minimal activity
maxisrelaxpointer to store whether the returned maxactivity is just a relaxation, i.e. >= the exact maxactivity (in case of huge contributions), or equal to the exact maximal activity

Definition at line 2128 of file cons_linear.c.

References consdataCalcActivities(), FALSE, getMaxActivity(), getMinActivity(), NULL, SCIP_Bool, and SCIP_INVALID.

Referenced by consdataTightenCoefs(), propagateCons(), SCIP_DECL_CONSPRESOL(), and tightenBounds().

static void consdataGetReliableResidualActivity ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR cancelvar,
SCIP_Real resactivity,
SCIP_Bool  isminresact,
SCIP_Bool  useglobalbounds 
)
static

calculates activity bounds for constraint after setting variable to zero

Parameters
scipSCIP data structure
consdatalinear constraint
cancelvarvariable to calculate activity residual for
resactivitypointer to store the residual activity
isminresactshould minimal or maximal residual activity be calculated?
useglobalboundsshould global or local bounds be used?

Definition at line 2174 of file cons_linear.c.

References NULL, REALABS, SCIP_Real, SCIPisHugeValue(), SCIPisInfinity(), SCIPisLE(), SCIPisZero(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().

Referenced by addConflictBounds(), convertLongEquality(), dualPresolve(), fullDualPresolve(), and tightenVarBounds().

static void consdataGetActivityResiduals ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  val,
SCIP_Bool  goodrelax,
SCIP_Real minresactivity,
SCIP_Real maxresactivity,
SCIP_Bool minisrelax,
SCIP_Bool maxisrelax,
SCIP_Bool isminsettoinfinity,
SCIP_Bool ismaxsettoinfinity 
)
static

gets activity bounds for constraint after setting variable to zero

Parameters
scipSCIP data structure
consdatalinear constraint
varvariable to calculate activity residual for
valcoefficient value of variable in linear constraint
goodrelaxif we have huge contributions, do we need a good relaxation or are relaxed acticities ignored, anyway?
minresactivitypointer to store the minimal residual activity
maxresactivitypointer to store the maximal residual activity
minisrelaxpointer to store whether the returned residual minactivity is just a relaxation, i.e. <= the exact residual minactivity (in case of huge contributions), or equal to the exact residual minactivity
maxisrelaxpointer to store whether the returned residual maxactivity is just a relaxation, i.e. <= the exact residual maxactivity (in case of huge contributions), or equal to the exact residual minactivity
isminsettoinfinitypointer to store whether minresactivity was set to infinity or calculated
ismaxsettoinfinitypointer to store whether maxresactivity was set to infinity or calculated

Definition at line 2255 of file cons_linear.c.

References consdataCalcActivities(), FALSE, getMaxActivity(), getMinActivity(), NULL, SCIP_INVALID, SCIP_Real, SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

Referenced by convertLongEquality(), dualPresolve(), and tightenVarBounds().

static void consdataGetGlbActivityBounds ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Bool  goodrelax,
SCIP_Real glbminactivity,
SCIP_Real glbmaxactivity,
SCIP_Bool minisrelax,
SCIP_Bool maxisrelax,
SCIP_Bool isminsettoinfinity,
SCIP_Bool ismaxsettoinfinity 
)
static

gets global activity bounds for constraint

Parameters
scipSCIP data structure
consdatalinear constraint
goodrelaxif we have huge contributions, do we need a good relaxation or are relaxed acticities ignored, anyway?
glbminactivitypointer to store the minimal activity, or NULL, if not needed
glbmaxactivitypointer to store the maximal activity, or NULL, if not needed
minisrelaxpointer to store whether the returned minactivity is just a relaxation, i.e. <= the exact minactivity (in case of huge contributions), or equal to the exact minimal activity
maxisrelaxpointer to store whether the returned maxactivity is just a relaxation, i.e. >= the exact maxactivity (in case of huge contributions), or equal to the exact maximal activity
isminsettoinfinitypointer to store whether minresactivity was set to infinity or calculated
ismaxsettoinfinitypointer to store whether maxresactivity was set to infinity or calculated

Definition at line 2406 of file cons_linear.c.

References consdataCalcActivities(), getMaxActivity(), getMinActivity(), NULL, SCIP_INVALID, and TRUE.

Referenced by addConflictBounds(), and simplifyInequalities().

static void consdataGetGlbActivityResiduals ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR var,
SCIP_Real  val,
SCIP_Bool  goodrelax,
SCIP_Real minresactivity,
SCIP_Real maxresactivity,
SCIP_Bool minisrelax,
SCIP_Bool maxisrelax,
SCIP_Bool isminsettoinfinity,
SCIP_Bool ismaxsettoinfinity 
)
static

gets global activity bounds for constraint after setting variable to zero

Parameters
scipSCIP data structure
consdatalinear constraint
varvariable to calculate activity residual for
valcoefficient value of variable in linear constraint
goodrelaxif we have huge contributions, do we need a good relaxation or are relaxed acticities ignored, anyway?
minresactivitypointer to store the minimal residual activity, or NULL, if not needed
maxresactivitypointer to store the maximal residual activity, or NULL, if not needed
minisrelaxpointer to store whether the returned residual minactivity is just a relaxation, i.e. <= the exact residual minactivity (in case of huge contributions), or equal to the exact residual minactivity
maxisrelaxpointer to store whether the returned residual maxactivity is just a relaxation, i.e. <= the exact residual maxactivity (in case of huge contributions), or equal to the exact residual minactivity
isminsettoinfinitypointer to store whether minresactivity was set to infinity or calculated
ismaxsettoinfinitypointer to store whether maxresactivity was set to infinity or calculated

Definition at line 2468 of file cons_linear.c.

References consdataCalcActivities(), getMaxActivity(), getMinActivity(), NULL, SCIP_INVALID, SCIP_Real, SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by addConflictBounds(), and fullDualPresolve().

static SCIP_Real consdataGetActivity ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_SOL sol 
)
static

calculates the activity of the linear constraint for given solution

Parameters
scipSCIP data structure
consdatalinear constraint data
solsolution to get activity for, NULL to current solution

Definition at line 2620 of file cons_linear.c.

References consdataComputePseudoActivity(), FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_Real, SCIPdebugMessage, SCIPgetSolVal(), SCIPhasCurrentNodeLP(), SCIPinfinity(), SCIPisInfinity(), and TRUE.

Referenced by checkCons(), consdataGetFeasibility(), SCIP_DECL_CONSCHECK(), and SCIPgetActivityLinear().

static SCIP_Real consdataGetFeasibility ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_SOL sol 
)
static

calculates the feasibility of the linear constraint for given solution

Parameters
scipSCIP data structure
consdatalinear constraint data
solsolution to get feasibility for, NULL to current solution

Definition at line 2687 of file cons_linear.c.

References consdataGetActivity(), MIN, NULL, and SCIP_Real.

Referenced by SCIPgetFeasibilityLinear().

static SCIP_Longint getVarSignature ( SCIP_VAR var)
static

returns the signature bitmask for the given variable

Parameters
varvariable

Definition at line 2705 of file cons_linear.c.

References NULL, SCIP_Longint, and SCIPvarGetIndex().

Referenced by consdataUpdateSignatures().

static void consdataUpdateSignatures ( SCIP_CONSDATA consdata,
int  pos 
)
static

updates bit signatures after adding a single coefficient

Parameters
consdatalinear constraint data
posposition of coefficient to update signatures for

Definition at line 2719 of file cons_linear.c.

References getVarSignature(), NULL, SCIP_Longint, SCIP_Real, SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().

Referenced by addCoef(), and consdataCalcSignatures().

static void consdataCalcSignatures ( SCIP_CONSDATA consdata)
static

calculates the bit signatures of the given constraint data

Parameters
consdatalinear constraint data

Definition at line 2744 of file cons_linear.c.

References consdataUpdateSignatures(), NULL, and TRUE.

Referenced by preprocessConstraintPairs().

static SCIP_DECL_SORTINDCOMP ( consdataCompVar  )
static

index comparison method of linear constraints: compares two indices of the variable set in the linear constraint

Definition at line 2764 of file cons_linear.c.

References NULL, and SCIPvarCompare().

static void permSortConsdata ( SCIP_CONSDATA consdata,
int *  perm,
int  nvars 
)
static

permutes the constraint's variables according to a given permutation.

Parameters
consdatathe constraint data
permthe target permutation
nvarsthe number of variables

Definition at line 2777 of file cons_linear.c.

References NULL, and SCIP_Real.

Referenced by consdataSort(), and simplifyInequalities().

static SCIP_RETCODE consdataSort ( SCIP scip,
SCIP_CONSDATA consdata 
)
static

sorts linear constraint's variables depending on the stage of the solving process:

  • during PRESOLVING sorts variables by binaries, integers, implicit integers, and continuous variables, and the variables of the same type by non-decreasing variable index
  • during SOLVING sorts binary variables of the remaining problem w.r.t the absolute of their coefficient. This fastens the propagation time of the constraint handler.
Parameters
scipSCIP data structure
consdatalinear constraint data

Definition at line 2850 of file cons_linear.c.

References FALSE, NULL, permSortConsdata(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_INITSOLVE, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetStage(), SCIPsort(), SCIPsortDownRealInt(), SCIPvarIsBinary(), and TRUE.

Referenced by detectRedundantConstraints(), extractCliques(), mergeMultiples(), preprocessConstraintPairs(), and tightenBounds().

static SCIP_RETCODE addCoef ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR var,
SCIP_Real  val 
)
static

adds coefficient in linear constraint

Parameters
scipSCIP data structure
conslinear constraint
varvariable of constraint entry
valcoefficient of constraint entry

Definition at line 3228 of file cons_linear.c.

References consCatchEvent(), consdataEnsureVarsSize(), consdataUpdateAddCoef(), consdataUpdateSignatures(), FALSE, lockRounding(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaddVarToRow(), SCIPcaptureVar(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPgetTransformedVar(), SCIPisZero(), SCIPvarCompare(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPvarIsTransformed(), and TRUE.

Referenced by applyFixings(), and SCIPaddCoefLinear().

static SCIP_RETCODE delCoefPos ( SCIP scip,
SCIP_CONS cons,
int  pos 
)
static
static SCIP_RETCODE chgCoefPos ( SCIP scip,
SCIP_CONS cons,
int  pos,
SCIP_Real  newval 
)
static

changes coefficient value at given position of linear constraint data

Parameters
scipSCIP data structure
conslinear constraint
posposition of coefficient to delete
newvalnew value of coefficient

Definition at line 3432 of file cons_linear.c.

References consdataUpdateChgCoef(), FALSE, lockRounding(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsLocked(), SCIPconsIsTransformed(), SCIPisZero(), SCIPvarIsBinary(), SCIPvarIsTransformed(), TRUE, and unlockRounding().

Referenced by consdataTightenCoefs(), mergeMultiples(), rangedRowSimplify(), and simplifyInequalities().

static SCIP_RETCODE scaleCons ( SCIP scip,
SCIP_CONS cons,
SCIP_Real  scalar 
)
static

scales a linear constraint with a constant scalar

Parameters
scipSCIP data structure
conslinear constraint to scale
scalarvalue to scale constraint with

Definition at line 3493 of file cons_linear.c.

References consdataInvalidateActivities(), delCoefPos(), FALSE, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPisEQ(), SCIPisInfinity(), SCIPisScalingIntegral(), SCIPisZero(), SCIPvarGetName(), and SCIPwarningMessage().

Referenced by normalizeCons().

static SCIP_RETCODE performVarDeletions ( SCIP scip,
SCIP_CONSHDLR conshdlr,
SCIP_CONS **  conss,
int  nconss 
)
static
Parameters
scipSCIP data structure
conshdlrconstraint handler
conssarray of constraints
nconssnumber of constraints

Definition at line 3577 of file cons_linear.c.

References CONSHDLR_NAME, delCoefPos(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetName(), and SCIPvarIsDeleted().

Referenced by SCIP_DECL_CONSDELVARS().

static SCIP_RETCODE normalizeCons ( SCIP scip,
SCIP_CONS cons 
)
static

normalizes a linear constraint with the following rules:

  • if all coefficients have them same absolute value, change them to (-)1.0
  • multiplication with +1 or -1: Apply the following rules in the given order, until the sign of the factor is determined. Later rules only apply, if the current rule doesn't determine the sign):
    1. the right hand side must not be negative
    2. the right hand side must not be infinite
    3. the absolute value of the right hand side must be greater than that of the left hand side
    4. the number of positive coefficients must not be smaller than the number of negative coefficients
    5. multiply with +1
  • rationals to integrals Try to identify a rational representation of the fractional coefficients, and multiply all coefficients by the smallest common multiple of all denominators to get integral coefficients. Forbid large denominators due to numerical stability.
  • division by greatest common divisor If all coefficients are integral, divide them by the greatest common divisor.
Parameters
scipSCIP data structure
conslinear constraint to normalize

Definition at line 3636 of file cons_linear.c.

References consdataCalcMaxAbsval(), consdataGetMaxAbsval(), FALSE, MAX, MAXSCALEDCOEF, MAXSCALEDCOEFINTEGER, MIN, NULL, REALABS, scaleCons(), SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPcalcGreComDiv(), SCIPcalcSmaComMul(), SCIPconsGetData(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPepsilon(), SCIPfeastol(), SCIPisEQ(), SCIPisGT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLT(), SCIPisNegative(), SCIPisPositive(), SCIPrealToRational(), SCIPvarGetType(), and TRUE.

Referenced by aggregateConstraints(), aggregateVariables(), SCIP_DECL_CONSPRESOL(), SCIPupgradeConsLinear(), and simplifyInequalities().

static SCIP_RETCODE mergeMultiples ( SCIP scip,
SCIP_CONS cons 
)
static

replaces multiple occurrences of a variable by a single coefficient

Parameters
scipSCIP data structure
conslinear constraint

Definition at line 3956 of file cons_linear.c.

References chgCoefPos(), consdataSort(), delCoefPos(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPisZero(), and TRUE.

Referenced by applyFixings().

static SCIP_RETCODE addConflictBounds ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR infervar,
SCIP_BDCHGIDX bdchgidx,
int  inferpos,
SCIP_Bool  reasonisrhs 
)
static

for each variable in the linear constraint, except the inferred variable, adds one bound to the conflict analysis' candidate store (bound depends on sign of coefficient and whether the left or right hand side was the reason for the inference variable's bound change); the conflict analysis can be initialized with the linear constraint being the conflict detecting constraint by using NULL as inferred variable

Parameters
scipSCIP data structure
consconstraint that inferred the bound change
infervarvariable that was deduced, or NULL
bdchgidxbound change index (time stamp of bound change), or NULL for current time
inferposposition of the inferred variable in the vars array
reasonisrhsis the right hand side responsible for the bound change?

Definition at line 4262 of file cons_linear.c.

References consdataGetGlbActivityBounds(), consdataGetGlbActivityResiduals(), consdataGetReliableResidualActivity(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPconsGetData(), SCIPinfinity(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisInfinity(), SCIPisUpdateUnreliable(), SCIPisZero(), SCIPvarGetLbAtIndex(), SCIPvarGetLbGlobal(), SCIPvarGetUbAtIndex(), SCIPvarGetUbGlobal(), SCIPvarIsIntegral(), and TRUE.

Referenced by analyzeConflict(), and resolvePropagation().

static SCIP_RETCODE resolvePropagation ( SCIP scip,
SCIP_CONS cons,
SCIP_VAR infervar,
INFERINFO  inferinfo,
SCIP_BOUNDTYPE  boundtype,
SCIP_BDCHGIDX bdchgidx,
SCIP_RESULT result 
)
static

resolves a propagation on the given variable by supplying the variables needed for applying the corresponding propagation rule (see propagateCons()): (1) activity residuals of all other variables tighten bounds of single variable

Parameters
scipSCIP data structure
consconstraint that inferred the bound change
infervarvariable that was deduced
inferinfoinference information
boundtypethe type of the changed bound (lower or upper bound)
bdchgidxbound change index (time stamp of bound change), or NULL for current time
resultpointer to store the result of the propagation conflict resolving call

Definition at line 4441 of file cons_linear.c.

References addConflictBounds(), FALSE, inferInfoGetPos(), inferInfoGetProprule(), NULL, PROPRULE_1_LHS, PROPRULE_1_RHS, PROPRULE_INVALID, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPconsGetData(), SCIPconsGetName(), SCIPerrorMessage, SCIPinfoMessage(), SCIPisZero(), SCIPprintCons(), SCIPvarGetName(), and TRUE.

Referenced by SCIP_DECL_CONSRESPROP().

static SCIP_RETCODE analyzeConflict ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool  reasonisrhs 
)
static

analyzes conflicting bounds on given constraint, and adds conflict constraint to problem

Parameters
scipSCIP data structure
consconflict detecting constraint
reasonisrhsis the right hand side responsible for the conflict?

Definition at line 4523 of file cons_linear.c.

References addConflictBounds(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPanalyzeConflictCons(), SCIPgetStage(), SCIPinitConflictAnalysis(), SCIPinProbing(), and SCIPisConflictAnalysisApplicable().

Referenced by propagateCons(), tightenVarBounds(), tightenVarLb(), and tightenVarUb().

static SCIP_Bool canTightenBounds ( SCIP scip,
SCIP_CONS cons 
)
static

check if there is any hope of tightening some bounds

Parameters
scipSCIP data structure
conslinear constraint

Definition at line 4547 of file cons_linear.c.

References FALSE, NULL, SCIPconsGetData(), and TRUE.

Referenced by tightenBounds().

static SCIP_RETCODE tightenVarUb ( SCIP scip,
SCIP_CONS cons,
int  pos,
PROPRULE  proprule,
SCIP_Real  newub,
SCIP_Real  oldub,
SCIP_Bool cutoff,
int *  nchgbds,
SCIP_Bool  force 
)
static

tighten upper bound

Parameters
scipSCIP data structure
conslinear constraint
posvariable position
proprulepropagation rule that deduced the value
newubnew upper bound
oldubold upper bound
cutoffpointer to store whether the node can be cut off
nchgbdspointer to count the total number of tightened bounds
forceshould a possible bound change be forced even if below bound strengthening tolerance

Definition at line 4576 of file cons_linear.c.

References analyzeConflict(), FALSE, getInferInt(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPadjustedVarUb(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPinferVarUbCons(), SCIPisFeasLE(), SCIPisInfinity(), SCIPisUbBetter(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbLocal(), and TRUE.

Referenced by tightenVarBoundsEasy().

static SCIP_RETCODE tightenVarLb ( SCIP scip,
SCIP_CONS cons,
int  pos,
PROPRULE  proprule,
SCIP_Real  newlb,
SCIP_Real  oldlb,
SCIP_Bool cutoff,
int *  nchgbds,
SCIP_Bool  force 
)
static

tighten lower bound

Parameters
scipSCIP data structure
conslinear constraint
posvariable position
proprulepropagation rule that deduced the value
newlbnew lower bound
oldlbold lower bound
cutoffpointer to store whether the node can be cut off
nchgbdspointer to count the total number of tightened bounds
forceshould a possible bound change be forced even if below bound strengthening tolerance

Definition at line 4645 of file cons_linear.c.

References analyzeConflict(), FALSE, getInferInt(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPadjustedVarLb(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPinferVarLbCons(), SCIPisFeasGE(), SCIPisInfinity(), SCIPisLbBetter(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbLocal(), and TRUE.

Referenced by tightenVarBoundsEasy().

static SCIP_RETCODE tightenVarBoundsEasy ( SCIP scip,
SCIP_CONS cons,
int  pos,
SCIP_Bool cutoff,
int *  nchgbds,
SCIP_Bool  force 
)
static

tightens bounds of a single variable due to activity bounds (easy case)

Parameters
scipSCIP data structure
conslinear constraint
posposition of the variable in the vars array
cutoffpointer to store whether the node can be cut off
nchgbdspointer to count the total number of tightened bounds
forceshould a possible bound change be forced even if below bound strengthening tolerance

Definition at line 4714 of file cons_linear.c.

References consdataCalcActivities(), consdataRecomputeMaxactivity(), consdataRecomputeMinactivity(), FALSE, NULL, PROPRULE_1_LHS, PROPRULE_1_RHS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPisFeasLT(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisPositive(), SCIPisSumGT(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), tightenVarLb(), tightenVarUb(), and TRUE.

Referenced by tightenBounds().

static SCIP_RETCODE tightenVarBounds ( SCIP scip,
SCIP_CONS cons,
int  pos,
SCIP_Bool cutoff,
int *  nchgbds,
SCIP_Bool  force 
)
static

tightens bounds of a single variable due to activity bounds

Parameters
scipSCIP data structure
conslinear constraint
posposition of the variable in the vars array
cutoffpointer to store whether the node can be cut off
nchgbdspointer to count the total number of tightened bounds
forceshould a possible bound change be forced even if below bound strengthening tolerance

Definition at line 4974 of file cons_linear.c.

References analyzeConflict(), consdataGetActivityResiduals(), consdataGetReliableResidualActivity(), FALSE, getInferInt(), NULL, PROPRULE_1_LHS, PROPRULE_1_RHS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPinferVarLbCons(), SCIPinferVarUbCons(), SCIPisFeasGE(), SCIPisFeasGT(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisGT(), SCIPisInfinity(), SCIPisLbBetter(), SCIPisLE(), SCIPisLT(), SCIPisUbBetter(), SCIPisUpdateUnreliable(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), and TRUE.

Referenced by tightenBounds().

static SCIP_RETCODE tightenBounds ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool  sortvars,
SCIP_Bool cutoff,
int *  nchgbds 
)
static

tightens bounds of variables in constraint due to activity bounds

Parameters
scipSCIP data structure
conslinear constraint
sortvarsshould variables be used in sorted order?
cutoffpointer to store whether the node can be cut off
nchgbdspointer to count the total number of tightened bounds

Definition at line 5247 of file cons_linear.c.

References applyFixings(), canTightenBounds(), consdataGetActivityBounds(), consdataRecomputeMaxActivityDelta(), consdataSort(), FALSE, MAXACTIVITYDELTATHR, MAXTIGHTENROUNDS, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_STAGE_INITSOLVE, SCIP_STAGE_SOLVING, SCIPconsGetData(), SCIPconsIsModifiable(), SCIPgetStage(), SCIPinfinity(), SCIPisEQ(), SCIPisFeasEQ(), SCIPisFeasNegative(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), tightenVarBounds(), tightenVarBoundsEasy(), and TRUE.

Referenced by extractCliques(), propagateCons(), and SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE checkCons ( SCIP scip,
SCIP_CONS cons,
SCIP_SOL sol,
SCIP_Bool  checklprows,
SCIP_Bool  checkrelmaxabs,
SCIP_Bool violated 
)
static

checks linear constraint for feasibility of given solution or current solution

Parameters
scipSCIP data structure
conslinear constraint
solsolution to be checked, or NULL for current solution
checklprowshas linear constraint to be checked, if it is already in current LP?
checkrelmaxabsshould the violation for a constraint with side 0.0 be checked relative to 1.0 (FALSE) or to the maximum absolute value in the activity (TRUE)?
violatedpointer to store whether the constraint is violated

Definition at line 5385 of file cons_linear.c.

References consdataComputePseudoActivity(), consdataGetActivity(), FALSE, MAX, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMessage, SCIPdebugPrintCons, SCIPfeastol(), SCIPgetRowSolActivity(), SCIPgetSolVal(), SCIPhasCurrentNodeLP(), SCIPincConsAge(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisZero(), SCIPprintCons(), SCIPresetConsAge(), SCIProwIsInLP(), and TRUE.

Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), and separateCons().

static SCIP_RETCODE createRow ( SCIP scip,
SCIP_CONS cons 
)
static

creates an LP row in a linear constraint data

Parameters
scipSCIP data structure
conslinear constraint

Definition at line 5591 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIPaddVarsToRow(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsRemovable(), and SCIPcreateEmptyRowCons().

Referenced by addRelaxation().

static SCIP_RETCODE addRelaxation ( SCIP scip,
SCIP_CONS cons,
SCIP_SOL sol,
SCIP_Bool cutoff 
)
static

adds linear constraint as cut to the LP

Parameters
scipSCIP data structure
conslinear constraint
solprimal CIP solution, NULL for current LP solution
cutoffpointer to store whether a cutoff was found

Definition at line 5615 of file cons_linear.c.

References createRow(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddCut(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMessage, SCIPgetIntParam(), SCIPisInfinity(), SCIPprintRow(), and SCIProwIsInLP().

Referenced by SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSINITLP(), and separateCons().

static SCIP_RETCODE separateCons ( SCIP scip,
SCIP_CONS cons,
SCIP_CONSHDLRDATA conshdlrdata,
SCIP_SOL sol,
SCIP_Bool  separatecards,
SCIP_Bool  separateall,
int *  ncuts,
SCIP_Bool cutoff 
)
static

separates linear constraint: adds linear constraint as cut, if violated by given solution

Parameters
scipSCIP data structure
conslinear constraint
conshdlrdataconstraint handler data
solprimal CIP solution, NULL for current LP solution
separatecardsshould knapsack cardinality cuts be generated?
separateallshould all constraints be subject to cardinality cut generation instead of only the ones with non-zero dual value?
ncutspointer to add up the number of found cuts
cutoffpointer to store whether a cutoff was found

Definition at line 5662 of file cons_linear.c.

References addRelaxation(), checkCons(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsModifiable(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisInfinity(), SCIPresetConsAge(), SCIProwGetDualsol(), SCIProwIsInLP(), and SCIPseparateRelaxedKnapsack().

Referenced by SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().

static SCIP_RETCODE propagateCons ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool  tightenbounds,
SCIP_Bool  sortvars,
SCIP_Bool cutoff,
int *  nchgbds 
)
static

propagation method for linear constraints

Parameters
scipSCIP data structure
conslinear constraint
tightenboundsshould the variable's bounds be tightened?
sortvarsshould variable sorting for faster propagation be used?
cutoffpointer to store whether the node can be cut off
nchgbdspointer to count the total number of tightened bounds

Definition at line 5752 of file cons_linear.c.

References analyzeConflict(), consdataGetActivityBounds(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPdelConsLocal(), SCIPincConsAge(), SCIPinRepropagation(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisGE(), SCIPisLE(), SCIPresetConsAge(), tightenBounds(), and TRUE.

Referenced by SCIP_DECL_CONSPROP().

static SCIP_RETCODE fixVariables ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool cutoff,
int *  nfixedvars 
)
static

converts all variables with fixed domain into FIXED variables

Parameters
scipSCIP data structure
conslinear constraint
cutoffpointer to store TRUE, if a cutoff was found
nfixedvarspointer to count the total number of fixed variables

Definition at line 5856 of file cons_linear.c.

References applyFixings(), MAXDNOM, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIPconsGetData(), SCIPdebugMessage, SCIPepsilon(), SCIPfixVar(), SCIPisEQ(), SCIPselectSimpleValue(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by extractCliques(), and SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE extractCliques ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool  sortvars,
int *  nfixedvars,
int *  nchgbds,
SCIP_Bool cutoff 
)
static

extracts cliques of the constraint and adds them to SCIP

The following clique extraction mechanism are implemeneted

  1. collect binary variables and sort them in non increasing order, then

    a) if the constraint has a finite right hand side and the negative infinity counters for the minactivity are zero then add the variables as a clique for which all successive pairs of coefficients fullfill the following condition

    minactivity + vals[i] + vals[i+1] > rhs
    
      and also add the binary to binary implication also for non-successive variables for which the same argument
      holds
    
    minactivity + vals[i] + vals[j] > rhs
    
      e.g. 5.3 x1 + 3.6 x2 + 3.3 x3 + 2.1 x4 <= 5.5 (all x are binary) would lead to the clique (x1, x2, x3) and the
           binary to binary implications x1 = 1 => x4 = 0 and x2 = 1 => x4 = 0
    

    b) if the constraint has a finite left hand side and the positive infinity counters for the maxactivity are zero then add the variables as a clique for which all successive pairs of coefficients fullfill the follwoing condition

    maxactivity + vals[i] + vals[i-1] < lhs
    
      and also add the binary to binary implication also for non-successive variables for which the same argument
      holds
    
    maxactivity + vals[i] + vals[j] < lhs
    
      e.g. you could multiply the above example by -1
    

    c) the constraint has a finite right hand side and a finite minactivity then add the variables as a negated clique(clique on the negated variables) for which all successive pairs of coefficients fullfill the following condition

    minactivity - vals[i] - vals[i-1] > rhs
    
      and also add the binary to binary implication also for non-successive variables for which the
      same argument holds
    
    minactivity - vals[i] - vals[j] > rhs
    
      e.g. -4 x1 -3 x2 - 2 x3 + 2 x4 <= -4 would lead to the (negated) clique (~x1, ~x2) and the binary to binary
           implication x1 = 0 => x3 = 1
    

    d) the constraint has a finite left hand side and a finite maxactivity then add the variables as a negated clique(clique on the negated variables) for which all successive pairs of coefficients fullfill the following condition

    maxactivity - vals[i] - vals[i+1] < lhs
    
      and also add the binary to binary implication also for non-successive variables for which the same argument
      holds
    
    maxactivity - vals[i] - vals[j] < lhs
    
      e.g. you could multiply the above example by -1
    
  1. if the linear constraint represents a set-packing or set-partitioning constraint, the whole constraint is added as clique, (this part is done at the end of the method)
Parameters
scipSCIP data structure
conslinear constraint
sortvarsshould variables be used in sorted order?
nfixedvarspointer to count number of fixed variables
nchgbdspointer to count the total number of tightened bounds
cutoffpointer to store TRUE, if a cutoff was found

Definition at line 5991 of file cons_linear.c.

References BMSclearMemoryArray, consdataCalcActivities(), consdataRecomputeGlbMaxactivity(), consdataRecomputeGlbMinactivity(), consdataSort(), FALSE, fixVariables(), MAX_CLIQUE_NONZEROS_PER_CONS, NULL, REALABS, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIPaddClique(), SCIPaddVarImplication(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsDeleted(), SCIPdebugMessage, SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPisEQ(), SCIPisFeasGE(), SCIPisFeasGT(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisPositive(), SCIPisZero(), SCIPsortDownRealPtr(), SCIPvarGetLbGlobal(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), tightenBounds(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE tightenSides ( SCIP scip,
SCIP_CONS cons,
int *  nchgsides 
)
static

tightens left and right hand side of constraint due to integrality

Parameters
scipSCIP data structure
conslinear constraint
nchgsidespointer to count number of side changes

Definition at line 6956 of file cons_linear.c.

References chgLhs(), chgRhs(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_CONTINUOUS, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPfeasCeil(), SCIPfeasFloor(), SCIPisInfinity(), SCIPisIntegral(), SCIPvarGetType(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE consdataTightenCoefs ( SCIP scip,
SCIP_CONS cons,
int *  nchgcoefs,
int *  nchgsides 
)
static

tightens coefficients of binary, integer, and implicit integer variables due to activity bounds in presolving: given an inequality lhs <= a*x + ai*xi <= rhs, with a non-continuous variable li <= xi <= ui let minact := min{a*x + ai*xi}, maxact := max{a*x + ai*xi} (i) ai >= 0: if minact + ai >= lhs and maxact - ai <= rhs: (**)

  • a deviation from the lower/upper bound of xi would make the left/right hand side redundant
  • ai, lhs and rhs can be changed to have the same redundancy effect and the same results for xi fixed to its bounds, but with a reduced ai and tightened sides to tighten the LP relaxation
  • change coefficients: ai' := max(lhs - minact, maxact - rhs) lhs' := lhs - (ai - ai')*li rhs' := rhs - (ai - ai')*ui (ii) ai < 0: if minact - ai >= lhs and maxact + ai <= rhs: (***)
  • a deviation from the upper/lower bound of xi would make the left/right hand side redundant
  • ai, lhs and rhs can be changed to have the same redundancy effect and the same results for xi fixed to its bounds, but with a reduced ai and tightened sides to tighten the LP relaxation
  • change coefficients: ai' := min(rhs - maxact, minact - lhs) lhs' := lhs - (ai - ai')*ui rhs' := rhs - (ai - ai')*li

We further try to remove redundant variable from the constraint; Variables which fulfill conditions (**) or (***) are called surely non-redundant variables. A deviation of only one from their bound makes the lhs/rhs feasible (i.e., redundant), even if all other variables are set to their "worst" bound. If all variables which are not surely non-redundant cannot make the lhs/rhs redundant, even if they are set to their "best" bound, they can be removed from the constraint. E.g., for binary variables and an inequality x_1 +x_2 +10y_1 +10y_2 >= 5, setting either of the y_i to one suffices to fulfill the inequality, whereas the x_i do not contribute to feasibility and can be removed.

Parameters
scipSCIP data structure
conslinear constraint
nchgcoefspointer to count total number of changed coefficients
nchgsidespointer to count number of side changes

Definition at line 7041 of file cons_linear.c.

References chgCoefPos(), chgLhs(), chgRhs(), consdataGetActivityBounds(), consdataRecomputeMaxactivity(), consdataRecomputeMinactivity(), delCoefPos(), FALSE, MAX, MAXVALRECOMP, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPinfinity(), SCIPisEQ(), SCIPisFeasEQ(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisSumRelEQ(), SCIPisSumRelGE(), SCIPisSumRelLE(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbLocal(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE convertUnaryEquality ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool cutoff,
int *  nfixedvars,
int *  ndelconss 
)
static
Parameters
scipSCIP data structure
conslinear constraint
cutoffpointer to store TRUE, if a cutoff was found
nfixedvarspointer to count number of fixed variables
ndelconsspointer to count number of deleted constraints

Definition at line 7467 of file cons_linear.c.

References MAXDNOM, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPdelCons(), SCIPepsilon(), SCIPfixVar(), SCIPisEQ(), SCIPisZero(), SCIPselectSimpleValue(), SCIPvarGetName(), and TRUE.

Referenced by convertEquality().

static SCIP_RETCODE convertBinaryEquality ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool cutoff,
int *  naggrvars,
int *  ndelconss 
)
static
Parameters
scipSCIP data structure
conslinear constraint
cutoffpointer to store TRUE, if a cutoff was found
naggrvarspointer to count number of aggregated variables
ndelconsspointer to count number of deleted constraints

Definition at line 7523 of file cons_linear.c.

References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaggregateVars(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPdelCons(), SCIPisEQ(), SCIPvarGetName(), and TRUE.

Referenced by convertEquality().

static void getNewSidesAfterAggregation ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_VAR slackvar,
SCIP_Real  slackcoef,
SCIP_Real newlhs,
SCIP_Real newrhs 
)
static

calculates the new lhs and rhs of the constraint after the given variable is aggregated out

Parameters
scipSCIP data structure
consdatalinear constraint data
slackvarvariable to be aggregated out
slackcoefcoefficient of variable in constraint
newlhspointer to store new lhs of constraint
newrhspointer to store new rhs of constraint

Definition at line 7581 of file cons_linear.c.

References NULL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPisLE(), SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().

Referenced by convertLongEquality().

static SCIP_RETCODE convertLongEquality ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool cutoff,
int *  naggrvars,
int *  ndelconss 
)
static
static SCIP_Bool checkEqualObjective ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_Real scale,
SCIP_Real offset 
)
static

checks if the given variables and their coefficient are equal (w.r.t. scaling factor) to the objective function

Parameters
scipSCIP data structure
consdatalinear constraint data
scalepointer to store the scaling factor between the constraint and the objective function
offsetpointer to store the offset of the objective function resulting by this constraint

Definition at line 8171 of file cons_linear.c.

References FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPisEQ(), SCIPisZero(), SCIPvarGetNegatedVar(), SCIPvarGetObj(), SCIPvarIsNegated(), and TRUE.

Referenced by checkParallelObjective(), and checkPartialObjective().

static SCIP_RETCODE checkPartialObjective ( SCIP scip,
SCIP_CONS cons,
SCIP_CONSHDLRDATA conshdlrdata 
)
static

check if the linear equality constraint is equal to a subset of the objective function; if so we can remove the objective coefficients and add an objective offset

Parameters
scipSCIP data structure
conslinear equation constraint
conshdlrdatalinear constraint handler data

Definition at line 8250 of file cons_linear.c.

References checkEqualObjective(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddObjoffset(), SCIPchgVarObj(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPgetNObjVars(), and SCIPisEQ().

Referenced by convertEquality().

static SCIP_RETCODE updateCutoffbound ( SCIP scip,
SCIP_CONS cons,
SCIP_Real  primalbound 
)
static

updates the cutoff if the given primal bound (which is implied by the given constraint) is better

Parameters
scipSCIP data structure
consconstraint
primalboundfeasible primal bound

Definition at line 8317 of file cons_linear.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPcutoffbounddelta(), SCIPdebugMessage, SCIPgetCutoffbound(), SCIPisInfinity(), SCIPsetConsEnforced(), SCIPsetConsPropagated(), and SCIPupdateCutoffbound().

Referenced by checkParallelObjective().

static SCIP_RETCODE checkParallelObjective ( SCIP scip,
SCIP_CONS cons,
SCIP_CONSHDLRDATA conshdlrdata 
)
static

check if the linear constraint is parallel to objective function; if so update the cutoff bound and avoid that the constraint enters the LP by setting the initial and separated flag to FALSE

Parameters
scipSCIP data structure
conslinear constraint
conshdlrdatalinear constraint handler data

Definition at line 8363 of file cons_linear.c.

References checkEqualObjective(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsInitial(), SCIPconsIsSeparated(), SCIPdebugMessage, SCIPgetNObjVars(), SCIPisEQ(), SCIPisInfinity(), SCIPisPositive(), SCIPsetConsInitial(), SCIPsetConsSeparated(), SCIPupdateLocalLowerbound(), and updateCutoffbound().

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE convertEquality ( SCIP scip,
SCIP_CONS cons,
SCIP_CONSHDLRDATA conshdlrdata,
SCIP_Bool cutoff,
int *  nfixedvars,
int *  naggrvars,
int *  ndelconss 
)
static

converts special equalities

Parameters
scipSCIP data structure
conslinear constraint
conshdlrdatalinear constraint handler data
cutoffpointer to store TRUE, if a cutoff was found
nfixedvarspointer to count number of fixed variables
naggrvarspointer to count number of aggregated variables
ndelconsspointer to count number of deleted constraints

Definition at line 8482 of file cons_linear.c.

References checkPartialObjective(), convertBinaryEquality(), convertLongEquality(), convertUnaryEquality(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), and SCIPisEQ().

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_Bool consdataIsResidualIntegral ( SCIP scip,
SCIP_CONSDATA consdata,
int  pos,
SCIP_Real  val 
)
static

returns whether the linear sum of all variables/coefficients except the given one divided by the given value is always integral

Parameters
scipSCIP data structure
consdatalinear constraint
posposition of variable to be left out
valvalue to divide the coefficients by

Definition at line 8537 of file cons_linear.c.

References FALSE, NULL, SCIPisIntegral(), SCIPvarIsIntegral(), and TRUE.

Referenced by dualPresolve().

static void calculateMinvalAndMaxval ( SCIP scip,
SCIP_Real  side,
SCIP_Real  val,
SCIP_Real  minresactivity,
SCIP_Real  maxresactivity,
SCIP_Real minval,
SCIP_Real maxval 
)
static
Parameters
scipSCIP data structure
sidelhs or rhs
valcoefficient
minresactivityminimal residual activity
maxresactivitymaximal residual activity
minvalpointer to store calculated minval
maxvalpointer to store calculated maxval

Definition at line 8563 of file cons_linear.c.

References NULL, and SCIPisInfinity().

Referenced by dualPresolve().

static SCIP_RETCODE dualPresolve ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool cutoff,
int *  nfixedvars,
int *  naggrvars,
int *  ndelconss 
)
static
static int getVarWeight ( SCIP_VAR var)
static

gets weight for variable in a "weighted number of variables" sum

Parameters
varvariable to get weight for

Definition at line 9031 of file cons_linear.c.

References BINWEIGHT, CONTWEIGHT, INTWEIGHT, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPABORT, SCIPerrorMessage, and SCIPvarGetType().

Referenced by aggregateConstraints(), and preprocessConstraintPairs().

static SCIP_RETCODE aggregateVariables ( SCIP scip,
SCIP_CONS cons,
SCIP_Bool cutoff,
int *  nfixedvars,
int *  naggrvars,
int *  ndelconss 
)
static

tries to aggregate variables in equations a^Tx = lhs in case there are at most two binary variables with an odd coefficient and all other variables are not continuous and have an even coefficient then:

  • exactly one odd binary variables this binary variables y can be fixed to 0 if the lhs is even and to 1 if the lhs is odd
    • lhs is odd -> y = 1
    • lhs is even -> y = 0
  • exactly two odd binary variables aggregate the two binary variables with odd coefficient
    • lhs is odd -> exactly one of the variable has to be 1 -> var1 + var2 = 1
    • lhs is even -> both have to take the same value -> var1 - var2 = 0
Parameters
scipSCIP data structure
conslinear constraint
cutoffpointer to store TRUE, if a cutoff was found
nfixedvarspointer to count number of fixed variables
naggrvarspointer to count number of aggregated variables
ndelconsspointer to count number of deleted constraints

Definition at line 9064 of file cons_linear.c.

References applyFixings(), FALSE, normalizeCons(), NULL, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaggregateVars(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPfeasFloor(), SCIPfixVar(), SCIPisEQ(), SCIPisInfinity(), SCIPisIntegral(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarIsBinary(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_DECL_SORTINDCOMP ( consdataCompSim  )
static

sorting method for constraint data, compares two variables on given indices, continuous variables will be sorted to the end and for all other variables the sortation will be in non-increasing order of their absolute value of the coefficients

Definition at line 9230 of file cons_linear.c.

References NULL, REALABS, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, and SCIPvarGetType().

static SCIP_RETCODE rangedRowSimplify ( SCIP scip,
SCIP_CONS cons,
int *  nchgcoefs,
int *  nchgsides 
)
static

tries to simplify coefficients and delete variables in ranged row of the form lhs <= a^Tx <= rhs, e.g. using the greatest common divisor

  1. lhs <= a^Tx <= rhs, forall a_i >= lhs, a_i <= rhs, and forall pairs a_i + a_j > rhs then we can change this constraint to 1^Tx = 1
Parameters
scipSCIP data structure
conslinear constraint
nchgcoefspointer to store the amount of changed coefficients
nchgsidespointer to store the amount of changed sides

Definition at line 9270 of file cons_linear.c.

References chgCoefPos(), chgLhs(), chgRhs(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPisEQ(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), and SCIPvarIsBinary().

Referenced by simplifyInequalities().

static SCIP_RETCODE simplifyInequalities ( SCIP scip,
SCIP_CONS cons,
int *  nchgcoefs,
int *  nchgsides 
)
static

tries to simplify coefficients and delete variables in constraints of the form lhs <= a^Tx <= rhs for equations

See Also
rangedRowSimplify() will be called

there are several different coefficient reduction steps which will be applied

  1. We try to determine parts of the constraint which will not change anything on (in-)feasibility of the constraint

    e.g. 5x1 + 5x2 + 3z1 <= 8 => 3z1 is redundant if all x are binary and -2 < 3z1 <= 3

  1. We try to remove redundant fractional parts in a constraint

    e.g. 5.2x1 + 5.1x2 + 3x3 <= 8.3 => will be changed to 5x1 + 5x2 + 3x3 <= 8 if all x are binary

  1. We are using the greatest common divisor for further reductions

    e.g. 10x1 + 5y2 + 5x3 + 3x4 <= 15 => will be changed to 2x1 + y2 + x3 + x4 <= 3 if all xi are binary and y2 is integral

Parameters
scipSCIP data structure
conslinear constraint
nchgcoefspointer to store the amount of changed coefficients
nchgsidespointer to store the amount of changed sides

Definition at line 9382 of file cons_linear.c.

References chgCoefPos(), chgLhs(), chgRhs(), consdataGetGlbActivityBounds(), consdataRecomputeMaxActivityDelta(), delCoefPos(), FALSE, normalizeCons(), NULL, permSortConsdata(), rangedRowSimplify(), REALABS, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPcalcGreComDiv(), SCIPceil(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPfeasCeil(), SCIPfeasFloor(), SCIPfeastol(), SCIPfloor(), SCIPfreeBufferArray, SCIPisEQ(), SCIPisFeasEQ(), SCIPisFeasGT(), SCIPisFeasIntegral(), SCIPisFeasLT(), SCIPisFeasNegative(), SCIPisFeasZero(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLE(), SCIPisLT(), SCIPisNegative(), SCIPisZero(), SCIPsort(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE aggregateConstraints ( SCIP scip,
SCIP_CONS cons0,
SCIP_CONS cons1,
int *  commonidx0,
int *  commonidx1,
int *  diffidx0minus1,
int *  diffidx1minus0,
int  nvarscommon,
int  commonidxweight,
int  diffidx0minus1weight,
int  diffidx1minus0weight,
SCIP_Real  maxaggrnormscale,
int *  nchgcoefs,
SCIP_Bool aggregated 
)
static
Parameters
scipSCIP data structure
cons0(in)equality to modify
cons1equality to use for aggregation of cons0
commonidx0array with indices of variables in cons0, that appear also in cons1
commonidx1array with indices of variables in cons1, that appear also in cons0
diffidx0minus1array with indices of variables in cons0, that don't appear in cons1
diffidx1minus0array with indices of variables in cons1, that don't appear in cons0
nvarscommonnumber of variables, that appear in both constraints
commonidxweightvariable weight sum of common variables
diffidx0minus1weightvariable weight sum of variables in cons0, that don't appear in cons1
diffidx1minus0weightvariable weight sum of variables in cons1, that don't appear in cons0
maxaggrnormscalemaximal allowed relative gain in maximum norm for constraint aggregation
nchgcoefspointer to count the number of changed coefficients
aggregatedpointer to store whether an aggregation was made

Definition at line 10571 of file cons_linear.c.

References consdataGetMaxAbsval(), FALSE, getVarWeight(), normalizeCons(), NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsGetNUpgradeLocks(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelCons(), SCIPfreeBufferArray, SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLE(), SCIPisPositive(), SCIPisZero(), SCIPreleaseCons(), and TRUE.

Referenced by preprocessConstraintPairs().

static SCIP_DECL_HASHGETKEY ( hashGetKeyLinearcons  )
static

gets the key of the given element

Definition at line 10884 of file cons_linear.c.

static SCIP_DECL_HASHKEYEQ ( hashKeyEqLinearcons  )
static

returns TRUE iff both keys are equal; two constraints are equal if they have the same variables and the coefficients are either equal or negated

Definition at line 10894 of file cons_linear.c.

References FALSE, NULL, SCIP_Bool, SCIP_Real, SCIPconsGetData(), SCIPisEQ(), SCIPvarCompare(), and TRUE.

static SCIP_DECL_HASHKEYVAL ( hashKeyValLinearcons  )
static

returns the hash value of the key

Definition at line 10949 of file cons_linear.c.

References consdataGetMaxAbsval(), MULTIPLIER, NULL, REALABS, SCIP_Real, SCIPconsGetData(), and SCIPvarGetIndex().

static SCIP_RETCODE detectRedundantConstraints ( SCIP scip,
BMS_BLKMEM blkmem,
SCIP_CONS **  conss,
int  nconss,
int *  firstchange,
SCIP_Bool cutoff,
int *  ndelconss,
int *  nchgsides 
)
static

compares each constraint with all other constraints for possible redundancy and removes or changes constraint accordingly; in contrast to preprocessConstraintPairs(), it uses a hash table

Parameters
scipSCIP data structure
blkmemblock memory
conssconstraint set
nconssnumber of constraints in constraint set
firstchangepointer to store first changed constraint
cutoffpointer to store TRUE, if a cutoff was found
ndelconsspointer to count number of deleted constraints
nchgsidespointer to count number of changed left/right hand sides

Definition at line 11000 of file cons_linear.c.

References chgLhs(), chgRhs(), consdataSort(), HASHSIZE_LINEARCONS, MAX, MIN, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcalcHashtableSize(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsGetPos(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelCons(), SCIPgetMessagehdlr(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPhashtablePrintStatistics(), SCIPhashtableRemove(), SCIPhashtableRetrieve(), SCIPinfoMessage(), SCIPisEQ(), SCIPisFeasLT(), SCIPisStopped(), SCIPupdateConsFlags(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_RETCODE preprocessConstraintPairs ( SCIP scip,
SCIP_CONS **  conss,
int  firstchange,
int  chkind,
SCIP_Real  maxaggrnormscale,
SCIP_Bool cutoff,
int *  ndelconss,
int *  nchgsides,
int *  nchgcoefs 
)
static

compares constraint with all prior constraints for possible redundancy or aggregation, and removes or changes constraint accordingly

Parameters
scipSCIP data structure
conssconstraint set
firstchangefirst constraint that changed since last pair preprocessing round
chkindindex of constraint to check against all prior indices upto startind
maxaggrnormscalemaximal allowed relative gain in maximum norm for constraint aggregation
cutoffpointer to store TRUE, if a cutoff was found
ndelconsspointer to count number of deleted constraints
nchgsidespointer to count number of changed left/right hand sides
nchgcoefspointer to count number of changed coefficients

Definition at line 11181 of file cons_linear.c.

References aggregateConstraints(), chgLhs(), chgRhs(), consdataCalcSignatures(), consdataSort(), FALSE, getVarWeight(), MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPABORT, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPdebugMessage, SCIPdebugPrintCons, SCIPdelCons(), SCIPerrorMessage, SCIPfreeBufferArray, SCIPinfinity(), SCIPisEQ(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisNegative(), SCIPisPositive(), SCIPreallocBufferArray, SCIPupdateConsFlags(), SCIPvarCompare(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by SCIP_DECL_CONSPRESOL().

static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyLinear  )
static

copy method for constraint handler plugins (called when SCIP copies plugins)

Definition at line 12235 of file cons_linear.c.

References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrLinear(), and TRUE.

static SCIP_DECL_CONSFREE ( consFreeLinear  )
static

destructor of constraint handler to free constraint handler data (called when SCIP is exiting)

Definition at line 12251 of file cons_linear.c.

References CONSHDLR_NAME, conshdlrdataFree(), NULL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPconshdlrSetData().

static SCIP_DECL_CONSINIT ( consInitLinear  )
static

initialization method of constraint handler (called after problem was transformed)

Definition at line 12273 of file cons_linear.c.

References consCatchAllEvents(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPconshdlrGetData().

static SCIP_DECL_CONSEXIT ( consExitLinear  )
static

deinitialization method of constraint handler (called before transformed problem is freed)

Definition at line 12299 of file cons_linear.c.

References consDropAllEvents(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), and SCIPconshdlrGetData().

static SCIP_DECL_CONSEXITPRE ( consExitpreLinear  )
static

presolving deinitialization method of constraint handler (called after presolving has been finished)

Definition at line 12677 of file cons_linear.c.

References applyFixings(), consdataRecomputeMaxActivityDelta(), MAXACTIVITYDELTATHR, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPdelCons(), SCIPisLT(), and SCIPstatisticMessage.

static SCIP_DECL_CONSEXITSOL ( consExitsolLinear  )
static

solving process deinitialization method of constraint handler (called before branch and bound process data is freed)

Definition at line 12752 of file cons_linear.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIP_VERBLEVEL_HIGH, SCIPconsGetData(), SCIPconvertCutsToConss(), SCIPreleaseRow(), SCIPverbMessage(), and TRUE.

static SCIP_DECL_CONSDELETE ( consDeleteLinear  )
static

frees specific constraint data

Definition at line 12799 of file cons_linear.c.

References consdataFree(), consDropAllEvents(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), and SCIPconshdlrGetName().

static SCIP_DECL_CONSINITLP ( consInitlpLinear  )
static

LP initialization method of constraint handler (called before the initial LP relaxation at a node is solved)

Definition at line 12876 of file cons_linear.c.

References addRelaxation(), CONSHDLR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetName(), and SCIPconsIsInitial().

static SCIP_DECL_CONSSEPASOL ( consSepasolLinear  )
static

separation method of constraint handler for arbitrary primal solutions

Definition at line 12968 of file cons_linear.c.

References CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_SEPARATED, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPgetDepth(), SCIPgetNSepaRounds(), separateCons(), and TRUE.

static SCIP_DECL_CONSENFOLP ( consEnfolpLinear  )
static

constraint enforcing method of constraint handler for LP solutions

Definition at line 13026 of file cons_linear.c.

References addRelaxation(), checkCons(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIP_SEPARATED, SCIPconshdlrGetData(), and SCIPconshdlrGetName().

static SCIP_DECL_CONSENFOPS ( consEnfopsLinear  )
static

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 13089 of file cons_linear.c.

References checkCons(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DIDNOTRUN, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebugMessage, and TRUE.

static SCIP_DECL_CONSCHECK ( consCheckLinear  )
static
static SCIP_DECL_CONSPROP ( consPropLinear  )
static
static SCIP_DECL_CONSRESPROP ( consRespropLinear  )
static

propagation conflict resolving method of constraint handler

Definition at line 13703 of file cons_linear.c.

References intToInferInfo(), NULL, resolvePropagation(), SCIP_CALL, and SCIP_OKAY.

static SCIP_DECL_CONSLOCK ( consLockLinear  )
static

variable rounding lock method of constraint handler

Definition at line 13718 of file cons_linear.c.

References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaddVarLocks(), SCIPconsGetData(), SCIPisInfinity(), and SCIPisPositive().

static SCIP_DECL_CONSDELVARS ( consDelvarsLinear  )
static

variable deletion method of constraint handler

Definition at line 13766 of file cons_linear.c.

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

static SCIP_DECL_CONSPRINT ( consPrintLinear  )
static

constraint display method of constraint handler

Definition at line 13782 of file cons_linear.c.

References consdataPrint(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPconsGetData().

static SCIP_DECL_CONSCOPY ( consCopyLinear  )
static
static SCIP_DECL_CONSPARSE ( consParseLinear  )
static
static SCIP_DECL_CONSGETVARS ( consGetVarsLinear  )
static

constraint method of constraint handler which returns the variables (if possible)

Definition at line 13984 of file cons_linear.c.

References BMScopyMemoryArray, FALSE, NULL, SCIP_OKAY, SCIPconsGetData(), and TRUE.

static SCIP_DECL_CONSGETNVARS ( consGetNVarsLinear  )
static

constraint method of constraint handler which returns the number of variables (if possible)

Definition at line 14006 of file cons_linear.c.

References NULL, SCIP_OKAY, SCIPconsGetData(), and TRUE.

SCIP_RETCODE SCIPincludeConshdlrLinear ( SCIP scip)

creates the handler for linear constraints and includes it in SCIP

Parameters
scipSCIP data structure

Definition at line 14330 of file cons_linear.c.

References CONFLICTHDLR_DESC, CONFLICTHDLR_NAME, CONFLICTHDLR_PRIORITY, CONSHDLR_CHECKPRIORITY, CONSHDLR_DELAYPRESOL, CONSHDLR_DELAYPROP, CONSHDLR_DELAYSEPA, CONSHDLR_DESC, CONSHDLR_EAGERFREQ, CONSHDLR_ENFOPRIORITY, CONSHDLR_MAXPREROUNDS, CONSHDLR_NAME, CONSHDLR_NEEDSCONS, CONSHDLR_PROP_TIMING, CONSHDLR_PROPFREQ, CONSHDLR_SEPAFREQ, CONSHDLR_SEPAPRIORITY, conshdlrdataCreate(), DEFAULT_AGGREGATEVARIABLES, DEFAULT_CHECKRELMAXABS, DEFAULT_DETECTCUTOFFBOUND, DEFAULT_DETECTLOWERBOUND, DEFAULT_DETECTPARTIALOBJECTIVE, DEFAULT_DUALPRESOLVING, DEFAULT_MAXAGGRNORMSCALE, DEFAULT_MAXCARDBOUNDDIST, DEFAULT_MAXROUNDS, DEFAULT_MAXROUNDSROOT, DEFAULT_MAXSEPACUTS, DEFAULT_MAXSEPACUTSROOT, DEFAULT_MINGAINPERNMINCOMP, DEFAULT_NMINCOMPARISONS, DEFAULT_PRESOLPAIRWISE, DEFAULT_PRESOLUSEHASHING, DEFAULT_SEPARATEALL, DEFAULT_SIMPLIFYINEQUALITIES, DEFAULT_SORTVARS, DEFAULT_TIGHTENBOUNDSFREQ, EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, NONLINCONSUPGD_PRIORITY, NULL, QUADCONSUPGD_PRIORITY, SCIP_CALL, SCIP_OKAY, SCIP_REAL_MAX, SCIPaddBoolParam(), SCIPaddIntParam(), SCIPaddRealParam(), SCIPfindConshdlr(), SCIPincludeConflicthdlrBasic(), SCIPincludeConshdlrBasic(), SCIPincludeEventhdlrBasic(), SCIPincludeNonlinconsUpgrade(), SCIPincludeQuadconsUpgrade(), SCIPsetConshdlrCopy(), SCIPsetConshdlrDelete(), SCIPsetConshdlrDelvars(), SCIPsetConshdlrExit(), SCIPsetConshdlrExitpre(), SCIPsetConshdlrExitsol(), SCIPsetConshdlrFree(), SCIPsetConshdlrGetNVars(), SCIPsetConshdlrGetVars(), SCIPsetConshdlrInit(), SCIPsetConshdlrInitlp(), SCIPsetConshdlrInitpre(), SCIPsetConshdlrParse(), SCIPsetConshdlrPresol(), SCIPsetConshdlrPrint(), SCIPsetConshdlrProp(), SCIPsetConshdlrResprop(), SCIPsetConshdlrSepa(), SCIPsetConshdlrTrans(), and TRUE.

Referenced by SCIP_DECL_CONSHDLRCOPY(), and SCIPincludeDefaultPlugins().

SCIP_RETCODE SCIPincludeLinconsUpgrade ( SCIP scip,
SCIP_DECL_LINCONSUPGD((*linconsupgd))  ,
int  priority,
const char *  conshdlrname 
)

includes a linear constraint update method into the linear constraint handler

Parameters
scipSCIP data structure
prioritypriority of upgrading method
conshdlrnamename of the constraint handler

Definition at line 14482 of file cons_linear.c.

References SCIP_LinConsUpgrade::active, CONSHDLR_NAME, conshdlrdataHasUpgrade(), conshdlrdataIncludeUpgrade(), FALSE, linconsupgradeCreate(), NULL, paramname, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPaddBoolParam(), SCIPconshdlrGetData(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPsnprintf(), and TRUE.

Referenced by SCIPincludeConshdlrKnapsack(), SCIPincludeConshdlrLogicor(), SCIPincludeConshdlrSetppc(), and SCIPincludeConshdlrVarbound().

SCIP_RETCODE SCIPcreateConsLinear ( SCIP scip,
SCIP_CONS **  cons,
const char *  name,
int  nvars,
SCIP_VAR **  vars,
SCIP_Real vals,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_Bool  initial,
SCIP_Bool  separate,
SCIP_Bool  enforce,
SCIP_Bool  check,
SCIP_Bool  propagate,
SCIP_Bool  local,
SCIP_Bool  modifiable,
SCIP_Bool  dynamic,
SCIP_Bool  removable,
SCIP_Bool  stickingatnode 
)

creates and captures a linear constraint

Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of nonzeros in the constraint
varsarray with variables of constraint entries
valsarray with coefficients of constraint entries
lhsleft hand side of constraint
rhsright hand side of constraint
initialshould the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'.
separateshould the constraint be separated during LP processing? Usually set to TRUE.
enforceshould the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints.
checkshould the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints.
propagateshould the constraint be propagated during node processing? Usually set to TRUE.
localis constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints.
modifiableis constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint.
dynamicIs constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are separated as constraints.
removableshould the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'.
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.

Definition at line 14534 of file cons_linear.c.

References consCatchAllEvents(), consdataCreate(), CONSHDLR_NAME, needEvents(), NULL, REALABS, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_STAGE_EXITPRESOLVE, SCIPABORT, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPduplicateBufferArray, SCIPerrorMessage, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPgetStage(), SCIPinfinity(), SCIPisInfinity(), SCIPisTransformed(), SCIPreallocBufferArray, and TRUE.

Referenced by addExtendedAsymmetricFormulation(), addExtendedFlowFormulation(), addLocalBranchingConstraint(), aggregateConstraints(), applyFixings(), consdataLinearize(), copyCuts(), CREATE_CONSTRAINT(), createAndAddLinearCons(), createCoveringProblem(), createLinearCons(), createNAryBranch(), createRows(), createSubproblem(), createSubSCIP(), createSubscip(), dualPresolve(), fixDeleteOrUpgradeCons(), fixVariableZeroNode(), forbidCover(), getFixedVariable(), presolveCreateBenTalNemirovskiApproxDim3(), presolveCreateGlineurApproxDim3(), presolveFindDuplicates(), presolveFindDuplicatesUpgradeCons(), presolveRemoveFixedVariables(), presolveTryAddLinearReform(), propIndicator(), readCnf(), readConstraints(), readOPBFile(), readRows(), replaceByLinearConstraints(), replaceViolatedByLinearConstraints(), SCIP_DECL_CONFLICTEXEC(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSINITPRE(), SCIP_DECL_CONSPARSE(), SCIP_DECL_CONSPRESOL(), SCIP_DECL_NONLINCONSUPGD(), SCIP_DECL_QUADCONSUPGD(), SCIPapplyZeroobj(), SCIPcopyConsLinear(), SCIPcreateConsBasicLinear(), SCIPcreateConsIndicator(), SCIPgetVarCopy(), tightenBounds(), tryUpgradingLogicor(), tryUpgradingSetppc(), and upgradeLinearSuperindicator().

SCIP_RETCODE SCIPcreateConsBasicLinear ( SCIP scip,
SCIP_CONS **  cons,
const char *  name,
int  nvars,
SCIP_VAR **  vars,
SCIP_Real vals,
SCIP_Real  lhs,
SCIP_Real  rhs 
)

creates and captures a linear constraint in its most basic version, i. e., all constraint flags are set to their basic value as explained for the method SCIPcreateConsLinear(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h

See Also
SCIPcreateConsLinear() for information about the basic constraint flag configuration
Note
the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
Parameters
scipSCIP data structure
conspointer to hold the created constraint
namename of constraint
nvarsnumber of nonzeros in the constraint
varsarray with variables of constraint entries
valsarray with coefficients of constraint entries
lhsleft hand side of constraint
rhsright hand side of constraint

Definition at line 14726 of file cons_linear.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateConsLinear(), and TRUE.

Referenced by SCIPapplyProximity(), and SCIPcreateFiniteSolCopy().

SCIP_RETCODE SCIPcopyConsLinear ( SCIP scip,
SCIP_CONS **  cons,
SCIP sourcescip,
const char *  name,
int  nvars,
SCIP_VAR **  sourcevars,
SCIP_Real sourcecoefs,
SCIP_Real  lhs,
SCIP_Real  rhs,
SCIP_HASHMAP varmap,
SCIP_HASHMAP consmap,
SCIP_Bool  initial,
SCIP_Bool  separate,
SCIP_Bool  enforce,
SCIP_Bool  check,
SCIP_Bool  propagate,
SCIP_Bool  local,
SCIP_Bool  modifiable,
SCIP_Bool  dynamic,
SCIP_Bool  removable,
SCIP_Bool  stickingatnode,
SCIP_Bool  global,
SCIP_Bool valid 
)

creates by copying and captures a linear constraint

Parameters
sciptarget SCIP data structure
conspointer to store the created target constraint
sourcescipsource SCIP data structure
namename of constraint
nvarsnumber of variables in source variable array
sourcevarssource variables of the linear constraints
sourcecoefscoefficient array of the linear constraint, or NULL if all coefficients are one
lhsleft hand side of the linear constraint
rhsright hand side of the linear constraint
varmapa SCIP_HASHMAP mapping variables of the source SCIP to corresponding variables of the target SCIP
consmapa hashmap to store the mapping of source constraints to the corresponding target constraints
initialshould the LP relaxation of constraint be in the initial LP?
separateshould the constraint be separated during LP processing?
enforceshould the constraint be enforced during node processing?
checkshould the constraint be checked for feasibility?
propagateshould the constraint be propagated during node processing?
localis constraint only valid locally?
modifiableis constraint modifiable (subject to column generation)?
dynamicis constraint subject to aging?
removableshould the relaxation be removed from the LP due to aging or cleanup?
stickingatnodeshould the constraint always be kept at the node where it was added, even if it may be moved to a more global node?
globalcreate a global or a local copy?
validpointer to store if the copying was valid

Definition at line 14746 of file cons_linear.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateConsLinear(), SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPgetVarCopy(), SCIPisGT(), SCIPisInfinity(), SCIPreallocBufferArray, SCIPvarGetOrigvarSum(), SCIPvarIsOriginal(), and TRUE.

Referenced by SCIP_DECL_CONSCOPY().

SCIP_RETCODE SCIPchgLhsLinear ( SCIP scip,
SCIP_CONS cons,
SCIP_Real  lhs 
)

changes left hand side of linear constraint

Parameters
scipSCIP data structure
consconstraint data
lhsnew left hand side

Definition at line 15074 of file cons_linear.c.

References chgLhs(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by applyFixings(), chgLhsLinearCons(), fixDiscreteVars(), readRanges(), readRhs(), and tryUpgradingLogicor().

SCIP_RETCODE SCIPchgRhsLinear ( SCIP scip,
SCIP_CONS cons,
SCIP_Real  rhs 
)

changes right hand side of linear constraint

Parameters
scipSCIP data structure
consconstraint data
rhsnew right hand side

Definition at line 15095 of file cons_linear.c.

References chgRhs(), CONSHDLR_NAME, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

Referenced by applyFixings(), chgRhsLinearCons(), fixDiscreteVars(), readRanges(), readRhs(), SCIPapplyHeurDualval(), SCIPapplyProximity(), and tryUpgradingSetppc().

SCIP_Real SCIPgetActivityLinear ( SCIP scip,
SCIP_CONS cons,
SCIP_SOL sol 
)

gets the activity of the linear constraint in the given solution

Parameters
scipSCIP data structure
consconstraint data
solsolution, or NULL to use current node's solution

Definition at line 15185 of file cons_linear.c.

References consdataGetActivity(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetRowSolActivity().

SCIP_Real SCIPgetFeasibilityLinear ( SCIP scip,
SCIP_CONS cons,
SCIP_SOL sol 
)

gets the feasibility of the linear constraint in the given solution

Parameters
scipSCIP data structure
consconstraint data
solsolution, or NULL to use current node's solution

Definition at line 15213 of file cons_linear.c.

References consdataGetFeasibility(), CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetRowSolFeasibility().

SCIP_Real SCIPgetDualsolLinear ( SCIP scip,
SCIP_CONS cons 
)

gets the dual solution of the linear constraint in the current LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 15241 of file cons_linear.c.

References CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualsol().

Referenced by printDualSol(), and SCIP_DECL_EVENTEXEC().

SCIP_Real SCIPgetDualfarkasLinear ( SCIP scip,
SCIP_CONS cons 
)

gets the dual Farkas value of the linear constraint in the current infeasible LP

Parameters
scipSCIP data structure
consconstraint data

Definition at line 15268 of file cons_linear.c.

References CONSHDLR_NAME, NULL, SCIP_INVALID, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIProwGetDualfarkas().

SCIP_ROW* SCIPgetRowLinear ( SCIP scip,
SCIP_CONS cons 
)

returns the linear relaxation of the given linear constraint; may return NULL if no LP row was yet created; the user must not modify the row!

Parameters
scipSCIP data structure
consconstraint data

Definition at line 15297 of file cons_linear.c.

References CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.

SCIP_RETCODE SCIPupgradeConsLinear ( SCIP scip,
SCIP_CONS cons,
SCIP_CONS **  upgdcons 
)