Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

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

    Author
    Leon Eifler
    Sander Borst

    Definition in file cons_exactlinear.c.

    #include "scip/clock.h"
    #include "scip/def.h"
    #include "scip/struct_stat.h"
    #include "scip/type_retcode.h"
    #include "blockmemshell/memory.h"
    #include "scip/cons_knapsack.h"
    #include "scip/cons_exactlinear.h"
    #include "scip/cons_linear.h"
    #include "scip/cons_nonlinear.h"
    #include "scip/debug.h"
    #include "scip/intervalarith.h"
    #include "scip/pub_conflict.h"
    #include "scip/pub_cons.h"
    #include "scip/pub_event.h"
    #include "scip/pub_lp.h"
    #include "scip/pub_lpexact.h"
    #include "scip/pub_message.h"
    #include "scip/pub_misc.h"
    #include "scip/pub_misc_sort.h"
    #include "scip/pub_var.h"
    #include "scip/rational.h"
    #include "scip/scip_branch.h"
    #include "scip/scip_certificate.h"
    #include "scip/scip_conflict.h"
    #include "scip/scip_cons.h"
    #include "scip/scip_copy.h"
    #include "scip/scip_cut.h"
    #include "scip/scip_event.h"
    #include "scip/scip_exact.h"
    #include "scip/scip_general.h"
    #include "scip/scip_lp.h"
    #include "scip/scip_lpexact.h"
    #include "scip/scip_mem.h"
    #include "scip/scip_message.h"
    #include "scip/scip_numerics.h"
    #include "scip/scip_param.h"
    #include "scip/scip_prob.h"
    #include "scip/scip_probing.h"
    #include "scip/scip_solvingstats.h"
    #include "scip/scip_tree.h"
    #include "scip/scip_var.h"
    #include "scip/var.h"
    #include "scip/sepastoreexact.h"
    #include <ctype.h>
    #include <string.h>
    #include <strings.h>

    Go to the source code of this file.

    Macros

    #define CONSHDLR_NAME   "exactlinear"
     
    #define CONSHDLR_DESC   "exact 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_DELAYSEPA   FALSE
     
    #define CONSHDLR_DELAYPROP   FALSE
     
    #define CONSHDLR_NEEDSCONS   TRUE
     
    #define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP
     
    #define EVENTHDLR_NAME   "exactlinear"
     
    #define EVENTHDLR_DESC   "bound change event handler for exact linear constraints"
     
    #define DEFAULT_TIGHTENBOUNDSFREQ   1
     
    #define DEFAULT_MAXROUNDS   5
     
    #define DEFAULT_MAXROUNDSROOT   -1
     
    #define DEFAULT_MAXSEPACUTS   50
     
    #define DEFAULT_MAXSEPACUTSROOT   200
     
    #define DEFAULT_SORTVARS   TRUE
     
    #define DEFAULT_LIMITDENOM   FALSE
     
    #define DEFAULT_BOUNDMAXDENOM   256L
     
    #define checkMaxActivityDelta(scip, consdata)
     
    #define MAXTIGHTENROUNDS   10
     

    Typedefs

    typedef enum Proprule PROPRULE
     
    typedef struct InferInfo INFERINFO
     

    Enumerations

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

    Functions

    static int inferInfoToInt (INFERINFO inferinfo)
     
    static INFERINFO getInferInfo (PROPRULE proprule, int pos)
     
    static int getInferInt (PROPRULE proprule, int pos)
     
    static SCIP_RETCODE consdataEnsureVarsSize (SCIP *scip, SCIP_CONSDATA *consdata, int num)
     
    static SCIP_RETCODE conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
     
    static void conshdlrdataFree (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
     
    static SCIP_RETCODE lockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_RATIONAL *val)
     
    static SCIP_RETCODE unlockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_RATIONAL *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_RETCODE consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, int nvars, SCIP_VAR **vars, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs)
     
    static SCIP_RETCODE consdataFree (SCIP *scip, SCIP_CONSDATA **consdata)
     
    static SCIP_RETCODE consdataPrint (SCIP *scip, SCIP_CONSDATA *consdata, FILE *file)
     
    static SCIP_RETCODE consPrintConsSol (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool useexactsol, FILE *file)
     
    static void consdataInvalidateActivities (SCIP_CONSDATA *consdata)
     
    static void consdataComputePseudoActivity (SCIP_CONSDATA *consdata, SCIP_RATIONAL *pseudoactivity)
     
    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 consdataCalcMinAbsvalEx (SCIP_CONSDATA *consdata)
     
    static void consdataCheckNonbinvar (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_INTERVAL valrange, SCIP_BOUNDTYPE boundtype, SCIP_Bool global)
     
    static void consdataUpdateActivitiesLb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb, SCIP_INTERVAL val)
     
    static void consdataUpdateActivitiesUb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub, SCIP_INTERVAL val)
     
    static void consdataUpdateActivitiesGlbLb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real oldlb, SCIP_Real newlb, SCIP_INTERVAL val)
     
    static void consdataUpdateActivitiesGlbUb (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real oldub, SCIP_Real newub, SCIP_INTERVAL val)
     
    static void consdataUpdateAddCoef (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_RATIONAL *valExact, SCIP_INTERVAL val)
     
    static void consdataUpdateDelCoef (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_RATIONAL *valExact, SCIP_INTERVAL val)
     
    static SCIP_RATIONALconsdataGetMinAbsvalEx (SCIP *scip, SCIP_CONSDATA *consdata)
     
    static void consdataUpdateChgCoef (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_INTERVAL oldval, SCIP_RATIONAL *oldvalExact, SCIP_INTERVAL newval, SCIP_RATIONAL *newvalExact)
     
    static void consdataScaleMinValue (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_Real minval)
     
    static void consdataCalcActivities (SCIP *scip, SCIP_CONSDATA *consdata)
     
    static SCIP_Bool consdataComputeSolActivityWithErrorbound (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
     
    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, SCIP_Bool *isminsettoinfinity, SCIP_Bool *ismaxsettoinfinity)
     
    static void consdataGetActivityResiduals (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR *var, SCIP_INTERVAL val, SCIP_Bool goodrelax, SCIP_Real *minresactivity, SCIP_Real *maxresactivity, SCIP_Bool *minisrelax, SCIP_Bool *maxisrelax, SCIP_Bool *isminsettoinfinity, SCIP_Bool *ismaxsettoinfinity)
     
    static void consdataGetActivity (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *activity)
     
    static void consdataGetFeasibility (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol, SCIP_RATIONAL *ret)
     
    static SCIP_RETCODE createRows (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RETCODE SCIPcertifyConsOrigExactLinear (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *cons)
     
    static SCIP_DECL_SORTINDCOMP (consdataCompVar)
     
    static SCIP_DECL_SORTINDCOMP (consdataCompVarProp)
     
    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_RATIONAL *lhs)
     
    static SCIP_RETCODE chgRhs (SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *rhs)
     
    static SCIP_RETCODE addCoef (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_RATIONAL *val)
     
    static SCIP_RETCODE delCoefPos (SCIP *scip, SCIP_CONS *cons, int pos)
     
    static SCIP_RETCODE chgCoefPos (SCIP *scip, SCIP_CONS *cons, int pos, SCIP_RATIONAL *newval)
     
    static SCIP_RETCODE performVarDeletions (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss)
     
    static SCIP_RETCODE mergeMultiples (SCIP *scip, SCIP_CONS *cons)
     
    static SCIP_RETCODE applyFixings (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible)
     
    static SCIP_RETCODE printActivityConflictToCertificate (SCIP *scip, SCIP_CONS *cons, SCIP_CONSDATA *consdata, SCIP_Bool rhs)
     
    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_CONSHDLRDATA *conshdlrdata, SCIP_SOL *sol, SCIP_Bool useexactsol, SCIP_Bool checklprows, SCIP_Bool *violated)
     
    static SCIP_RETCODE addRelaxation (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *cutoff)
     
    static SCIP_RETCODE separateCons (SCIP *scip, SCIP_CONS *cons, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_SOL *sol, 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 enforceConstraint (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS **conss, int nconss, int nusefulconss, SCIP_SOL *sol, SCIP_RESULT *result)
     
    static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyExactLinear)
     
    static SCIP_DECL_CONSFREE (consFreeExactLinear)
     
    static SCIP_DECL_CONSINIT (consInitExactLinear)
     
    static SCIP_DECL_CONSEXIT (consExitExactLinear)
     
    static SCIP_DECL_CONSEXITPRE (consExitpreExactLinear)
     
    static SCIP_DECL_CONSEXITSOL (consExitsolExactLinear)
     
    static SCIP_DECL_CONSDEACTIVE (consDeactiveExactLinear)
     
    static SCIP_DECL_CONSDELETE (consDeleteExactLinear)
     
    static SCIP_DECL_CONSTRANS (consTransExactLinear)
     
    static SCIP_DECL_CONSINITLP (consInitlpExactLinear)
     
    static SCIP_DECL_CONSSEPALP (consSepalpExactLinear)
     
    static SCIP_DECL_CONSSEPASOL (consSepasolExactLinear)
     
    static SCIP_DECL_CONSENFOLP (consEnfolpExactLinear)
     
    static SCIP_DECL_CONSENFORELAX (consEnforelaxExactLinear)
     
    static SCIP_DECL_CONSENFOPS (consEnfopsExactLinear)
     
    static SCIP_DECL_CONSCHECK (consCheckExactLinear)
     
    static SCIP_DECL_CONSPROP (consPropExactLinear)
     
    static SCIP_DECL_CONSLOCK (consLockExactLinear)
     
    static SCIP_DECL_CONSDELVARS (consDelvarsExactLinear)
     
    static SCIP_DECL_CONSPRINT (consPrintExactLinear)
     
    static SCIP_DECL_CONSCOPY (consCopyExactLinear)
     
    static SCIP_RETCODE findOperators (const char *str, char **firstoperator, char **secondoperator, SCIP_Bool *success)
     
    static SCIP_DECL_CONSPARSE (consParseExactLinear)
     
    static SCIP_DECL_CONSGETVARS (consGetVarsExactLinear)
     
    static SCIP_DECL_CONSGETNVARS (consGetNVarsExactLinear)
     
    static SCIP_DECL_EVENTEXEC (eventExecExactLinear)
     
    SCIP_RETCODE SCIPincludeConshdlrExactLinear (SCIP *scip)
     
    SCIP_RETCODE SCIPcreateConsExactLinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *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 SCIPcreateConsBasicExactLinear (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs)
     
    SCIP_RETCODE SCIPcopyConsExactLinear (SCIP *scip, SCIP_CONS **cons, SCIP *sourcescip, const char *name, int nvars, SCIP_VAR **sourcevars, SCIP_INTERVAL *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 SCIPaddCoefExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_RATIONAL *val)
     
    SCIP_RETCODE SCIPchgCoefExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_RATIONAL *val)
     
    SCIP_RETCODE SCIPdelCoefExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var)
     
    SCIP_RATIONALSCIPgetLhsExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RATIONALSCIPgetRhsExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RETCODE SCIPchgLhsExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *lhs)
     
    SCIP_RETCODE SCIPchgRhsExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *rhs)
     
    int SCIPgetNVarsExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_VAR ** SCIPgetVarsExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_INTERVALSCIPgetValsRealExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RATIONAL ** SCIPgetValsExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RETCODE SCIPgetActivityExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RATIONAL *ret)
     
    SCIP_RETCODE SCIPgetFeasibilityExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RATIONAL *ret)
     
    void SCIPgetFpDualsolExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *ret)
     
    void SCIPgetFpDualfarkasExactLinear (SCIP *scip, SCIP_CONS *cons, SCIP_RATIONAL *ret)
     
    SCIP_ROWSCIPgetRowExactLinear (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_ROWEXACTSCIPgetRowExactExactLinear (SCIP *scip, SCIP_CONS *cons)
     

    Macro Definition Documentation

    ◆ CONSHDLR_NAME

    #define CONSHDLR_NAME   "exactlinear"

    Definition at line 84 of file cons_exactlinear.c.

    ◆ CONSHDLR_DESC

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

    Definition at line 85 of file cons_exactlinear.c.

    ◆ CONSHDLR_SEPAPRIORITY

    #define CONSHDLR_SEPAPRIORITY   +100000

    priority of the constraint handler for separation

    Definition at line 86 of file cons_exactlinear.c.

    ◆ CONSHDLR_ENFOPRIORITY

    #define CONSHDLR_ENFOPRIORITY   -1000000

    priority of the constraint handler for constraint enforcing

    Definition at line 87 of file cons_exactlinear.c.

    ◆ CONSHDLR_CHECKPRIORITY

    #define CONSHDLR_CHECKPRIORITY   -1000000

    priority of the constraint handler for checking feasibility

    Definition at line 88 of file cons_exactlinear.c.

    ◆ CONSHDLR_SEPAFREQ

    #define CONSHDLR_SEPAFREQ   0

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

    Definition at line 89 of file cons_exactlinear.c.

    ◆ CONSHDLR_PROPFREQ

    #define CONSHDLR_PROPFREQ   1

    frequency for propagating domains; zero means only preprocessing propagation

    Definition at line 90 of file cons_exactlinear.c.

    ◆ CONSHDLR_EAGERFREQ

    #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 92 of file cons_exactlinear.c.

    ◆ CONSHDLR_DELAYSEPA

    #define CONSHDLR_DELAYSEPA   FALSE

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

    Definition at line 93 of file cons_exactlinear.c.

    ◆ CONSHDLR_DELAYPROP

    #define CONSHDLR_DELAYPROP   FALSE

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

    Definition at line 94 of file cons_exactlinear.c.

    ◆ CONSHDLR_NEEDSCONS

    #define CONSHDLR_NEEDSCONS   TRUE

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

    Definition at line 95 of file cons_exactlinear.c.

    ◆ CONSHDLR_PROP_TIMING

    #define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP

    Definition at line 97 of file cons_exactlinear.c.

    ◆ EVENTHDLR_NAME

    #define EVENTHDLR_NAME   "exactlinear"

    Definition at line 99 of file cons_exactlinear.c.

    ◆ EVENTHDLR_DESC

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

    Definition at line 100 of file cons_exactlinear.c.

    ◆ DEFAULT_TIGHTENBOUNDSFREQ

    #define DEFAULT_TIGHTENBOUNDSFREQ   1

    multiplier on propagation frequency, how often the bounds are tightened

    Definition at line 102 of file cons_exactlinear.c.

    ◆ DEFAULT_MAXROUNDS

    #define DEFAULT_MAXROUNDS   5

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

    Definition at line 103 of file cons_exactlinear.c.

    ◆ DEFAULT_MAXROUNDSROOT

    #define DEFAULT_MAXROUNDSROOT   -1

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

    Definition at line 104 of file cons_exactlinear.c.

    ◆ DEFAULT_MAXSEPACUTS

    #define DEFAULT_MAXSEPACUTS   50

    maximal number of cuts separated per separation round

    Definition at line 105 of file cons_exactlinear.c.

    ◆ DEFAULT_MAXSEPACUTSROOT

    #define DEFAULT_MAXSEPACUTSROOT   200

    maximal number of cuts separated per separation round in root node

    Definition at line 106 of file cons_exactlinear.c.

    ◆ DEFAULT_SORTVARS

    #define DEFAULT_SORTVARS   TRUE

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

    Definition at line 108 of file cons_exactlinear.c.

    ◆ DEFAULT_LIMITDENOM

    #define DEFAULT_LIMITDENOM   FALSE

    should denominator sizes for continuous variables be controlled?

    Definition at line 109 of file cons_exactlinear.c.

    ◆ DEFAULT_BOUNDMAXDENOM

    #define DEFAULT_BOUNDMAXDENOM   256L

    maximal denominator for rational bounds on continuous variables after propagation

    Definition at line 110 of file cons_exactlinear.c.

    ◆ checkMaxActivityDelta

    #define checkMaxActivityDelta (   scip,
      consdata 
    )

    Definition at line 1438 of file cons_exactlinear.c.

    ◆ MAXTIGHTENROUNDS

    #define MAXTIGHTENROUNDS   10

    Definition at line 4650 of file cons_exactlinear.c.

    Typedef Documentation

    ◆ PROPRULE

    typedef enum Proprule PROPRULE

    Definition at line 255 of file cons_exactlinear.c.

    ◆ INFERINFO

    typedef struct InferInfo INFERINFO

    Definition at line 271 of file cons_exactlinear.c.

    Enumeration Type Documentation

    ◆ Proprule

    enum Proprule
    Enumerator
    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_0_INVALID 

    invalid inference information

    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_1_RANGEDROW 

    fixed variables and gcd of all left variables tighten bounds of a single variable in this reanged row

    PROPRULE_INVALID 

    propagation was applied without a specific propagation rule

    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_1_RANGEDROW 

    fixed variables and gcd of all left variables tighten bounds of a single variable in this reanged row

    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 245 of file cons_exactlinear.c.

    Function Documentation

    ◆ inferInfoToInt()

    static int inferInfoToInt ( INFERINFO  inferinfo)
    static

    converts an inference information into an int

    Parameters
    inferinfoinference information to convert

    Definition at line 276 of file cons_exactlinear.c.

    Referenced by getInferInt().

    ◆ getInferInfo()

    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 286 of file cons_exactlinear.c.

    Referenced by getInferInt().

    ◆ 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 305 of file cons_exactlinear.c.

    References getInferInfo(), and inferInfoToInt().

    Referenced by tightenVarBounds().

    ◆ consdataEnsureVarsSize()

    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 315 of file cons_exactlinear.c.

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

    Referenced by addCoef().

    ◆ conshdlrdataCreate()

    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 356 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPblkmem(), and SCIPrationalCreateBlock().

    Referenced by SCIPincludeConshdlrExactLinear().

    ◆ conshdlrdataFree()

    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 388 of file cons_exactlinear.c.

    References NULL, SCIPblkmem(), SCIPfreeBlockMemory, and SCIPrationalFreeBlock().

    Referenced by SCIP_DECL_CONSFREE().

    ◆ lockRounding()

    static SCIP_RETCODE lockRounding ( SCIP scip,
    SCIP_CONS cons,
    SCIP_VAR var,
    SCIP_RATIONAL 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 411 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPlockVarCons(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), and SCIPrationalIsZero().

    Referenced by addCoef(), and chgCoefPos().

    ◆ unlockRounding()

    static SCIP_RETCODE unlockRounding ( SCIP scip,
    SCIP_CONS cons,
    SCIP_VAR var,
    SCIP_RATIONAL 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 444 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalIsPositive(), SCIPrationalIsZero(), and SCIPunlockVarCons().

    Referenced by chgCoefPos(), and delCoefPos().

    ◆ consCatchEvent()

    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 ! [SnippetDebugAssertions]

    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 478 of file cons_exactlinear.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(), SCIPvarIsActive(), and SCIPvarIsTransformed().

    Referenced by addCoef(), and consCatchAllEvents().

    ◆ consDropEvent()

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

    ! [SnippetDebugAssertions] 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 519 of file cons_exactlinear.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().

    ◆ consCatchAllEvents()

    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 553 of file cons_exactlinear.c.

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

    Referenced by applyFixings(), propagateCons(), and SCIP_DECL_CONSINIT().

    ◆ consDropAllEvents()

    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 585 of file cons_exactlinear.c.

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

    Referenced by SCIP_DECL_CONSDEACTIVE(), SCIP_DECL_CONSDELETE(), and SCIP_DECL_CONSEXIT().

    ◆ consdataCreate()

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

    ◆ consdataFree()

    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 822 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPblkmem(), SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, SCIPrationalFreeBlock(), SCIPrationalFreeBlockArray(), SCIPrationalIsZero(), SCIPreleaseRow(), and SCIPreleaseVar().

    Referenced by SCIP_DECL_CONSDELETE().

    ◆ consdataPrint()

    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 870 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPgetMessagehdlr(), SCIPinfoMessage(), SCIPrationalIsEQ(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalMessage(), SCIPwriteVarsLinearsumExact(), and TRUE.

    Referenced by SCIP_DECL_CONSPRINT().

    ◆ consPrintConsSol()

    static SCIP_RETCODE consPrintConsSol ( SCIP scip,
    SCIP_CONS cons,
    SCIP_SOL sol,
    SCIP_Bool  useexactsol,
    FILE *  file 
    )
    static

    prints linear constraint and contained solution values of variables to file stream

    Parameters
    scipSCIP data structure
    conslinear constraint
    solsolution to print
    useexactsolshould the exact sol be used
    fileoutput file (or NULL for standard output)

    Definition at line 921 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPbuffer(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetName(), SCIPgetMessagehdlr(), SCIPgetSolVal(), SCIPgetSolValExact(), SCIPinfoMessage(), SCIPmessageFPrintInfo(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsEQ(), SCIPrationalIsEQReal(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalMessage(), SCIPwriteVarName(), and TRUE.

    Referenced by checkCons(), and SCIP_DECL_CONSCHECK().

    ◆ consdataInvalidateActivities()

    static void consdataInvalidateActivities ( SCIP_CONSDATA consdata)
    static

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

    Parameters
    consdatalinear constraint

    Definition at line 1023 of file cons_exactlinear.c.

    References FALSE, NULL, SCIP_INVALID, and SCIPrationalSetInfinity().

    Referenced by consdataScaleMinValue(), createRows(), and SCIP_DECL_EVENTEXEC().

    ◆ consdataComputePseudoActivity()

    static void consdataComputePseudoActivity ( SCIP_CONSDATA consdata,
    SCIP_RATIONAL pseudoactivity 
    )
    static

    computes the pseudo activity of a constraint

    Parameters
    consdatalinear constraint data
    pseudoactivitybuffer to store pseudoactivity

    Definition at line 1071 of file cons_exactlinear.c.

    References bound, SCIPrationalAddProd(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsZero(), SCIPrationalSetFraction(), SCIPrationalSetInfinity(), SCIPrationalSetNegInfinity(), and SCIPvarGetBestBoundLocalExact().

    Referenced by checkCons(), and consdataGetActivity().

    ◆ consdataRecomputeMinactivity()

    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 1120 of file cons_exactlinear.c.

    References REALABS, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.

    Referenced by getMinActivity(), and printActivityConflictToCertificate().

    ◆ consdataRecomputeMaxactivity()

    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 1172 of file cons_exactlinear.c.

    References REALABS, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeUpwards(), SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.

    Referenced by getMaxActivity(), and printActivityConflictToCertificate().

    ◆ consdataRecomputeGlbMinactivity()

    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 1225 of file cons_exactlinear.c.

    References REALABS, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

    Referenced by getMinActivity().

    ◆ consdataRecomputeGlbMaxactivity()

    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 1278 of file cons_exactlinear.c.

    References REALABS, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeUpwards(), SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), and TRUE.

    Referenced by getMaxActivity().

    ◆ consdataCalcMinAbsvalEx()

    static void consdataCalcMinAbsvalEx ( SCIP_CONSDATA consdata)
    static

    calculates minimum absolute value of coefficients

    Parameters
    consdatalinear constraint data

    Definition at line 1330 of file cons_exactlinear.c.

    References NULL, SCIPrationalAbs(), SCIPrationalIsAbsGT(), SCIPrationalIsZero(), SCIPrationalSetReal(), and TRUE.

    Referenced by consdataGetMinAbsvalEx().

    ◆ consdataCheckNonbinvar()

    static void consdataCheckNonbinvar ( SCIP_CONSDATA consdata)
    static

    checks the type of all variables of the constraint and sets hasnonbinvar and hascontvar flags accordingly

    Parameters
    consdatalinear constraint data

    Definition at line 1359 of file cons_exactlinear.c.

    References FALSE, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_CONTINUOUS, SCIPvarGetType(), and TRUE.

    Referenced by consdataRecomputeMaxActivityDelta().

    ◆ consdataRecomputeMaxActivityDelta()

    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 1443 of file cons_exactlinear.c.

    References consdataCheckNonbinvar(), SCIP_Real, SCIPinfinity(), SCIPintervalAbsMax(), SCIPisInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

    Referenced by tightenBounds().

    ◆ consdataUpdateActivities()

    static void consdataUpdateActivities ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_Real  oldbound,
    SCIP_Real  newbound,
    SCIP_INTERVAL  valrange,
    SCIP_BOUNDTYPE  boundtype,
    SCIP_Bool  global 
    )
    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
    valrangecoefficient of constraint entry
    boundtypetype of the bound change
    globalis it a global or a local bound change?

    Definition at line 1503 of file cons_exactlinear.c.

    References SCIP_Interval::inf, NULL, REALABS, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_INVALID, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalNegateReal(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPisHugeValue(), SCIPisInfinity(), and SCIP_Interval::sup.

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

    ◆ consdataUpdateActivitiesLb()

    static void consdataUpdateActivitiesLb ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_Real  oldlb,
    SCIP_Real  newlb,
    SCIP_INTERVAL  val 
    )
    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

    Definition at line 1909 of file cons_exactlinear.c.

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

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

    ◆ consdataUpdateActivitiesUb()

    static void consdataUpdateActivitiesUb ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_Real  oldub,
    SCIP_Real  newub,
    SCIP_INTERVAL  val 
    )
    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

    Definition at line 1933 of file cons_exactlinear.c.

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

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

    ◆ consdataUpdateActivitiesGlbLb()

    static void consdataUpdateActivitiesGlbLb ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_Real  oldlb,
    SCIP_Real  newlb,
    SCIP_INTERVAL  val 
    )
    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

    Definition at line 1957 of file cons_exactlinear.c.

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

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

    ◆ consdataUpdateActivitiesGlbUb()

    static void consdataUpdateActivitiesGlbUb ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_Real  oldub,
    SCIP_Real  newub,
    SCIP_INTERVAL  val 
    )
    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

    Definition at line 1979 of file cons_exactlinear.c.

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

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

    ◆ consdataUpdateAddCoef()

    static void consdataUpdateAddCoef ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_RATIONAL valExact,
    SCIP_INTERVAL  val 
    )
    static

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

    Parameters
    scipSCIP data structure
    consdatalinear constraint data
    varvariable of constraint entry
    valExactcoefficient of constraint entry
    valcoefficient of constraint entry

    Definition at line 2001 of file cons_exactlinear.c.

    References consdataUpdateActivitiesGlbLb(), consdataUpdateActivitiesGlbUb(), consdataUpdateActivitiesLb(), consdataUpdateActivitiesUb(), FALSE, SCIP_Interval::inf, MAX, MIN, NULL, REALABS, SCIP_INVALID, SCIP_Real, SCIPrationalIsAbsEQ(), SCIPrationalSetInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and SCIP_Interval::sup.

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

    ◆ consdataUpdateDelCoef()

    static void consdataUpdateDelCoef ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_RATIONAL valExact,
    SCIP_INTERVAL  val 
    )
    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
    valExactexact coefficient of constraint entry
    valcoefficient of constraint entry

    Definition at line 2071 of file cons_exactlinear.c.

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

    Referenced by consdataUpdateChgCoef().

    ◆ consdataGetMinAbsvalEx()

    static SCIP_RATIONAL * consdataGetMinAbsvalEx ( SCIP scip,
    SCIP_CONSDATA consdata 
    )
    static

    returns the minimum absolute value of all coefficients in the constraint

    Parameters
    scipSCIP data structure
    consdatalinear constraint data

    Definition at line 2148 of file cons_exactlinear.c.

    References consdataCalcMinAbsvalEx(), and NULL.

    Referenced by consdataScaleMinValue().

    ◆ consdataUpdateChgCoef()

    static void consdataUpdateChgCoef ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_INTERVAL  oldval,
    SCIP_RATIONAL oldvalExact,
    SCIP_INTERVAL  newval,
    SCIP_RATIONAL newvalExact 
    )
    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
    oldvalExactold exact coefficient of constraint entry
    newvalnew coefficient of constraint entry
    newvalExactnew coefficient of constraint entry

    Definition at line 2166 of file cons_exactlinear.c.

    References consdataUpdateAddCoef(), consdataUpdateDelCoef(), FALSE, NULL, SCIP_INVALID, SCIP_Real, SCIPintervalAbsMax(), SCIPisEQ(), SCIPisInfinity(), SCIPrationalAbs(), SCIPrationalIsAbsEQ(), SCIPrationalIsAbsGT(), SCIPrationalSetInfinity(), SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().

    Referenced by chgCoefPos().

    ◆ consdataScaleMinValue()

    static void consdataScaleMinValue ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_Real  minval 
    )
    static

    ensures that every nonzero is a least minval so that we don't get problem with SCIPs 0 in floating point representation

    Parameters
    scipSCIP data structure
    consdatalinear constraint data
    minvalminmimal value for coefficients in constraint

    Definition at line 2294 of file cons_exactlinear.c.

    References consdataGetMinAbsvalEx(), consdataInvalidateActivities(), NULL, SCIP_R_ROUND_DOWNWARDS, SCIP_R_ROUND_UPWARDS, SCIPbuffer(), SCIPintervalSetRational(), SCIPrationalCreateBuffer(), SCIPrationalDiv(), SCIPrationalFreeBuffer(), SCIPrationalIsLTReal(), SCIPrationalIsZero(), SCIPrationalMult(), SCIPrationalRoundReal(), and SCIPrationalSetReal().

    Referenced by SCIP_DECL_CONSTRANS().

    ◆ consdataCalcActivities()

    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 2340 of file cons_exactlinear.c.

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

    Referenced by consdataGetActivityBounds(), and consdataGetActivityResiduals().

    ◆ consdataComputeSolActivityWithErrorbound()

    static SCIP_Bool consdataComputeSolActivityWithErrorbound ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_SOL sol,
    SCIP_Real activity,
    SCIP_Real errorbound 
    )
    static

    computes the activity of a row for a given solution plus a bound on the floating-point error using running error analysis

    Parameters
    scipSCIP data structure
    consdatalinear constraint data
    solprimal CIP solution
    activitybuffer to return floating-point activity
    errorboundbuffer to return bound on absolute floating-point error

    Definition at line 2398 of file cons_exactlinear.c.

    References FALSE, MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_Real, SCIP_REAL_UNITROUNDOFF, SCIP_UNKNOWN, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPgetRowSolActivityWithErrorboundExact(), SCIPgetSolVal(), SCIPinfinity(), SCIPisInfinity(), SCIPvarGetStatus(), and TRUE.

    Referenced by checkCons().

    ◆ getMinActivity()

    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 2465 of file cons_exactlinear.c.

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

    Referenced by consdataGetActivityBounds(), and consdataGetActivityResiduals().

    ◆ getMaxActivity()

    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 2566 of file cons_exactlinear.c.

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

    Referenced by consdataGetActivityBounds(), and consdataGetActivityResiduals().

    ◆ consdataGetActivityBounds()

    static void consdataGetActivityBounds ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_Bool  goodrelax,
    SCIP_Real minactivity,
    SCIP_Real maxactivity,
    SCIP_Bool minisrelax,
    SCIP_Bool maxisrelax,
    SCIP_Bool isminsettoinfinity,
    SCIP_Bool ismaxsettoinfinity 
    )
    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 activities 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
    isminsettoinfinitypointer to store whether minactivity was set to infinity or calculated
    ismaxsettoinfinitypointer to store whether maxactivity was set to infinity or calculated

    Definition at line 2665 of file cons_exactlinear.c.

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

    Referenced by propagateCons(), and tightenBounds().

    ◆ consdataGetActivityResiduals()

    static void consdataGetActivityResiduals ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_VAR var,
    SCIP_INTERVAL  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 2714 of file cons_exactlinear.c.

    References consdataCalcActivities(), FALSE, getMaxActivity(), getMinActivity(), SCIP_Interval::inf, NULL, SCIP_INVALID, SCIP_Real, SCIPintervalGetRoundingMode(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPisHugeValue(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and SCIP_Interval::sup.

    Referenced by tightenVarBounds().

    ◆ consdataGetActivity()

    static void consdataGetActivity ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_SOL sol,
    SCIP_Bool  useexact,
    SCIP_RATIONAL activity 
    )
    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
    useexactshould the exact solution be used
    activitypointer to store the activity

    Definition at line 2880 of file cons_exactlinear.c.

    References consdataComputePseudoActivity(), NULL, SCIP_Bool, SCIPbuffer(), SCIPdebugMsg, SCIPgetSolVal(), SCIPgetSolValExact(), SCIPhasCurrentNodeLP(), SCIPrationalAddProd(), SCIPrationalCreateBuffer(), SCIPrationalDebugMessage, SCIPrationalFreeBuffer(), SCIPrationalGetReal(), SCIPrationalIsInfinity(), SCIPrationalIsNegative(), SCIPrationalIsNegInfinity(), SCIPrationalIsZero(), SCIPrationalSetFraction(), SCIPrationalSetInfinity(), SCIPrationalSetNegInfinity(), and SCIPrationalSetReal().

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

    ◆ consdataGetFeasibility()

    static void consdataGetFeasibility ( SCIP scip,
    SCIP_CONSDATA consdata,
    SCIP_SOL sol,
    SCIP_RATIONAL ret 
    )
    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
    retpointer to store the result

    Definition at line 2944 of file cons_exactlinear.c.

    References consdataGetActivity(), FALSE, NULL, SCIPbuffer(), SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), and SCIPrationalMin().

    Referenced by SCIPgetFeasibilityExactLinear().

    ◆ createRows()

    static SCIP_RETCODE createRows ( SCIP scip,
    SCIP_CONS cons 
    )
    static

    ◆ SCIP_DECL_SORTINDCOMP() [1/2]

    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 3031 of file cons_exactlinear.c.

    References NULL, and SCIPvarCompare().

    ◆ SCIP_DECL_SORTINDCOMP() [2/2]

    static SCIP_DECL_SORTINDCOMP ( consdataCompVarProp  )
    static

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

    Definition at line 3044 of file cons_exactlinear.c.

    References NULL, SCIPrationalCreate(), SCIPrationalDiff(), SCIPrationalFree(), SCIPrationalIsAbsEQ(), SCIPrationalIsAbsGT(), SCIPrationalMult(), SCIPvarGetLbGlobalExact(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobalExact(), SCIPvarIsBinary(), and SCIPvarIsIntegral().

    ◆ permSortConsdata()

    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 3132 of file cons_exactlinear.c.

    References NULL.

    Referenced by consdataSort().

    ◆ consdataSort()

    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 binary, integer, implied integral, and continuous variables, and the variables of the same type by non-decreasing variable index
    • during SOLVING sorts variables of the remaining problem by binary, integer, implied integral, and continuous variables, and binary and integer variables by their global max activity delta (within each group), ties within a group are broken by problem index of the variable.

      This fastens the propagation time of the constraint handler.

    Parameters
    scipSCIP data structure
    consdatalinear constraint data

    Definition at line 3212 of file cons_exactlinear.c.

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

    Referenced by mergeMultiples(), and tightenBounds().

    ◆ chgLhs()

    ◆ chgRhs()

    ◆ addCoef()

    ◆ delCoefPos()

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

    deletes coefficient at given position from linear constraint data

    Parameters
    scipSCIP data structure
    conslinear constraint
    posposition of coefficient to delete

    Definition at line 3657 of file cons_exactlinear.c.

    References consDropEvent(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPmarkConsPropagate(), SCIPrationalSetRational(), SCIPreleaseVar(), SCIPvarGetType(), TRUE, and unlockRounding().

    Referenced by applyFixings(), mergeMultiples(), performVarDeletions(), and SCIPchgCoefExactLinear().

    ◆ chgCoefPos()

    static SCIP_RETCODE chgCoefPos ( SCIP scip,
    SCIP_CONS cons,
    int  pos,
    SCIP_RATIONAL 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 3748 of file cons_exactlinear.c.

    References consdataUpdateChgCoef(), FALSE, lockRounding(), NLOCKTYPES, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsLockedType(), SCIPconsIsTransformed(), SCIPintervalSetRational(), SCIPmarkConsPropagate(), SCIPrationalIsNegative(), SCIPrationalIsPositive(), SCIPrationalIsZero(), SCIPrationalSetRational(), SCIPvarIsTransformed(), TRUE, and unlockRounding().

    Referenced by mergeMultiples(), and SCIPchgCoefExactLinear().

    ◆ performVarDeletions()

    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 3824 of file cons_exactlinear.c.

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

    Referenced by SCIP_DECL_CONSDELVARS().

    ◆ mergeMultiples()

    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 3866 of file cons_exactlinear.c.

    References chgCoefPos(), consdataSort(), delCoefPos(), NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIPbuffer(), SCIPconsGetData(), SCIPrationalAdd(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalIsZero(), SCIPrationalSetRational(), and TRUE.

    Referenced by applyFixings().

    ◆ applyFixings()

    static SCIP_RETCODE applyFixings ( SCIP scip,
    SCIP_CONS cons,
    SCIP_Bool infeasible 
    )
    static

    replaces all fixed and aggregated variables by their non-fixed counterparts

    Parameters
    scipSCIP data structure
    conslinear constraint
    infeasiblepointer to store if infeasibility is detected; or NULL if this information is not needed; in this case, we apply all fixings instead of stopping after the first infeasible one

    Definition at line 3940 of file cons_exactlinear.c.

    References addCoef(), chgLhs(), chgRhs(), consCatchAllEvents(), delCoefPos(), FALSE, mergeMultiples(), NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIP_VARSTATUS_ORIGINAL, SCIPABORT, SCIPbuffer(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetData(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPerrorMessage, SCIPflattenVarAggregationGraph(), SCIPgetProbvarSumExact(), SCIPisFeasEQ(), SCIPrationalAdd(), SCIPrationalAddProd(), SCIPrationalCreateBuffer(), SCIPrationalDiff(), SCIPrationalFreeBuffer(), SCIPrationalGetSign(), SCIPrationalIsAbsInfinity(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), SCIPrationalIsZero(), SCIPrationalMult(), SCIPrationalMultReal(), SCIPrationalNegate(), SCIPrationalSetInfinity(), SCIPrationalSetNegInfinity(), SCIPvarGetAggrConstantExact(), SCIPvarGetAggrScalarExact(), SCIPvarGetAggrVar(), SCIPvarGetLbGlobal(), SCIPvarGetLbGlobalExact(), SCIPvarGetMultaggrConstantExact(), SCIPvarGetMultaggrNVars(), SCIPvarGetMultaggrScalarsExact(), SCIPvarGetMultaggrVars(), SCIPvarGetNegationConstant(), SCIPvarGetNegationVar(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIPvarIsTransformed(), and TRUE.

    Referenced by SCIP_DECL_CONSEXITPRE().

    ◆ printActivityConflictToCertificate()

    static SCIP_RETCODE printActivityConflictToCertificate ( SCIP scip,
    SCIP_CONS cons,
    SCIP_CONSDATA consdata,
    SCIP_Bool  rhs 
    )
    static

    prints activity conflict to certificate file

    Parameters
    scipSCIP data structure
    consconstraint
    consdataconstraint data
    rhsright-hand side

    Definition at line 4204 of file cons_exactlinear.c.

    References consdataRecomputeMaxactivity(), consdataRecomputeMinactivity(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPbuffer(), SCIPcertifyActivityConflict(), SCIPisCertified(), SCIPrationalCreateBuffer(), SCIPrationalDiffReal(), SCIPrationalFreeBuffer(), SCIPrationalSetReal(), SCIProwExactGetNNonz(), and SCIProwExactGetVals().

    Referenced by propagateCons(), and tightenVarBounds().

    ◆ tightenVarBounds()

    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 4260 of file cons_exactlinear.c.

    References consdataGetActivityResiduals(), FALSE, getInferInt(), SCIP_Interval::inf, NULL, printActivityConflictToCertificate(), PROPRULE_1_LHS, PROPRULE_1_RHS, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIP_VARTYPE_CONTINUOUS, SCIPadjustedVarLbExactFloat(), SCIPadjustedVarUbExactFloat(), SCIPbuffer(), SCIPcertifyActivityVarBound(), SCIPcertifyActivityVarBoundExact(), SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsModifiable(), SCIPdebug, SCIPdebugMsg, SCIPinferVarLbCons(), SCIPinferVarLbConsExact(), SCIPinferVarUbCons(), SCIPinferVarUbConsExact(), SCIPinfinity(), SCIPintervalDiv(), SCIPintervalGetRoundingMode(), SCIPintervalSet(), SCIPintervalSetRoundingMode(), SCIPintervalSetRoundingModeDownwards(), SCIPintervalSetRoundingModeUpwards(), SCIPintervalSubScalar(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisGT(), SCIPisInfinity(), SCIPisLbBetter(), SCIPisLE(), SCIPisLT(), SCIPisUbBetter(), SCIPrationalComputeApproximation(), SCIPrationalCreateBuffer(), SCIPrationalFreeBuffer(), SCIPrationalSetReal(), SCIPshouldCertificateTrackBounds(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbvarBound(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), SCIP_Interval::sup, and TRUE.

    Referenced by tightenBounds().

    ◆ 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 4654 of file cons_exactlinear.c.

    References checkMaxActivityDelta, consdataGetActivityBounds(), consdataRecomputeMaxActivityDelta(), consdataSort(), FALSE, MAXTIGHTENROUNDS, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_STAGE_INITSOLVE, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPgetDepth(), SCIPgetStage(), SCIPinfinity(), SCIPisFeasEQ(), SCIPisFeasNegative(), SCIPisFeasZero(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and tightenVarBounds().

    Referenced by propagateCons().

    ◆ checkCons()

    static SCIP_RETCODE checkCons ( SCIP scip,
    SCIP_CONS cons,
    SCIP_CONSHDLRDATA conshdlrdata,
    SCIP_SOL sol,
    SCIP_Bool  useexactsol,
    SCIP_Bool  checklprows,
    SCIP_Bool violated 
    )
    static

    checks linear constraint for feasibility of given solution or current solution

    Parameters
    scipSCIP data structure
    conslinear constraint
    conshdlrdataconstraint handler data
    solsolution to be checked, or NULL for current solution
    useexactsolshould the sol or solex be checked?
    checklprowsDo constraints represented by rows in the current LP have to be checked?
    violatedpointer to store whether the constraint is violated

    Definition at line 4803 of file cons_exactlinear.c.

    References consdataComputePseudoActivity(), consdataComputeSolActivityWithErrorbound(), consdataGetActivity(), consPrintConsSol(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMsg, SCIPgetRowSolActivityExact(), SCIPhasCurrentNodeLP(), SCIPincConsAge(), SCIPlpExactIsSolved(), SCIPrationalDebugMessage, SCIPrationalIsEQ(), SCIPrationalIsGT(), SCIPrationalIsInfinity(), SCIPrationalIsLT(), SCIPrationalIsNegInfinity(), SCIPresetConsAge(), SCIProwExactIsInLP(), and TRUE.

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

    ◆ addRelaxation()

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

    adds linear constraint as cut to the LP

    Parameters
    scipSCIP data structure
    conslinear constraint
    cutoffpointer to store whether a cutoff was found

    Definition at line 4965 of file cons_exactlinear.c.

    References createRows(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddRow(), SCIPaddRowExact(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPdebugMsg, SCIPgetIntParam(), SCIPprintRow(), SCIPprintRowExact(), SCIPrationalIsInfinity(), SCIPrationalIsNegInfinity(), and SCIProwIsInLP().

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

    ◆ separateCons()

    static SCIP_RETCODE separateCons ( SCIP scip,
    SCIP_CONS cons,
    SCIP_CONSHDLRDATA conshdlrdata,
    SCIP_SOL sol,
    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
    ncutspointer to add up the number of found cuts
    cutoffpointer to store whether a cutoff was found

    Definition at line 5022 of file cons_exactlinear.c.

    References addRelaxation(), checkCons(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, and SCIPresetConsAge().

    Referenced by SCIP_DECL_CONSSEPALP(), and SCIP_DECL_CONSSEPASOL().

    ◆ propagateCons()

    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 5063 of file cons_exactlinear.c.

    References consCatchAllEvents(), consdataGetActivityBounds(), FALSE, NULL, printActivityConflictToCertificate(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPdelCons(), SCIPdelConsLocal(), SCIPincConsAge(), SCIPinRepropagation(), SCIPrationalDebugMessage, SCIPrationalIsGEReal(), SCIPrationalIsGTReal(), SCIPrationalIsLEReal(), SCIPrationalIsLTReal(), SCIPresetConsAge(), tightenBounds(), and TRUE.

    Referenced by SCIP_DECL_CONSPROP().

    ◆ enforceConstraint()

    static SCIP_RETCODE enforceConstraint ( SCIP scip,
    SCIP_CONSHDLR conshdlr,
    SCIP_CONS **  conss,
    int  nconss,
    int  nusefulconss,
    SCIP_SOL sol,
    SCIP_RESULT result 
    )
    static

    helper function to enforce constraints

    Parameters
    scipSCIP data structure
    conshdlrconstraint handler
    conssconstraints to process
    nconssnumber of constraints
    nusefulconssnumber of useful (non-obsolete) constraints to process
    solsolution to enforce (NULL for the LP solution)
    resultpointer to store the result of the enforcing call

    Definition at line 5204 of file cons_exactlinear.c.

    References addRelaxation(), checkCons(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_FEASIBLE, SCIP_OKAY, SCIP_SEPARATED, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPdebug, SCIPdebugMsg, SCIPlpExactIsSolved(), SCIPprintSol(), and SCIPsolIsExact().

    Referenced by SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFORELAX().

    ◆ SCIP_DECL_CONSHDLRCOPY()

    static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyExactLinear  )
    static

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

    Definition at line 5284 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSFREE()

    static SCIP_DECL_CONSFREE ( consFreeExactLinear  )
    static

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

    Definition at line 5300 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSINIT()

    static SCIP_DECL_CONSINIT ( consInitExactLinear  )
    static

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

    Definition at line 5322 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSEXIT()

    static SCIP_DECL_CONSEXIT ( consExitExactLinear  )
    static

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

    Definition at line 5349 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSEXITPRE()

    static SCIP_DECL_CONSEXITPRE ( consExitpreExactLinear  )
    static

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

    Definition at line 5383 of file cons_exactlinear.c.

    References applyFixings(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconsIsDeleted(), and SCIPisExact().

    ◆ SCIP_DECL_CONSEXITSOL()

    static SCIP_DECL_CONSEXITSOL ( consExitsolExactLinear  )
    static

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

    Definition at line 5406 of file cons_exactlinear.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPisExact(), SCIPreleaseRow(), and SCIPreleaseRowExact().

    ◆ SCIP_DECL_CONSDEACTIVE()

    static SCIP_DECL_CONSDEACTIVE ( consDeactiveExactLinear  )
    static

    constraint deactivation notification method of constraint handler

    Definition at line 5447 of file cons_exactlinear.c.

    References consDropAllEvents(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPconsIsDeleted(), and SCIPisExact().

    ◆ SCIP_DECL_CONSDELETE()

    static SCIP_DECL_CONSDELETE ( consDeleteExactLinear  )
    static

    ◆ SCIP_DECL_CONSTRANS()

    ◆ SCIP_DECL_CONSINITLP()

    static SCIP_DECL_CONSINITLP ( consInitlpExactLinear  )
    static

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

    Definition at line 5548 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSSEPALP()

    static SCIP_DECL_CONSSEPALP ( consSepalpExactLinear  )
    static

    ◆ SCIP_DECL_CONSSEPASOL()

    static SCIP_DECL_CONSSEPASOL ( consSepasolExactLinear  )
    static

    ◆ SCIP_DECL_CONSENFOLP()

    static SCIP_DECL_CONSENFOLP ( consEnfolpExactLinear  )
    static

    constraint enforcing method of constraint handler for LP solutions

    Definition at line 5684 of file cons_exactlinear.c.

    References enforceConstraint(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPisExact().

    ◆ SCIP_DECL_CONSENFORELAX()

    static SCIP_DECL_CONSENFORELAX ( consEnforelaxExactLinear  )
    static

    constraint enforcing method of constraint handler for relaxation solutions

    Definition at line 5699 of file cons_exactlinear.c.

    References enforceConstraint(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPisExact().

    ◆ SCIP_DECL_CONSENFOPS()

    static SCIP_DECL_CONSENFOPS ( consEnfopsExactLinear  )
    static

    constraint enforcing method of constraint handler for pseudo solutions

    Definition at line 5714 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSCHECK()

    ◆ SCIP_DECL_CONSPROP()

    static SCIP_DECL_CONSPROP ( consPropExactLinear  )
    static

    ◆ SCIP_DECL_CONSLOCK()

    static SCIP_DECL_CONSLOCK ( consLockExactLinear  )
    static

    ◆ SCIP_DECL_CONSDELVARS()

    static SCIP_DECL_CONSDELVARS ( consDelvarsExactLinear  )
    static

    variable deletion method of constraint handler

    Definition at line 5952 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSPRINT()

    static SCIP_DECL_CONSPRINT ( consPrintExactLinear  )
    static

    constraint display method of constraint handler

    Definition at line 5969 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSCOPY()

    static SCIP_DECL_CONSCOPY ( consCopyExactLinear  )
    static

    ◆ findOperators()

    static SCIP_RETCODE findOperators ( const char *  str,
    char **  firstoperator,
    char **  secondoperator,
    SCIP_Bool success 
    )
    static
    Parameters
    strnull terminated input string
    firstoperatorpointer to store the string starting at the first operator
    secondoperatorpointer to store the string starting at the second operator
    successpointer to store if the line contains a valid operator order

    Definition at line 6015 of file cons_exactlinear.c.

    References FALSE, NULL, SCIP_Bool, SCIP_OKAY, SCIPerrorMessage, and TRUE.

    Referenced by SCIP_DECL_CONSPARSE().

    ◆ SCIP_DECL_CONSPARSE()

    ◆ SCIP_DECL_CONSGETVARS()

    static SCIP_DECL_CONSGETVARS ( consGetVarsExactLinear  )
    static

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

    Definition at line 6287 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_CONSGETNVARS()

    static SCIP_DECL_CONSGETNVARS ( consGetNVarsExactLinear  )
    static

    ! [Callback for the number of variables] constraint method of constraint handler which returns the number of variables (if possible)

    Definition at line 6310 of file cons_exactlinear.c.

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

    ◆ SCIP_DECL_EVENTEXEC()

    static SCIP_DECL_EVENTEXEC ( eventExecExactLinear  )
    static