All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
heur_rounding.c
Go to the documentation of this file.
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
39 #define DEFAULT_SUCCESSFACTOR 100 /**< number of calls per found solution that are considered as standard success,
49 int successfactor; /**< number of calls per found solution that are considered as standard success,
186 /** returns a variable, that pushes activity of the row in the given direction with minimal negative impact on other rows;
187 * if variables have equal impact, chooses the one with best objective value improvement in corresponding direction;
194 SCIP_Real minobj, /**< minimal objective value possible after rounding remaining fractional vars */
198 SCIP_Real* oldsolval, /**< pointer to store old (fractional) solution value of rounding variable */
255 if( (nlocks < minnlocks || deltaobj < bestdeltaobj) && minobj - obj < SCIPgetCutoffbound(scip) )
274 if( (nlocks < minnlocks || deltaobj < bestdeltaobj) && minobj + obj < SCIPgetCutoffbound(scip) )
296 SCIP_Real minobj, /**< minimal objective value possible after rounding remaining fractional vars */
311 SCIP_Real minobj, /**< minimal objective value possible after rounding remaining fractional vars */
321 /** returns a fractional variable, that has most impact on rows in opposite direction, i.e. that is most crucial to
323 * if variables have equal impact, chooses the one with best objective value improvement in corresponding direction;
330 SCIP_Real minobj, /**< minimal objective value possible after rounding remaining fractional vars */
359 assert(SCIPvarGetType(var) == SCIP_VARTYPE_BINARY || SCIPvarGetType(var) == SCIP_VARTYPE_INTEGER);
372 if( (nlocks > maxnlocks || deltaobj < bestdeltaobj) && minobj - obj < SCIPgetCutoffbound(scip) )
388 if( (nlocks > maxnlocks || deltaobj < bestdeltaobj) && minobj + obj < SCIPgetCutoffbound(scip) )
475 /** solving process initialization method of primal heuristic (called when branch and bound process is about to begin) */
494 /** solving process deinitialization method of primal heuristic (called before branch and bound process data is freed) */
584 * the rows should be feasible, but due to numerical inaccuracies in the LP solver, they can be violated
622 bestroundval = obj > 0.0 ? SCIPfeasFloor(scip, lpcandssol[c]) : SCIPfeasCeil(scip, lpcandssol[c]);
633 SCIPdebugMessage("rounding heuristic: nfrac=%d, nviolrows=%d, obj=%g (best possible obj: %g)\n",
641 * - if a violated row exists, round a variable decreasing the violation, that has least impact on other rows
642 * - otherwise, round a variable, that has strongest devastating impact on rows in opposite direction
671 SCIP_CALL( selectEssentialRounding(scip, sol, minobj, lpcands, nlpcands, &roundvar, &oldsolval, &newsolval) );
699 SCIPdebugMessage("rounding heuristic: -> nfrac=%d, nviolrows=%d, obj=%g (best possible obj: %g)\n",
|