prop_obbt.c
Go to the documentation of this file.
23 /**@todo if bound tightenings of other propagators are the reason for lpsolstat != SCIP_LPSOLSTAT_OPTIMAL, resolve LP */ 24 /**@todo only run more than once in root node if primal bound improved or many cuts were added to the LP */ 25 /**@todo filter bounds of a variable already if SCIPisLbBetter()/SCIPisUbBetter() would return FALSE */ 31 /**@todo implement conflict resolving callback by calling public method of genvbounds propagator, since the reason are 32 * exactly the variable bounds with nonnegative reduced costs stored in the right-hand side of the generated 36 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 57 #define DEFAULT_CREATE_GENVBOUNDS TRUE /**< should obbt try to provide genvbounds if possible? */ 58 #define DEFAULT_FILTERING_NORM TRUE /**< should coefficients in filtering be normalized w.r.t. the 60 #define DEFAULT_APPLY_FILTERROUNDS FALSE /**< try to filter bounds in so-called filter rounds by solving 62 #define DEFAULT_APPLY_TRIVIALFITLERING TRUE /**< should obbt try to use the LP solution to filter some bounds? */ 63 #define DEFAULT_GENVBDSDURINGFILTER TRUE /**< try to genrate genvbounds during trivial and aggressive filtering? */ 64 #define DEFAULT_DUALFEASTOL 1e-9 /**< feasibility tolerance for reduced costs used in obbt; this value 66 #define DEFAULT_CONDITIONLIMIT -1.0 /**< maximum condition limit used in LP solver (-1.0: no limit) */ 70 #define DEFAULT_ITLIMITFACTOR 10.0 /**< multiple of root node LP iterations used as total LP iteration 74 #define DEFAULT_TIGHTINTBOUNDSPROBING TRUE /**< should bounds of integral variables be tightened during 76 #define DEFAULT_TIGHTCONTBOUNDSPROBING FALSE /**< should bounds of continuous variables be tightened during 84 #define DEFAULT_SEPARATESOL FALSE /**< should the obbt LP solution be separated? note that that by 87 #define DEFAULT_SEPAMINITER 0 /**< minimum number of iteration spend to separate an obbt LP solution */ 88 #define DEFAULT_SEPAMAXITER 10 /**< maximum number of iteration spend to separate an obbt LP solution */ 89 #define DEFAULT_GENVBDSDURINGSEPA TRUE /**< try to create genvbounds during separation process? */ 90 #define DEFAULT_PROPAGATEFREQ 0 /**< trigger a propagation round after that many bound tightenings 121 { 137 SCIP_Bool applytrivialfilter; /**< should obbt try to use the LP solution to filter some bounds? */ 138 SCIP_Bool genvbdsduringfilter;/**< should we try to generate genvbounds during trivial and aggressive 157 int ntrivialfiltered; /**< number of filtered bounds because the LP value was equal to the bound */ 159 int ngenvboundsprobing; /**< number of non-trivial genvbounds generated and added during obbt */ 160 int ngenvboundsaggrfil; /**< number of non-trivial genvbounds found during aggressive filtering */ 202 SCIPwarningMessage(scip, " error while solving LP in obbt propagator; LP solve terminated with code <%d>\n", retcode); 203 SCIPwarningMessage(scip, " this does not affect the remaining solution procedure --> continue\n"); 277 /* create objective cutoff row; set local flag to FALSE since primal cutoff is globally valid */ 279 SCIP_CALL( SCIPcreateEmptyRowUnspec(scip, &row, rowname, -SCIPinfinity(scip), SCIPgetCutoffbound(scip), FALSE, FALSE, FALSE) ); 354 /** determines whether variable should be included in the right-hand side of the generalized variable bound */ 385 SCIP_Longint nolditerations, /**< iterations count at the beginning of the corresponding function */ 411 /** returns the objective coefficient for a variable's bound that will be chosen during filtering */ 462 * where z is the current cutoff bound. Let (mu, nu, gamma, alpha, beta) >= 0 be the optimal solution of the dual of 483 * that holds for all primal feasible points with objective value at least cutoff_bound. Therefore, the latter 564 /* we need at least one nonzero coefficient or a nonzero dual multiplier for the objective cutoff */ 567 SCIP_Bool addgenvbound; /* if everything is fine with the redcosts and the bounds, add the genvbound */ 631 SCIP_CALL( SCIPgenVBoundAdd(scip, propdata->genvboundprop, genvboundvars, xi, genvboundcoefs, ncoefs, 655 /** exchange a bound which has been processed and updates the last undone and unfiltered bound index 700 SCIPdebugMessage("can't filter using existing lp solution since it was not solved to optimality\n"); 720 /* bound is tight; since this holds for all fixed variables, those are filtered here automatically */ 728 SCIPdebugMessage("trivial filtered var: %s boundval=%e solval=%e\n", SCIPvarGetName(bound->var), boundval, solval); 996 * 1.) Try first to filter lower bounds of interesting variables, whose bounds are not already filtered 1028 SCIP_CALL( filterRound(scip, propdata, nleftiterations, &nfiltered, objcoefs, objcoefsinds, nobjcoefs) ); 1035 while( nfiltered >= propdata->nminfilter && ( nleftiterations == -1 || nleftiterations > 0 ) ); 1038 * 2.) Now try to filter the remaining upper bounds of interesting variables, whose bounds are not already filtered 1083 SCIP_CALL( filterRound(scip, propdata, nleftiterations, &nfiltered, objcoefs, objcoefsinds, nobjcoefs) ); 1089 while( nfiltered >= propdata->nminfilter && ( nleftiterations == -1 || nleftiterations > 0 ) ); 1155 SCIPdebug( SCIPdebugMessage("tightended: %s old: %e new: %e\n" , SCIPvarGetName(bound->var), oldbound, 1257 diff = (bound1->boundtype == SCIP_BOUNDTYPE_LOWER ? 1 : 0) - (bound2->boundtype == SCIP_BOUNDTYPE_LOWER ? 1 : 0); 1279 } 1295 } 1346 /** try to separate the solution of the last OBBT LP in order to learn better variable bounds; we apply additional 1347 * separation rounds as long as the routine finds better bounds; because of dual degeneracy we apply a minimum number of 1397 SCIPdebugMessage("applySeparation() - optimal=%u error=%u lpiter=%" SCIP_LONGINT_FORMAT "\n", optimal, error, nlpiter); 1416 SCIP_CALL( tightenBoundProbing(scip, currbound, SCIPvarGetLPSol(currbound->var), &tightened) ); 1423 /* leave the separation if we did not tighten the bound and proceed at least propdata->sepaminiter iterations */ 1474 while( propdata->lastidx < propdata->nbounds - 1 && !propdata->bounds[propdata->lastidx]->done && 1544 /* set the objective of currbound to zero to null the whole objective; otherwise the objective is wrong when 1575 SCIPdebugMessage("tightening bound %s = %e bounds: [%e, %e]\n", SCIPvarGetName(currbound->var), 1582 SCIPdebugMessage("tightening bound %s = %e bounds: [%e, %e]\n", SCIPvarGetName(currbound->var), 1633 SCIPdebugMessage("propagation - cutoff %u ndomreds %" SCIP_LONGINT_FORMAT "\n", cutoff, ndomredsfound); 1770 hasconditionlimit = (SCIPgetRealParam(scip, "lp/conditionlimit", &oldconditionlimit) == SCIP_OKAY); 1773 SCIPwarningMessage(scip, "obbt propagator could not set condition limit in LP solver - running without\n"); 1775 else if( propdata->conditionlimit > 0.0 && (oldconditionlimit < 0.0 || propdata->conditionlimit < oldconditionlimit) ) 1801 /* note that it is not possible to change the objective of non-column variables during probing; we have to take 1825 /* update bound->newval if we have learned additional bound tightenings during SCIPpropagateProbing() */ 1826 if( oldlbs != NULL && oldubs != NULL && propdata->npropagatedomreds - lastnpropagatedomreds > 0 ) 1833 /* it might be the case that a bound found by the additional propagation is better than the bound found after solving an OBBT 1851 if( bound->boundtype == SCIP_BOUNDTYPE_LOWER && SCIPisLbBetter(scip, SCIPvarGetLbLocal(bound->var), oldlb, oldub) ) 1853 SCIPdebugMessage("tighter lower bound due to propagation: %d - %e -> %e\n", i, oldlb, SCIPvarGetLbLocal(bound->var)); 1858 if( bound->boundtype == SCIP_BOUNDTYPE_UPPER && SCIPisUbBetter(scip, SCIPvarGetUbLocal(bound->var), oldlb, oldub) ) 1860 SCIPdebugMessage("tighter upper bound due to propagation: %d - %e -> %e\n", i, oldub, SCIPvarGetUbLocal(bound->var)); 1906 assert(maxnlcount >= nlcount); 1909 score = (unsigned int) ( nlcount > 0 ? (OBBT_SCOREBASE * nlcount * ( OBBT_SCOREBASE - 1 )) / maxnlcount : 0 ); 1971 if( bilinvar1 == bilinvar2 && !(quadelem->coef >= 0 ? SCIPisInfinity(scip, -SCIPnlrowGetLhs(nlrow)) : SCIPisInfinity(scip, SCIPnlrowGetRhs(nlrow))) ) 2102 -infty2infty(SCIPinfinity(scip), INTERVALINFTY, -MIN(SCIPvarGetLbGlobal(var), SCIPvarGetUbGlobal(var))), /*lint !e666*/ 2103 +infty2infty(SCIPinfinity(scip), INTERVALINFTY, MAX(SCIPvarGetLbGlobal(var), SCIPvarGetUbGlobal(var))) ); /*lint !e666*/ 2106 SCIP_CALL( SCIPexprtreeCheckCurvature(exprtree, SCIPinfinity(scip), varbounds, &curvature, NULL) ); 2108 /* increase counter for all variables in the expression tree if the constraint is non-convex */ 2161 } 2223 propdata->bounds[bdidx]->score = getScore(scip, propdata->bounds[bdidx], nlcount[i], maxnlcount); 2237 propdata->bounds[bdidx]->score = getScore(scip, propdata->bounds[bdidx], nlcount[i], maxnlcount); 2265 /* sort bounds according to decreasing score; although this initial order will be overruled by the distance 2266 * criterion later, gives a more well-defined starting situation for OBBT and might help to reduce solver 2280 /** solving process initialization method of propagator (called when branch and bound process is about to begin) */ 2301 propdata->genvboundprop = propdata->creategenvbounds ? SCIPfindProp(scip, GENVBOUND_PROP_NAME) : NULL; 2303 SCIPdebugMessage("creating genvbounds: %s\n", propdata->genvboundprop != NULL ? "true" : "false"); 2321 /* do not run in: presolving, repropagation, probing mode, if no objective propagation is allowed */ 2322 if( SCIPgetStage(scip) != SCIP_STAGE_SOLVING || SCIPinRepropagation(scip) || SCIPinProbing(scip) || !SCIPallowObjProp(scip) ) 2332 /* only run if LP all columns are in the LP, i.e., the LP is a relaxation; e.g., do not run if pricers are active 2373 if( SCIPgetDepth(scip) > 0 && SCIPnodeGetNumber(SCIPgetCurrentNode(scip)) == propdata->lastnode ) 2378 SCIPdebugMessage("applying obbt for problem <%s> at depth %d\n", SCIPgetProbName(scip), SCIPgetDepth(scip)); 2380 /* without an optimal LP solution we don't want to run; this may be because propagators with higher priority have 2383 if( SCIPgetLPSolstat(scip) != SCIP_LPSOLSTAT_OPTIMAL && SCIPgetLPSolstat(scip) != SCIP_LPSOLSTAT_UNBOUNDEDRAY ) 2415 /** solving process deinitialization method of propagator (called before branch and bound process data is freed) */ 2430 /* note that because we reset filtered flags to false at each call to obbt, the same bound may be filtered multiple 2433 SCIPstatisticMessage("DIVE-LP: %" SCIP_LONGINT_FORMAT " NFILTERED: %d NTRIVIALFILTERED: %d NSOLVED: %d " 2435 propdata->nprobingiterations, propdata->nfiltered, propdata->ntrivialfiltered, propdata->nsolvedbounds, 2436 propdata->nfilterlpiters, propdata->ngenvboundsprobing, propdata->ngenvboundsaggrfil, propdata->ngenvboundstrivfil); 2491 propdata->nfiltered = 0; 2503 SCIP_CALL( SCIPincludePropBasic(scip, &prop, PROP_NAME, PROP_DESC, PROP_PRIORITY, PROP_FREQ, PROP_DELAY, PROP_TIMING, 2540 "multiple of root node LP iterations used as total LP iteration limit for obbt (<= 0: no limit )", 2541 &propdata->itlimitfactor, FALSE, DEFAULT_ITLIMITFACTOR, SCIP_REAL_MIN, SCIP_REAL_MAX, NULL, NULL) ); 2548 "feasibility tolerance for reduced costs used in obbt; this value is used if SCIP's dual feastol is greater", 2572 "select the type of ordering algorithm which should be used (0: no special ordering, 1: greedy, 2: greedy reverse)",
static SCIP_RETCODE countNLRowVarsNonConvexity(SCIP *scip, int *nlcounts, SCIP_NLROW *nlrow) Definition: prop_obbt.c:1949 SCIP_RETCODE SCIPsetPropExitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol))) Definition: scip.c:7025 SCIP_RETCODE SCIPsolveProbingLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff) Definition: scip.c:32788 Definition: type_result.h:33 SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name) Definition: scip.c:5878 Definition: intervalarith.h:36 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) Definition: prop_genvbounds.c:1952 static SCIP_RETCODE filterExistingLP(SCIP *scip, SCIP_PROPDATA *propdata, int *nfiltered, BOUND *currbound) Definition: prop_obbt.c:694 Definition: type_lp.h:39 static SCIP_RETCODE sortBounds(SCIP *scip, SCIP_PROPDATA *propdata) Definition: prop_obbt.c:1279 SCIP_RETCODE SCIPgetCurvatureNonlinear(SCIP *scip, SCIP_CONS *cons, SCIP_Bool checkcurv, SCIP_EXPRCURV *curvature) Definition: cons_nonlinear.c:9657 Definition: struct_scip.h:53 void SCIPwarningMessage(SCIP *scip, const char *formatstr,...) Definition: scip.c:1248 SCIP_CONS ** SCIPconshdlrGetConss(SCIP_CONSHDLR *conshdlr) Definition: cons.c:4258 SCIP_RETCODE SCIPapplyCutsProbing(SCIP *scip, SCIP_Bool *cutoff) Definition: scip.c:32880 static SCIP_RETCODE filterRound(SCIP *scip, SCIP_PROPDATA *propdata, int itlimit, int *nfiltered, SCIP_Real *objcoefs, int *objcoefsinds, int nobjcoefs) Definition: prop_obbt.c:810 Definition: struct_var.h:196 int SCIPconshdlrGetNActiveConss(SCIP_CONSHDLR *conshdlr) Definition: cons.c:4322 static int nextBound(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_Bool convexphase) Definition: prop_obbt.c:1311 SCIP_RETCODE SCIPpropagateProbing(SCIP *scip, int maxproprounds, SCIP_Bool *cutoff, SCIP_Longint *ndomredsfound) Definition: scip.c:32552 Definition: type_var.h:53 static SCIP_Real getFilterCoef(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_VAR *var, SCIP_BOUNDTYPE boundtype) Definition: prop_obbt.c:425 SCIP_RETCODE SCIPsetRealParam(SCIP *scip, const char *name, SCIP_Real value) Definition: scip.c:4109 void SCIPintervalSetBounds(SCIP_INTERVAL *resultant, SCIP_Real inf, SCIP_Real sup) Definition: intervalarith.c:479 SCIP_EXPRTREE * SCIPgetExprtreeBivariate(SCIP *scip, SCIP_CONS *cons) Definition: cons_bivariate.c:8103 Definition: type_expr.h:98 SCIP_RETCODE SCIPaddLongintParam(SCIP *scip, const char *name, const char *desc, SCIP_Longint *valueptr, SCIP_Bool isadvanced, SCIP_Longint defaultvalue, SCIP_Longint minvalue, SCIP_Longint maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: scip.c:3601 Definition: type_lp.h:37 SCIP_Bool SCIPisLbBetter(SCIP *scip, SCIP_Real newlb, SCIP_Real oldlb, SCIP_Real oldub) Definition: scip.c:42255 static SCIP_RETCODE tightenBoundProbing(SCIP *scip, BOUND *bound, SCIP_Real newval, SCIP_Bool *tightened) Definition: prop_obbt.c:1182 SCIP_RETCODE SCIPaddBoolParam(SCIP *scip, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: scip.c:3547 SCIP_RETCODE SCIPcreateEmptyRowUnspec(SCIP *scip, SCIP_ROW **row, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable) Definition: scip.c:27658 static unsigned int getScore(SCIP *scip, BOUND *bound, int nlcount, int maxnlcount) Definition: prop_obbt.c:1906 SCIP_RETCODE SCIPchgDualfeastol(SCIP *scip, SCIP_Real dualfeastol) Definition: scip.c:41261 SCIP_RETCODE SCIPaddIntParam(SCIP *scip, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: scip.c:3573 SCIP_RETCODE SCIPexprtreeCheckCurvature(SCIP_EXPRTREE *tree, SCIP_Real infinity, SCIP_INTERVAL *varbounds, SCIP_EXPRCURV *curv, SCIP_INTERVAL *bounds) Definition: expr.c:8840 static SCIP_RETCODE createGenVBound(SCIP *scip, SCIP_PROPDATA *propdata, BOUND *bound, SCIP_Bool *found) Definition: prop_obbt.c:499 static SCIP_RETCODE applyBoundChgs(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_RESULT *result) Definition: prop_obbt.c:1115 Definition: type_lp.h:40 Definition: type_result.h:35 Definition: prop_obbt.c:116 Definition: struct_cons.h:36 static SCIP_Bool includeVarGenVBound(SCIP *scip, SCIP_VAR *var) Definition: prop_obbt.c:368 Definition: struct_cons.h:116 void SCIPsortDownPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len) Definition: type_lp.h:47 SCIP_Bool SCIPisFeasEQ(SCIP *scip, SCIP_Real val1, SCIP_Real val2) Definition: scip.c:41907 constraint handler for quadratic constraints Definition: type_var.h:42 Definition: type_retcode.h:33 static SCIP_Bool varIsInteresting(SCIP *scip, SCIP_VAR *var, int nlcount) Definition: prop_obbt.c:2161 static SCIP_RETCODE getNLPVarsNonConvexity(SCIP *scip, int *nlcounts) Definition: prop_obbt.c:2019 Definition: type_result.h:42 static int getIterationsLeft(SCIP *scip, SCIP_Longint nolditerations, SCIP_Longint itlimit) Definition: prop_obbt.c:395 Definition: type_lp.h:34 Definition: struct_prop.h:36 SCIP_RETCODE SCIPtightenVarLb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened) Definition: scip.c:20193 SCIP_RETCODE SCIPsetPropResprop(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop))) Definition: scip.c:7106 SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree))) Definition: scip.c:6961 Definition: type_var.h:55 SCIP_RETCODE SCIPincludePropBasic(SCIP *scip, SCIP_PROP **propptr, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, SCIP_DECL_PROPEXEC((*propexec)), SCIP_PROPDATA *propdata) Definition: scip.c:6908 constraint handler for nonlinear constraints Definition: type_var.h:54 optimization-based bound tightening propagator SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row) Definition: scip.c:27811 Definition: struct_lp.h:189 methods for debugging SCIP_RETCODE SCIPgetNlRowQuadratic(SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow) Definition: cons_quadratic.c:13273 SCIP_RETCODE SCIPseparateSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff) Definition: scip.c:31435 constraint handler for bivariate nonlinear constraints static SCIP_RETCODE applySeparation(SCIP *scip, SCIP_PROPDATA *propdata, BOUND *currbound, SCIP_Longint *nleftiterations, SCIP_Bool *success) Definition: prop_obbt.c:1363 Constraint handler for absolute power constraints . static SCIP_RETCODE setObjProbing(SCIP *scip, SCIP_PROPDATA *propdata, BOUND *bound, SCIP_Real coef) Definition: prop_obbt.c:321 SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol))) Definition: scip.c:7009 SCIP_RETCODE SCIPchgVarObjProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj) Definition: scip.c:32471 Definition: type_lp.h:36 static SCIP_RETCODE solveLP(SCIP *scip, int itlimit, SCIP_Bool *error, SCIP_Bool *optimal) Definition: prop_obbt.c:189 SCIP_RETCODE SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row) Definition: scip.c:27834 Definition: type_lp.h:48 Definition: type_expr.h:84 SCIP_RETCODE SCIPchgVarUbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound) Definition: scip.c:32352 SCIP_Bool SCIPisFeasLE(SCIP *scip, SCIP_Real val1, SCIP_Real val2) Definition: scip.c:41933 static SCIP_RETCODE findNewBounds(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_Longint *nleftiterations, SCIP_Bool convexphase) Definition: prop_obbt.c:1445 SCIP_RETCODE SCIPgetNLPVarsNonlinearity(SCIP *scip, int *nlcount) Definition: scip.c:28518 SCIP_RETCODE SCIPchgVarLbProbing(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound) Definition: scip.c:32318 SCIP_RETCODE SCIPtightenVarUb(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound, SCIP_Bool force, SCIP_Bool *infeasible, SCIP_Bool *tightened) Definition: scip.c:20299 Definition: struct_nlp.h:62 SCIP_Bool SCIPisFeasGE(SCIP *scip, SCIP_Real val1, SCIP_Real val2) Definition: scip.c:41959 SCIP_RETCODE SCIPgetNlRowNonlinear(SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow) Definition: cons_nonlinear.c:9499 static SCIP_RETCODE filterBounds(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_Longint itlimit) Definition: prop_obbt.c:971 static SCIP_RETCODE addObjCutoff(SCIP *scip, SCIP_PROPDATA *propdata) Definition: prop_obbt.c:261 static SCIP_Bool varIsFixedLocal(SCIP *scip, SCIP_VAR *var) Definition: prop_obbt.c:311 Definition: type_set.h:42 Definition: type_lp.h:35 SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars) Definition: scip.c:10572 SCIP_RETCODE SCIPgetRealParam(SCIP *scip, const char *name, SCIP_Real *value) Definition: scip.c:3797 Definition: type_lp.h:33 Definition: type_lp.h:38 Definition: type_lpi.h:80 Definition: struct_expr.h:55 SCIP_Real SCIPgetVarObjProbing(SCIP *scip, SCIP_VAR *var) Definition: scip.c:32385 static SCIP_RETCODE initBounds(SCIP *scip, SCIP_PROPDATA *propdata) Definition: prop_obbt.c:2177 Definition: objbranchrule.h:33 SCIP_RETCODE SCIPaddRealParam(SCIP *scip, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata) Definition: scip.c:3629 SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val) Definition: scip.c:27864 static SCIP_RETCODE applyObbt(SCIP *scip, SCIP_PROPDATA *propdata, SCIP_Longint itlimit, SCIP_RESULT *result) Definition: prop_obbt.c:1684 Definition: type_result.h:39 SCIP_Bool SCIPisUbBetter(SCIP *scip, SCIP_Real newub, SCIP_Real oldlb, SCIP_Real oldub) Definition: scip.c:42270 SCIP_Bool SCIPisConvexQuadratic(SCIP *scip, SCIP_CONS *cons) Definition: cons_quadratic.c:13463 generalized variable bounds propagator SCIP_RETCODE SCIPgetNlRowAbspower(SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow) Definition: cons_abspower.c:7155 Definition: type_var.h:56 |