COMPLETESOL - primal heuristic trying to complete given partial solutions.
Definition in file heur_completesol.c.
#include "blockmemshell/memory.h"#include "scip/cons_linear.h"#include "scip/heur_completesol.h"#include "scip/pub_event.h"#include "scip/pub_heur.h"#include "scip/pub_message.h"#include "scip/pub_misc.h"#include "scip/pub_sol.h"#include "scip/pub_var.h"#include "scip/scip_branch.h"#include "scip/scip_cons.h"#include "scip/scip_copy.h"#include "scip/scip_event.h"#include "scip/scip_general.h"#include "scip/scip_heur.h"#include "scip/scip_mem.h"#include "scip/scip_message.h"#include "scip/scip_nlp.h"#include "scip/scip_nodesel.h"#include "scip/scip_numerics.h"#include "scip/scip_param.h"#include "scip/scip_prob.h"#include "scip/scip_probing.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 "scip/scip_var.h"#include <string.h>Go to the source code of this file.
| #define HEUR_NAME "completesol" |
Definition at line 64 of file heur_completesol.c.
| #define HEUR_DESC "primal heuristic trying to complete given partial solutions" |
Definition at line 65 of file heur_completesol.c.
| #define HEUR_DISPCHAR SCIP_HEURDISPCHAR_LNS |
Definition at line 66 of file heur_completesol.c.
| #define HEUR_PRIORITY 0 |
Definition at line 67 of file heur_completesol.c.
| #define HEUR_FREQ 0 |
Definition at line 68 of file heur_completesol.c.
| #define HEUR_FREQOFS 0 |
Definition at line 69 of file heur_completesol.c.
| #define HEUR_MAXDEPTH 0 |
Definition at line 70 of file heur_completesol.c.
| #define HEUR_TIMING SCIP_HEURTIMING_BEFOREPRESOL | SCIP_HEURTIMING_BEFORENODE |
Definition at line 71 of file heur_completesol.c.
| #define HEUR_USESSUBSCIP TRUE |
does the heuristic use a secondary SCIP instance?
Definition at line 72 of file heur_completesol.c.
| #define DEFAULT_MAXNODES 5000LL |
maximum number of nodes to regard in the subproblem
Definition at line 75 of file heur_completesol.c.
| #define DEFAULT_MAXUNKRATE 0.85 |
maximum percentage of unknown solution values
Definition at line 76 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_ADDALLSOLS FALSE |
should all subproblem solutions be added to the original SCIP?
Definition at line 77 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol(), SCIPincludeHeurOfins(), and SCIPincludeHeurZeroobj().
| #define DEFAULT_MINNODES 50LL |
minimum number of nodes to regard in the subproblem
Definition at line 78 of file heur_completesol.c.
| #define DEFAULT_NODESOFS 500LL |
number of nodes added to the contingent of the total nodes
Definition at line 79 of file heur_completesol.c.
| #define DEFAULT_NODESQUOT 0.1 |
subproblem nodes in relation to nodes of the original problem
Definition at line 80 of file heur_completesol.c.
| #define DEFAULT_LPLIMFAC 2.0 |
factor by which the limit on the number of LP depends on the node limit
Definition at line 81 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol(), SCIPincludeHeurCrossover(), SCIPincludeHeurDins(), SCIPincludeHeurLocalbranching(), SCIPincludeHeurLpface(), SCIPincludeHeurOfins(), SCIPincludeHeurRins(), and SCIPincludeHeurTrustregion().
| #define DEFAULT_OBJWEIGHT 1.0 |
weight of the original objective function (1: only original objective)
Definition at line 82 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol(), and SCIPincludeSepaCGMIP().
| #define DEFAULT_BOUNDWIDENING 0.1 |
bound widening factor applied to continuous variables (0: round bounds to next integer, 1: relax to global bounds)
Definition at line 83 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_MINIMPROVE 0.01 |
factor by which the incumbent should be improved at least
Definition at line 86 of file heur_completesol.c.
| #define DEFAULT_MINOBJWEIGHT 1e-3 |
minimal weight for original objective function (zero could lead to infinite solutions)
Definition at line 87 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_IGNORECONT FALSE |
should solution values for continuous variables be ignored?
Definition at line 88 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_BESTSOLS 5 |
heuristic stops, if the given number of improving solutions were found (-1: no limit)
Definition at line 89 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_MAXPROPROUNDS 10 |
maximal number of iterations in propagation (-1: no limit)
Definition at line 90 of file heur_completesol.c.
| #define DEFAULT_MAXLPITER -1LL |
maximal number of LP iterations (-1: no limit)
Definition at line 91 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_MAXCONTVARS -1 |
maximal number of continuous variables after presolving (-1: no limit)
Definition at line 92 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol().
| #define DEFAULT_BEFOREPRESOL TRUE |
should the heuristic run before presolving?
Definition at line 93 of file heur_completesol.c.
Referenced by SCIPincludeHeurCompletesol(), and SCIPincludeHeurOneopt().
| #define EVENTHDLR_NAME "Completesol" |
Definition at line 96 of file heur_completesol.c.
| #define EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic" |
Definition at line 97 of file heur_completesol.c.
|
static |
Definition at line 131 of file heur_completesol.c.
References assert(), EVENTHDLR_NAME, heurdata, NULL, SCIP_CALL, SCIP_EVENTTYPE_LPSOLVED, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPdebugMsg, SCIPeventGetType(), SCIPeventhdlrGetName(), SCIPgetNLPs(), and SCIPinterruptSolve().
|
static |
creates a subproblem by fixing a number of variables
| scip | original SCIP data structure |
| subscip | SCIP data structure for the subproblem |
| heurdata | heuristic's private data structure |
| subvars | the variables of the subproblem |
| partialsol | partial solution |
| tightened | array to store for which variables we have found bound tightenings |
Definition at line 156 of file heur_completesol.c.
References assert(), cutoff, eps, FALSE, frac, heurdata, i, MIN, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OBJSENSE_MAXIMIZE, SCIP_OBJSENSE_MINIMIZE, SCIP_OKAY, SCIP_Real, SCIP_UNKNOWN, SCIP_VARTYPE_CONTINUOUS, SCIPaddCoefLinear(), SCIPaddCons(), SCIPaddVar(), SCIPchgVarObj(), SCIPcreateConsBasicLinear(), SCIPcreateVarBasic(), SCIPdebugMsg, SCIPfeasFrac(), SCIPgetLowerbound(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetObjsense(), SCIPgetSolVal(), SCIPgetUpperbound(), SCIPgetVars(), SCIPinfinity(), SCIPisEQ(), SCIPisInfinity(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPsnprintf(), SCIPsumepsilon(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetProbindex(), SCIPvarIsActive(), SCIPvarIsBinary(), and vars.
Referenced by setupAndSolve().
|
static |
perform a probing bound change or fixes the variable
| scip | original SCIP data structure |
| var | problem variable |
| newval | new bound |
| branchdir | bound change direction |
| success | pointer to store whether the bound could be tightened |
Definition at line 349 of file heur_completesol.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_Real, SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPfixVarProbing(), SCIPisGE(), SCIPisGT(), SCIPisLE(), SCIPisLT(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and var.
Referenced by tightenVariables().
|
static |
tries variables bound changes guided by the given solution
| scip | original SCIP data structure |
| heurdata | heuristic's private data structure |
| vars | problem variables |
| nvars | number of problem variables |
| sol | solution to guide the bound changes |
| tightened | array to store if variable bound could be tightened |
| infeasible | pointer to store whether subproblem is infeasible |
Definition at line 399 of file heur_completesol.c.
References assert(), chgProbingBound(), cutoff, FALSE, heurdata, NULL, nvars, REALABS, SCIP_Bool, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_FIXED, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_Longint, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIP_Real, SCIP_SOLORIGIN_PARTIAL, SCIP_UNKNOWN, SCIPbacktrackProbing(), SCIPceil(), SCIPdebugMsg, SCIPfloor(), SCIPgetNContVars(), SCIPgetProbingDepth(), SCIPgetSolVal(), SCIPisEQ(), SCIPisGT(), SCIPisInfinity(), SCIPisIntegral(), SCIPisLT(), SCIPnewProbingNode(), SCIPpropagateProbing(), SCIPsolGetOrigin(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsIntegral(), sol, TRUE, and vars.
Referenced by applyCompletesol().
|
static |
| scip | original SCIP data structure |
| subscip | sub-SCIP data structure |
| heur | heuristic data structure |
| heurdata | heuristic's private data structure |
| result | result data structure |
| nstallnodes | number of stalling nodes for the subproblem |
| partialsol | partial solution |
| tightened | array to store whether a variable was already tightened |
Definition at line 711 of file heur_completesol.c.
References assert(), createSubproblem(), EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, HEUR_NAME, heurdata, i, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_LPSOLVED, SCIP_FOUNDSOL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_PLUGINNOTFOUND, SCIP_STAGE_PRESOLVED, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_MEMLIMIT, SCIP_STATUS_NODELIMIT, SCIP_STATUS_TIMELIMIT, SCIP_VERBLEVEL_FULL, SCIP_VERBLEVEL_HIGH, SCIP_VERBLEVEL_NONE, SCIPABORT, SCIPallocBufferArray, SCIPblkmem(), SCIPcatchEvent(), SCIPcopyConsCompression(), SCIPcopyLimits(), SCIPdebug, SCIPdebugMsg, SCIPdropEvent(), SCIPerrorMessage, SCIPfindBranchrule(), SCIPfindNodesel(), SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetNBinImplVars(), SCIPgetNBinVars(), SCIPgetNConss(), SCIPgetNContImplVars(), SCIPgetNContVars(), SCIPgetNIntImplVars(), SCIPgetNIntVars(), SCIPgetNNodes(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetPrimalbound(), SCIPgetSols(), SCIPgetSolvingTime(), SCIPgetStage(), SCIPgetStatus(), SCIPgetVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPincludeEventhdlrBasic(), SCIPinfinity(), SCIPisNLPEnabled(), SCIPisParamFixed(), SCIPpresolve(), SCIPprintStatistics(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetPresolving(), SCIPsetSeparating(), SCIPsetSubscipsOff(), SCIPsolGetNodenum(), SCIPsolve(), SCIPstatisticPrintf, SCIPtransformProb(), SCIPtranslateSubSol(), SCIPtrySolFree(), SCIPverbMessage(), SCIPwarningMessage(), TRUE, valid, and vars.
Referenced by applyCompletesol().
|
static |
main procedure of the completesol heuristic, creates and solves a sub-SCIP
| scip | original SCIP data structure |
| heur | heuristic data structure |
| heurdata | heuristic's private data structure |
| result | result data structure |
| nstallnodes | number of stalling nodes for the subproblem |
| partialsol | partial solution |
Definition at line 951 of file heur_completesol.c.
References assert(), heurdata, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_OKAY, SCIP_VERBLEVEL_HIGH, SCIPallocClearBufferArray, SCIPcheckCopyLimits(), SCIPcreate(), SCIPdebugMsg, SCIPendProbing(), SCIPfree(), SCIPfreeBufferArray, SCIPgetNVars(), SCIPgetVars(), SCIPstartProbing(), SCIPverbMessage(), setupAndSolve(), tightenVariables(), and vars.
Referenced by SCIP_DECL_HEUREXEC().
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 1027 of file heur_completesol.c.
References assert(), HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurCompletesol().
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 1041 of file heur_completesol.c.
References assert(), heurdata, NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), and SCIPheurSetData().
|
static |
execution method of primal heuristic
Definition at line 1061 of file heur_completesol.c.
References applyCompletesol(), assert(), FALSE, heurdata, MIN, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_DELAYED, SCIP_DIDNOTRUN, SCIP_FOUNDSOL, SCIP_HEURTIMING_BEFORENODE, SCIP_HEURTIMING_BEFOREPRESOL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIP_UNKNOWN, SCIP_VARTYPE_CONTINUOUS, SCIPcreateSol(), SCIPdebugMsg, SCIPgetCurrentNode(), SCIPgetNContImplVars(), SCIPgetNContVars(), SCIPgetNNodes(), SCIPgetNPartialSols(), SCIPgetNRuns(), SCIPgetNVars(), SCIPgetPartialSols(), SCIPgetRootNode(), SCIPgetSolVal(), SCIPgetVars(), SCIPheurGetData(), SCIPheurGetNBestSolsFound(), SCIPheurGetNCalls(), SCIPisIntegral(), SCIPisStopped(), SCIPsetSolVal(), SCIPsolIsPartial(), SCIPtrySolFree(), SCIPvarGetType(), SCIPvarIsActive(), SCIPwarningMessage(), sol, TRUE, and vars.