Detailed Description
optimization-based bound tightening propagator
Definition in file prop_obbt.c.
#include <assert.h>
#include <string.h>
#include "scip/cons_linear.h"
#include "scip/cons_nonlinear.h"
#include "scip/nlhdlr_bilinear.h"
#include "scip/prop_genvbounds.h"
#include "scip/prop_obbt.h"
#include "scip/pub_cons.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_nlp.h"
#include "scip/pub_prop.h"
#include "scip/pub_tree.h"
#include "scip/pub_var.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_cut.h"
#include "scip/scip_general.h"
#include "scip/scip_lp.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_nlp.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_prop.h"
#include "scip/scip_randnumgen.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_tree.h"
#include "scip/scip_var.h"
Go to the source code of this file.
Data Structures | |
struct | Bound |
struct | BilinBound |
Typedefs | |
typedef struct Bound | BOUND |
typedef enum Corner | CORNER |
typedef struct BilinBound | BILINBOUND |
Enumerations | |
enum | Corner { LEFTBOTTOM = 1, RIGHTBOTTOM = 2, RIGHTTOP = 4, LEFTTOP = 8, FILTERED = 15 } |
Macro Definition Documentation
◆ PROP_NAME
#define PROP_NAME "obbt" |
Definition at line 82 of file prop_obbt.c.
Referenced by SCIP_DECL_PROPCOPY().
◆ PROP_DESC
#define PROP_DESC "optimization-based bound tightening propagator" |
Definition at line 83 of file prop_obbt.c.
◆ PROP_TIMING
#define PROP_TIMING SCIP_PROPTIMING_AFTERLPLOOP |
Definition at line 84 of file prop_obbt.c.
◆ PROP_PRIORITY
#define PROP_PRIORITY -1000000 |
propagator priority
Definition at line 85 of file prop_obbt.c.
◆ PROP_FREQ
#define PROP_FREQ 0 |
propagator frequency
Definition at line 86 of file prop_obbt.c.
◆ PROP_DELAY
#define PROP_DELAY TRUE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 87 of file prop_obbt.c.
◆ DEFAULT_CREATE_GENVBOUNDS
#define DEFAULT_CREATE_GENVBOUNDS TRUE |
should obbt try to provide genvbounds if possible?
Definition at line 91 of file prop_obbt.c.
◆ DEFAULT_FILTERING_NORM
#define DEFAULT_FILTERING_NORM TRUE |
should coefficients in filtering be normalized w.r.t. the domains sizes?
Definition at line 92 of file prop_obbt.c.
◆ DEFAULT_APPLY_FILTERROUNDS
#define DEFAULT_APPLY_FILTERROUNDS FALSE |
try to filter bounds in so-called filter rounds by solving auxiliary LPs?
Definition at line 95 of file prop_obbt.c.
◆ DEFAULT_APPLY_TRIVIALFITLERING
#define DEFAULT_APPLY_TRIVIALFITLERING TRUE |
should obbt try to use the LP solution to filter some bounds?
Definition at line 98 of file prop_obbt.c.
◆ DEFAULT_GENVBDSDURINGFILTER
#define DEFAULT_GENVBDSDURINGFILTER TRUE |
try to genrate genvbounds during trivial and aggressive filtering?
Definition at line 99 of file prop_obbt.c.
◆ DEFAULT_DUALFEASTOL
#define DEFAULT_DUALFEASTOL 1e-9 |
feasibility tolerance for reduced costs used in obbt; this value is used if SCIP's dual feastol is greater
Definition at line 100 of file prop_obbt.c.
◆ DEFAULT_CONDITIONLIMIT
#define DEFAULT_CONDITIONLIMIT -1.0 |
maximum condition limit used in LP solver (-1.0: no limit)
Definition at line 103 of file prop_obbt.c.
◆ DEFAULT_BOUNDSTREPS
#define DEFAULT_BOUNDSTREPS 0.001 |
minimal relative improve for strengthening bounds
Definition at line 104 of file prop_obbt.c.
◆ DEFAULT_FILTERING_MIN
#define DEFAULT_FILTERING_MIN 2 |
minimal number of filtered bounds to apply another filter round
Definition at line 105 of file prop_obbt.c.
◆ DEFAULT_ITLIMITFACTOR
#define DEFAULT_ITLIMITFACTOR 10.0 |
multiple of root node LP iterations used as total LP iteration limit for obbt (<= 0: no limit )
Definition at line 108 of file prop_obbt.c.
◆ DEFAULT_MINITLIMIT
#define DEFAULT_MINITLIMIT 5000L |
minimum LP iteration limit
Definition at line 111 of file prop_obbt.c.
◆ DEFAULT_ONLYNONCONVEXVARS
#define DEFAULT_ONLYNONCONVEXVARS TRUE |
only apply obbt on non-convex variables
Definition at line 112 of file prop_obbt.c.
◆ DEFAULT_TIGHTINTBOUNDSPROBING
#define DEFAULT_TIGHTINTBOUNDSPROBING TRUE |
should bounds of integral variables be tightened during the probing mode?
Definition at line 113 of file prop_obbt.c.
◆ DEFAULT_TIGHTCONTBOUNDSPROBING
#define DEFAULT_TIGHTCONTBOUNDSPROBING FALSE |
should bounds of continuous variables be tightened during the probing mode?
Definition at line 116 of file prop_obbt.c.
◆ DEFAULT_ORDERINGALGO
#define DEFAULT_ORDERINGALGO 1 |
which type of ordering algorithm should we use? (0: no, 1: greedy, 2: greedy reverse)
Definition at line 119 of file prop_obbt.c.
◆ OBBT_SCOREBASE
#define OBBT_SCOREBASE 5 |
base that is used to calculate a bounds score value
Definition at line 122 of file prop_obbt.c.
◆ GENVBOUND_PROP_NAME
#define GENVBOUND_PROP_NAME "genvbounds" |
Definition at line 123 of file prop_obbt.c.
◆ DEFAULT_SEPARATESOL
#define DEFAULT_SEPARATESOL FALSE |
should the obbt LP solution be separated? note that that by separating solution OBBT will apply all bound tightenings immediatly
Definition at line 125 of file prop_obbt.c.
◆ DEFAULT_SEPAMINITER
#define DEFAULT_SEPAMINITER 0 |
minimum number of iteration spend to separate an obbt LP solution
Definition at line 130 of file prop_obbt.c.
◆ DEFAULT_SEPAMAXITER
#define DEFAULT_SEPAMAXITER 10 |
maximum number of iteration spend to separate an obbt LP solution
Definition at line 131 of file prop_obbt.c.
◆ DEFAULT_GENVBDSDURINGSEPA
#define DEFAULT_GENVBDSDURINGSEPA TRUE |
try to create genvbounds during separation process?
Definition at line 132 of file prop_obbt.c.
◆ DEFAULT_PROPAGATEFREQ
#define DEFAULT_PROPAGATEFREQ 0 |
trigger a propagation round after that many bound tightenings (0: no propagation)
Definition at line 133 of file prop_obbt.c.
◆ DEFAULT_CREATE_BILININEQS
#define DEFAULT_CREATE_BILININEQS TRUE |
solve auxiliary LPs in order to find valid inequalities for bilinear terms?
Definition at line 136 of file prop_obbt.c.
◆ DEFAULT_CREATE_LINCONS
#define DEFAULT_CREATE_LINCONS FALSE |
create linear constraints from inequalities for bilinear terms?
Definition at line 137 of file prop_obbt.c.
◆ DEFAULT_ITLIMITFAC_BILININEQS
#define DEFAULT_ITLIMITFAC_BILININEQS 3.0 |
multiple of OBBT LP limit used as total LP iteration limit for solving bilinear inequality LPs (< 0 for no limit)
Definition at line 138 of file prop_obbt.c.
◆ DEFAULT_MINNONCONVEXITY
#define DEFAULT_MINNONCONVEXITY 1e-1 |
minimum nonconvexity for choosing a bilinear term
Definition at line 139 of file prop_obbt.c.
◆ DEFAULT_RANDSEED
#define DEFAULT_RANDSEED 149 |
initial random seed
Definition at line 140 of file prop_obbt.c.
Typedef Documentation
◆ BOUND
Definition at line 159 of file prop_obbt.c.
◆ CORNER
Definition at line 170 of file prop_obbt.c.
◆ BILINBOUND
typedef struct BilinBound BILINBOUND |
Definition at line 180 of file prop_obbt.c.
Enumeration Type Documentation
◆ Corner
enum Corner |
Enumerator | |
---|---|
LEFTBOTTOM | |
RIGHTBOTTOM | |
RIGHTTOP | |
LEFTTOP | |
FILTERED |
Definition at line 162 of file prop_obbt.c.
Function Documentation
◆ solveLP()
|
static |
solves the LP and handles errors
- Parameters
-
scip SCIP data structure itlimit maximal number of LP iterations to perform, or -1 for no limit error pointer to store whether an unresolved LP error occurred optimal was the LP solved to optimalilty?
Definition at line 252 of file prop_obbt.c.
Referenced by filterExistingLP().
◆ addObjCutoff()
|
static |
adds the objective cutoff to the LP; must be in probing mode
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator
Definition at line 324 of file prop_obbt.c.
◆ varIsFixedLocal()
determines, whether a variable is already locally fixed
- Parameters
-
scip SCIP data structure var variable to check
Definition at line 374 of file prop_obbt.c.
◆ setObjProbing()
|
static |
sets objective to minimize or maximize a single variable
Definition at line 384 of file prop_obbt.c.
Referenced by filterExistingLP().
◆ includeVarGenVBound()
determines whether variable should be included in the right-hand side of the generalized variable bound
- Parameters
-
scip SCIP data structure var variable to check
Definition at line 431 of file prop_obbt.c.
◆ getIterationsLeft()
|
static |
returns number of LP iterations left (-1: no limit )
- Parameters
-
scip SCIP data structure nolditerations iterations count at the beginning of the corresponding function itlimit LP iteration limit (-1: no limit)
Definition at line 458 of file prop_obbt.c.
References Bound::boundtype, getFilterCoef(), MAX, NULL, SCIP_Real, SCIPdebugMsg, and SCIPgetNLPIterations().
◆ getFilterCoef()
|
static |
returns the objective coefficient for a variable's bound that will be chosen during filtering
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator var variable boundtype boundtype to be filtered?
Definition at line 488 of file prop_obbt.c.
Referenced by getIterationsLeft().
◆ createGenVBound()
|
static |
creates a genvbound if the dual LP solution provides such information
Consider the problem
min { +/- x_i : obj * x <= z, lb <= Ax <= ub, l <= x <= u },
where z is the current cutoff bound. Let (mu, nu, gamma, alpha, beta) >= 0 be the optimal solution of the dual of problem (P), where the variables correspond to the primal inequalities in the following way:
Ax >= lb <-> mu -Ax >= -ub <-> nu
-obj * x >= -z <-> gamma x >= l <-> alpha -x >= -u <-> beta
Fixing these multipliers, by weak duality, we obtain the inequality
+/- x_i >= lb*mu - ub*nu - z*gamma + l*alpha - u*beta
that holds for all primal feasible points x with objective value at least z. Setting
c = lb*mu - ub*nu, redcost_k = alpha_k - beta_k
we obtain the inequality
+/- x_i >= sum ( redcost_k * x_k ) + (-gamma) * cutoff_bound + c,
that holds for all primal feasible points with objective value at least cutoff_bound. Therefore, the latter inequality can be added as a generalized variable bound.
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator bound bound of x_i found pointer to store if we have found a non-trivial genvbound
Definition at line 562 of file prop_obbt.c.
Referenced by filterExistingLP().
◆ exchangeBounds()
|
static |
exchange a bound which has been processed and updates the last undone and unfiltered bound index NOTE: this method has to be called after filtering or processing a bound
- Parameters
-
propdata propagator data i bound that was filtered or processed
Definition at line 748 of file prop_obbt.c.
References NULL.
Referenced by filterExistingLP().
◆ getCorner()
|
static |
helper function to return a corner of the domain of two variables
- Parameters
-
x first variable y second variable corner corner px buffer to store point for x py buffer to store point for y
Definition at line 771 of file prop_obbt.c.
References FILTERED, getCorners(), LEFTBOTTOM, LEFTTOP, NULL, RIGHTBOTTOM, RIGHTTOP, SCIP_Real, SCIPABORT, SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().
Referenced by filterExistingLP().
◆ getCorners()
|
static |
helper function to return the two end points of a diagonal
- Parameters
-
x first variable y second variable corner corner xs buffer to store start point for x ys buffer to store start point for y xt buffer to store end point for x yt buffer to store end point for y
Definition at line 809 of file prop_obbt.c.
Referenced by getCorner().
◆ bilinboundGetX()
|
static |
returns the first variable of a bilinear bound
- Parameters
-
bilinbound bilinear bound
Definition at line 851 of file prop_obbt.c.
References BilinBound::expr, NULL, SCIPexprGetChildren(), SCIPexprGetNChildren(), and SCIPgetExprAuxVarNonlinear().
Referenced by bilinboundGetLocksPos(), and filterExistingLP().
◆ bilinboundGetY()
|
static |
returns the second variable of a bilinear bound
- Parameters
-
bilinbound bilinear bound
Definition at line 863 of file prop_obbt.c.
References bilinboundGetLocksPos(), BilinBound::expr, NULL, and SCIPgetExprNLocksNegNonlinear().
Referenced by bilinboundGetLocksPos(), and filterExistingLP().
◆ bilinboundGetLocksNeg()
|
static |
returns the negative locks of the expression in a bilinear bound
- Parameters
-
bilinbound bilinear bound
Definition at line 875 of file prop_obbt.c.
References bilinboundGetScore(), BilinBound::expr, NULL, SCIP_Real, and SCIPgetExprNLocksPosNonlinear().
◆ bilinboundGetLocksPos()
|
static |
returns the positive locks of the expression in a bilinear bound
- Parameters
-
bilinbound bilinear bound
Definition at line 886 of file prop_obbt.c.
References bilinboundGetX(), bilinboundGetY(), SCIP_Real, SCIPvarGetLbLocal(), and SCIPvarGetUbLocal().
Referenced by bilinboundGetY().
◆ bilinboundGetScore()
|
static |
computes the score of a bilinear term bound
- Parameters
-
scip SCIP data structure randnumgen random number generator bilinbound bilinear bound
Definition at line 897 of file prop_obbt.c.
Referenced by bilinboundGetLocksNeg().
◆ filterExistingLP()
|
static |
trying to filter some bounds using the existing LP solution
- Parameters
-
scip original SCIP data structure propdata data of the obbt propagator nfiltered how many bounds were filtered this round? currbound bound for which OBBT LP was solved (Note: might be NULL)
Definition at line 943 of file prop_obbt.c.
References bilinboundGetX(), bilinboundGetY(), bound, Bound::boundtype, createGenVBound(), Bound::done, BilinBound::done, exchangeBounds(), Bound::filtered, FILTERED, BilinBound::filtered, filterRound(), Bound::found, getCorner(), LEFTBOTTOM, LEFTTOP, NULL, REALABS, RIGHTBOTTOM, RIGHTTOP, SCIP_BASESTAT_BASIC, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPchgVarObjProbing(), SCIPcolGetBasisStatus(), SCIPdebug, SCIPdebugMessage, SCIPdebugMsg, SCIPgetDepth(), SCIPgetNLPIterations(), SCIPgetNVars(), SCIPgetVarObjProbing(), SCIPgetVars(), SCIPinProbing(), SCIPisFeasEQ(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisInfinity(), SCIPisZero(), SCIPvarGetCol(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), setObjProbing(), solveLP(), TRUE, and Bound::var.
◆ filterRound()
|
static |
enforces one round of filtering
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator itlimit LP iteration limit (-1: no limit) nfiltered how many bounds were filtered this round objcoefs array to store the nontrivial objective coefficients objcoefsinds array to store bound indices for which their corresponding variables has a nontrivial objective coefficient nobjcoefs number of nontrivial objective coefficients
Definition at line 1116 of file prop_obbt.c.
Referenced by filterExistingLP().
◆ filterBounds()
|
static |
filter some bounds that are not improvable by solving auxiliary LPs
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator itlimit LP iteration limit (-1: no limit)
Definition at line 1276 of file prop_obbt.c.
◆ applyBoundChgs()
|
static |
applies possible bound changes that were found
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator result result pointer
Definition at line 1420 of file prop_obbt.c.
◆ tightenBoundProbing()
|
static |
tries to tighten a bound in probing mode
- Parameters
-
scip SCIP data structure bound bound that could be tightened newval new bound value tightened was tightening successful?
Definition at line 1487 of file prop_obbt.c.
◆ SCIP_DECL_SORTPTRCOMP() [1/3]
|
static |
comparison method for two bounds w.r.t. their scores
Definition at line 1548 of file prop_obbt.c.
◆ SCIP_DECL_SORTPTRCOMP() [2/3]
|
static |
comparison method for two bilinear term bounds w.r.t. their scores
Definition at line 1558 of file prop_obbt.c.
◆ SCIP_DECL_SORTPTRCOMP() [3/3]
|
static |
comparison method for two bounds w.r.t. their boundtype
Definition at line 1568 of file prop_obbt.c.
References NULL, SCIP_OKAY, SCIPdebugMsg, and SCIPsortDownPtr().
◆ sortBounds()
|
static |
sort the propdata->bounds array with their distance or their boundtype key
- Parameters
-
scip SCIP data structure propdata propagator data
Definition at line 1594 of file prop_obbt.c.
References Bound::boundtype, NULL, REALABS, SCIP_BOUNDTYPE_LOWER, SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetUbLocal(), and Bound::var.
◆ evalBound()
evaluates a bound for the current LP solution
Definition at line 1610 of file prop_obbt.c.
◆ nextBound()
|
static |
returns the index of the next undone and unfiltered bound with the smallest distance
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator convexphase consider only convex variables?
Definition at line 1626 of file prop_obbt.c.
◆ applySeparation()
|
static |
try to separate the solution of the last OBBT LP in order to learn better variable bounds; we apply additional separation rounds as long as the routine finds better bounds; because of dual degeneracy we apply a minimum number of separation rounds
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator currbound current bound nleftiterations number of left iterations (-1 for no limit) success pointer to store if we have found a better bound
Definition at line 1678 of file prop_obbt.c.
◆ findNewBounds()
|
static |
finds new variable bounds until no iterations left or all bounds have been checked
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator nleftiterations pointer to store the number of left iterations convexphase consider only convex variables?
Definition at line 1760 of file prop_obbt.c.
◆ applyObbt()
|
static |
main function of obbt
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator itlimit LP iteration limit (-1: no limit) result result pointer
Definition at line 1999 of file prop_obbt.c.
Referenced by SCIP_DECL_PROPEXEC().
◆ solveBilinearLP()
|
static |
computes a valid inequality from the current LP relaxation for a bilinear term xy only involving x and y; the inequality is found by optimizing along the line connecting the points (xs,ys) and (xt,yt) over the currently given linear relaxation of the problem; this optimization problem is an LP
max lambda s.t. Ax <= b (x,y) = (xs,ys) + lambda ((xt,yt) - (xs,ys)) lambda in [0,1]
which is equivalent to
max x s.t. (1) Ax <= b (2) (x - xs) / (xt - xs) = (y - ys) / (yt - ys)
Let x* be the optimal primal and (mu,theta) be the optimal dual solution of this LP. The KKT conditions imply that the aggregation of the linear constraints mu*Ax <= mu*b can be written as
x * (1 - theta) / (xt - xs) + y * theta / (yt - ys) = mu * Ax <= mu * b
<=> alpha * x + beta * y <= mu * b = alpha * (x*) + beta * (y*)
which is a valid inequality in the (x,y)-space; in order to avoid numerical difficulties when (xs,ys) is too close to (xt,yt), we scale constraint (1) by max{1,|xt-xs|,|yt-ys|} beforehand
- Parameters
-
scip SCIP data structure x first variable y second variable xs x-coordinate of the first point ys y-coordinate of the first point xt x-coordinate of the second point yt y-coordinate of the second point xcoef pointer to store the coefficient of x ycoef pointer to store the coefficient of y constant pointer to store the constant iterlim iteration limit (-1: for no limit) nnonzduals buffer to store the number of non-zero dual multipliers except for the auxiliary row (NULL if not needed)
Definition at line 2253 of file prop_obbt.c.
References applyObbtBilinear(), FALSE, NULL, r, REALABS, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPaddRowProbing(), SCIPaddVarToRow(), SCIPbacktrackProbing(), SCIPchgVarObjProbing(), SCIPcreateEmptyRowUnspec(), SCIPdebugMsg, SCIPgetLPRows(), SCIPgetLPSolstat(), SCIPgetNLPRows(), SCIPinProbing(), SCIPisFeasEQ(), SCIPisFeasZero(), SCIPisHugeValue(), SCIPisZero(), SCIPnewProbingNode(), SCIPreleaseRow(), SCIProwGetDualsol(), SCIPsolveProbingLP(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPwarningMessage(), and TRUE.
◆ applyObbtBilinear()
|
static |
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator itlimit LP iteration limit (-1: no limit) result result pointer
Definition at line 2401 of file prop_obbt.c.
Referenced by SCIP_DECL_PROPEXEC(), and solveBilinearLP().
◆ getScore()
computes the score of a bound
- Parameters
-
scip SCIP data structure bound pointer of bound nlcount number of nonlinear constraints containing the bounds variable maxnlcount maximal number of nonlinear constraints a variable appears in
Definition at line 2596 of file prop_obbt.c.
◆ getNLPVarsNonConvexity()
|
static |
count how often each variable is used in a nonconvex term
- Parameters
-
scip SCIP data structure nccounts store the number each variable appears in a non-convex term
Definition at line 2639 of file prop_obbt.c.
◆ varIsInteresting()
determines whether a variable is interesting
- Parameters
-
scip SCIP data structure var variable to check nlcount number of nonlinear constraints containing the variable or number of non-convex terms containing the variable (depends on propdata->onlynonconvexvars)
Definition at line 2698 of file prop_obbt.c.
◆ initBounds()
|
static |
initializes interesting bounds
- Parameters
-
scip SCIP data structure propdata data of the obbt propagator
Definition at line 2714 of file prop_obbt.c.
Referenced by SCIP_DECL_PROPEXEC().
◆ SCIP_DECL_PROPCOPY()
|
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. We check SCIPgetSubscipDepth() in PROPEXEC to prevent the propagator to run in a sub-SCIP.
Definition at line 2906 of file prop_obbt.c.
References NULL, PROP_NAME, SCIPpropGetData(), and SCIPpropGetName().
◆ SCIP_DECL_PROPINITSOL()
|
static |
solving process initialization method of propagator (called when branch and bound process is about to begin)
Definition at line 2920 of file prop_obbt.c.
◆ SCIP_DECL_PROPEXEC()
|
static |
execution method of propagator
Definition at line 2951 of file prop_obbt.c.
References applyObbt(), applyObbtBilinear(), initBounds(), MAX, NULL, SCIP_CALL, SCIP_DECL_PROPEXITSOL(), SCIP_DECL_PROPRESPROP(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_LPSOLSTAT_OPTIMAL, SCIP_LPSOLSTAT_UNBOUNDEDRAY, SCIP_OKAY, SCIPallColsInLP(), SCIPdebugMsg, SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetNRootLPIterations(), SCIPgetProbName(), SCIPinProbing(), SCIPnodeGetNumber(), and SCIPpropGetData().
◆ SCIP_DECL_PROPRESPROP()
|
static |
propagation conflict resolving method of propagator
Definition at line 3064 of file prop_obbt.c.
Referenced by SCIP_DECL_PROPEXEC().
◆ SCIP_DECL_PROPEXITSOL()
|
static |
solving process deinitialization method of propagator (called before branch and bound process data is freed)
Definition at line 3073 of file prop_obbt.c.
Referenced by SCIP_DECL_PROPEXEC().
◆ SCIP_DECL_PROPFREE()
|
static |
destructor of propagator to free user data (called when SCIP is exiting)
Definition at line 3136 of file prop_obbt.c.