Scippy

SCIP

Solving Constraint Integer Programs

cons_varbound.c File Reference

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 "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_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 <ctype.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_1,
  PROPRULE_2,
  PROPRULE_3,
  PROPRULE_4,
  PROPRULE_INVALID,
  PROPRULE_INVALID = 0,
  PROPRULE_1 = 1,
  PROPRULE_2 = 2,
  PROPRULE_3 = 3,
  PROPRULE_4 = 4,
  PROPRULE_1_CORETIMES = 1,
  PROPRULE_2_EDGEFINDING = 2,
  PROPRULE_3_TTEF = 3,
  PROPRULE_1_RHS = 1,
  PROPRULE_1_LHS = 2,
  PROPRULE_1_RANGEDROW = 3,
  PROPRULE_INVALID = 0,
  PROPRULE_1,
  PROPRULE_2,
  PROPRULE_3,
  PROPRULE_4,
  PROPRULE_INVALID,
  PROPRULE_1,
  PROPRULE_2,
  PROPRULE_3,
  PROPRULE_4,
  PROPRULE_0,
  PROPRULE_1,
  PROPRULE_INTLB,
  PROPRULE_INTUB,
  PROPRULE_INVALID
}
 

Functions

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_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 SCIP_RETCODE 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)
 
Callback methods
static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyVarbound)
 
static SCIP_DECL_CONSFREE (consFreeVarbound)
 
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_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_EVENTEXEC (eventExecVarbound)
 
Interface methods
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)
 

Macro Definition Documentation

◆ CONSHDLR_NAME

◆ CONSHDLR_DESC

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

Definition at line 74 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_SEPAPRIORITY

#define CONSHDLR_SEPAPRIORITY   +900000

priority of the constraint handler for separation

Definition at line 75 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   -500000

priority of the constraint handler for constraint enforcing

Definition at line 76 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -500000

priority of the constraint handler for checking feasibility

Definition at line 77 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_SEPAFREQ

#define CONSHDLR_SEPAFREQ   0

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

Definition at line 78 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_PROPFREQ

#define CONSHDLR_PROPFREQ   1

frequency for propagating domains; zero means only preprocessing propagation

Definition at line 79 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

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

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_MAXPREROUNDS

#define CONSHDLR_MAXPREROUNDS   -1

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

Definition at line 83 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_DELAYSEPA

#define CONSHDLR_DELAYSEPA   FALSE

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

Definition at line 84 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_DELAYPROP

#define CONSHDLR_DELAYPROP   FALSE

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

Definition at line 85 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

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

Definition at line 86 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_PRESOLTIMING

#define CONSHDLR_PRESOLTIMING   (SCIP_PRESOLTIMING_FAST | SCIP_PRESOLTIMING_MEDIUM)

Definition at line 88 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ CONSHDLR_PROP_TIMING

#define CONSHDLR_PROP_TIMING   SCIP_PROPTIMING_BEFORELP

Definition at line 89 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ EVENTHDLR_NAME

#define EVENTHDLR_NAME   "varbound"

Definition at line 91 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ EVENTHDLR_DESC

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

Definition at line 92 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ LINCONSUPGD_PRIORITY

#define LINCONSUPGD_PRIORITY   +50000

priority of the constraint handler for upgrading of linear constraints

Definition at line 94 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ DEFAULT_PRESOLPAIRWISE

#define DEFAULT_PRESOLPAIRWISE   TRUE

should pairwise constraint comparison be performed in presolving?

Definition at line 103 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ DEFAULT_MAXLPCOEF

#define DEFAULT_MAXLPCOEF   1e+09

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

Definition at line 104 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ DEFAULT_USEBDWIDENING

#define DEFAULT_USEBDWIDENING   TRUE

should bound widening be used to initialize conflict analysis?

Definition at line 105 of file cons_varbound.c.

Referenced by SCIPincludeConshdlrVarbound().

◆ MAXSCALEDCOEF

#define MAXSCALEDCOEF   1000LL

maximal coefficient value after scaling

Definition at line 108 of file cons_varbound.c.

Referenced by prettifyConss().

Typedef Documentation

◆ PROPRULE

typedef enum Proprule PROPRULE

Definition at line 144 of file cons_varbound.c.

Enumeration Type Documentation

◆ Proprule

enum Proprule

Propagation rules

Enumerator
PROPRULE_1 

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

PROPRULE_2 

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

PROPRULE_3 

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

PROPRULE_4 

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

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

PROPRULE_INVALID 

propagation was applied without a specific propagation rule

PROPRULE_1 

v_i = FALSE => r = FALSE

PROPRULE_2 

r = TRUE => v_i = TRUE for all i

PROPRULE_3 

v_i = TRUE for all i => r = TRUE

PROPRULE_4 

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

PROPRULE_1_CORETIMES 

core-time propagator

PROPRULE_2_EDGEFINDING 

edge-finder

PROPRULE_3_TTEF 

time-table edeg-finding

PROPRULE_1_RHS 

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

PROPRULE_1_LHS 

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

PROPRULE_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 137 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 164 of file cons_varbound.c.

References conshdlrdataCreate(), 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 200 of file cons_varbound.c.

References conshdlrdataFree(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.

Referenced by SCIP_DECL_SORTPTRCOMP(), and 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 219 of file cons_varbound.c.

References catchEvents(), NULL, and SCIPfreeBlockMemory.

Referenced by conshdlrdataCreate(), and 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 236 of file cons_varbound.c.

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

Referenced by applyFixings(), conshdlrdataFree(), 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 256 of file cons_varbound.c.

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

Referenced by applyFixings(), catchEvents(), 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 276 of file cons_varbound.c.

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

Referenced by dropEvents(), 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 351 of file cons_varbound.c.

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

Referenced by consdataCreate(), and 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 376 of file cons_varbound.c.

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

Referenced by addRelaxation(), consdataFree(), 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 397 of file cons_varbound.c.

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

Referenced by createRelaxation(), and SCIP_DECL_CONSINITLP().

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

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

Referenced by addRelaxation(), 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 500 of file cons_varbound.c.

References analyzeConflict(), NULL, PROPRULE_1, PROPRULE_2, PROPRULE_3, PROPRULE_4, REALABS, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPaddConflictLb(), SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPaddConflictUb(), SCIPadjustedVarLb(), SCIPadjustedVarUb(), SCIPconsGetData(), SCIPconsGetName(), SCIPerrorMessage, SCIPfeastol(), SCIPgetHugeValue(), SCIPisEQ(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetType(), and SCIPvarIsIntegral().

Referenced by analyzeConflict(), checkCons(), 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 777 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(), SCIPvarIsIntegral(), and separateCons().

Referenced by propagateCons(), resolvePropagation(), 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 1076 of file cons_varbound.c.

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

Referenced by preprocessConstraintPairs(), propagateCons(), and separateCons().

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

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

Referenced by chgLhs(), 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

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

References eps, FALSE, MAX, MIN, NULL, preprocessConstraintPairs(), REALABS, SCIP_Bool, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPepsilon(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPisFeasIntegral(), SCIPisInfinity(), SCIPisPositive(), SCIPvarGetLbGlobal(), SCIPvarGetType(), SCIPvarGetUbGlobal(), and TRUE.

Referenced by preprocessConstraintPairs(), and propagateCons().

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

References checkRedundancySide(), chgLhs(), chgRhs(), FALSE, MAX, MIN, NULL, prettifyConss(), 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 checkRedundancySide(), and SCIP_DECL_CONSPRESOL().

◆ prettifyConss()

static SCIP_RETCODE 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 2561 of file cons_varbound.c.

References ABS, applyFixings(), FALSE, MAXSCALEDCOEF, MIN, NULL, REALABS, SCIP_Bool, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPconsGetData(), SCIPconsIsDeleted(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPepsilon(), SCIPfeastol(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPinfinity(), SCIPisEQ(), SCIPisGE(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLT(), SCIPrealToRational(), and SCIPvarGetType().

Referenced by preprocessConstraintPairs(), and 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

replaces fixed and aggregated variables in variable bound constraint by active problem variables

Parameters
scipSCIP data structure
consvariable bound constraint
eventhdlrevent handler
cutoffpointer to store whether an infeasibility was detected
nchgbdspointer to count number of bound changes
ndelconsspointer to count number of deleted constraints
naddconsspointer to count number of added constraints

Definition at line 2721 of file cons_varbound.c.

References catchEvents(), dropEvents(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_MULTAGGR, SCIPaddCoefLinear(), SCIPaddCons(), SCIPcaptureVar(), SCIPchgLhsLinear(), SCIPchgRhsLinear(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsLinear(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPgetProbvarSum(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisZero(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPround(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), tightenCoefs(), and TRUE.

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

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

References FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMsg, SCIPdelCons(), SCIPfeasCeil(), SCIPfeasFloor(), SCIPisEQ(), SCIPisFeasGE(), SCIPisFeasGT(), SCIPisFeasIntegral(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisGT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLT(), SCIPisZero(), SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), TRUE, and upgradeConss().

Referenced by applyFixings(), SCIP_DECL_CONSPRESOL(), 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 3582 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSPRESOL(), and tightenCoefs().

◆ SCIP_DECL_LINCONSUPGD()

◆ SCIP_DECL_CONSHDLRCOPY()

static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyVarbound  )
static

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

Definition at line 3868 of file cons_varbound.c.

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

Referenced by SCIP_DECL_LINCONSUPGD().

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

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

Referenced by SCIP_DECL_CONSHDLRCOPY().

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

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

Referenced by SCIP_DECL_CONSFREE().

◆ SCIP_DECL_CONSDELETE()

static SCIP_DECL_CONSDELETE ( consDeleteVarbound  )
static

frees specific constraint data

Definition at line 3928 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSEXITSOL().

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

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

Referenced by SCIP_DECL_CONSTRANS().

◆ SCIP_DECL_CONSSEPALP()

static SCIP_DECL_CONSSEPALP ( consSepalpVarbound  )
static

separation method of constraint handler for LP solutions

Definition at line 4001 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSINITLP().

◆ SCIP_DECL_CONSSEPASOL()

static SCIP_DECL_CONSSEPASOL ( consSepasolVarbound  )
static

separation method of constraint handler for arbitrary primal solutions

Definition at line 4031 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSSEPALP().

◆ SCIP_DECL_CONSENFOLP()

static SCIP_DECL_CONSENFOLP ( consEnfolpVarbound  )
static

constraint enforcing method of constraint handler for LP solutions

Definition at line 4061 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSSEPASOL().

◆ SCIP_DECL_CONSENFORELAX()

static SCIP_DECL_CONSENFORELAX ( consEnforelaxVarbound  )
static

constraint enforcing method of constraint handler for relaxation solutions

Definition at line 4101 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSENFOLP().

◆ SCIP_DECL_CONSENFOPS()

static SCIP_DECL_CONSENFOPS ( consEnfopsVarbound  )
static

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 4141 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSENFORELAX().

◆ SCIP_DECL_CONSCHECK()

static SCIP_DECL_CONSCHECK ( consCheckVarbound  )
static

feasibility check method of constraint handler for integral solutions

Definition at line 4168 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSENFOPS().

◆ SCIP_DECL_CONSPROP()

static SCIP_DECL_CONSPROP ( consPropVarbound  )
static

domain propagation method of constraint handler

Definition at line 4211 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSCHECK().

◆ SCIP_DECL_CONSPRESOL()

◆ SCIP_DECL_CONSRESPROP()

static SCIP_DECL_CONSRESPROP ( consRespropVarbound  )
static

propagation conflict resolving method of constraint handler

Definition at line 4403 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSPRESOL().

◆ SCIP_DECL_CONSLOCK()

static SCIP_DECL_CONSLOCK ( consLockVarbound  )
static

variable rounding lock method of constraint handler

Definition at line 4422 of file cons_varbound.c.

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

Referenced by SCIP_DECL_CONSRESPROP().

◆ SCIP_DECL_CONSPRINT()

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

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

Referenced by SCIP_DECL_CONSPARSE().

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

References SCIP_DECL_EVENTEXEC(), SCIP_OKAY, and TRUE.

Referenced by SCIP_DECL_CONSGETVARS().

◆ SCIP_DECL_EVENTEXEC()

static SCIP_DECL_EVENTEXEC ( eventExecVarbound  )
static