Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    Constraint handler for variable bound constraints \(lhs \le x + c y \le rhs\).

    Author
    Tobias Achterberg
    Timo Berthold
    Michael Winkler
    Gerald Gamrath
    Stefan Heinz

    This constraint handler handles a special type of linear constraints, namely variable bound constraints. A variable bound constraint has the form

    \[ lhs \leq x + c y \leq rhs \]

    with coefficient \(c \in Q\), \(lhs\in Q \cup \{-\infty\}\), \(rhs\in Q \cup \{\infty\}\), and decision variables \(x\) (non-binary) and \(y\) (binary or integer).

    Note
    Although x must be non-binary when the constraint is created, it can happen that x is upgraded to a binary variable, e.g. due to aggregations or bound changes in presolving.

    Definition in file cons_varbound.c.

    #include <ctype.h>
    #include "blockmemshell/memory.h"
    #include "scip/cons_linear.h"
    #include "scip/cons_setppc.h"
    #include "scip/cons_varbound.h"
    #include "scip/pub_cons.h"
    #include "scip/pub_event.h"
    #include "scip/pub_lp.h"
    #include "scip/pub_message.h"
    #include "scip/pub_misc.h"
    #include "scip/pub_misc_sort.h"
    #include "scip/pub_var.h"
    #include "scip/scip_conflict.h"
    #include "scip/scip_cons.h"
    #include "scip/scip_cut.h"
    #include "scip/scip_event.h"
    #include "scip/scip_general.h"
    #include "scip/scip_lp.h"
    #include "scip/scip_mem.h"
    #include "scip/scip_message.h"
    #include "scip/scip_nlp.h"
    #include "scip/scip_numerics.h"
    #include "scip/scip_param.h"
    #include "scip/scip_prob.h"
    #include "scip/scip_probing.h"
    #include "scip/scip_sol.h"
    #include "scip/scip_tree.h"
    #include "scip/scip_var.h"
    #include "scip/dbldblarith.h"
    #include "scip/symmetry_graph.h"
    #include "symmetry/struct_symmetry.h"
    #include <string.h>

    Go to the source code of this file.

    Macros

    Constraint handler properties
    #define CONSHDLR_NAME   "varbound"
     
    #define CONSHDLR_DESC   "variable bounds lhs <= x + c*y <= rhs, x non-binary, y non-continuous"
     
    #define CONSHDLR_SEPAPRIORITY   +900000
     
    #define CONSHDLR_ENFOPRIORITY   -500000
     
    #define CONSHDLR_CHECKPRIORITY   -500000
     
    #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_NEEDSCONS   TRUE
     
    #define CONSHDLR_PRESOLTIMING   (SCIP_PRESOLTIMING_FAST | SCIP_PRESOLTIMING_MEDIUM)
     
    #define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP
     
    #define EVENTHDLR_NAME   "varbound"
     
    #define EVENTHDLR_DESC   "bound change event handler for variable bound constraints"
     
    #define LINCONSUPGD_PRIORITY   +50000
     
    Default parameter values
    #define DEFAULT_PRESOLPAIRWISE   TRUE
     
    #define DEFAULT_MAXLPCOEF   1e+09
     
    #define DEFAULT_USEBDWIDENING   TRUE
     
    #define MAXSCALEDCOEF   1000LL
     

    Typedefs

    typedef enum Proprule PROPRULE
     

    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

    SCIP_RETCODE SCIPincludeConshdlrVarbound (SCIP *scip)
     
    SCIP_RETCODE SCIPcreateConsVarbound (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, 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 SCIPcreateConsBasicVarbound (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, SCIP_Real lhs, SCIP_Real rhs)
     
    SCIP_Real SCIPgetLhsVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_Real SCIPgetRhsVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_VARSCIPgetVarVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_VARSCIPgetVbdvarVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_Real SCIPgetVbdcoefVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_Real SCIPgetDualsolVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_Real SCIPgetDualfarkasVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_ROWSCIPgetRowVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RETCODE SCIPcreateRowVarbound (SCIP *scip, SCIP_CONS *cons)
     
    SCIP_RETCODE SCIPcleanupConssVarbound (SCIP *scip, SCIP_Bool onlychecked, SCIP_Bool *infeasible, int *naddconss, int *ndelconss, int *nchgbds)
     
    Local methods
    static SCIP_DECL_SORTPTRCOMP (consVarboundComp)
     
    static SCIP_RETCODE conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlr)
     
    static void conshdlrdataFree (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata)
     
    static SCIP_RETCODE catchEvents (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr)
     
    static SCIP_RETCODE dropEvents (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr)
     
    static SCIP_RETCODE consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real vbdcoef, SCIP_Real lhs, SCIP_Real rhs)
     
    static SCIP_RETCODE consdataFree (SCIP *scip, SCIP_CONSDATA **consdata)
     
    static SCIP_RETCODE createRelaxation (SCIP *scip, SCIP_CONS *cons)
     
    static SCIP_RETCODE addRelaxation (SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible)
     
    static SCIP_RETCODE addNlrow (SCIP *scip, SCIP_CONS *cons)
     
    static SCIP_Bool checkCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checklprows)
     
    static SCIP_RETCODE resolvePropagation (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, PROPRULE proprule, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real inferbd, SCIP_Bool usebdwidening)
     
    static SCIP_RETCODE analyzeConflict (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, SCIP_Real inferbd, PROPRULE proprule, SCIP_BOUNDTYPE boundtype, SCIP_Bool usebdwidening)
     
    static SCIP_RETCODE separateCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool usebdwidening, SCIP_SOL *sol, SCIP_RESULT *result)
     
    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 propagateCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool usebdwidening, SCIP_Bool *cutoff, int *nchgbds, int *nchgsides, int *ndelconss)
     
    static void checkRedundancySide (SCIP *scip, SCIP_VAR *var, SCIP_VAR *vbdvar, SCIP_Real coef0, SCIP_Real coef1, SCIP_Real side0, SCIP_Real side1, SCIP_Bool *sideequal, SCIP_Bool *cons0sidered, SCIP_Bool *cons1sidered, SCIP_Bool islhs)
     
    static SCIP_RETCODE preprocessConstraintPairs (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_Bool *cutoff, int *nchgbds, int *ndelconss, int *nchgcoefs, int *nchgsides)
     
    static void prettifyConss (SCIP *scip, SCIP_CONS **conss, int nconss, int *nchgcoefs, int *nchgsides)
     
    static SCIP_RETCODE applyFixings (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, SCIP_Bool *cutoff, int *nchgbds, int *ndelconss, int *naddconss)
     
    static SCIP_RETCODE tightenCoefs (SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *nchgsides, int *ndelconss, SCIP_Bool *cutoff, int *nchgbds)
     
    static SCIP_RETCODE upgradeConss (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_CONS **conss, int nconss, SCIP_Bool *cutoff, int *naggrvars, int *nchgbds, int *nchgcoefs, int *nchgsides, int *ndelconss, int *naddconss)
     
    Linear constraint upgrading
    static SCIP_DECL_LINCONSUPGD (linconsUpgdVarbound)
     
    static SCIP_RETCODE addSymmetryInformation (SCIP *scip, SYM_SYMTYPE symtype, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
     
    Callback methods
    static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyVarbound)
     
    static SCIP_DECL_CONSFREE (consFreeVarbound)
     
    static SCIP_DECL_CONSINITSOL (consInitsolVarbound)
     
    static SCIP_DECL_CONSEXITSOL (consExitsolVarbound)
     
    static SCIP_DECL_CONSDELETE (consDeleteVarbound)
     
    static SCIP_DECL_CONSTRANS (consTransVarbound)
     
    static SCIP_DECL_CONSINITLP (consInitlpVarbound)
     
    static SCIP_DECL_CONSSEPALP (consSepalpVarbound)
     
    static SCIP_DECL_CONSSEPASOL (consSepasolVarbound)
     
    static SCIP_DECL_CONSENFOLP (consEnfolpVarbound)
     
    static SCIP_DECL_CONSENFORELAX (consEnforelaxVarbound)
     
    static SCIP_DECL_CONSENFOPS (consEnfopsVarbound)
     
    static SCIP_DECL_CONSCHECK (consCheckVarbound)
     
    static SCIP_DECL_CONSPROP (consPropVarbound)
     
    static SCIP_DECL_CONSPRESOL (consPresolVarbound)
     
    static SCIP_DECL_CONSRESPROP (consRespropVarbound)
     
    static SCIP_DECL_CONSLOCK (consLockVarbound)
     
    static SCIP_DECL_CONSACTIVE (consActiveVarbound)
     
    static SCIP_DECL_CONSDEACTIVE (consDeactiveVarbound)
     
    static SCIP_DECL_CONSPRINT (consPrintVarbound)
     
    static SCIP_DECL_CONSCOPY (consCopyVarbound)
     
    static SCIP_DECL_CONSPARSE (consParseVarbound)
     
    static SCIP_DECL_CONSGETVARS (consGetVarsVarbound)
     
    static SCIP_DECL_CONSGETNVARS (consGetNVarsVarbound)
     
    static SCIP_DECL_CONSGETPERMSYMGRAPH (consGetPermsymGraphVarbound)
     
    static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH (consGetSignedPermsymGraphVarbound)
     
    static SCIP_DECL_EVENTEXEC (eventExecVarbound)
     

    Macro Definition Documentation

    ◆ CONSHDLR_NAME

    #define CONSHDLR_NAME   "varbound"

    Definition at line 88 of file cons_varbound.c.

    ◆ CONSHDLR_DESC

    #define CONSHDLR_DESC   "variable bounds lhs <= x + c*y <= rhs, x non-binary, y non-continuous"

    Definition at line 89 of file cons_varbound.c.

    ◆ CONSHDLR_SEPAPRIORITY

    #define CONSHDLR_SEPAPRIORITY   +900000

    priority of the constraint handler for separation

    Definition at line 90 of file cons_varbound.c.

    ◆ CONSHDLR_ENFOPRIORITY

    #define CONSHDLR_ENFOPRIORITY   -500000

    priority of the constraint handler for constraint enforcing

    Definition at line 91 of file cons_varbound.c.

    ◆ CONSHDLR_CHECKPRIORITY

    #define CONSHDLR_CHECKPRIORITY   -500000

    priority of the constraint handler for checking feasibility

    Definition at line 92 of file cons_varbound.c.

    ◆ CONSHDLR_SEPAFREQ

    #define CONSHDLR_SEPAFREQ   0

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

    Definition at line 93 of file cons_varbound.c.

    ◆ CONSHDLR_PROPFREQ

    #define CONSHDLR_PROPFREQ   1

    frequency for propagating domains; zero means only preprocessing propagation

    Definition at line 94 of file cons_varbound.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 96 of file cons_varbound.c.

    ◆ CONSHDLR_MAXPREROUNDS

    #define CONSHDLR_MAXPREROUNDS   -1

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

    Definition at line 97 of file cons_varbound.c.

    ◆ CONSHDLR_DELAYSEPA

    #define CONSHDLR_DELAYSEPA   FALSE

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

    Definition at line 98 of file cons_varbound.c.

    ◆ CONSHDLR_DELAYPROP

    #define CONSHDLR_DELAYPROP   FALSE

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

    Definition at line 99 of file cons_varbound.c.

    ◆ CONSHDLR_NEEDSCONS

    #define CONSHDLR_NEEDSCONS   TRUE

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

    Definition at line 100 of file cons_varbound.c.

    ◆ CONSHDLR_PRESOLTIMING

    #define CONSHDLR_PRESOLTIMING   (SCIP_PRESOLTIMING_FAST | SCIP_PRESOLTIMING_MEDIUM)

    Definition at line 102 of file cons_varbound.c.

    ◆ CONSHDLR_PROP_TIMING

    #define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP

    Definition at line 103 of file cons_varbound.c.

    ◆ EVENTHDLR_NAME

    #define EVENTHDLR_NAME   "varbound"

    Definition at line 105 of file cons_varbound.c.

    ◆ EVENTHDLR_DESC

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

    Definition at line 106 of file cons_varbound.c.

    ◆ LINCONSUPGD_PRIORITY

    #define LINCONSUPGD_PRIORITY   +50000

    priority of the constraint handler for upgrading of linear constraints

    Definition at line 108 of file cons_varbound.c.

    ◆ DEFAULT_PRESOLPAIRWISE

    #define DEFAULT_PRESOLPAIRWISE   TRUE

    should pairwise constraint comparison be performed in presolving?

    Definition at line 117 of file cons_varbound.c.

    ◆ DEFAULT_MAXLPCOEF

    #define DEFAULT_MAXLPCOEF   1e+09

    maximum coefficient in varbound constraint to be added as a row into LP

    Definition at line 118 of file cons_varbound.c.

    ◆ DEFAULT_USEBDWIDENING

    #define DEFAULT_USEBDWIDENING   TRUE

    should bound widening be used to initialize conflict analysis?

    Definition at line 119 of file cons_varbound.c.

    ◆ MAXSCALEDCOEF

    #define MAXSCALEDCOEF   1000LL

    maximal coefficient value after scaling

    Definition at line 122 of file cons_varbound.c.

    Typedef Documentation

    ◆ PROPRULE

    typedef enum Proprule PROPRULE

    Definition at line 159 of file cons_varbound.c.

    Enumeration Type Documentation

    ◆ Proprule

    enum Proprule

    Propagation rules

    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 152 of file cons_varbound.c.

    Function Documentation

    ◆ SCIP_DECL_SORTPTRCOMP()

    static SCIP_DECL_SORTPTRCOMP ( consVarboundComp  )
    static

    compares two varbound constraints cons1: \( lhs1 \le x1 + c1 y1 \le rhs1 \) and cons2: \( lhs2 \le x2 + c2 y2 \le rhs2 \) w.r.t. the indices of the contained variables

    returns -1 if:

    • the index of x1 is smaller than the index of x2 or
    • x1 = x2 and the index of y1 is smaller than the index of y2 or
    • x1 = x2 and y1 = y2 and cons2 was recently changed, but cons1 not

    returns 0 if x1 = x2, y1 = y2, and the changed status of both constraints is the same

    and returns +1 otherwise

    Definition at line 180 of file cons_varbound.c.

    References NULL, SCIPconsGetData(), and SCIPvarGetIndex().

    ◆ conshdlrdataCreate()

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

    creates constraint handler data for varbound constraint handler

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

    Definition at line 216 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.

    Referenced by SCIPincludeConshdlrVarbound().

    ◆ conshdlrdataFree()

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

    frees constraint handler data for varbound constraint handler

    Parameters
    scipSCIP data structure
    conshdlrdatapointer to the constraint handler data

    Definition at line 235 of file cons_varbound.c.

    References NULL, and SCIPfreeBlockMemory.

    Referenced by SCIP_DECL_CONSFREE().

    ◆ catchEvents()

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

    catches events for variables

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    eventhdlrevent handler

    Definition at line 252 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPcatchVarEvent(), and SCIPconsGetData().

    Referenced by applyFixings(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsVarbound().

    ◆ dropEvents()

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

    drops events for variables

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    eventhdlrevent handler

    Definition at line 272 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPconsGetData(), and SCIPdropVarEvent().

    Referenced by applyFixings(), and SCIP_DECL_CONSDELETE().

    ◆ consdataCreate()

    static SCIP_RETCODE consdataCreate ( SCIP scip,
    SCIP_CONSDATA **  consdata,
    SCIP_VAR var,
    SCIP_VAR vbdvar,
    SCIP_Real  vbdcoef,
    SCIP_Real  lhs,
    SCIP_Real  rhs 
    )
    static

    creates a variable bound constraint data object

    Parameters
    scipSCIP data structure
    consdatapointer to store the variable bound constraint data
    varvariable x that has variable bound
    vbdvarbinary, integer or implicit integer bounding variable y
    vbdcoefcoefficient c of bounding variable y
    lhsleft hand side of variable bound inequality
    rhsright hand side of variable bound inequality

    Definition at line 292 of file cons_varbound.c.

    References FALSE, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_VARSTATUS_MULTAGGR, SCIPallocBlockMemory, SCIPcaptureVar(), SCIPerrorMessage, SCIPgetTransformedVar(), SCIPinfinity(), SCIPisGT(), SCIPisInfinity(), SCIPisTransformed(), SCIPisZero(), SCIPvarGetProbvar(), SCIPvarGetStatus(), SCIPvarIsIntegral(), and TRUE.

    Referenced by SCIP_DECL_CONSTRANS(), and SCIPcreateConsVarbound().

    ◆ consdataFree()

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

    frees a variable bound constraint data

    Parameters
    scipSCIP data structure
    consdatapointer to the variable bound constraint

    Definition at line 368 of file cons_varbound.c.

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

    Referenced by SCIP_DECL_CONSDELETE().

    ◆ createRelaxation()

    static SCIP_RETCODE createRelaxation ( SCIP scip,
    SCIP_CONS cons 
    )
    static

    creates LP row corresponding to variable bound constraint

    Parameters
    scipSCIP data structure
    consvariable bound constraint

    Definition at line 399 of file cons_varbound.c.

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

    Referenced by addRelaxation(), and separateCons().

    ◆ addRelaxation()

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

    adds linear relaxation of variable bound constraint to the LP

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    infeasiblepointer to store whether infeasibility was detected

    Definition at line 420 of file cons_varbound.c.

    References CONSHDLR_NAME, createRelaxation(), FALSE, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPaddRow(), SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPdebug, SCIPdebugMsg, SCIPerrorMessage, SCIPfindConshdlr(), SCIPisGT(), SCIPprintRow(), SCIProwIsInLP(), and SCIPvarIsIntegral().

    Referenced by SCIP_DECL_CONSINITLP().

    ◆ addNlrow()

    static SCIP_RETCODE addNlrow ( SCIP scip,
    SCIP_CONS cons 
    )
    static

    adds varbound constraint as row to the NLP, if not added yet

    Parameters
    scipSCIP data structure
    consvarbound constraint

    Definition at line 468 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_EXPRCURV_LINEAR, SCIP_OKAY, SCIP_Real, SCIPaddNlRow(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsLocal(), SCIPcreateNlRow(), SCIPisNLPConstructed(), and SCIPnlrowIsInNLP().

    Referenced by SCIP_DECL_CONSACTIVE(), and SCIP_DECL_CONSINITSOL().

    ◆ checkCons()

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

    returns whether the given solution is feasible for the given variable bound constraint

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    solsolution to check, NULL for current solution
    checklprowsDo constraints represented by rows in the current LP have to be checked?

    Definition at line 513 of file cons_varbound.c.

    References MAX, NULL, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPgetSolVal(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisInfinity(), SCIPrelDiff(), SCIProwIsInLP(), SCIPupdateSolLPConsViolation(), and TRUE.

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

    ◆ resolvePropagation()

    static SCIP_RETCODE resolvePropagation ( SCIP scip,
    SCIP_CONS cons,
    SCIP_VAR infervar,
    PROPRULE  proprule,
    SCIP_BOUNDTYPE  boundtype,
    SCIP_BDCHGIDX bdchgidx,
    SCIP_Real  inferbd,
    SCIP_Bool  usebdwidening 
    )
    static

    resolves a propagation on the given variable by supplying the variables needed for applying the corresponding propagation rule (see propagateCons()): (1) left hand side and bounds on y -> lower bound on x (2) left hand side and upper bound on x -> bound on y (3) right hand side and bounds on y -> upper bound on x (4) right hand side and lower bound on x -> bound on y

    Parameters
    scipSCIP data structure
    consconstraint that inferred the bound change
    infervarvariable that was deduced
    proprulepropagation rule that deduced the bound change
    boundtypethe type of the changed bound (lower or upper bound)
    bdchgidxbound change index (time stamp of bound change), or NULL for current time
    inferbdinference bound which needs to be explained
    usebdwideningshould bound widening be used to in conflict analysis?

    Definition at line 562 of file cons_varbound.c.

    References NULL, PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, REALABS, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPaddConflictLb(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictUb(), SCIPadjustedVarLb(), SCIPadjustedVarUb(), SCIPconsGetData(), SCIPconsGetName(), SCIPerrorMessage, SCIPfeastol(), SCIPgetHugeValue(), SCIPisEQ(), SCIPisInfinity(), SCIPisZero(), SCIPquadprecDivQD, SCIPquadprecProdDD, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPquadprecSumQQ, and SCIPvarIsIntegral().

    Referenced by analyzeConflict(), and SCIP_DECL_CONSRESPROP().

    ◆ analyzeConflict()

    static SCIP_RETCODE analyzeConflict ( SCIP scip,
    SCIP_CONS cons,
    SCIP_VAR infervar,
    SCIP_Real  inferbd,
    PROPRULE  proprule,
    SCIP_BOUNDTYPE  boundtype,
    SCIP_Bool  usebdwidening 
    )
    static

    analyze infeasibility

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    infervarvariable that was deduced
    inferbdbound which led to infeasibility
    proprulepropagation rule that deduced the bound change
    boundtypethe type of the changed bound (lower or upper bound)
    usebdwideningshould bound widening be used to in conflict analysis?

    Definition at line 981 of file cons_varbound.c.

    References FALSE, MAX, NULL, REALABS, resolvePropagation(), SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_Real, SCIP_STAGE_SOLVING, SCIPaddConflictLb(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictUb(), SCIPadjustedVarLb(), SCIPadjustedVarUb(), SCIPanalyzeConflictCons(), SCIPconsGetData(), SCIPfeastol(), SCIPgetConflictVarLb(), SCIPgetConflictVarUb(), SCIPgetStage(), SCIPinitConflictAnalysis(), SCIPinProbing(), SCIPisConflictAnalysisApplicable(), and SCIPvarIsIntegral().

    Referenced by propagateCons(), and separateCons().

    ◆ separateCons()

    static SCIP_RETCODE separateCons ( SCIP scip,
    SCIP_CONS cons,
    SCIP_Bool  usebdwidening,
    SCIP_SOL sol,
    SCIP_RESULT result 
    )
    static

    ◆ chgLhs()

    static SCIP_RETCODE chgLhs ( SCIP scip,
    SCIP_CONS cons,
    SCIP_Real  lhs 
    )
    static

    sets left hand side of varbound constraint

    Parameters
    scipSCIP data structure
    conslinear constraint
    lhsnew left hand side

    Definition at line 1289 of file cons_varbound.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPisLT(), SCIPlockVarCons(), SCIPmarkConsPropagate(), SCIPunlockVarCons(), and TRUE.

    Referenced by preprocessConstraintPairs(), and propagateCons().

    ◆ chgRhs()

    static SCIP_RETCODE chgRhs ( SCIP scip,
    SCIP_CONS cons,
    SCIP_Real  rhs 
    )
    static

    sets right hand side of varbound constraint

    Parameters
    scipSCIP data structure
    conslinear constraint
    rhsnew right hand side

    Definition at line 1369 of file cons_varbound.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsTransformed(), SCIPinfinity(), SCIPisEQ(), SCIPisGT(), SCIPisInfinity(), SCIPlockVarCons(), SCIPmarkConsPropagate(), SCIPunlockVarCons(), and TRUE.

    Referenced by preprocessConstraintPairs(), and propagateCons().

    ◆ propagateCons()

    static SCIP_RETCODE propagateCons ( SCIP scip,
    SCIP_CONS cons,
    SCIP_Bool  usebdwidening,
    SCIP_Bool cutoff,
    int *  nchgbds,
    int *  nchgsides,
    int *  ndelconss 
    )
    static

    propagation method for variable bound constraint

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    usebdwideningshould bound widening be used to in conflict analysis?
    cutoffpointer to store whether the node can be cut off
    nchgbdspointer to count number of bound changes
    nchgsidespointer to count number of side changes
    ndelconsspointer to count number of deleted constraints, or NULL

    Definition at line 1450 of file cons_varbound.c.

    References analyzeConflict(), bound, chgLhs(), chgRhs(), FALSE, NULL, PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, scalars, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVING, SCIP_VARSTATUS_MULTAGGR, SCIPadjustedVarLb(), SCIPadjustedVarUb(), SCIPallocBufferArray, SCIPchgVarLb(), SCIPchgVarUb(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPdelCons(), SCIPdelConsLocal(), SCIPfixVar(), SCIPfreeBufferArray, SCIPgetProbvarLinearSum(), SCIPgetStage(), SCIPincConsAge(), SCIPinferVarLbCons(), SCIPinferVarUbCons(), SCIPinfinity(), SCIPinProbing(), SCIPinRepropagation(), SCIPisEQ(), SCIPisFeasLT(), SCIPisGT(), SCIPisInfinity(), SCIPisLT(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), SCIPquadprecDivQD, SCIPquadprecProdDD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPreallocBufferArray, SCIPresetConsAge(), SCIPunmarkConsPropagate(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetUbLocal(), and TRUE.

    Referenced by SCIP_DECL_CONSPRESOL(), SCIP_DECL_CONSPROP(), and upgradeConss().

    ◆ checkRedundancySide()

    static void checkRedundancySide ( SCIP scip,
    SCIP_VAR var,
    SCIP_VAR vbdvar,
    SCIP_Real  coef0,
    SCIP_Real  coef1,
    SCIP_Real  side0,
    SCIP_Real  side1,
    SCIP_Bool sideequal,
    SCIP_Bool cons0sidered,
    SCIP_Bool cons1sidered,
    SCIP_Bool  islhs 
    )
    static
    Parameters
    scipSCIP data structure
    varvariable x that has variable bound
    vbdvarbinary, integer or implicit integer bounding variable y
    coef0coefficient c0 of bounding variable y for constraint 0
    coef1coefficient c1 of bounding variable y for constraint 1
    side0one side of variable bound inequality for constraint 0
    side1one side of variable bound inequality for constraint 1
    sideequalpointer to store if both constraints have the same redundancy on the given side
    cons0sideredpointer to store if side of constraint 0 is redundant
    cons1sideredpointer to store if side of constraint 1 is redundant
    islhsdo we check the left or the right hand side

    Definition at line 2022 of file cons_varbound.c.

    References ABS, FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_Real, SCIPfeasCeil(), SCIPfeasFloor(), SCIPinfinity(), SCIPisEQ(), SCIPisGT(), SCIPisInfinity(), SCIPisLT(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), SCIPvarIsIntegral(), and TRUE.

    Referenced by preprocessConstraintPairs().

    ◆ preprocessConstraintPairs()

    static SCIP_RETCODE preprocessConstraintPairs ( SCIP scip,
    SCIP_CONS **  conss,
    int  nconss,
    SCIP_Bool cutoff,
    int *  nchgbds,
    int *  ndelconss,
    int *  nchgcoefs,
    int *  nchgsides 
    )
    static

    compares each constraint with all other constraints for possible redundancy and removes or changes constraint

    we will order all constraint to have constraints with same variables next to each other to speed up presolving

    consider two constraints like lhs1 <= x + b1*y <= rhs1 and lhs2 <= x + b2*y <= rhs2 we are doing the following presolving steps:

    if( b1 == b2 ) newlhs = MAX(lhs1, lhs2) newrhs = MIN(rhs1, rhs2) updateSides delete one constraint else if( ((b1 > 0) == (b2 > 0)) && (lhs1 != -inf && lhs2 != -inf) || (rhs1 != inf && rhs2 != inf) )

     (i.e. both constraint have either a valid lhs or a valid rhs and infinity is on the same side and the
           coeffcients have the same size )
    
    if( y is binary )
        if( lhs1 != -inf )
            newlhs = MAX(lhs1, lhs2)
            newb = newlhs - MAX(lhs1 - b1, lhs2 - b2)
        else
            newrhs = MIN(lhs1, lhs2)
            newb = newrhs - MIN(rhs1 - b1, rhs2 - b2)
        updateSidesAndCoef
        delete one constraint
    else
        we calculate possible values for both variables and check which constraint is tighter
    

    else nothing possible

    We also try to tighten bounds in the case of two constraints lhs1 <= x + b1*y <= rhs1 and lhs2 <= y + b2*x <= rhs2. Eliminiating one variable and inserting into the second yields the following bounds: If b2 > 0: (1 - b1 * b2) * y >= lhs2 - b2 * rhs1 (1 - b1 * b2) * y <= rhs2 - b2 * lhs1 If b2 < 0: (1 - b1 * b2) * y >= lhs2 - b2 * lhs1 (1 - b1 * b2) * y <= rhs2 - b2 * rhs1 The case of x is similar.

    Parameters
    scipSCIP data structure
    conssconstraint set
    nconssnumber of constraints in constraint set
    cutoffpointer to store TRUE, if a cutoff was found
    nchgbdspointer to count number of bound changes
    ndelconsspointer to count number of deleted constraints
    nchgcoefspointer to count the number of changed coefficients
    nchgsidespointer to count number of changed left/right hand sides

    Definition at line 2538 of file cons_varbound.c.

    References checkRedundancySide(), chgLhs(), chgRhs(), FALSE, MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_UNKNOWN, SCIPadjustedVarLb(), SCIPadjustedVarUb(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPconsIsTransformed(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPduplicateBufferArray, SCIPfreeBufferArray, SCIPinfinity(), SCIPisEQ(), SCIPisFeasLT(), SCIPisFeasNegative(), SCIPisFeasPositive(), SCIPisFeasZero(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), SCIPlockVarCons(), SCIPmarkConsPropagate(), SCIPsortPtr(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPunlockVarCons(), SCIPupdateConsFlags(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), and TRUE.

    Referenced by SCIP_DECL_CONSPRESOL().

    ◆ prettifyConss()

    static void prettifyConss ( SCIP scip,
    SCIP_CONS **  conss,
    int  nconss,
    int *  nchgcoefs,
    int *  nchgsides 
    )
    static

    for all varbound constraints with two integer variables make the coefficients integral

    Parameters
    scipSCIP data structure
    conssconstraint set
    nconssnumber of constraints in constraint set
    nchgcoefspointer to count the number of changed coefficients
    nchgsidespointer to count number of changed left/right hand sides

    Definition at line 3183 of file cons_varbound.c.

    References ABS, scip::denominator(), FALSE, MAXSCALEDCOEF, MIN, NULL, scip::numerator(), REALABS, SCIP_Bool, SCIP_Longint, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPepsilon(), SCIPfeastol(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPinfinity(), SCIPisEQ(), SCIPisGE(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLT(), SCIPrealToRational(), SCIPvarGetType(), and SCIPvarIsIntegral().

    Referenced by SCIP_DECL_CONSPRESOL().

    ◆ applyFixings()

    static SCIP_RETCODE applyFixings ( SCIP scip,
    SCIP_CONS cons,
    SCIP_EVENTHDLR eventhdlr,
    SCIP_Bool cutoff,
    int *  nchgbds,
    int *  ndelconss,
    int *  naddconss 
    )
    static

    ◆ tightenCoefs()

    static SCIP_RETCODE tightenCoefs ( SCIP scip,
    SCIP_CONS cons,
    int *  nchgcoefs,
    int *  nchgsides,
    int *  ndelconss,
    SCIP_Bool cutoff,
    int *  nchgbds 
    )
    static

    tightens variable bound coefficient by inspecting the global bounds of the involved variables; note: this is also performed by the linear constraint handler - only necessary if the user directly creates variable bound constraints

    Parameters
    scipSCIP data structure
    consvariable bound constraint
    nchgcoefspointer to count the number of changed coefficients
    nchgsidespointer to count the number of left and right hand sides
    ndelconsspointer to count number of deleted constraints
    cutoffpointer to store whether the node can be cut off
    nchgbdspointer to count number of bound changes

    Definition at line 3890 of file cons_varbound.c.

    References FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPdelCons(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPisEQ(), SCIPisFeasGE(), SCIPisFeasGT(), SCIPisFeasIntegral(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisGE(), SCIPisGT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLE(), SCIPisLT(), SCIPisZero(), SCIPmarkConsPropagate(), SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), tightenCoefs(), and TRUE.

    Referenced by SCIP_DECL_CONSPRESOL(), tightenCoefs(), and upgradeConss().

    ◆ upgradeConss()

    static SCIP_RETCODE upgradeConss ( SCIP scip,
    SCIP_CONSHDLRDATA conshdlrdata,
    SCIP_CONS **  conss,
    int  nconss,
    SCIP_Bool cutoff,
    int *  naggrvars,
    int *  nchgbds,
    int *  nchgcoefs,
    int *  nchgsides,
    int *  ndelconss,
    int *  naddconss 
    )
    static

    check if we can upgrade to a set-packing constraint

    Parameters
    scipSCIP data structure
    conshdlrdataconstraint handler data
    conssconstraint set
    nconssnumber of constraints in constraint set
    cutoffpointer to store whether the node can be cut off
    naggrvarspointer to count the number of aggregated variables
    nchgbdspointer to count number of bound changes
    nchgcoefspointer to count the number of changed coefficients
    nchgsidespointer to count the number of left and right hand sides
    ndelconsspointer to count the number of deleted constraints
    naddconsspointer to count the number of added constraints

    Definition at line 4454 of file cons_varbound.c.

    References applyFixings(), NULL, propagateCons(), REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaddConsUpgrade(), SCIPaggregateVars(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsGetNUpgradeLocks(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsMarkedPropagate(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsSetpack(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPgetNBinVars(), SCIPgetNegatedVar(), SCIPgetNImplVars(), SCIPisEQ(), SCIPisInfinity(), SCIPisLE(), SCIPisZero(), SCIPvarGetName(), SCIPvarIsBinary(), and tightenCoefs().

    Referenced by SCIP_DECL_CONSPRESOL().

    ◆ SCIP_DECL_LINCONSUPGD()

    ◆ addSymmetryInformation()

    static SCIP_RETCODE addSymmetryInformation ( SCIP scip,
    SYM_SYMTYPE  symtype,
    SCIP_CONS cons,
    SYM_GRAPH graph,
    SCIP_Bool success 
    )
    static

    adds symmetry information of constraint to a symmetry detection graph

    Parameters
    scipSCIP pointer
    symtypetype of symmetries that need to be added
    consconstraint
    graphsymmetry detection graph
    successpointer to store whether symmetry information could be added

    Definition at line 4734 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPextendPermsymDetectionGraphLinear(), SCIPfreeBufferArray, SCIPgetLhsVarbound(), SCIPgetNVars(), SCIPgetRhsVarbound(), SCIPgetSymActiveVariables(), SCIPgetVarVarbound(), SCIPgetVbdcoefVarbound(), SCIPgetVbdvarVarbound(), and SCIPisTransformed().

    Referenced by SCIP_DECL_CONSGETPERMSYMGRAPH(), and SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH().

    ◆ SCIP_DECL_CONSHDLRCOPY()

    static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyVarbound  )
    static

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

    Definition at line 4790 of file cons_varbound.c.

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

    ◆ SCIP_DECL_CONSFREE()

    static SCIP_DECL_CONSFREE ( consFreeVarbound  )
    static

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

    Definition at line 4806 of file cons_varbound.c.

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

    ◆ SCIP_DECL_CONSINITSOL()

    static SCIP_DECL_CONSINITSOL ( consInitsolVarbound  )
    static

    solving process initialization method of constraint handler

    Definition at line 4827 of file cons_varbound.c.

    References addNlrow(), SCIP_CALL, SCIP_OKAY, and SCIPisNLPConstructed().

    ◆ SCIP_DECL_CONSEXITSOL()

    static SCIP_DECL_CONSEXITSOL ( consExitsolVarbound  )
    static

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

    Definition at line 4844 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPreleaseNlRow(), and SCIPreleaseRow().

    ◆ SCIP_DECL_CONSDELETE()

    static SCIP_DECL_CONSDELETE ( consDeleteVarbound  )
    static

    frees specific constraint data

    Definition at line 4872 of file cons_varbound.c.

    References consdataFree(), dropEvents(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), and SCIPisTransformed().

    ◆ SCIP_DECL_CONSTRANS()

    ◆ SCIP_DECL_CONSINITLP()

    static SCIP_DECL_CONSINITLP ( consInitlpVarbound  )
    static

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

    Definition at line 4927 of file cons_varbound.c.

    References addRelaxation(), FALSE, SCIP_CALL, SCIP_OKAY, and SCIPconsIsInitial().

    ◆ SCIP_DECL_CONSSEPALP()

    static SCIP_DECL_CONSSEPALP ( consSepalpVarbound  )
    static

    separation method of constraint handler for LP solutions

    Definition at line 4945 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIPconshdlrGetData(), and separateCons().

    ◆ SCIP_DECL_CONSSEPASOL()

    static SCIP_DECL_CONSSEPASOL ( consSepasolVarbound  )
    static

    separation method of constraint handler for arbitrary primal solutions

    Definition at line 4975 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_OKAY, SCIPconshdlrGetData(), and separateCons().

    ◆ SCIP_DECL_CONSENFOLP()

    static SCIP_DECL_CONSENFOLP ( consEnfolpVarbound  )
    static

    constraint enforcing method of constraint handler for LP solutions

    Definition at line 5005 of file cons_varbound.c.

    References checkCons(), FALSE, NULL, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPincConsAge(), SCIPresetConsAge(), and separateCons().

    ◆ SCIP_DECL_CONSENFORELAX()

    static SCIP_DECL_CONSENFORELAX ( consEnforelaxVarbound  )
    static

    constraint enforcing method of constraint handler for relaxation solutions

    Definition at line 5045 of file cons_varbound.c.

    References checkCons(), FALSE, NULL, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPincConsAge(), SCIPresetConsAge(), and separateCons().

    ◆ SCIP_DECL_CONSENFOPS()

    static SCIP_DECL_CONSENFOPS ( consEnfopsVarbound  )
    static

    constraint enforcing method of constraint handler for pseudo solutions

    Definition at line 5085 of file cons_varbound.c.

    References checkCons(), NULL, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPincConsAge(), SCIPresetConsAge(), and TRUE.

    ◆ SCIP_DECL_CONSCHECK()

    static SCIP_DECL_CONSCHECK ( consCheckVarbound  )
    static

    feasibility check method of constraint handler for integral solutions

    Definition at line 5112 of file cons_varbound.c.

    References checkCons(), NULL, SCIP_CALL, SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIP_Real, SCIPconsGetData(), SCIPgetSolVal(), SCIPinfoMessage(), SCIPisFeasGE(), SCIPisFeasLE(), and SCIPprintCons().

    ◆ SCIP_DECL_CONSPROP()

    static SCIP_DECL_CONSPROP ( consPropVarbound  )
    static

    domain propagation method of constraint handler

    Definition at line 5155 of file cons_varbound.c.

    References FALSE, NULL, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPconshdlrGetData(), and SCIPdebugMsg.

    ◆ SCIP_DECL_CONSPRESOL()

    ◆ SCIP_DECL_CONSRESPROP()

    static SCIP_DECL_CONSRESPROP ( consRespropVarbound  )
    static

    propagation conflict resolving method of constraint handler

    Definition at line 5346 of file cons_varbound.c.

    References NULL, resolvePropagation(), SCIP_CALL, SCIP_OKAY, SCIP_SUCCESS, and SCIPconshdlrGetData().

    ◆ SCIP_DECL_CONSLOCK()

    static SCIP_DECL_CONSLOCK ( consLockVarbound  )
    static

    variable rounding lock method of constraint handler

    Definition at line 5365 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPconsGetData(), and SCIPisInfinity().

    ◆ SCIP_DECL_CONSACTIVE()

    static SCIP_DECL_CONSACTIVE ( consActiveVarbound  )
    static

    constraint activation notification method of constraint handler

    Definition at line 5403 of file cons_varbound.c.

    References addNlrow(), SCIP_CALL, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPgetStage(), and SCIPisNLPConstructed().

    ◆ SCIP_DECL_CONSDEACTIVE()

    static SCIP_DECL_CONSDEACTIVE ( consDeactiveVarbound  )
    static

    constraint deactivation notification method of constraint handler

    Definition at line 5415 of file cons_varbound.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIP_STAGE_SOLVING, SCIPconsGetData(), SCIPdelNlRow(), and SCIPgetStage().

    ◆ SCIP_DECL_CONSPRINT()

    static SCIP_DECL_CONSPRINT ( consPrintVarbound  )
    static

    constraint display method of constraint handler

    Definition at line 5437 of file cons_varbound.c.

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

    ◆ SCIP_DECL_CONSCOPY()

    static SCIP_DECL_CONSCOPY ( consCopyVarbound  )
    static

    ◆ SCIP_DECL_CONSPARSE()

    static SCIP_DECL_CONSPARSE ( consParseVarbound  )
    static

    ◆ SCIP_DECL_CONSGETVARS()

    static SCIP_DECL_CONSGETVARS ( consGetVarsVarbound  )
    static

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

    Definition at line 5624 of file cons_varbound.c.

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

    ◆ SCIP_DECL_CONSGETNVARS()

    static SCIP_DECL_CONSGETNVARS ( consGetNVarsVarbound  )
    static

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

    Definition at line 5649 of file cons_varbound.c.

    References SCIP_OKAY, and TRUE.

    ◆ SCIP_DECL_CONSGETPERMSYMGRAPH()

    static SCIP_DECL_CONSGETPERMSYMGRAPH ( consGetPermsymGraphVarbound  )
    static

    constraint handler method which returns the permutation symmetry detection graph of a constraint

    Definition at line 5659 of file cons_varbound.c.

    References addSymmetryInformation(), SCIP_CALL, SCIP_OKAY, and SYM_SYMTYPE_PERM.

    ◆ SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH()

    static SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH ( consGetSignedPermsymGraphVarbound  )
    static

    constraint handler method which returns the signed permutation symmetry detection graph of a constraint

    Definition at line 5668 of file cons_varbound.c.

    References addSymmetryInformation(), SCIP_CALL, SCIP_OKAY, and SYM_SYMTYPE_SIGNPERM.

    ◆ SCIP_DECL_EVENTEXEC()

    static SCIP_DECL_EVENTEXEC ( eventExecVarbound  )
    static

    execution method of bound change event handler

    Definition at line 5681 of file cons_varbound.c.

    References FALSE, NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_VARFIXED, SCIP_OKAY, SCIPconsGetData(), SCIPeventGetType(), and SCIPmarkConsPropagate().