Detailed Description
OFINS - Objective Function Induced Neighborhood Search - a primal heuristic for reoptimization.
Definition in file heur_ofins.c.
#include "blockmemshell/memory.h"
#include "scip/heuristics.h"
#include "scip/heur_ofins.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_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_nodesel.h"
#include "scip/scip_numerics.h"
#include "scip/scip_param.h"
#include "scip/scip_prob.h"
#include "scip/scip_sol.h"
#include "scip/scip_solve.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_timing.h"
#include <string.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) |
Macro Definition Documentation
◆ HEUR_NAME
#define HEUR_NAME "ofins" |
Definition at line 49 of file heur_ofins.c.
Referenced by SCIP_DECL_HEURCOPY(), SCIPincludeHeurOfins(), and setupAndSolve().
◆ HEUR_DESC
#define HEUR_DESC "primal heuristic for reoptimization, objective function induced neighborhood search" |
Definition at line 50 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_DISPCHAR
#define HEUR_DISPCHAR 'A' |
Definition at line 51 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_PRIORITY
#define HEUR_PRIORITY 60000 |
Definition at line 52 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_FREQ
#define HEUR_FREQ 0 |
Definition at line 53 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_FREQOFS
#define HEUR_FREQOFS 0 |
Definition at line 54 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_MAXDEPTH
#define HEUR_MAXDEPTH 0 |
Definition at line 55 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_TIMING
#define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE |
Definition at line 56 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ HEUR_USESSUBSCIP
#define HEUR_USESSUBSCIP TRUE |
does the heuristic use a secondary SCIP instance?
Definition at line 57 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_MAXNODES
#define DEFAULT_MAXNODES 5000LL |
maximum number of nodes to regard in the subproblem
Definition at line 60 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_MAXCHGRATE
#define DEFAULT_MAXCHGRATE 0.50 |
maximum percentage of changed objective coefficients
Definition at line 61 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_COPYCUTS
#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 62 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_MAXCHANGE
#define DEFAULT_MAXCHANGE 0.04 |
maximal rate of change per coefficient to get fixed
Definition at line 65 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_MINIMPROVE
#define DEFAULT_MINIMPROVE 0.01 |
factor by which OFINS should at least improve the incumbent
Definition at line 66 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_ADDALLSOLS
#define DEFAULT_ADDALLSOLS FALSE |
should all subproblem solutions be added to the original SCIP?
Definition at line 67 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_MINNODES
#define DEFAULT_MINNODES 50LL |
minimum number of nodes to regard in the subproblem
Definition at line 68 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_NODESOFS
#define DEFAULT_NODESOFS 500LL |
number of nodes added to the contingent of the total nodes
Definition at line 69 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_NODESQUOT
#define DEFAULT_NODESQUOT 0.1 |
subproblem nodes in relation to nodes of the original problem
Definition at line 70 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ DEFAULT_LPLIMFAC
#define DEFAULT_LPLIMFAC 2.0 |
factor by which the limit on the number of LP depends on the node limit
Definition at line 71 of file heur_ofins.c.
Referenced by SCIPincludeHeurOfins().
◆ EVENTHDLR_NAME
#define EVENTHDLR_NAME "Ofins" |
Definition at line 74 of file heur_ofins.c.
Referenced by SCIP_DECL_EVENTEXEC(), and setupAndSolve().
◆ EVENTHDLR_DESC
#define EVENTHDLR_DESC "LP event handler for " HEUR_NAME " heuristic" |
Definition at line 75 of file heur_ofins.c.
Referenced by setupAndSolve().
Function Documentation
◆ SCIP_DECL_EVENTEXEC()
|
static |
Definition at line 101 of file heur_ofins.c.
References createNewSol(), EVENTHDLR_NAME, NULL, SCIP_CALL, SCIP_EVENTTYPE_LPSOLVED, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIPdebugMsg, SCIPeventGetType(), SCIPeventhdlrGetName(), SCIPgetNLPs(), and SCIPinterruptSolve().
◆ 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 heur RENS heuristic structure subsol solution of the subproblem success used to store whether new solution was found or not
Definition at line 126 of file heur_ofins.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateSol(), SCIPfreeBufferArray, SCIPgetNOrigVars(), SCIPgetSolVals(), SCIPgetVarsData(), SCIPsetSolVals(), SCIPtrySolFree(), setupAndSolve(), and TRUE.
Referenced by SCIP_DECL_EVENTEXEC(), and setupAndSolve().
◆ setupAndSolve()
|
static |
- Parameters
-
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 172 of file heur_ofins.c.
References applyOfins(), createNewSol(), EVENTHDLR_DESC, EVENTHDLR_NAME, FALSE, HEUR_NAME, NULL, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_EVENTTYPE_LPSOLVED, SCIP_FOUNDSOL, SCIP_LONGINT_FORMAT, 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().
◆ applyOfins()
|
static |
main procedure of the OFINS heuristic, creates and solves a sub-SCIP
- Parameters
-
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 427 of file heur_ofins.c.
References NULL, 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().
◆ SCIP_DECL_HEURCOPY()
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 481 of file heur_ofins.c.
References HEUR_NAME, NULL, SCIP_CALL, SCIP_DECL_HEURFREE(), SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurOfins().
Referenced by applyOfins().
◆ SCIP_DECL_HEURFREE()
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 495 of file heur_ofins.c.
References NULL, SCIP_DECL_HEUREXEC(), SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), and SCIPheurSetData().
Referenced by SCIP_DECL_HEURCOPY().
◆ SCIP_DECL_HEUREXEC()
|
static |
execution method of primal heuristic
Definition at line 515 of file heur_ofins.c.
References applyOfins(), FALSE, MAX, MIN, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_DELAYED, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_LONGINT_FORMAT, 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().