Detailed Description
rounding locks primal heuristic
Definition in file heur_locks.c.
#include "blockmemshell/memory.h"
#include "scip/heur_locks.h"
#include "scip/pub_cons.h"
#include "scip/pub_heur.h"
#include "scip/pub_lp.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.h"
#include "scip/scip_cons.h"
#include "scip/scip_copy.h"
#include "scip/scip_general.h"
#include "scip/scip_heur.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_prob.h"
#include "scip/scip_probing.h"
#include "scip/scip_randnumgen.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_timing.h"
#include "scip/scip_tree.h"
#include <string.h>
Go to the source code of this file.
Macros | |
#define | HEUR_NAME "locks" |
#define | HEUR_DESC "heuristic that fixes variables based on their rounding locks" |
#define | HEUR_DISPCHAR 'k' |
#define | HEUR_PRIORITY 3000 |
#define | HEUR_FREQ 0 |
#define | HEUR_FREQOFS 0 |
#define | HEUR_MAXDEPTH -1 |
#define | HEUR_TIMING SCIP_HEURTIMING_BEFORENODE |
#define | HEUR_USESSUBSCIP TRUE |
#define | DEFAULT_MAXNODES 5000LL |
#define | DEFAULT_ROUNDUPPROBABILITY 0.67 |
#define | DEFAULT_MINFIXINGRATE 0.65 |
#define | DEFAULT_MINIMPROVE 0.01 |
#define | DEFAULT_MINNODES 500LL |
#define | DEFAULT_NODESOFS 500LL |
#define | DEFAULT_NODESQUOT 0.1 |
#define | DEFAULT_MAXPROPROUNDS 2 |
#define | DEFAULT_UPDATELOCKS TRUE |
#define | DEFAULT_COPYCUTS TRUE |
#define | DEFAULT_USEFINALSUBMIP TRUE |
#define | DEFAULT_RANDSEED 73 |
#define | heurInitsolLocks NULL |
#define | heurExitsolLocks NULL |
Functions | |
static SCIP_RETCODE | createNewSol (SCIP *scip, SCIP *subscip, SCIP_VAR **subvars, SCIP_SOL *newsol, SCIP_SOL *subsol, SCIP_Bool *success) |
static | SCIP_DECL_HEURCOPY (heurCopyLocks) |
static | SCIP_DECL_HEURFREE (heurFreeLocks) |
static | SCIP_DECL_HEURINIT (heurInitLocks) |
static | SCIP_DECL_HEUREXIT (heurExitLocks) |
SCIP_RETCODE | SCIPapplyLockFixings (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_Bool *cutoff, SCIP_Bool *allrowsfulfilled) |
static | SCIP_DECL_HEUREXEC (heurExecLocks) |
SCIP_RETCODE | SCIPincludeHeurLocks (SCIP *scip) |
Macro Definition Documentation
◆ HEUR_NAME
#define HEUR_NAME "locks" |
Definition at line 52 of file heur_locks.c.
Referenced by SCIP_DECL_HEUREXEC(), and SCIPapplyLockFixings().
◆ HEUR_DESC
#define HEUR_DESC "heuristic that fixes variables based on their rounding locks" |
Definition at line 53 of file heur_locks.c.
◆ HEUR_DISPCHAR
#define HEUR_DISPCHAR 'k' |
Definition at line 54 of file heur_locks.c.
◆ HEUR_PRIORITY
#define HEUR_PRIORITY 3000 |
Definition at line 55 of file heur_locks.c.
◆ HEUR_FREQ
#define HEUR_FREQ 0 |
Definition at line 56 of file heur_locks.c.
◆ HEUR_FREQOFS
#define HEUR_FREQOFS 0 |
Definition at line 57 of file heur_locks.c.
◆ HEUR_MAXDEPTH
#define HEUR_MAXDEPTH -1 |
Definition at line 58 of file heur_locks.c.
◆ HEUR_TIMING
#define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE |
Definition at line 59 of file heur_locks.c.
◆ HEUR_USESSUBSCIP
#define HEUR_USESSUBSCIP TRUE |
does the heuristic use a secondary SCIP instance?
Definition at line 60 of file heur_locks.c.
◆ DEFAULT_MAXNODES
#define DEFAULT_MAXNODES 5000LL |
maximum number of nodes to regard in the subproblem
Definition at line 62 of file heur_locks.c.
◆ DEFAULT_ROUNDUPPROBABILITY
#define DEFAULT_ROUNDUPPROBABILITY 0.67 |
probability for rounding a variable up in case of ties
Definition at line 63 of file heur_locks.c.
◆ DEFAULT_MINFIXINGRATE
#define DEFAULT_MINFIXINGRATE 0.65 |
minimum percentage of variables that have to be fixed
Definition at line 64 of file heur_locks.c.
◆ DEFAULT_MINIMPROVE
#define DEFAULT_MINIMPROVE 0.01 |
factor by which locks heuristic should at least improve the incumbent
Definition at line 65 of file heur_locks.c.
◆ DEFAULT_MINNODES
#define DEFAULT_MINNODES 500LL |
minimum number of nodes to regard in the subproblem
Definition at line 70 of file heur_locks.c.
◆ DEFAULT_NODESOFS
#define DEFAULT_NODESOFS 500LL |
number of nodes added to the contingent of the total nodes
Definition at line 71 of file heur_locks.c.
◆ DEFAULT_NODESQUOT
#define DEFAULT_NODESQUOT 0.1 |
subproblem nodes in relation to nodes of the original problem
Definition at line 72 of file heur_locks.c.
◆ DEFAULT_MAXPROPROUNDS
#define DEFAULT_MAXPROPROUNDS 2 |
maximum number of propagation rounds during probing
Definition at line 73 of file heur_locks.c.
◆ DEFAULT_UPDATELOCKS
#define DEFAULT_UPDATELOCKS TRUE |
should the locks be updated based on LP rows?
Definition at line 74 of file heur_locks.c.
◆ DEFAULT_COPYCUTS
#define DEFAULT_COPYCUTS TRUE |
should all active cuts from the cutpool of the original scip be copied to constraints of the subscip?
Definition at line 75 of file heur_locks.c.
◆ DEFAULT_USEFINALSUBMIP
#define DEFAULT_USEFINALSUBMIP TRUE |
should a final sub-MIP be solved to construct a feasible solution if the LP was not roundable?
Definition at line 78 of file heur_locks.c.
◆ DEFAULT_RANDSEED
#define DEFAULT_RANDSEED 73 |
initial random seed
Definition at line 81 of file heur_locks.c.
◆ heurInitsolLocks
#define heurInitsolLocks NULL |
Definition at line 221 of file heur_locks.c.
◆ heurExitsolLocks
#define heurExitsolLocks NULL |
Definition at line 222 of file heur_locks.c.
Function Documentation
◆ createNewSol()
|
static |
creates a new solution for the original problem by copying the solution of the subproblem
- Parameters
-
scip original SCIP data structure subscip SCIP structure of the subproblem subvars the variables of the subproblem newsol working solution subsol solution of the subproblem success used to store whether new solution was found or not
Definition at line 109 of file heur_locks.c.
References FALSE, NULL, SCIP_CALL, SCIP_DECL_HEURCOPY(), SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetNOrigVars(), SCIPgetSolVals(), SCIPgetVarsData(), SCIPsetSolVals(), SCIPtrySol(), and TRUE.
Referenced by SCIP_DECL_HEUREXEC().
◆ SCIP_DECL_HEURCOPY()
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 153 of file heur_locks.c.
Referenced by createNewSol().
◆ SCIP_DECL_HEURFREE()
|
static |
free method for primal heuristic plugins (called when SCIP is exiting)
Definition at line 167 of file heur_locks.c.
◆ SCIP_DECL_HEURINIT()
|
static |
initialization method of primal heuristic (called after problem was transformed)
Definition at line 185 of file heur_locks.c.
◆ SCIP_DECL_HEUREXIT()
|
static |
deinitialization method of primal heuristic (called before transformed problem is freed)
Definition at line 205 of file heur_locks.c.
◆ SCIPapplyLockFixings()
SCIP_RETCODE SCIPapplyLockFixings | ( | SCIP * | scip, |
SCIP_HEURDATA * | heurdata, | ||
SCIP_Bool * | cutoff, | ||
SCIP_Bool * | allrowsfulfilled | ||
) |
apply fix-and-propagate scheme based on variable locks
- Note
- probing mode of SCIP needs to be enabled before
- Parameters
-
scip SCIP data structure heurdata primal heuristic data cutoff pointer to store if a cutoff was detected allrowsfulfilled pointer to store if all rows became redundant
Definition at line 228 of file heur_locks.c.
References FALSE, HEUR_NAME, NULL, r, REALABS, SCIP_Bool, SCIP_CALL, SCIP_DECL_HEUREXEC(), SCIP_LOCKTYPE_MODEL, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARTYPE_BINARY, SCIPallocBufferArray, SCIPallocClearBufferArray, SCIPbacktrackProbing(), SCIPcolGetNNonz(), SCIPcolGetRows(), SCIPcolGetVals(), SCIPcolGetVar(), SCIPconshdlrGetNCheckConss(), SCIPdebug, SCIPdebugMsg, SCIPduplicateBufferArray, SCIPfindConshdlr(), SCIPfindHeur(), SCIPfixVarProbing(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetDepth(), SCIPgetLPRowsData(), SCIPgetNCheckConss(), SCIPgetNConss(), SCIPgetNLPRows(), SCIPgetProbingDepth(), SCIPgetRowMaxActivity(), SCIPgetRowMinActivity(), SCIPgetVarsData(), SCIPheurGetData(), SCIPinProbing(), SCIPisFeasGE(), SCIPisFeasGT(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisInfinity(), SCIPisPositive(), SCIPisStopped(), SCIPnewProbingNode(), SCIPprintRow(), SCIPpropagateProbing(), SCIPrandomGetReal(), SCIProwGetCols(), SCIProwGetLhs(), SCIProwGetLPPos(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetRank(), SCIProwGetRhs(), SCIProwGetVals(), SCIPvarGetCol(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbLocal(), TRUE, and w.
Referenced by applyVbounds(), and SCIP_DECL_HEUREXEC().
◆ SCIP_DECL_HEUREXEC()
|
static |
execution method of primal heuristic
Definition at line 692 of file heur_locks.c.
References createNewSol(), FALSE, HEUR_NAME, MIN, NULL, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_DIDNOTFIND, SCIP_FOUNDSOL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_LPSOLSTAT_INFEASIBLE, SCIP_LPSOLSTAT_OBJLIMIT, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIPallocBufferArray, SCIPapplyLockFixings(), SCIPblkmem(), SCIPcheckCopyLimits(), SCIPcheckSol(), SCIPconstructLP(), SCIPcopy(), SCIPcopyCuts(), SCIPcopyLimits(), SCIPcreate(), SCIPcreateSol(), SCIPcutoffNode(), SCIPdebug, SCIPdebugMsg, SCIPenableVarHistory(), SCIPendProbing(), SCIPfindBranchrule(), SCIPfindConshdlr(), SCIPflushLP(), SCIPfree(), SCIPfreeBufferArray, SCIPfreeSol(), SCIPgetBoolParam(), SCIPgetCurrentNode(), SCIPgetLowerbound(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetNConss(), SCIPgetNLPIterations(), SCIPgetNLPRows(), SCIPgetNNodes(), SCIPgetNPseudoBranchCands(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetSols(), SCIPgetSolvingTime(), SCIPgetStatus(), SCIPgetUpperbound(), SCIPgetVarsData(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPheurGetData(), SCIPheurGetNBestSolsFound(), SCIPheurGetNCalls(), SCIPincludeHeurLocks(), SCIPisInfinity(), SCIPisParamFixed(), SCIPisStopped(), SCIPlinkLPSol(), SCIPpresolve(), SCIPprintSol(), SCIPprintStatistics(), SCIProundSol(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetObjlimit(), SCIPsetPresolving(), SCIPsetSeparating(), SCIPsetSubscipsOff(), SCIPsolve(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPsumepsilon(), SCIPtrySol(), SCIPwarningMessage(), and TRUE.
Referenced by SCIPapplyLockFixings().