prop_obbt.c File Reference Detailed Descriptionoptimization-based bound tightening propagator Definition in file prop_obbt.c. #include <assert.h> #include <string.h> #include "scip/prop_obbt.h" #include "scip/prop_genvbounds.h" #include "scip/debug.h" #include "scip/cons_quadratic.h" #include "scip/cons_nonlinear.h" #include "scip/cons_abspower.h" #include "scip/cons_bivariate.h" Go to the source code of this file.
Macro Definition Documentation
Definition at line 49 of file prop_obbt.c.
Definition at line 50 of file prop_obbt.c.
Definition at line 51 of file prop_obbt.c.
propagator priority Definition at line 52 of file prop_obbt.c.
propagator frequency Definition at line 53 of file prop_obbt.c.
should propagation method be delayed, if other propagators found reductions? Definition at line 54 of file prop_obbt.c.
should obbt try to provide genvbounds if possible? Definition at line 58 of file prop_obbt.c.
should coefficients in filtering be normalized w.r.t. the domains sizes? Definition at line 59 of file prop_obbt.c.
try to filter bounds in so-called filter rounds by solving auxiliary LPs? Definition at line 62 of file prop_obbt.c.
should obbt try to use the LP solution to filter some bounds? Definition at line 65 of file prop_obbt.c.
try to genrate genvbounds during trivial and aggressive filtering? Definition at line 66 of file prop_obbt.c.
feasibility tolerance for reduced costs used in obbt; this value is used if SCIP's dual feastol is greater Definition at line 67 of file prop_obbt.c.
maximum condition limit used in LP solver (-1.0: no limit) Definition at line 70 of file prop_obbt.c.
minimal relative improve for strengthening bounds Definition at line 71 of file prop_obbt.c.
minimal number of filtered bounds to apply another filter round Definition at line 72 of file prop_obbt.c.
multiple of root node LP iterations used as total LP iteration limit for obbt (<= 0: no limit ) Definition at line 75 of file prop_obbt.c.
minimum LP iteration limit Definition at line 78 of file prop_obbt.c.
only apply obbt on non-convex variables Definition at line 79 of file prop_obbt.c.
should bounds of integral variables be tightened during the probing mode? Definition at line 80 of file prop_obbt.c.
should bounds of continuous variables be tightened during the probing mode? Definition at line 83 of file prop_obbt.c.
which type of ordering algorithm should we use? (0: no, 1: greedy, 2: greedy reverse) Definition at line 86 of file prop_obbt.c.
base that is used to calculate a bounds score value Definition at line 89 of file prop_obbt.c.
Definition at line 90 of file prop_obbt.c.
value for infinity in interval operations Definition at line 91 of file prop_obbt.c.
should the obbt LP solution be separated? note that that by separating solution OBBT will apply all bound tightenings immediatly Definition at line 93 of file prop_obbt.c.
minimum number of iteration spend to separate an obbt LP solution Definition at line 98 of file prop_obbt.c.
maximum number of iteration spend to separate an obbt LP solution Definition at line 99 of file prop_obbt.c.
try to create genvbounds during separation process? Definition at line 100 of file prop_obbt.c.
trigger a propagation round after that many bound tightenings (0: no propagation) Definition at line 101 of file prop_obbt.c.
translate from one value of infinity to another if val is >= infty1, then give infty2, else give val Definition at line 109 of file prop_obbt.c. Typedef DocumentationDefinition at line 128 of file prop_obbt.c. Function Documentation
solves the LP and handles errors
Definition at line 189 of file prop_obbt.c. Referenced by filterExistingLP().
adds the objective cutoff to the LP; must be in probing mode
Definition at line 261 of file prop_obbt.c. determines, whether a variable is already locally fixed
Definition at line 311 of file prop_obbt.c.
sets objective to minimize or maximize a single variable Definition at line 321 of file prop_obbt.c. Referenced by filterExistingLP(). determines whether variable should be included in the right-hand side of the generalized variable bound
Definition at line 368 of file prop_obbt.c.
returns number of LP iterations left (-1: no limit )
Definition at line 395 of file prop_obbt.c. References Bound::boundtype, getFilterCoef(), MAX, MIN, NULL, SCIP_Real, SCIPdebugMessage, and SCIPgetNLPIterations().
returns the objective coefficient for a variable's bound that will be chosen during filtering
Definition at line 425 of file prop_obbt.c. Referenced by getIterationsLeft().
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.
Definition at line 499 of file prop_obbt.c. Referenced by filterExistingLP().
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
Definition at line 671 of file prop_obbt.c. References NULL. Referenced by filterExistingLP().
trying to filter some bounds using the existing LP solution
Definition at line 694 of file prop_obbt.c. References Bound::boundtype, createGenVBound(), Bound::done, exchangeBounds(), Bound::filtered, filterRound(), Bound::found, NULL, SCIP_BASESTAT_BASIC, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPchgVarObjProbing(), SCIPcolGetBasisStatus(), SCIPdebugMessage, SCIPgetDepth(), SCIPgetNLPIterations(), SCIPgetNVars(), SCIPgetVarObjProbing(), SCIPgetVars(), SCIPinProbing(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisZero(), SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetName(), SCIPvarGetUbLocal(), setObjProbing(), solveLP(), TRUE, and Bound::var.
enforces one round of filtering
Definition at line 810 of file prop_obbt.c. Referenced by filterExistingLP().
filter some bounds that are not improvable by solving auxiliary LPs
Definition at line 971 of file prop_obbt.c.
applies possible bound changes that were found
Definition at line 1115 of file prop_obbt.c.
tries to tighten a bound in probing mode
Definition at line 1182 of file prop_obbt.c.
comparison method for two bounds w.r.t. their scores Definition at line 1243 of file prop_obbt.c.
comparison method for two bounds w.r.t. their boundtype Definition at line 1253 of file prop_obbt.c. References NULL, SCIP_OKAY, SCIPdebugMessage, and SCIPsortDownPtr().
sort the propdata->bounds array with their distance or their boundtype key
Definition at line 1279 of file prop_obbt.c. References Bound::boundtype, NULL, REALABS, SCIP_BOUNDTYPE_LOWER, SCIPvarGetLbLocal(), SCIPvarGetLPSol(), SCIPvarGetUbLocal(), and Bound::var. evaluates a bound for the current LP solution Definition at line 1295 of file prop_obbt.c.
returns the index of the next undone and unfiltered bound with the smallest distance
Definition at line 1311 of file prop_obbt.c.
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
Definition at line 1363 of file prop_obbt.c.
finds new variable bounds until no iterations left or all bounds have been checked
Definition at line 1445 of file prop_obbt.c.
main function of obbt
Definition at line 1684 of file prop_obbt.c. Referenced by SCIP_DECL_PROPEXEC(). computes the score of a bound
Definition at line 1906 of file prop_obbt.c.
count the variables which appear in non-convex term of nlrow
Definition at line 1949 of file prop_obbt.c.
count how often each variable appears in a non-convex term
Definition at line 2019 of file prop_obbt.c. determines whether a variable is interesting
Definition at line 2161 of file prop_obbt.c.
initializes interesting bounds
Definition at line 2177 of file prop_obbt.c. Referenced by SCIP_DECL_PROPEXEC().
solving process initialization method of propagator (called when branch and bound process is about to begin) Definition at line 2294 of file prop_obbt.c.
execution method of propagator Definition at line 2322 of file prop_obbt.c. References applyObbt(), 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(), SCIPallowObjProp(), SCIPdebugMessage, SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetNRootLPIterations(), SCIPgetProbName(), SCIPinProbing(), SCIPnodeGetNumber(), and SCIPpropGetData().
propagation conflict resolving method of propagator Definition at line 2420 of file prop_obbt.c. Referenced by SCIP_DECL_PROPEXEC().
solving process deinitialization method of propagator (called before branch and bound process data is freed) Definition at line 2429 of file prop_obbt.c. Referenced by SCIP_DECL_PROPEXEC().
destructor of propagator to free user data (called when SCIP is exiting) Definition at line 2468 of file prop_obbt.c.
creates the obbt propagator and includes it in SCIP
Definition at line 2491 of file prop_obbt.c. Referenced by SCIPincludeDefaultPlugins(). |