OFINS - Objective Function Induced Neighborhood Search - a primal heuristic for reoptimization.
Definition in file heur_ofins.c.
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include "scip/heur_ofins.h"
#include "scip/scipdefplugins.h"
#include "scip/pub_misc.h"
Go to the source code of this file.
Macros | |
#define | HEUR_NAME "ofins" |
#define | HEUR_DESC "primal heuristic for reoptimization, objective function induced neighborhood search" |
#define | HEUR_DISPCHAR 'A' |
#define | HEUR_PRIORITY 60000 |
#define | HEUR_FREQ 0 |
#define | HEUR_FREQOFS 0 |
#define | HEUR_MAXDEPTH 0 |
#define | HEUR_TIMING SCIP_HEURTIMING_BEFORENODE |
#define | HEUR_USESSUBSCIP TRUE |
#define | DEFAULT_MAXNODES 5000LL |
#define | DEFAULT_MAXCHGRATE 0.50 |
#define | DEFAULT_COPYCUTS TRUE |
#define | DEFAULT_MAXCHANGE 0.04 |
#define | DEFAULT_MINIMPROVE 0.01 |
#define | DEFAULT_ADDALLSOLS FALSE |
#define | DEFAULT_MINNODES 50LL |
#define | DEFAULT_NODESOFS 500LL |
#define | DEFAULT_NODESQUOT 0.1 |
#define | DEFAULT_LPLIMFAC 2.0 |
#define | EVENTHDLR_NAME "Ofins" |
#define | EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic" |
Functions | |
static | SCIP_DECL_EVENTEXEC (eventExecOfins) |
static SCIP_RETCODE | createNewSol (SCIP *scip, SCIP *subscip, SCIP_VAR **subvars, SCIP_HEUR *heur, SCIP_SOL *subsol, SCIP_Bool *success) |
static SCIP_RETCODE | setupAndSolve (SCIP *scip, SCIP *subscip, SCIP_HEUR *heur, SCIP_HEURDATA *heurdata, SCIP_RESULT *result, SCIP_Longint nstallnodes, SCIP_Bool *chgcoeffs) |
static SCIP_RETCODE | applyOfins (SCIP *scip, SCIP_HEUR *heur, SCIP_HEURDATA *heurdata, SCIP_RESULT *result, SCIP_Longint nstallnodes, SCIP_Bool *chgcoeffs) |
static | SCIP_DECL_HEURCOPY (heurCopyOfins) |
static | SCIP_DECL_HEURFREE (heurFreeOfins) |
static | SCIP_DECL_HEUREXEC (heurExecOfins) |
SCIP_RETCODE | SCIPincludeHeurOfins (SCIP *scip) |
#define HEUR_NAME "ofins" |
Definition at line 31 of file heur_ofins.c.
Referenced by SCIP_DECL_HEURCOPY(), SCIPincludeHeurOfins(), and setupAndSolve().
#define HEUR_DESC "primal heuristic for reoptimization, objective function induced neighborhood search" |
Definition at line 32 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_DISPCHAR 'A' |
Definition at line 33 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_PRIORITY 60000 |
Definition at line 34 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_FREQ 0 |
Definition at line 35 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_FREQOFS 0 |
Definition at line 36 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_MAXDEPTH 0 |
Definition at line 37 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE |
Definition at line 38 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define HEUR_USESSUBSCIP TRUE |
does the heuristic use a secondary SCIP instance?
Definition at line 39 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_MAXNODES 5000LL |
maximum number of nodes to regard in the subproblem
Definition at line 42 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_MAXCHGRATE 0.50 |
maximum percentage of changed objective coefficients
Definition at line 43 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_COPYCUTS TRUE |
if DEFAULT_USELPROWS is FALSE, then should all active cuts from the cutpool of the original scip be copied to constraints of the subscip
Definition at line 44 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_MAXCHANGE 0.04 |
maximal rate of change per coefficient to get fixed
Definition at line 47 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_MINIMPROVE 0.01 |
factor by which OFINS should at least improve the incumbent
Definition at line 48 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_ADDALLSOLS FALSE |
should all subproblem solutions be added to the original SCIP?
Definition at line 49 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_MINNODES 50LL |
minimum number of nodes to regard in the subproblem
Definition at line 50 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_NODESOFS 500LL |
number of nodes added to the contingent of the total nodes
Definition at line 51 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_NODESQUOT 0.1 |
subproblem nodes in relation to nodes of the original problem
Definition at line 52 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define DEFAULT_LPLIMFAC 2.0 |
factor by which the limit on the number of LP depends on the node limit
Definition at line 53 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
#define EVENTHDLR_NAME "Ofins" |
Definition at line 56 of file heur_ofins.c.
Referenced by SCIP_DECL_EVENTEXEC(), and setupAndSolve().
#define EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic" |
Definition at line 57 of file heur_ofins.c.
Referenced by setupAndSolve().
|
static |
Definition at line 83 of file heur_ofins.c.
References createNewSol(), EVENTHDLR_NAME, SCIP_CALL, SCIP_EVENTTYPE_LPSOLVED, SCIP_OKAY, SCIPdebugMsg, SCIPeventGetType(), SCIPeventhdlrGetName(), SCIPgetNLPs(), and SCIPinterruptSolve().
|
static |
creates a new solution for the original problem by copying the solution of the subproblem
scip | original SCIP data structure |
subscip | SCIP structure of the subproblem |
subvars | the variables of the subproblem |
heur | RENS heuristic structure |
subsol | solution of the subproblem |
success | used to store whether new solution was found or not |
Definition at line 108 of file heur_ofins.c.
References SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateSol(), SCIPfreeBufferArray, SCIPgetNOrigVars(), SCIPgetSolVals(), SCIPgetVarsData(), SCIPsetSolVals(), SCIPtrySolFree(), setupAndSolve(), and TRUE.
Referenced by SCIP_DECL_EVENTEXEC(), and setupAndSolve().
|
static |
scip | original SCIP data structure |
subscip | sub-SCIP data structure |
heur | heuristic data structure |
heurdata | euristic's private data structure |
result | result data structure |
nstallnodes | number of stalling nodes for the subproblem |
chgcoeffs | array of changed coefficients |
Definition at line 154 of file heur_ofins.c.
References applyOfins(), createNewSol(), EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, HEUR_NAME, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_EVENTTYPE_LPSOLVED, SCIP_FOUNDSOL, SCIP_OKAY, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_PLUGINNOTFOUND, SCIP_Real, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_UNBOUNDED, SCIP_UNBOUNDED, SCIPABORT, SCIPallocBufferArray, SCIPblkmem(), SCIPcatchEvent(), SCIPcopyLargeNeighborhoodSearch(), SCIPcopyLimits(), SCIPcreateSol(), SCIPdebug, SCIPdebugMsg, SCIPdropEvent(), SCIPerrorMessage, SCIPfindBranchrule(), SCIPfindNodesel(), SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPfreeSol(), SCIPgetBestSol(), SCIPgetNBinVars(), SCIPgetNConss(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPgetNNodes(), SCIPgetNOrigVars(), SCIPgetNSols(), SCIPgetNVars(), SCIPgetPrimalbound(), SCIPgetPrimalRayVal(), SCIPgetReoptLastOptSol(), SCIPgetSols(), SCIPgetSolVal(), SCIPgetSolvingTime(), SCIPgetStatus(), SCIPgetUpperbound(), SCIPgetVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhasPrimalRay(), SCIPincludeEventhdlrBasic(), SCIPinfinity(), SCIPisParamFixed(), SCIPpresolve(), SCIPprintRay(), SCIPprintStatistics(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetObjlimit(), SCIPsetPresolving(), SCIPsetSeparating(), SCIPsetSolVal(), SCIPsetSubscipsOff(), SCIPsolGetNodenum(), SCIPsolve(), SCIPstatisticPrintf, SCIPtransformProb(), SCIPupdatePrimalRay(), SCIPvarGetProbindex(), SCIPwarningMessage(), and TRUE.
Referenced by applyOfins(), and createNewSol().
|
static |
main procedure of the OFINS heuristic, creates and solves a sub-SCIP
scip | original SCIP data structure |
heur | heuristic data structure |
heurdata | euristic's private data structure |
result | result data structure |
nstallnodes | number of stalling nodes for the subproblem |
chgcoeffs | array of changed coefficients |
Definition at line 409 of file heur_ofins.c.
References SCIP_Bool, SCIP_CALL, SCIP_DECL_HEURCOPY(), SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_OKAY, SCIPcheckCopyLimits(), SCIPcreate(), SCIPfree(), SCIPgetReoptLastOptSol(), and setupAndSolve().
Referenced by SCIP_DECL_HEUREXEC(), and setupAndSolve().
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 463 of file heur_ofins.c.
References HEUR_NAME, SCIP_CALL, SCIP_DECL_HEURFREE(), SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurOfins().
Referenced by applyOfins().
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 477 of file heur_ofins.c.
References SCIP_DECL_HEUREXEC(), SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), and SCIPheurSetData().
Referenced by SCIP_DECL_HEURCOPY().
|
static |
execution method of primal heuristic
Definition at line 497 of file heur_ofins.c.
References applyOfins(), FALSE, MAX, REALABS, SCIP_Bool, SCIP_CALL, SCIP_DELAYED, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_ORIGINAL, SCIPallocBufferArray, SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetNBinVars(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPgetNNodes(), SCIPgetNReoptRuns(), SCIPgetReoptOldObjCoef(), SCIPgetVars(), SCIPheurGetData(), SCIPheurGetNBestSolsFound(), SCIPheurGetNCalls(), SCIPincludeHeurOfins(), SCIPisNegative(), SCIPisPositive(), SCIPisReoptEnabled(), SCIPisStopped(), SCIPisZero(), SCIPvarGetStatus(), SCIPvarIsActive(), and TRUE.
Referenced by SCIP_DECL_HEURFREE().