Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

generalized variable bounds propagator

Author
Stefan Weltge
Ambros Gleixner
Benjamin Mueller

Definition in file prop_genvbounds.c.

#include "blockmemshell/memory.h"
#include "scip/cons_linear.h"
#include "scip/debug.h"
#include "scip/prop_genvbounds.h"
#include "scip/pub_event.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_prop.h"
#include "scip/pub_var.h"
#include "scip/scip_conflict.h"
#include "scip/scip_cons.h"
#include "scip/scip_datastructures.h"
#include "scip/scip_event.h"
#include "scip/scip_general.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_prop.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
#include <string.h>

Go to the source code of this file.

Data Structures

struct  GenVBound
 

Macros

#define PROP_NAME   "genvbounds"
 
#define PROP_DESC   "generalized variable bounds propagator"
 
#define PROP_TIMING   SCIP_PROPTIMING_ALWAYS
 
#define PROP_PRIORITY   3000000
 
#define PROP_FREQ   1
 
#define PROP_DELAY   FALSE
 
#define PROP_PRESOL_PRIORITY   -2000000
 
#define PROP_PRESOLTIMING   SCIP_PRESOLTIMING_FAST /* timing of the presolving method (fast, medium, or exhaustive) */
 
#define PROP_PRESOL_MAXROUNDS   -1
 
#define DEFAULT_GLOBAL_PROPAGATION   TRUE
 
#define DEFAULT_PROPAGATE_IN_ROOT_NODE   TRUE
 
#define DEFAULT_SORT   TRUE
 
#define DEFAULT_PROPASCONSS   FALSE
 
#define EVENTHDLR_NAME   "genvbounds"
 
#define EVENTHDLR_DESC   "event handler for generalized variable bounds propagator"
 

Typedefs

typedef struct GenVBound GENVBOUND
 

Functions

static SCIP_Real getCutoffboundGenVBound (SCIP *scip)
 
static GENVBOUNDgetGenVBound (SCIP *scip, SCIP_PROPDATA *propdata, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype)
 
static SCIP_Real getGenVBoundsMinActivity (SCIP *scip, SCIP_VAR **vars, SCIP_Real *coefs, int nvars, SCIP_Bool global)
 
static SCIP_Real getGenVBoundsMinActivityConflict (SCIP *scip, SCIP_VAR **vars, SCIP_Real *coefs, int nvars, SCIP_BDCHGIDX *bdchgidx)
 
static SCIP_Real getGenVBoundsBound (SCIP *scip, GENVBOUND *genvbound, SCIP_Bool global)
 
static SCIP_RETCODE createStartingData (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE freeStartingData (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE fillGlobalStartingData (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE resetLocalStartingData (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE freeComponentsData (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE freeGenVBound (SCIP *scip, GENVBOUND *genvbound)
 
static SCIP_RETCODE freeGenVBounds (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE freeGenVBoundsRelaxOnly (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE resolveGenVBoundPropagation (SCIP *scip, GENVBOUND *genvbound, SCIP_BDCHGIDX *bdchgidx, SCIP_Real *boundval, SCIP_Bool *success)
 
static SCIP_RETCODE analyzeGenVBoundConflict (SCIP *scip, GENVBOUND *genvbound)
 
static SCIP_RETCODE applyGenVBound (SCIP *scip, SCIP_PROP *prop, GENVBOUND *genvbound, SCIP_Bool global, SCIP_RESULT *result, int *nchgbds)
 
static SCIP_RETCODE freeEventData (SCIP *scip, SCIP_EVENTDATA **eventdata)
 
static SCIP_RETCODE freeAllEventData (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE dropAndFreeEvents (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE getEventData (SCIP *scip, SCIP_PROPDATA *propdata, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype, SCIP_EVENTDATA **eventdata)
 
static SCIP_RETCODE addEventData (SCIP *scip, SCIP_PROPDATA *propdata, SCIP_VAR *var, int startindex, int startcomponent, SCIP_BOUNDTYPE boundtype)
 
static SCIP_RETCODE setUpEvents (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE sortGenVBounds (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE applyGenVBounds (SCIP *scip, SCIP_PROP *prop, SCIP_Bool global, SCIP_RESULT *result, int *nchgbds)
 
static SCIP_RETCODE initPropdata (SCIP *scip, SCIP_PROPDATA *propdata)
 
static SCIP_RETCODE addNewGenVBound (SCIP *scip, SCIP_PROPDATA *propdata, GENVBOUND *genvbound)
 
static SCIP_RETCODE execGenVBounds (SCIP *scip, SCIP_PROPDATA *propdata, SCIP_RESULT *result, SCIP_Bool local, int *nchgbds)
 
static SCIP_RETCODE createConstraints (SCIP *scip, SCIP_PROPDATA *propdata)
 
SCIP_RETCODE SCIPgenVBoundAdd (SCIP *scip, SCIP_PROP *genvboundprop, SCIP_VAR **vars, SCIP_VAR *var, SCIP_Real *coefs, int ncoefs, SCIP_Real coefcutoffbound, SCIP_Real constant, SCIP_BOUNDTYPE boundtype)
 
static SCIP_DECL_PROPCOPY (propCopyGenvbounds)
 
static SCIP_DECL_PROPINIT (propInitGenvbounds)
 
static SCIP_DECL_PROPPRESOL (propPresolGenvbounds)
 
static SCIP_DECL_PROPINITPRE (propInitpreGenvbounds)
 
static SCIP_DECL_PROPEXITPRE (propExitpreGenvbounds)
 
static SCIP_DECL_PROPEXIT (propExitGenvbounds)
 
static SCIP_DECL_PROPEXEC (propExecGenvbounds)
 
static SCIP_DECL_PROPRESPROP (propRespropGenvbounds)
 
static SCIP_DECL_PROPEXITSOL (propExitsolGenvbounds)
 
static SCIP_DECL_PROPFREE (propFreeGenvbounds)
 
static SCIP_DECL_EVENTEXEC (eventExecGenvbounds)
 
SCIP_RETCODE SCIPincludePropGenvbounds (SCIP *scip)
 

Macro Definition Documentation

◆ PROP_NAME

#define PROP_NAME   "genvbounds"

Definition at line 58 of file prop_genvbounds.c.

Referenced by SCIPgenVBoundAdd().

◆ PROP_DESC

#define PROP_DESC   "generalized variable bounds propagator"

Definition at line 59 of file prop_genvbounds.c.

◆ PROP_TIMING

#define PROP_TIMING   SCIP_PROPTIMING_ALWAYS

Definition at line 60 of file prop_genvbounds.c.

◆ PROP_PRIORITY

#define PROP_PRIORITY   3000000

propagator priority

Definition at line 61 of file prop_genvbounds.c.

◆ PROP_FREQ

#define PROP_FREQ   1

propagator frequency

Definition at line 62 of file prop_genvbounds.c.

◆ PROP_DELAY

#define PROP_DELAY   FALSE

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

Definition at line 63 of file prop_genvbounds.c.

◆ PROP_PRESOL_PRIORITY

#define PROP_PRESOL_PRIORITY   -2000000

priority of the presolving method (>= 0: before, < 0: after constraint handlers); combined with presolvers

Definition at line 66 of file prop_genvbounds.c.

◆ PROP_PRESOLTIMING

#define PROP_PRESOLTIMING   SCIP_PRESOLTIMING_FAST /* timing of the presolving method (fast, medium, or exhaustive) */

Definition at line 69 of file prop_genvbounds.c.

◆ PROP_PRESOL_MAXROUNDS

#define PROP_PRESOL_MAXROUNDS   -1

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

Definition at line 70 of file prop_genvbounds.c.

◆ DEFAULT_GLOBAL_PROPAGATION

#define DEFAULT_GLOBAL_PROPAGATION   TRUE

apply global propagation?

Definition at line 73 of file prop_genvbounds.c.

◆ DEFAULT_PROPAGATE_IN_ROOT_NODE

#define DEFAULT_PROPAGATE_IN_ROOT_NODE   TRUE

apply genvbounds in root node if no new incumbent was found?

Definition at line 74 of file prop_genvbounds.c.

◆ DEFAULT_SORT

#define DEFAULT_SORT   TRUE

sort genvbounds and wait for bound change events? (otherwise all genvbounds are applied in each node)

Definition at line 75 of file prop_genvbounds.c.

◆ DEFAULT_PROPASCONSS

#define DEFAULT_PROPASCONSS   FALSE

should genvbounds be transformed to (linear) constraints?

Definition at line 78 of file prop_genvbounds.c.

◆ EVENTHDLR_NAME

#define EVENTHDLR_NAME   "genvbounds"

Definition at line 80 of file prop_genvbounds.c.

◆ EVENTHDLR_DESC

#define EVENTHDLR_DESC   "event handler for generalized variable bounds propagator"

Definition at line 81 of file prop_genvbounds.c.

Typedef Documentation

◆ GENVBOUND

typedef struct GenVBound GENVBOUND

Definition at line 104 of file prop_genvbounds.c.

Function Documentation

◆ getCutoffboundGenVBound()

static SCIP_Real getCutoffboundGenVBound ( SCIP scip)
static

returns correct cutoff bound value

Parameters
scipSCIP data structure

Definition at line 170 of file prop_genvbounds.c.

Referenced by createConstraints(), getGenVBoundsBound(), and resolveGenVBoundPropagation().

◆ getGenVBound()

static GENVBOUND* getGenVBound ( SCIP scip,
SCIP_PROPDATA propdata,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype 
)
static

returns corresponding genvbound in genvboundstore if there is one, NULL otherwise

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator
varbounds variable
boundtypebounds type

Definition at line 191 of file prop_genvbounds.c.

References GenVBound::boundtype, GenVBound::coefs, GenVBound::constant, GenVBound::cutoffcoef, FALSE, getGenVBoundsMinActivity(), GenVBound::ncoefs, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPdebugMsgPrint, SCIPhashmapGetImage(), SCIPisZero(), SCIPvarGetName(), TRUE, GenVBound::var, and GenVBound::vars.

Referenced by addNewGenVBound(), and SCIPgenVBoundAdd().

◆ getGenVBoundsMinActivity()

static SCIP_Real getGenVBoundsMinActivity ( SCIP scip,
SCIP_VAR **  vars,
SCIP_Real coefs,
int  nvars,
SCIP_Bool  global 
)
static

calculates the minactivity of a linear combination of variables stored in an array

Parameters
scipSCIP data structure
varsarray of variables
coefsarray of coefficients
nvarsnumber of variables
globaluse global variable bounds?

Definition at line 258 of file prop_genvbounds.c.

References bound, GenVBound::coefs, getGenVBoundsMinActivityConflict(), NULL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and GenVBound::vars.

Referenced by getGenVBound(), and getGenVBoundsBound().

◆ getGenVBoundsMinActivityConflict()

static SCIP_Real getGenVBoundsMinActivityConflict ( SCIP scip,
SCIP_VAR **  vars,
SCIP_Real coefs,
int  nvars,
SCIP_BDCHGIDX bdchgidx 
)
static

calculates the minactivity of a linear combination of variables stored in the current conflict set

Parameters
scipSCIP data structure
varsarray of variables
coefsarray of coefficients
nvarsnumber of variables
bdchgidxbound change at which minactivity should be computed; if NULL use local bounds

Definition at line 299 of file prop_genvbounds.c.

References bound, getGenVBoundsBound(), NULL, SCIP_Bool, SCIP_Real, SCIPgetConflictVarLb(), SCIPgetConflictVarUb(), SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.

Referenced by getGenVBoundsMinActivity(), and resolveGenVBoundPropagation().

◆ getGenVBoundsBound()

◆ createStartingData()

static SCIP_RETCODE createStartingData ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

allocate local and global startindices, startcomponents and startmap

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 446 of file prop_genvbounds.c.

References freeStartingData(), NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPblkmem(), SCIPdebugMsg, and SCIPhashmapCreate().

Referenced by execGenVBounds(), and getGenVBoundsBound().

◆ freeStartingData()

static SCIP_RETCODE freeStartingData ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

free local and global startindices, startcomponents and startmap

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 487 of file prop_genvbounds.c.

References fillGlobalStartingData(), NULL, SCIP_OKAY, SCIPdebugMsg, SCIPfreeBlockMemoryArray, and SCIPhashmapFree().

Referenced by createConstraints(), createStartingData(), execGenVBounds(), freeGenVBounds(), and freeGenVBoundsRelaxOnly().

◆ fillGlobalStartingData()

static SCIP_RETCODE fillGlobalStartingData ( SCIP scip,
SCIP_PROPDATA propdata 
)
static
Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 532 of file prop_genvbounds.c.

References NULL, resetLocalStartingData(), SCIP_CALL, SCIP_OKAY, SCIPdebugMsg, SCIPisNegative(), SCIPisZero(), and SCIPreallocBlockMemoryArray.

Referenced by execGenVBounds(), and freeStartingData().

◆ resetLocalStartingData()

static SCIP_RETCODE resetLocalStartingData ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

resets local starting data

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 586 of file prop_genvbounds.c.

References freeComponentsData(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPhashmapRemoveAll().

Referenced by applyGenVBounds(), and fillGlobalStartingData().

◆ freeComponentsData()

static SCIP_RETCODE freeComponentsData ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

frees sorted components data

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 606 of file prop_genvbounds.c.

References freeGenVBound(), NULL, SCIP_OKAY, SCIPdebugMsg, and SCIPfreeBlockMemoryArray.

Referenced by createConstraints(), execGenVBounds(), freeGenVBounds(), freeGenVBoundsRelaxOnly(), and resetLocalStartingData().

◆ freeGenVBound()

static SCIP_RETCODE freeGenVBound ( SCIP scip,
GENVBOUND genvbound 
)
static

◆ freeGenVBounds()

static SCIP_RETCODE freeGenVBounds ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

◆ freeGenVBoundsRelaxOnly()

static SCIP_RETCODE freeGenVBoundsRelaxOnly ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

helper function to release relax-only genvbounds

Definition at line 713 of file prop_genvbounds.c.

References FALSE, freeComponentsData(), freeGenVBound(), freeStartingData(), NULL, resolveGenVBoundPropagation(), SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPhashmapRemove(), and TRUE.

Referenced by freeGenVBounds().

◆ resolveGenVBoundPropagation()

static SCIP_RETCODE resolveGenVBoundPropagation ( SCIP scip,
GENVBOUND genvbound,
SCIP_BDCHGIDX bdchgidx,
SCIP_Real boundval,
SCIP_Bool success 
)
static

resolves propagation of lower bound on +/- left-hand side variable of a generalized variable bound

Parameters
scipSCIP data structure
genvboundgenvbound data structure
bdchgidxthe index of the bound change, representing the point of time where the change took place
boundvalpointer to lower bound value on +/- left-hand side variable
successwas the explanation succesful?

Definition at line 765 of file prop_genvbounds.c.

References analyzeGenVBoundConflict(), GenVBound::boundtype, GenVBound::coefs, GenVBound::constant, GenVBound::cutoffcoef, FALSE, getCutoffboundGenVBound(), getGenVBoundsMinActivityConflict(), MAX, GenVBound::ncoefs, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddConflictRelaxedLb(), SCIPaddConflictRelaxedUb(), SCIPdebugMsg, SCIPfeasCeil(), SCIPgetConflictVarLb(), SCIPgetConflictVarUb(), SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPisEQ(), SCIPisGE(), SCIPisGT(), SCIPisLE(), SCIPisLT(), SCIPisPositive(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), TRUE, GenVBound::var, and GenVBound::vars.

Referenced by analyzeGenVBoundConflict(), and freeGenVBoundsRelaxOnly().

◆ analyzeGenVBoundConflict()

◆ applyGenVBound()

static SCIP_RETCODE applyGenVBound ( SCIP scip,
SCIP_PROP prop,
GENVBOUND genvbound,
SCIP_Bool  global,
SCIP_RESULT result,
int *  nchgbds 
)
static

apply propagation for one generalized variable bound; also if the left-hand side variable is locally fixed, we compute the right-hand side minactivity to possibly detect infeasibility

Parameters
scipSCIP data structure
propgenvbounds propagator
genvboundgenvbound data structure
globalapply global bound changes? (global: true, local: false)
resultresult pointer
nchgbdscounter to increment if bound was tightened

Definition at line 1115 of file prop_genvbounds.c.

References analyzeGenVBoundConflict(), GenVBound::boundtype, FALSE, freeEventData(), getGenVBoundsBound(), GenVBound::index, GenVBound::ncoefs, NULL, REALABS, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_STAGE_PRESOLVING, SCIP_SUCCESS, SCIP_VARSTATUS_MULTAGGR, SCIPdebugMessage, SCIPdebugMsg, SCIPdebugPrintf, SCIPgetStage(), SCIPinferVarLbProp(), SCIPinferVarUbProp(), SCIPisInfinity(), SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and GenVBound::var.

Referenced by analyzeGenVBoundConflict(), and applyGenVBounds().

◆ freeEventData()

static SCIP_RETCODE freeEventData ( SCIP scip,
SCIP_EVENTDATA **  eventdata 
)
static

frees event data

Parameters
scipSCIP data structure
eventdataevent data to be freed

Definition at line 1249 of file prop_genvbounds.c.

References freeAllEventData(), NULL, SCIP_OKAY, SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArray.

Referenced by applyGenVBound(), and freeAllEventData().

◆ freeAllEventData()

static SCIP_RETCODE freeAllEventData ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

frees all eventdata stored

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 1273 of file prop_genvbounds.c.

References dropAndFreeEvents(), freeEventData(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemoryArray, and SCIPhashmapFree().

Referenced by dropAndFreeEvents(), and freeEventData().

◆ dropAndFreeEvents()

static SCIP_RETCODE dropAndFreeEvents ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

drops all events caught by genvbounds propagator and frees their data

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 1320 of file prop_genvbounds.c.

References freeAllEventData(), getEventData(), NULL, SCIP_CALL, SCIP_EVENTTYPE_LBTIGHTENED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPdebugMsg, SCIPdropVarEvent(), and GenVBound::var.

Referenced by createConstraints(), execGenVBounds(), and freeAllEventData().

◆ getEventData()

static SCIP_RETCODE getEventData ( SCIP scip,
SCIP_PROPDATA propdata,
SCIP_VAR var,
SCIP_BOUNDTYPE  boundtype,
SCIP_EVENTDATA **  eventdata 
)
static

returns the corresponding event data entry in the corresponding array, if there is one; if not: allocates a new event data entry, stores it in the array and returns its adress

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator
varvariable
boundtypetype of bound
eventdataevent data to return

Definition at line 1369 of file prop_genvbounds.c.

References addEventData(), NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPhashmapInsert(), and GenVBound::var.

Referenced by addEventData(), and dropAndFreeEvents().

◆ addEventData()

static SCIP_RETCODE addEventData ( SCIP scip,
SCIP_PROPDATA propdata,
SCIP_VAR var,
int  startindex,
int  startcomponent,
SCIP_BOUNDTYPE  boundtype 
)
static

adds an event to the event array lbevents (if boundtype == SCIP_BOUNDTYPE_LOWER) or ubevents (if boundtype == SCIP_BOUNDTYPE_UPPER)

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator
varvariable thats event to be added
startindexstarting index
startcomponentstarting components index
boundtypetype of bound

Definition at line 1421 of file prop_genvbounds.c.

References getEventData(), NULL, SCIP_CALL, SCIP_OKAY, and setUpEvents().

Referenced by getEventData(), and setUpEvents().

◆ setUpEvents()

◆ sortGenVBounds()

static SCIP_RETCODE sortGenVBounds ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

performs a topological sort on genvboundstore array

The genvbounds graph is defined as follows: Given two genvbounds

(genvbound1) c1 * x_i1 >= RHS1

and

(genvbound2) c2 * x_i2 >= RHS2,

there is an arc from genvbound1 to genvbound2 iff c1 = +1 and x_i1 appears with positive coefficient in RHS2 or c1 = -1 and x_i1 appears with negative coefficient in RHS2; in this case, a bound change of x_i1 deduced from genvbound1 improves genvbound2's minactivity in RHS2.

The method computes the strongly connected components and sorts them topologically. The order of the nodes in an strongly connected component is arbitrary.

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 1605 of file prop_genvbounds.c.

References applyGenVBounds(), GenVBound::coefs, GenVBound::index, GenVBound::ncoefs, nnodes, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPcreateDigraph(), SCIPdebugMsg, SCIPdigraphAddArc(), SCIPdigraphComputeDirectedComponents(), SCIPdigraphComputeUndirectedComponents(), SCIPdigraphFree(), SCIPdigraphGetComponent(), SCIPdigraphGetNComponents(), SCIPdigraphGetNNodes(), SCIPdigraphTopoSortComponents(), SCIPfreeBufferArray, SCIPhashmapExists(), SCIPhashmapGetImage(), SCIPisNegative(), SCIPisPositive(), TRUE, and GenVBound::vars.

Referenced by execGenVBounds(), and setUpEvents().

◆ applyGenVBounds()

static SCIP_RETCODE applyGenVBounds ( SCIP scip,
SCIP_PROP prop,
SCIP_Bool  global,
SCIP_RESULT result,
int *  nchgbds 
)
static

apply propagation of generalized variable bounds

Parameters
scipSCIP data structure
propgenvbounds propagator
globaluse global variable bounds for propagation?
resultresult pointer
nchgbdscounter to increase by the number of changed bounds

Definition at line 1756 of file prop_genvbounds.c.

References applyGenVBound(), initPropdata(), NULL, resetLocalStartingData(), SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPdebugMsg, SCIPgetDepth(), SCIPinProbing(), SCIPpropGetData(), and SCIPvarIsActive().

Referenced by execGenVBounds(), and sortGenVBounds().

◆ initPropdata()

static SCIP_RETCODE initPropdata ( SCIP scip,
SCIP_PROPDATA propdata 
)
static

initialize propagator data

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator

Definition at line 1847 of file prop_genvbounds.c.

References addNewGenVBound(), BMSclearMemoryArray, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPblkmem(), SCIPdebugMsg, SCIPgetNVars(), and SCIPhashmapCreate().

Referenced by applyGenVBounds(), and SCIPgenVBoundAdd().

◆ addNewGenVBound()

static SCIP_RETCODE addNewGenVBound ( SCIP scip,
SCIP_PROPDATA propdata,
GENVBOUND genvbound 
)
static

adds a new genvbound to genvboundstore array and sets a hashmap entry

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator
genvboundgenvbound to be added

Definition at line 1877 of file prop_genvbounds.c.

References execGenVBounds(), getGenVBound(), NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPhashmapInsert(), and SCIPreallocBlockMemoryArray.

Referenced by initPropdata(), and SCIPgenVBoundAdd().

◆ execGenVBounds()

static SCIP_RETCODE execGenVBounds ( SCIP scip,
SCIP_PROPDATA propdata,
SCIP_RESULT result,
SCIP_Bool  local,
int *  nchgbds 
)
static

runs propagation routine

Parameters
scipSCIP data structure
propdatadata of the genvbounds propagator
resultresult pointer
localshould local propagation be applied?
nchgbdscounter to increase by the number of changed bounds

Definition at line 1917 of file prop_genvbounds.c.

References applyGenVBounds(), createConstraints(), createStartingData(), dropAndFreeEvents(), FALSE, fillGlobalStartingData(), freeComponentsData(), freeStartingData(), NULL, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPdebugMsg, SCIPgetCurrentNode(), SCIPgetCutoffbound(), SCIPgetDepth(), SCIPinProbing(), SCIPisFeasLT(), setUpEvents(), sortGenVBounds(), and TRUE.

Referenced by addNewGenVBound().

◆ createConstraints()

◆ SCIP_DECL_PROPCOPY()

static SCIP_DECL_PROPCOPY ( propCopyGenvbounds  )
static

copy method for propagator plugins (called when SCIP copies plugins)

Note
The UG framework assumes that all default plug-ins of SCIP implement a copy callback.

Definition at line 2314 of file prop_genvbounds.c.

Referenced by SCIPgenVBoundAdd().

◆ SCIP_DECL_PROPINIT()

static SCIP_DECL_PROPINIT ( propInitGenvbounds  )
static

initialization method of propagator (called after problem was transformed)

Definition at line 2328 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPPRESOL()

static SCIP_DECL_PROPPRESOL ( propPresolGenvbounds  )
static

presolving method of propagator

Definition at line 2373 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPINITPRE()

static SCIP_DECL_PROPINITPRE ( propInitpreGenvbounds  )
static

presolving initialization method of propagator (called when presolving is about to begin)

Definition at line 2408 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPEXITPRE()

static SCIP_DECL_PROPEXITPRE ( propExitpreGenvbounds  )
static

presolving deinitialization method of propagator (called after presolving has been finished)

Definition at line 2436 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPEXIT()

static SCIP_DECL_PROPEXIT ( propExitGenvbounds  )
static

deinitialization method of propagator (called before transformed problem is freed)

Definition at line 2550 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPEXEC()

static SCIP_DECL_PROPEXEC ( propExecGenvbounds  )
static

execution method of propagator

Definition at line 2570 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPRESPROP()

static SCIP_DECL_PROPRESPROP ( propRespropGenvbounds  )
static

propagation conflict resolving method of propagator

Definition at line 2650 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPEXITSOL()

static SCIP_DECL_PROPEXITSOL ( propExitsolGenvbounds  )
static

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

Definition at line 2719 of file prop_genvbounds.c.

◆ SCIP_DECL_PROPFREE()

static SCIP_DECL_PROPFREE ( propFreeGenvbounds  )
static

destructor of propagator to free user data (called when SCIP is exiting)

Definition at line 2752 of file prop_genvbounds.c.

◆ SCIP_DECL_EVENTEXEC()

static SCIP_DECL_EVENTEXEC ( eventExecGenvbounds  )
static

Definition at line 2775 of file prop_genvbounds.c.