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_tree.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_PROP *prop, SCIP_PROPDATA *propdata)
     
    static SCIP_RETCODE freeGenVBoundsRelaxOnly (SCIP *scip, SCIP_PROP *prop, 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_PROP *prop, 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_PROP *prop, 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 68 of file prop_genvbounds.c.

    ◆ PROP_DESC

    #define PROP_DESC   "generalized variable bounds propagator"

    Definition at line 69 of file prop_genvbounds.c.

    ◆ PROP_TIMING

    #define PROP_TIMING   SCIP_PROPTIMING_ALWAYS

    Definition at line 70 of file prop_genvbounds.c.

    ◆ PROP_PRIORITY

    #define PROP_PRIORITY   3000000

    propagator priority

    Definition at line 71 of file prop_genvbounds.c.

    ◆ PROP_FREQ

    #define PROP_FREQ   1

    propagator frequency

    Definition at line 72 of file prop_genvbounds.c.

    ◆ PROP_DELAY

    #define PROP_DELAY   FALSE

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

    Definition at line 74 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 76 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 77 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 79 of file prop_genvbounds.c.

    ◆ DEFAULT_GLOBAL_PROPAGATION

    #define DEFAULT_GLOBAL_PROPAGATION   TRUE

    apply global propagation?

    Definition at line 80 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 81 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 83 of file prop_genvbounds.c.

    ◆ DEFAULT_PROPASCONSS

    #define DEFAULT_PROPASCONSS   FALSE

    should genvbounds be transformed to (linear) constraints?

    Definition at line 84 of file prop_genvbounds.c.

    ◆ EVENTHDLR_NAME

    #define EVENTHDLR_NAME   "genvbounds"

    Definition at line 86 of file prop_genvbounds.c.

    ◆ EVENTHDLR_DESC

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

    Definition at line 87 of file prop_genvbounds.c.

    Typedef Documentation

    ◆ GENVBOUND

    typedef struct GenVBound GENVBOUND

    Definition at line 110 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 177 of file prop_genvbounds.c.

    References NULL, SCIPdebugMsg, SCIPgetCutoffbound(), SCIPgetTransObjoffset(), and SCIPgetTransObjscale().

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

    ◆ 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 198 of file prop_genvbounds.c.

    References NULL, SCIP_BOUNDTYPE_LOWER, and SCIPhashmapGetImage().

    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 265 of file prop_genvbounds.c.

    References bound, NULL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().

    Referenced by 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 306 of file prop_genvbounds.c.

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

    Referenced by resolveGenVBoundPropagation().

    ◆ getGenVBoundsBound()

    static SCIP_Real getGenVBoundsBound ( SCIP scip,
    GENVBOUND genvbound,
    SCIP_Bool  global 
    )
    static

    returns a valid bound given by a generalized variable bound

    Parameters
    scipSCIP data structure
    genvboundgeneralized variable bound
    globaluse global variable bounds?

    Definition at line 366 of file prop_genvbounds.c.

    References GenVBound::boundtype, GenVBound::coefs, GenVBound::constant, GenVBound::cutoffcoef, getCutoffboundGenVBound(), getGenVBoundsMinActivity(), GenVBound::ncoefs, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), and GenVBound::vars.

    Referenced by applyGenVBound().

    ◆ 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 453 of file prop_genvbounds.c.

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

    Referenced by execGenVBounds().

    ◆ 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 494 of file prop_genvbounds.c.

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

    Referenced by createConstraints(), 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 539 of file prop_genvbounds.c.

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

    Referenced by execGenVBounds().

    ◆ 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 593 of file prop_genvbounds.c.

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

    Referenced by applyGenVBounds(), and SCIP_DECL_EVENTEXEC().

    ◆ 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 613 of file prop_genvbounds.c.

    References NULL, SCIP_OKAY, SCIPdebugMsg, and SCIPfreeBlockMemoryArray.

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

    ◆ freeGenVBound()

    static SCIP_RETCODE freeGenVBound ( SCIP scip,
    GENVBOUND genvbound 
    )
    static

    ◆ freeGenVBounds()

    ◆ freeGenVBoundsRelaxOnly()

    static SCIP_RETCODE freeGenVBoundsRelaxOnly ( SCIP scip,
    SCIP_PROP prop,
    SCIP_PROPDATA propdata 
    )
    static

    ◆ 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 783 of file prop_genvbounds.c.

    References 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 SCIP_DECL_PROPRESPROP().

    ◆ 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 1133 of file prop_genvbounds.c.

    References analyzeGenVBoundConflict(), GenVBound::boundtype, FALSE, 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, SCIPdebugMsg, SCIPgetStage(), SCIPinferVarLbProp(), SCIPinferVarUbProp(), SCIPisInfinity(), SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and GenVBound::var.

    Referenced by 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 1267 of file prop_genvbounds.c.

    References NULL, SCIP_OKAY, SCIPfreeBlockMemory, and SCIPfreeBlockMemoryArray.

    Referenced by 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 1291 of file prop_genvbounds.c.

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

    Referenced by dropAndFreeEvents().

    ◆ 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 1338 of file prop_genvbounds.c.

    References freeAllEventData(), NULL, SCIP_CALL, SCIP_EVENTTYPE_LBTIGHTENED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_OKAY, SCIPdebugMsg, and SCIPdropVarEvent().

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

    ◆ 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 1387 of file prop_genvbounds.c.

    References NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPhashmapExists(), SCIPhashmapGetImage(), and SCIPhashmapInsert().

    Referenced by addEventData().

    ◆ 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 1439 of file prop_genvbounds.c.

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

    Referenced by 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 1623 of file prop_genvbounds.c.

    References GenVBound::coefs, GenVBound::index, GenVBound::ncoefs, nnodes, NULL, 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().

    ◆ 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 1774 of file prop_genvbounds.c.

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

    Referenced by execGenVBounds().

    ◆ 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 1865 of file prop_genvbounds.c.

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

    Referenced by SCIPgenVBoundAdd().

    ◆ addNewGenVBound()

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

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

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

    Definition at line 1896 of file prop_genvbounds.c.

    References GenVBound::boundtype, getGenVBound(), GenVBound::index, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPhashmapInsert(), SCIPpropSetTimingmask(), SCIPreallocBlockMemoryArray, and GenVBound::var.

    Referenced by 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 1941 of file prop_genvbounds.c.

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

    Referenced by SCIP_DECL_PROPEXEC(), and SCIP_DECL_PROPPRESOL().

    ◆ 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 2342 of file prop_genvbounds.c.

    References NULL, PROP_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludePropGenvbounds(), and SCIPpropGetName().

    ◆ SCIP_DECL_PROPINIT()

    static SCIP_DECL_PROPINIT ( propInitGenvbounds  )
    static

    initialization method of propagator (called after problem was transformed)

    Definition at line 2356 of file prop_genvbounds.c.

    References FALSE, NULL, PROP_NAME, SCIP_OKAY, SCIP_PROPTIMING_NONE, SCIPinfinity(), SCIPpropGetData(), SCIPpropGetName(), SCIPpropGetTimingmask(), and SCIPpropSetTimingmask().

    ◆ SCIP_DECL_PROPPRESOL()

    static SCIP_DECL_PROPPRESOL ( propPresolGenvbounds  )
    static

    ◆ SCIP_DECL_PROPINITPRE()

    static SCIP_DECL_PROPINITPRE ( propInitpreGenvbounds  )
    static

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

    Definition at line 2440 of file prop_genvbounds.c.

    References NULL, PROP_NAME, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), SCIPdebugMsg, SCIPgetProbName(), SCIPpropGetData(), SCIPpropGetName(), SCIPvarGetNLocksDownType(), and SCIPvarGetNLocksUpType().

    ◆ SCIP_DECL_PROPEXITPRE()

    ◆ SCIP_DECL_PROPEXIT()

    static SCIP_DECL_PROPEXIT ( propExitGenvbounds  )
    static

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

    Definition at line 2587 of file prop_genvbounds.c.

    References freeGenVBounds(), NULL, PROP_NAME, SCIP_CALL, SCIP_OKAY, SCIPpropGetData(), SCIPpropGetName(), and SCIPpropSetTimingmask().

    ◆ SCIP_DECL_PROPEXEC()

    ◆ SCIP_DECL_PROPRESPROP()

    ◆ 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 2753 of file prop_genvbounds.c.

    References dropAndFreeEvents(), freeGenVBounds(), freeGenVBoundsRelaxOnly(), NULL, PROP_NAME, SCIP_CALL, SCIP_OKAY, SCIPdebugMsg, SCIPgetProbName(), SCIPisInRestart(), SCIPpropGetData(), and SCIPpropGetName().

    ◆ SCIP_DECL_PROPFREE()

    static SCIP_DECL_PROPFREE ( propFreeGenvbounds  )
    static

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

    Definition at line 2786 of file prop_genvbounds.c.

    References NULL, PROP_NAME, SCIP_OKAY, SCIPfreeBlockMemory, SCIPpropGetData(), SCIPpropGetName(), and SCIPpropSetData().

    ◆ SCIP_DECL_EVENTEXEC()