handle partial solutions for linear problems with indicators and otherwise continuous variables
For linear problems with indicators and otherwise continuous variables, the indicator constraint handler can produce partial solutions, i.e., values for the indicator variables. This partial solution can be passed to this heuristic, which then fixes these values and solves an LP. Additionally a local search for a better solution is added.
Definition in file heur_indicator.c.
#include <assert.h>
#include <string.h>
#include "scip/scip.h"
#include "scip/heur_indicator.h"
#include "scip/cons_indicator.h"
Go to the source code of this file.
Macros | |
#define | HEUR_NAME "indicator" |
#define | HEUR_DESC "indicator heuristic to create feasible solutions from values for indicator variables" |
#define | HEUR_DISPCHAR 'A' |
#define | HEUR_PRIORITY -20200 |
#define | HEUR_FREQ 1 |
#define | HEUR_FREQOFS 0 |
#define | HEUR_MAXDEPTH -1 |
#define | HEUR_TIMING SCIP_HEURTIMING_DURINGLPLOOP |
#define | HEUR_USESSUBSCIP FALSE |
#define | DEFAULT_ONEOPT FALSE |
#define | DEFAULT_IMPROVESOLS FALSE |
Functions | |
static SCIP_RETCODE | tryOneOpt (SCIP *scip, SCIP_HEUR *heur, SCIP_HEURDATA *heurdata, int nindconss, SCIP_CONS **indconss, SCIP_Bool *solcand, int *nfoundsols) |
static SCIP_RETCODE | trySolCandidate (SCIP *scip, SCIP_HEUR *heur, SCIP_HEURDATA *heurdata, int nindconss, SCIP_CONS **indconss, SCIP_Bool *solcand, int *nfoundsols) |
static | SCIP_DECL_HEURCOPY (heurCopyIndicator) |
static | SCIP_DECL_HEURINIT (heurInitIndicator) |
static | SCIP_DECL_HEURFREE (heurFreeIndicator) |
static | SCIP_DECL_HEUREXEC (heurExecIndicator) |
SCIP_RETCODE | SCIPincludeHeurIndicator (SCIP *scip) |
SCIP_RETCODE | SCIPheurPassIndicator (SCIP *scip, SCIP_HEUR *heur, int nindconss, SCIP_CONS **indconss, SCIP_Bool *solcand, SCIP_Real obj) |
#define HEUR_NAME "indicator" |
Definition at line 33 of file heur_indicator.c.
Referenced by SCIP_DECL_HEURCOPY(), SCIPheurPassIndicator(), and SCIPincludeHeurIndicator().
#define HEUR_DESC "indicator heuristic to create feasible solutions from values for indicator variables" |
Definition at line 34 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_DISPCHAR 'A' |
Definition at line 35 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_PRIORITY -20200 |
Definition at line 36 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_FREQ 1 |
Definition at line 37 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_FREQOFS 0 |
Definition at line 38 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_MAXDEPTH -1 |
Definition at line 39 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_TIMING SCIP_HEURTIMING_DURINGLPLOOP |
Definition at line 40 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define HEUR_USESSUBSCIP FALSE |
does the heuristic use a secondary SCIP instance?
Definition at line 41 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define DEFAULT_ONEOPT FALSE |
whether the one-opt heuristic should be started
Definition at line 43 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
#define DEFAULT_IMPROVESOLS FALSE |
Try to improve other solutions by one-opt?
Definition at line 44 of file heur_indicator.c.
Referenced by SCIPincludeHeurIndicator().
|
static |
try one-opt on given solution
scip | SCIP data structure |
heur | indicator heuristic |
heurdata | heuristic data |
nindconss | number of indicator constraints |
indconss | indicator constraints |
solcand | values for indicator variables in partial solution |
nfoundsols | number of solutions found |
Definition at line 66 of file heur_indicator.c.
References FALSE, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPbacktrackProbing(), SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPconsIsActive(), SCIPcreateSol(), SCIPdebugMsg, SCIPendProbing(), SCIPgetBinaryVarIndicator(), SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetSolTransObj(), SCIPisStopped(), SCIPlinkLPSol(), SCIPnewProbingNode(), SCIPpropagateProbing(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPtrySolFree(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by SCIP_DECL_HEUREXEC(), and trySolCandidate().
|
static |
try given solution
scip | SCIP data structure |
heur | indicator heuristic |
heurdata | heuristic data |
nindconss | number of indicator constraints |
indconss | indicator constraints |
solcand | values for indicator variables in partial solution |
nfoundsols | number of solutions found |
Definition at line 203 of file heur_indicator.c.
References FALSE, SCIP_Bool, SCIP_CALL, SCIP_LPSOLSTAT_OPTIMAL, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPchgVarLbProbing(), SCIPchgVarUbProbing(), SCIPconsIsActive(), SCIPcreateSol(), SCIPdebugMsg, SCIPendProbing(), SCIPgetBinaryVarIndicator(), SCIPgetDepth(), SCIPgetLPSolstat(), SCIPgetSolTransObj(), SCIPlinkLPSol(), SCIPnewProbingNode(), SCIPprintSol(), SCIPpropagateProbing(), SCIPsolveProbingLP(), SCIPstartProbing(), SCIPtrySolFree(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), TRUE, and tryOneOpt().
Referenced by SCIP_DECL_HEUREXEC().
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 345 of file heur_indicator.c.
References HEUR_NAME, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurIndicator().
|
static |
initialization method of primal heuristic (called after problem was transformed)
Definition at line 359 of file heur_indicator.c.
References SCIP_OKAY, SCIPfindConshdlr(), SCIPheurGetData(), and SCIPwarningMessage().
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 384 of file heur_indicator.c.
References SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, SCIPheurGetData(), and SCIPheurSetData().
|
static |
execution method of primal heuristic
Definition at line 408 of file heur_indicator.c.
References FALSE, SCIP_Bool, SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_FOUNDSOL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPconshdlrGetConss(), SCIPconshdlrGetNConss(), SCIPconsIsActive(), SCIPdebugMsg, SCIPfreeBlockMemoryArray, SCIPfreeBufferArray, SCIPgetBestSol(), SCIPgetBinaryVarIndicator(), SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPgetSolOrigObj(), SCIPgetSolVal(), SCIPgetSubscipDepth(), SCIPheurGetData(), SCIPisFeasIntegral(), SCIPsolGetHeur(), TRUE, tryOneOpt(), and trySolCandidate().