Detailed Description
Pseudo objective propagator.
This propagator propagates the objective function using the cutoff bound and the pseudo objective value. The pseudo objective value can be seen as minimum activity of the linear objective function. Using this, this propagator checks if variables with non-zero objective coefficients can exceed the cutoff bound. If this is the case the corresponding bound can be tightened.
Definition in file prop_pseudoobj.c.
#include "blockmemshell/memory.h"
#include "scip/prop_pseudoobj.h"
#include "scip/pub_event.h"
#include "scip/pub_implics.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_prop.h"
#include "scip/pub_var.h"
#include "scip/scip_conflict.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_pricer.h"
#include "scip/scip_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_prop.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
#include "scip/dbldblarith.h"
#include <string.h>
Go to the source code of this file.
Data Structures | |
struct | SCIP_ObjImplics |
Macros | |
#define | PROP_NAME "pseudoobj" |
#define | PROP_DESC "pseudo objective function propagator" |
#define | PROP_TIMING SCIP_PROPTIMING_BEFORELP | SCIP_PROPTIMING_DURINGLPLOOP | SCIP_PROPTIMING_AFTERLPLOOP |
#define | PROP_PRIORITY 3000000 |
#define | PROP_FREQ 1 |
#define | PROP_DELAY FALSE |
#define | PROP_PRESOL_PRIORITY +6000000 |
#define | PROP_PRESOL_MAXROUNDS -1 |
#define | PROP_PRESOLTIMING SCIP_PRESOLTIMING_FAST /* timing of the presolving method (fast, medium, or exhaustive) */ |
#define | EVENTHDLR_NAME "pseudoobj" |
#define | EVENTHDLR_DESC "bound change event handler for pseudo objective function propagator" |
#define | DEFAULT_MINUSELESS 100 |
#define | DEFAULT_MAXVARSFRAC 0.1 |
#define | DEFAULT_PROPFULLINROOT TRUE |
#define | DEFAULT_PROPCUTOFFBOUND TRUE |
#define | DEFAULT_FORCE FALSE |
#define | DEFAULT_MAXNEWVARS 1000 |
#define | DEFAULT_PROPUSEIMPLICS TRUE |
#define | DEFAULT_RESPROPUSEIMPLICS TRUE |
#define | DEFAULT_MAXIMPLVARS 50000 |
#define | MAX_CLIQUELENGTH 50 |
Typedefs | |
typedef struct SCIP_ObjImplics | SCIP_OBJIMPLICS |
Macro Definition Documentation
◆ PROP_NAME
#define PROP_NAME "pseudoobj" |
Definition at line 68 of file prop_pseudoobj.c.
◆ PROP_DESC
#define PROP_DESC "pseudo objective function propagator" |
Definition at line 69 of file prop_pseudoobj.c.
◆ PROP_TIMING
#define PROP_TIMING SCIP_PROPTIMING_BEFORELP | SCIP_PROPTIMING_DURINGLPLOOP | SCIP_PROPTIMING_AFTERLPLOOP |
Definition at line 70 of file prop_pseudoobj.c.
◆ PROP_PRIORITY
#define PROP_PRIORITY 3000000 |
propagator priority
Definition at line 71 of file prop_pseudoobj.c.
◆ PROP_FREQ
#define PROP_FREQ 1 |
propagator frequency
Definition at line 72 of file prop_pseudoobj.c.
◆ PROP_DELAY
#define PROP_DELAY FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 73 of file prop_pseudoobj.c.
◆ PROP_PRESOL_PRIORITY
#define PROP_PRESOL_PRIORITY +6000000 |
priority of the presolving method (>= 0: before, < 0: after constraint handlers); combined with presolvers
Definition at line 74 of file prop_pseudoobj.c.
◆ PROP_PRESOL_MAXROUNDS
#define PROP_PRESOL_MAXROUNDS -1 |
maximal number of presolving rounds the presolver participates in (-1: no limit)
Definition at line 76 of file prop_pseudoobj.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_pseudoobj.c.
◆ EVENTHDLR_NAME
#define EVENTHDLR_NAME "pseudoobj" |
Definition at line 79 of file prop_pseudoobj.c.
◆ EVENTHDLR_DESC
#define EVENTHDLR_DESC "bound change event handler for pseudo objective function propagator" |
Definition at line 80 of file prop_pseudoobj.c.
◆ DEFAULT_MINUSELESS
#define DEFAULT_MINUSELESS 100 |
minimal number of successive non-binary variable propagator whithout a bound reduction before aborted
Definition at line 83 of file prop_pseudoobj.c.
◆ DEFAULT_MAXVARSFRAC
#define DEFAULT_MAXVARSFRAC 0.1 |
maximal fraction of non-binary variables with non-zero objective without a bound reduction before aborted
Definition at line 85 of file prop_pseudoobj.c.
◆ DEFAULT_PROPFULLINROOT
#define DEFAULT_PROPFULLINROOT TRUE |
do we want to propagate all non-binary variables if we are propagating the root node?
Definition at line 86 of file prop_pseudoobj.c.
◆ DEFAULT_PROPCUTOFFBOUND
#define DEFAULT_PROPCUTOFFBOUND TRUE |
propagate new cutoff bound directly globally
Definition at line 87 of file prop_pseudoobj.c.
◆ DEFAULT_FORCE
#define DEFAULT_FORCE FALSE |
should the propagator be forced even if active pricer are present? Note that can be done if it is known that the pseudo objective activity is given by the zero bound for all variables which are currently not present in the problem
Definition at line 91 of file prop_pseudoobj.c.
◆ DEFAULT_MAXNEWVARS
#define DEFAULT_MAXNEWVARS 1000 |
number of variable added after the propagator is reinitialized?
Definition at line 92 of file prop_pseudoobj.c.
◆ DEFAULT_PROPUSEIMPLICS
#define DEFAULT_PROPUSEIMPLICS TRUE |
use implications to strengthen the propagation of binary variable (increasing the objective change)?
Definition at line 93 of file prop_pseudoobj.c.
◆ DEFAULT_RESPROPUSEIMPLICS
#define DEFAULT_RESPROPUSEIMPLICS TRUE |
use implications to strengthen the resolve propagation of binary variable (increasing the objective change)?
Definition at line 94 of file prop_pseudoobj.c.
◆ DEFAULT_MAXIMPLVARS
#define DEFAULT_MAXIMPLVARS 50000 |
maximum number of binary variables the implications are used if turned on (-1: unlimited)?
Definition at line 95 of file prop_pseudoobj.c.
◆ MAX_CLIQUELENGTH
#define MAX_CLIQUELENGTH 50 |
Definition at line 833 of file prop_pseudoobj.c.
Typedef Documentation
◆ SCIP_OBJIMPLICS
typedef struct SCIP_ObjImplics SCIP_OBJIMPLICS |
implications in the form x == 0 or x == 1 ==> y == 0 or y == 1 for (x and y binary)
Definition at line 112 of file prop_pseudoobj.c.
Function Documentation
◆ checkImplicsApplied()
check that the implications are applied for a globally fixed variable
- Parameters
-
scip SCIP data structure var variable to check the implications
Definition at line 168 of file prop_pseudoobj.c.
References SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPisGE(), SCIPisLE(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetNImpls(), and SCIPvarGetUbLocal().
Referenced by propdataInit().
◆ checkGlbfirstnonfixed()
|
static |
check if the global fixed indices are correct
- Parameters
-
propdata propagator data
Definition at line 215 of file prop_pseudoobj.c.
References NULL, SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().
Referenced by propagateCutoffboundBinvars(), propagateCutoffboundGlobally(), propagateLowerbound(), and resolvePropagation().
◆ SCIP_DECL_SORTPTRCOMP() [1/2]
|
static |
compares objective implications w.r.t. their maximum contribution
Definition at line 246 of file prop_pseudoobj.c.
References SCIP_ObjImplics::maxobjchg.
◆ SCIP_DECL_SORTPTRCOMP() [2/2]
|
static |
compare variables w.r.t. (i) the absolute value the objective coefficient; (ii) the locks which indicate most effect – for the variables with a positive (negative) objective coefficient the down (up) lock is used since this lock indicates that tightened of the upper (lower) bound will triegger further domain propagations; (iii) the other locks; (iv) variable problem index;
Definition at line 272 of file prop_pseudoobj.c.
References REALABS, SCIP_LOCKTYPE_MODEL, SCIPvarCompare(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), and SCIPvarGetObj().
◆ SCIP_DECL_HASHGETKEY()
|
static |
hash key retrieval function for cliques
Definition at line 329 of file prop_pseudoobj.c.
◆ SCIP_DECL_HASHKEYEQ()
|
static |
returns TRUE iff the cliques are equal
Definition at line 336 of file prop_pseudoobj.c.
◆ SCIP_DECL_HASHKEYVAL()
|
static |
returns the hash value of the key
Definition at line 345 of file prop_pseudoobj.c.
References SCIPcliqueGetId().
◆ objimplicsCreate()
|
static |
creates an objective implication data structure, fixes (globally) variables which are implied by lower and upper bound fixing, and clears the collected arrays for lower and upper bound
- Parameters
-
scip SCIP data structure objimplics pointer to objective implication data structure objvars objective contributor variables, or NULL binobjvarmap hash map mapping binary variables with none-zero objective to position in collected variables arrays, or NULL collectedlbvars temporary buffer to mark collected variables for lower bound fixing, or NULL collectedubvars temporary buffer to mark collected variables for upper bound fixing, or NULL maxlbobjchg maximum objective contributor if variables id fixed to zero maxubobjchg maximum objective contributor if variables id fixed to one nlbimpls number of variables contributing to to lower bound fix nubimpls number of variables contributing to to upper bound fix
Definition at line 358 of file prop_pseudoobj.c.
References FALSE, MAX, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPcaptureVar(), SCIPdebugMsg, SCIPhashmapExists(), SCIPhashmapGetImageInt(), SCIPisNegative(), SCIPisZero(), SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetBestBoundType(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and SCIPvarIsBinary().
Referenced by collectMinactVar().
◆ objimplicsFree()
|
static |
frees an objective implication data structure
- Parameters
-
scip SCIP data structure objimplics pointer to objective implication data structure
Definition at line 492 of file prop_pseudoobj.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, and SCIPreleaseVar().
Referenced by propdataExit().
◆ objimplicsDelPos()
|
static |
remove the given variable at the given pos from the objective implication data structure
- Parameters
-
scip SCIP data structure objimplics objective implication data structure pos position
Definition at line 520 of file prop_pseudoobj.c.
References SCIP_ObjImplics::nlbimpls, SCIP_ObjImplics::nubimpls, SCIP_ObjImplics::objvars, SCIP_CALL, SCIP_OKAY, SCIPdebugMsg, SCIPdebugMsgPrint, SCIPreleaseVar(), and SCIPvarGetName().
Referenced by getMinactImplicObjchg().
◆ catchObjEvent()
|
static |
catch bound change events if the variable has a non-zero objective coefficient to check if the maximum activity of the objective function changed
- Parameters
-
scip SCIP data structure propdata propagator data eventhdlr event handler for global bound change events var variable for which the event should be dropped
Definition at line 571 of file prop_pseudoobj.c.
References NULL, SCIP_CALL, SCIP_EVENTTYPE_GLBCHANGED, SCIP_EVENTTYPE_GUBCHANGED, SCIP_OKAY, SCIP_Real, SCIPcatchVarEvent(), SCIPisZero(), and SCIPvarGetObj().
Referenced by propdataInit().
◆ dropObjEvent()
|
static |
drop variable event w.r.t. objective coefficient
- Parameters
-
scip SCIP data structure propdata propagator data eventhdlr event handler for global bound change events var variable for which the event should be dropped
Definition at line 602 of file prop_pseudoobj.c.
References NULL, SCIP_CALL, SCIP_EVENTTYPE_GLBCHANGED, SCIP_EVENTTYPE_GUBCHANGED, SCIP_OKAY, SCIP_Real, SCIPdropVarEvent(), SCIPisZero(), and SCIPvarGetObj().
Referenced by dropVarEvents().
◆ dropVarEvents()
|
static |
drop all variable events
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 633 of file prop_pseudoobj.c.
References dropObjEvent(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDRELAXED, SCIP_OKAY, SCIPdropVarEvent(), SCIPreleaseVar(), and SCIPvarIsBinary().
Referenced by propdataExit().
◆ propdataReset()
|
static |
reset propagatore data structure
- Parameters
-
propdata propagator data
Definition at line 696 of file prop_pseudoobj.c.
References FALSE, NULL, and SCIP_INVALID.
Referenced by propdataExit(), and SCIPincludePropPseudoobj().
◆ propdataExit()
|
static |
free propagator data
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 728 of file prop_pseudoobj.c.
References dropVarEvents(), NULL, objimplicsFree(), propdataReset(), SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemoryArrayNull, and SCIPhashtableFree().
Referenced by SCIP_DECL_PROPEXEC(), and SCIP_DECL_PROPEXITSOL().
◆ getVarObjchg()
|
static |
returns the objective change for the given binary variable
- Parameters
-
var variable to get objective change for boundtype bound type to consider bound fixing bound
Definition at line 764 of file prop_pseudoobj.c.
References bound, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPvarGetObj(), and SCIPvarIsBinary().
Referenced by adjustCutoffbound(), collectMinactObjchg(), collectMinactVar(), getMaxactObjchg(), and getMinactObjchg().
◆ collectMinactImplicVar()
|
static |
returns the objective change provided by the implication variable by fixing it to the given bound w.r.t. minimum activity of the objective function; additionally it collects all contributors for that objective change;
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution binobjvarmap hash map mapping binary variables with none-zero objective to position in collected variables arrays collectedvars temporary buffer to mark collected variables nbinobjvars number of binary variables with non-zero objective coefficient contributors array to store the contributors ncontributors pointer to store number of contributor to the objective contribution
Definition at line 783 of file prop_pseudoobj.c.
References NULL, REALABS, SCIP_Real, SCIPhashmapExists(), SCIPhashmapGetImageInt(), SCIPisZero(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by collectMinactImplicVars().
◆ collectMinactImplicVars()
|
static |
returns the objective change provided by the implications of the given variable by fixing it to the given bound w.r.t. minimum activity of the objective function; additionally it collects all contributors for that objective change;
Let I(0) and I(1) be all implications of the given variable which follow by fixing it to given bound and evaluate to fixing the implication variable to zero (I(0)) or one (I(1)), respectively. The objective change provided by the implications are:
\[ \displaystyle sum_{x\in I(1)} (1 - \mbox{bestbound}(x)) \cdot \mbox{objval}(x) - sum_{x\in I(1)} \mbox{bestbound}(x) \cdot \mbox{objval}(x) = sum_{x\in I(0) \cup I(1)} (\mbox{impliedbound}(x) - \mbox{bestbound}(x)) \cdot \mbox{objval}(x) \]
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution bound bound to check for binobjvarmap hash map mapping binary variables with none-zero objective to position in collected variables arrays collectedvars temporary buffer to mark collected variables nbinobjvars number of binary variables with non-zero objective coefficient contributors array to store the contributors uselesscliques hash table to store useless cliques, or NULL ncontributors pointer to store number of contributor to the objective contribution objchg pointer to store the objective change
Definition at line 850 of file prop_pseudoobj.c.
References bound, collectMinactImplicVar(), FALSE, MAX_CLIQUELENGTH, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPisZero(), SCIPvarGetBestBoundType(), SCIPvarGetCliques(), SCIPvarGetLbGlobal(), SCIPvarGetNCliques(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), and TRUE.
Referenced by collectMinactObjchg().
◆ getMinactImplicObjchg()
|
static |
returns the objective change provided by the implications of the given variable by fixing it to the given bound w.r.t. minimum activity of the objective function
Let I(0) and I(1) be all implications of the given variable which follow by fixing it to given bound and evaluate to fixing the implication variable to zero (I(0)) or one (I(1)), respectively. The objective change provided by the implications are:
\[ \displaystyle sum_{x\in I(1)} (1 - \mbox{bestbound}(x)) \cdot \mbox{objval}(x) - sum_{x\in I(1)} \mbox{bestbound}(x) \cdot \mbox{objval}(x) = sum_{x\in I(0) \cup I(1)} (\mbox{impliedbound}(x) - \mbox{bestbound}(x)) \cdot \mbox{objval}(x) \]
This can be done w.r.t. global variable bounds (local == FALSE), w.r.t. local variable bounds (local == TRUE && bdchgidx == NULL), and w.r.t. given time stamp (local == TRUE && bdchgidx != NULL)
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution objimplics objective implication data for the given variable bdchgidx bound change index representing time on path to current node, or NULL bound bound to check for local propagate local bounds, otherwise global bounds objchg pointer to store the objective change
Definition at line 977 of file prop_pseudoobj.c.
References bound, FALSE, SCIP_ObjImplics::nlbimpls, SCIP_ObjImplics::nubimpls, NULL, objimplicsDelPos(), SCIP_ObjImplics::objvars, REALABS, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPisZero(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarsHaveCommonClique(), and TRUE.
Referenced by getMinactObjchg().
◆ collectMinactObjchg()
|
static |
computes for the given binary variable the objective contribution by fixing it to given bound w.r.t. minimum activity of the objective function; additionally it collects all contributors for that objective change;
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution bound bound to check for binobjvarmap hash map mapping binary variables with none-zero objective to position in collected variables arrays collectedvars temporary buffer to mark collected variables nbinobjvars number of binary variables with non-zero objective coefficient contributors array to store the contriboters uselesscliques hash table to store useless cliques, or NULL ncontributors pointer to store number of contributor to the objective contribution objchg pointer to store the objective change
Definition at line 1062 of file prop_pseudoobj.c.
References bound, collectMinactImplicVars(), getVarObjchg(), NULL, SCIP_CALL, SCIP_OKAY, SCIPvarGetBestBoundType(), and SCIPvarIsBinary().
Referenced by collectMinactVar().
◆ getMinactObjchg()
|
static |
computes for the given binary variable the objective contribution by fixing it to given bound w.r.t. minimum activity of the objective function; this can be done w.r.t. global variable bounds (local == FALSE), w.r.t. local variable bounds (local == TRUE && bdchgidx == NULL), and w.r.t. given time stamp (local == TRUE && bdchgidx != NULL)
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution objimplics objective implication data for the given variable bdchgidx bound change index representing time on path to current node, or NULL bound bound to check for local propagate local bounds, otherwise global bounds objchg pointer to store the objective change
Definition at line 1095 of file prop_pseudoobj.c.
References bound, getMinactImplicObjchg(), getVarObjchg(), SCIP_CALL, SCIP_OKAY, SCIPvarGetBestBoundType(), and SCIPvarIsBinary().
Referenced by propagateCutoffboundBinvar().
◆ getMaxactImplicObjchg()
|
static |
returns the global (that means w.r.t. global bounds of the variables) objective change provided by all cliques of the given variable by fixing it to the given bound w.r.t. maximum activity of the objective function
Let I(0) and I(1) be all implications of the given variable which follow by fixing it to given bound and evaluate to fixing the implication variable to zero (I(0)) or one (I(1)), respectively. The objective change provided by these implications are:
\[ \displaystyle sum_{x\in I(1)} (1 - \mbox{worstbound}(x)) \cdot \mbox{objval}(x) - sum_{x\in I(1)} \mbox{worst}(x) \cdot \mbox{objval}(x) = sum_{x\in I(0) \cup I(1)} (\mbox{impliedbound}(x) - \mbox{worstbound}(x)) \cdot \mbox{objval}(x) \]
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution bound bound to check for objchg pointer to store the objective change
Definition at line 1131 of file prop_pseudoobj.c.
References ABS, BMSclearMemoryArray, bound, FALSE, MAX_CLIQUELENGTH, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisFeasGT(), SCIPisFeasLT(), SCIPisTransformed(), SCIPisZero(), SCIPvarGetCliques(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarGetNImpls(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarGetWorstBoundType(), SCIPvarIsActive(), SCIPvarIsBinary(), and TRUE.
Referenced by getMaxactObjchg().
◆ getMaxactObjchg()
|
static |
computes for the given binary variable the gloabl (that means w.r.t. global bounds of the variables) objective contribution by fixing it to given bound w.r.t. maximum activity of the objective function
- Parameters
-
scip SCIP data structure var variable to computes the objective contribution bound bound to check for useimplics should implications be used objchg pointer to store the objective change
Definition at line 1321 of file prop_pseudoobj.c.
References bound, getMaxactImplicObjchg(), getVarObjchg(), NULL, SCIP_CALL, SCIP_OKAY, SCIPvarGetWorstBoundType(), and SCIPvarIsBinary().
Referenced by collectMaxactVar(), and propagateLowerboundBinvar().
◆ resetContributors()
|
static |
reset variables array which marks variables which are collected
- Parameters
-
binobjvarmap hash map mapping binary variables with none-zero objective to position in collected variables arrays collectedvars temporary buffer to mark collected variables which should be reset contributors temporary buffer to use for collecting contributors ncontributors number of contributors
Definition at line 1350 of file prop_pseudoobj.c.
References FALSE, NULL, SCIPhashmapExists(), and SCIPhashmapGetImageInt().
Referenced by collectMinactVar().
◆ collectMinactVar()
|
static |
check if the given variable should be collected for the minimum activity propagation
- Parameters
-
scip SCIP data structure var variable to check objimplics pointer to store the objective implication data structure w.r.t. minimum activity useimplics should implications be used binobjvarmap hash map mapping binary variables with none-zero objective to position in collected variables arrays collectedlbvars temporary buffer to mark collected variables for lower bound fixing collectedubvars temporary buffer to mark collected variables for upper bound fixing nbinobjvars number of binary variables with non-zero objective coefficient contributors temporary buffer to use for collecting contributors uselesscliques hash table to store useless cliques, or NULL collect pointer to store if the variable should be stored
Definition at line 1375 of file prop_pseudoobj.c.
References collectMinactObjchg(), FALSE, getVarObjchg(), NULL, objimplicsCreate(), resetContributors(), SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPisNegative(), SCIPisZero(), SCIPvarGetBestBoundType(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarGetObj(), and TRUE.
Referenced by propdataInit().
◆ collectMaxactVar()
|
static |
check if the given variable should be collected for the maximum activity propagation
- Parameters
-
scip SCIP data structure var variable to check useimplics should implications be used objchg pointer to store the objective change w.r.t. maximum activity isnotzero pointer to store if the objective change is unequal to zero or not
Definition at line 1491 of file prop_pseudoobj.c.
References FALSE, getMaxactObjchg(), MIN, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPisPositive(), SCIPisZero(), SCIPvarIsBinary(), and TRUE.
Referenced by propdataInit().
◆ propdataInit()
|
static |
initializate the propagator
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 1528 of file prop_pseudoobj.c.
References catchObjEvent(), checkImplicsApplied(), collectMaxactVar(), collectMinactVar(), FALSE, SCIP_ObjImplics::maxobjchg, SCIP_ObjImplics::nlbimpls, SCIP_ObjImplics::nubimpls, NULL, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_BOUNDRELAXED, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPallocClearBufferArray, SCIPblkmem(), SCIPcaptureVar(), SCIPcatchVarEvent(), SCIPdebugMsg, SCIPfreeBlockMemoryArray, SCIPfreeBufferArray, SCIPgetCutoffbound(), SCIPgetDepth(), SCIPgetGlobalPseudoObjval(), SCIPgetNCliques(), SCIPgetNContVars(), SCIPgetNObjVars(), SCIPgetNVars(), SCIPgetPseudoObjval(), SCIPgetVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapInsertInt(), SCIPhashtableCreate(), SCIPhashtableFree(), SCIPinfinity(), SCIPisRelEQ(), SCIPisZero(), SCIPsortDownPtr(), SCIPsortDownPtrPtr(), SCIPsortDownRealPtr(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), and TRUE.
Referenced by SCIP_DECL_PROPEXEC().
◆ addConflictBounds()
|
static |
adds for the given non-binary variable a conflict bound depending on its objective contribution
- Parameters
-
scip SCIP data structure var variable to check for objective contribution bdchgidx bound change index (time stamp of bound change), or NULL for current time reqpseudoobjval pointer to store the remaining minimum activity which has to be proven
Definition at line 1839 of file prop_pseudoobj.c.
References FALSE, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPdebugMsg, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisGT(), SCIPisLT(), SCIPisZero(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetObj(), and SCIPvarGetUbGlobal().
Referenced by resolvePropagation().
◆ getConflictImplics()
|
static |
check for the given implication variables if they also contribute to the required minimum activity
- Parameters
-
scip SCIP data structure vars variable to check for objective contribution start start index end end index bdchgidx bound change index (time stamp of bound change), or NULL for current time addedvars hash table containing variables which are already added directly or implicitly due to implications reqpseudoobjval pointer to store the remaining minimum activity which has to be proven foundimplics pointer to store if an implication is found
Definition at line 1899 of file prop_pseudoobj.c.
References FALSE, NULL, REALABS, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarIsBinary(), and TRUE.
Referenced by addConflictBinvar(), and adjustCutoffbound().
◆ addConflictBinvar()
|
static |
adds for the given binary variable a conflict bound depending on its objective contribution
- Parameters
-
scip SCIP data structure var variable to check for objective contribution bdchgidx bound change index (time stamp of bound change), or NULL for current time objimplics objective implication data for the given variable addedvars hash table containing variables which are already add directly or implicitly due to implications respropuseimplics should implications be used reqpseudoobjval pointer to store the remaining minimum activity which has to be proven
Definition at line 1946 of file prop_pseudoobj.c.
References FALSE, getConflictImplics(), MAX, MIN, SCIP_ObjImplics::nlbimpls, SCIP_ObjImplics::nubimpls, NULL, SCIP_ObjImplics::objvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPdebugMsg, SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPisNegative(), SCIPisPositive(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and SCIPvarIsBinary().
Referenced by resolvePropagation().
◆ adjustCutoffbound()
|
static |
resolves a propagation by supplying the variables whose bound changes increased the pseudo objective value above the cutoff bound
- Parameters
-
scip SCIP data structure propdata propagator data var variable that was deduced inferinfo inference information boundtype the type of the changed bound (lower or upper bound) bdchgidx bound change index (time stamp of bound change), or NULL for current time addedvars hash table which contains variables which are already added or implicitly given as reason for the resolve, or NULL cutoffbound pointer to store the adjusted cutoff bound
Definition at line 2034 of file prop_pseudoobj.c.
References FALSE, getConflictImplics(), getVarObjchg(), SCIP_ObjImplics::nlbimpls, SCIP_ObjImplics::nubimpls, NULL, SCIP_ObjImplics::objvars, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPfeastol(), SCIPgetVarLbAtIndex(), SCIPgetVarUbAtIndex(), SCIPisEQ(), SCIPisNegative(), SCIPisZero(), SCIPvarGetBestBoundType(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarIsIntegral(), and TRUE.
Referenced by resolvePropagation().
◆ resolvePropagation()
|
static |
resolves a propagation by supplying the variables whose bound changes increased the pseudo objective value above the cutoff bound
- Parameters
-
scip SCIP data structure propdata propagator data cutoffbound the global cutoff infervar variable that was deduced, or NULL for conflict analysis initialization inferinfo inference information boundtype the type of the changed bound (lower or upper bound) bdchgidx bound change index (time stamp of bound change), or NULL for current time
Definition at line 2130 of file prop_pseudoobj.c.
References addConflictBinvar(), addConflictBounds(), adjustCutoffbound(), checkGlbfirstnonfixed(), FALSE, infinity, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetGlobalPseudoObjval(), SCIPhashtableExists(), SCIPhashtableRemoveAll(), SCIPisInfinity(), SCIPisPositive(), SCIPisZero(), SCIPvarGetObj(), and TRUE.
Referenced by propagateCutoffbound(), propagateCutoffboundBinvar(), and SCIP_DECL_PROPRESPROP().
◆ propagateCutoffboundVar()
|
static |
propagates the given variable against the cutoff bound
- Parameters
-
scip SCIP data structure prop propagator, or NULL var variable to propagate inferinfo inference information to store with the bound change objchg objective change cutoffbound cutoff bound to use pseudoobjval pseudo objective value to use local local or global propagation tightened pointer to store if the variable domain was tightened
Definition at line 2276 of file prop_pseudoobj.c.
References FALSE, NULL, QUAD, QUAD_TO_DBL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPinferVarLbProp(), SCIPinferVarUbProp(), SCIPisFeasEQ(), SCIPisInfinity(), SCIPisLT(), SCIPisZero(), SCIPquadprecDivQD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().
Referenced by propagateCutoffbound(), propagateCutoffboundBinvar(), propagateCutoffboundGlobally(), SCIP_DECL_PROPPRESOL(), and SCIPpropagateCutoffboundVar().
◆ propagateCutoffboundBinvar()
|
static |
propagates the given binary variable against the cutoff bound
- Parameters
-
scip SCIP data structure prop propagator, or NULL var variable to propagate pos position of the variable in the corresponding propdata variable array cutoffbound cutoff bound to use pseudoobjval pseudo objective value to use tightened pointer to store if the variable domain was tightened cutoff pointer to store if a cutoff was detected local propagate local bounds, otherwise global bounds
Definition at line 2390 of file prop_pseudoobj.c.
References FALSE, getMinactObjchg(), NULL, propagateCutoffboundVar(), resolvePropagation(), SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_Real, SCIPanalyzeConflict(), SCIPgetDepth(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPisLT(), SCIPisNegative(), SCIPisZero(), SCIPpropGetData(), SCIPvarIsBinary(), and TRUE.
Referenced by propagateCutoffboundBinvars(), and propagateCutoffboundGlobally().
◆ propagateCutoffboundGlobally()
|
static |
globally propagates if a new cutoff bound or global pseudo objective value (minimum activity of the objective function) is available
- Parameters
-
scip SCIP data structure prop propagator nchgbds pointer to store the number of bound changes cutoff pointer to store if a cutoff was detected
Definition at line 2474 of file prop_pseudoobj.c.
References checkGlbfirstnonfixed(), FALSE, MAX, NULL, propagateCutoffboundBinvar(), propagateCutoffboundVar(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetDepth(), SCIPgetGlobalPseudoObjval(), SCIPisGE(), SCIPisInfinity(), SCIPisZero(), SCIPpropGetData(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by propagateCutoffbound().
◆ propagateCutoffboundBinvars()
|
static |
propagates the cutoff bound for binary variables (c*x <= cutoff)
- Parameters
-
scip SCIP data structure prop propagator cutoffbound cutoff bound to use pseudoobjval pseudo objective value to use nfixedvars pointer to store the number of fixed variables cutoff pointer to store if a cutoff was detected
Definition at line 2632 of file prop_pseudoobj.c.
References checkGlbfirstnonfixed(), FALSE, NULL, propagateCutoffboundBinvar(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPdebugMsg, SCIPpropGetData(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by propagateCutoffbound().
◆ propagateCutoffbound()
|
static |
propagates the cutoff bound c*x <= cutoff
- Parameters
-
scip SCIP data structure prop propagator result pointer to store the result of the callback method
Definition at line 2766 of file prop_pseudoobj.c.
References FALSE, MAX, NULL, propagateCutoffboundBinvars(), propagateCutoffboundGlobally(), propagateCutoffboundVar(), resolvePropagation(), SCIP_Bool, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIPanalyzeConflict(), SCIPcutoffNode(), SCIPdebugMsg, SCIPgetCutoffbound(), SCIPgetCutoffdepth(), SCIPgetDepth(), SCIPgetPseudoObjval(), SCIPgetRootNode(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPisGE(), SCIPisInfinity(), SCIPisZero(), SCIPpropGetData(), SCIPvarGetObj(), and TRUE.
Referenced by SCIP_DECL_PROPEXEC().
◆ calcMaxObjPseudoactivity()
|
static |
recalculates the maximum objective pseudoactivity
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 2962 of file prop_pseudoobj.c.
References NULL, SCIP_Real, SCIPgetNVars(), SCIPgetVars(), SCIPisInfinity(), SCIPisNegative(), SCIPisPositive(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), and SCIPvarGetUbGlobal().
Referenced by getMaxObjPseudoactivityResidualValue(), and updateMaxObjPseudoactivity().
◆ updateMaxObjPseudoactivity()
|
static |
updates the pseudo objective activity if necessary
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 3012 of file prop_pseudoobj.c.
References calcMaxObjPseudoactivity(), NULL, and SCIP_INVALID.
Referenced by propagateLowerbound().
◆ getMaxObjPseudoactivityResidualValue()
|
static |
returns the residual pseudo objective activity without the given value
- Parameters
-
scip SCIP data structure propdata propagator data contrib value to eliminate from pseudo objective activity
Definition at line 3027 of file prop_pseudoobj.c.
References calcMaxObjPseudoactivity(), NULL, SCIP_INVALID, SCIP_Real, SCIPinfinity(), and SCIPisInfinity().
Referenced by getMaxObjPseudoactivity(), and getMaxObjPseudoactivityResidual().
◆ getMaxObjPseudoactivityResidual()
|
static |
returns the residual pseudo objective activity
- Parameters
-
scip SCIP data structure propdata propagator data var variable to get residual activity for
Definition at line 3065 of file prop_pseudoobj.c.
References getMaxObjPseudoactivityResidualValue(), NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIPisInfinity(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and SCIPvarGetWorstBoundType().
Referenced by propagateLowerboundVar().
◆ getMaxObjPseudoactivity()
|
static |
returns the maximum pseudo objective activity of the objective function
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 3098 of file prop_pseudoobj.c.
References getMaxObjPseudoactivityResidualValue().
Referenced by propagateLowerbound().
◆ propagateLowerboundBinvar()
|
static |
propagates the global domain of the given binary variable against the lower bound (c*x >= lowerbound)
- Parameters
-
scip SCIP data structure var variable to propagate lowerbound lower bound to use maxpseudoobjact maximum pseudo objective activity useimplics should implications be used infeasible pointer to store if the variable domain got empty, infeasible tightened pointer to store if the variable domain was tightened
Definition at line 3108 of file prop_pseudoobj.c.
References FALSE, getMaxactObjchg(), SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPisDualfeasLE(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisPositive(), SCIPtightenVarLbGlobal(), SCIPvarIsBinary(), and TRUE.
Referenced by propagateLowerbound().
◆ propagateLowerboundVar()
|
static |
propagates the global domains of the given variable with non-zero objective coefficient against the lower bound (c*x >= lowerbound)
- Note
- In case the variable is integral we force the update of the new bound
- Parameters
-
scip SCIP data structure propdata propagator data var variable to propagate lowerbound lower bound to use infeasible pointer to store if the variable domain got empty, infeasible tightened pointer to store if the variable domain was tightened
Definition at line 3166 of file prop_pseudoobj.c.
References FALSE, getMaxObjPseudoactivityResidual(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPisFeasGT(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisZero(), SCIPtightenVarLbGlobal(), SCIPtightenVarUbGlobal(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsIntegral(), and TRUE.
Referenced by propagateLowerbound().
◆ propagateLowerbound()
|
static |
propagates the global lower (dual) bound c*x >= lowerbound
- Parameters
-
scip SCIP data structure prop propagator result pointer to store the result of the callback method
Definition at line 3231 of file prop_pseudoobj.c.
References checkGlbfirstnonfixed(), FALSE, getMaxObjPseudoactivity(), NULL, propagateLowerboundBinvar(), propagateLowerboundVar(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIPcutoffNode(), SCIPdebugMsg, SCIPgetLowerbound(), SCIPgetRootNode(), SCIPisDualfeasLT(), SCIPisInfinity(), SCIPisLE(), SCIPisZero(), SCIPpropGetData(), SCIPvarGetLbGlobal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), TRUE, and updateMaxObjPseudoactivity().
Referenced by SCIP_DECL_PROPEXEC().
◆ SCIP_DECL_PROPCOPY()
|
static |
copy method for propagator plugins (called when SCIP copies plugins)
Definition at line 3433 of file prop_pseudoobj.c.
References NULL, PROP_NAME, SCIP_CALL, SCIP_OKAY, SCIPincludePropPseudoobj(), and SCIPpropGetName().
◆ SCIP_DECL_PROPFREE()
|
static |
destructor of propagator to free user data (called when SCIP is exiting)
Definition at line 3447 of file prop_pseudoobj.c.
References NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPpropGetData(), and SCIPpropSetData().
◆ SCIP_DECL_PROPINITSOL()
|
static |
solving process initialization method of propagator (called when branch and bound process is about to begin)
Definition at line 3462 of file prop_pseudoobj.c.
References NULL, SCIP_CALL, SCIP_EVENTTYPE_VARADDED, SCIP_OKAY, SCIPcatchEvent(), SCIPgetNActivePricers(), SCIPpropGetData(), and TRUE.
◆ SCIP_DECL_PROPEXITSOL()
|
static |
solving process deinitialization method of propagator (called before branch and bound process data is freed)
Definition at line 3486 of file prop_pseudoobj.c.
References FALSE, NULL, propdataExit(), SCIP_CALL, SCIP_EVENTTYPE_VARADDED, SCIP_OKAY, SCIPdropEvent(), and SCIPpropGetData().
◆ SCIP_DECL_PROPPRESOL()
|
static |
presolving method of propagator
Definition at line 3509 of file prop_pseudoobj.c.
References FALSE, NULL, propagateCutoffboundVar(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPallowWeakDualReds(), SCIPgetCutoffbound(), SCIPgetGlobalPseudoObjval(), SCIPgetNActivePricers(), SCIPgetNVars(), SCIPgetVars(), SCIPisGE(), SCIPisInfinity(), SCIPisZero(), SCIPpropGetData(), SCIPvarGetObj(), and TRUE.
◆ SCIP_DECL_PROPEXEC()
|
static |
execution method of propagator
Definition at line 3592 of file prop_pseudoobj.c.
References NULL, propagateCutoffbound(), propagateLowerbound(), propdataExit(), propdataInit(), SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_OKAY, SCIP_PROPTIMING_DURINGLPLOOP, SCIP_REDUCEDDOM, SCIP_STAGE_SOLVING, SCIPallowWeakDualReds(), SCIPgetDepth(), SCIPgetNActivePricers(), SCIPgetStage(), SCIPinProbing(), and SCIPpropGetData().
◆ SCIP_DECL_PROPRESPROP()
|
static |
propagation conflict resolving method of propagator
Definition at line 3648 of file prop_pseudoobj.c.
References FALSE, NULL, resolvePropagation(), SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_SUCCESS, SCIPdebugMsg, SCIPgetCutoffbound(), SCIPgetVarLbAtIndex(), SCIPisEQ(), SCIPisInfinity(), SCIPpropGetData(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), and TRUE.
◆ SCIP_DECL_EVENTEXEC()
|
static |
execution method of bound change event handler
Definition at line 3681 of file prop_pseudoobj.c.
References EVENTHDLR_NAME, NULL, SCIP_EVENTTYPE_GLBCHANGED, SCIP_EVENTTYPE_GUBCHANGED, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_UBRELAXED, SCIP_EVENTTYPE_VARADDED, SCIP_INVALID, SCIP_OKAY, SCIPeventGetType(), and SCIPeventhdlrGetName().