Detailed Description
simple and fast LP rounding heuristic
The heuristic also tries to round relaxation solutions if available.
Definition in file heur_simplerounding.c.
#include "blockmemshell/memory.h"
#include "scip/heur_simplerounding.h"
#include "scip/pub_heur.h"
#include "scip/pub_message.h"
#include "scip/pub_var.h"
#include "scip/scip_branch.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_sol.h"
#include "scip/scip_solvingstats.h"
#include "scip/scip_var.h"
#include <string.h>
Go to the source code of this file.
Macros | |
#define | HEUR_NAME "simplerounding" |
#define | HEUR_DESC "simple and fast LP rounding heuristic" |
#define | HEUR_DISPCHAR SCIP_HEURDISPCHAR_ROUNDING |
#define | HEUR_PRIORITY -30 |
#define | HEUR_FREQ 1 |
#define | HEUR_FREQOFS 0 |
#define | HEUR_MAXDEPTH -1 |
#define | HEUR_TIMING SCIP_HEURTIMING_DURINGLPLOOP | SCIP_HEURTIMING_DURINGPRICINGLOOP |
#define | HEUR_USESSUBSCIP FALSE |
#define | DEFAULT_ONCEPERNODE FALSE |
Functions | |
static SCIP_RETCODE | performSimpleRounding (SCIP *scip, SCIP_SOL *sol, SCIP_VAR **cands, SCIP_Real *candssol, int ncands, SCIP_RESULT *result) |
static SCIP_RETCODE | performLPSimpleRounding (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_HEURTIMING heurtiming, SCIP_RESULT *result) |
static SCIP_RETCODE | performRelaxSimpleRounding (SCIP *scip, SCIP_HEURDATA *heurdata, SCIP_RESULT *result) |
static | SCIP_DECL_HEURCOPY (heurCopySimplerounding) |
static | SCIP_DECL_HEURFREE (heurFreeSimplerounding) |
static | SCIP_DECL_HEURINIT (heurInitSimplerounding) |
static | SCIP_DECL_HEUREXIT (heurExitSimplerounding) |
static | SCIP_DECL_HEURINITSOL (heurInitsolSimplerounding) |
static | SCIP_DECL_HEUREXITSOL (heurExitsolSimplerounding) |
static | SCIP_DECL_HEUREXEC (heurExecSimplerounding) |
SCIP_RETCODE | SCIPincludeHeurSimplerounding (SCIP *scip) |
Macro Definition Documentation
◆ HEUR_NAME
#define HEUR_NAME "simplerounding" |
Definition at line 54 of file heur_simplerounding.c.
Referenced by SCIP_DECL_HEURCOPY(), SCIP_DECL_HEUREXEC(), SCIP_DECL_HEUREXIT(), SCIP_DECL_HEURFREE(), SCIP_DECL_HEURINIT(), SCIP_DECL_HEURINITSOL(), and SCIPincludeHeurSimplerounding().
◆ HEUR_DESC
#define HEUR_DESC "simple and fast LP rounding heuristic" |
Definition at line 55 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ HEUR_DISPCHAR
#define HEUR_DISPCHAR SCIP_HEURDISPCHAR_ROUNDING |
Definition at line 56 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ HEUR_PRIORITY
#define HEUR_PRIORITY -30 |
Definition at line 57 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ HEUR_FREQ
#define HEUR_FREQ 1 |
Definition at line 58 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ HEUR_FREQOFS
#define HEUR_FREQOFS 0 |
Definition at line 59 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ HEUR_MAXDEPTH
#define HEUR_MAXDEPTH -1 |
Definition at line 60 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ HEUR_TIMING
#define HEUR_TIMING SCIP_HEURTIMING_DURINGLPLOOP | SCIP_HEURTIMING_DURINGPRICINGLOOP |
Definition at line 61 of file heur_simplerounding.c.
Referenced by SCIP_DECL_HEUREXITSOL(), and SCIPincludeHeurSimplerounding().
◆ HEUR_USESSUBSCIP
#define HEUR_USESSUBSCIP FALSE |
does the heuristic use a secondary SCIP instance?
Definition at line 62 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
◆ DEFAULT_ONCEPERNODE
#define DEFAULT_ONCEPERNODE FALSE |
should the heuristic only be called once per node?
Definition at line 64 of file heur_simplerounding.c.
Referenced by SCIPincludeHeurSimplerounding().
Function Documentation
◆ performSimpleRounding()
|
static |
perform rounding
- Parameters
-
scip SCIP main data structure sol solution to round cands candidate variables candssol solutions of candidate variables ncands number of candidates result pointer to store the result of the heuristic call
Definition at line 82 of file heur_simplerounding.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_FOUNDSOL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARTYPE_IMPLINT, SCIPadjustImplicitSolVals(), SCIPallColsInLP(), SCIPdebugMsg, SCIPfeasCeil(), SCIPfeasFloor(), SCIPisFeasIntegral(), SCIPprintSol(), SCIPsetSolVal(), SCIPtrySol(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarMayRoundDown(), SCIPvarMayRoundUp(), and TRUE.
Referenced by performLPSimpleRounding(), and performRelaxSimpleRounding().
◆ performLPSimpleRounding()
|
static |
perform LP-rounding
- Parameters
-
scip SCIP main data structure heurdata heuristic data heurtiming heuristic timing mask result pointer to store the result of the heuristic call
Definition at line 186 of file heur_simplerounding.c.
References NULL, performSimpleRounding(), SCIP_CALL, SCIP_HEURTIMING_DURINGPRICINGLOOP, SCIP_Longint, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPdebugMsg, SCIPgetCutoffbound(), SCIPgetLPBranchCands(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetNLPs(), SCIPisGE(), and SCIPlinkLPSol().
Referenced by SCIP_DECL_HEUREXEC().
◆ performRelaxSimpleRounding()
|
static |
perform relaxation solution rounding
- Parameters
-
scip SCIP main data structure heurdata heuristic data result pointer to store the result of the heuristic call
Definition at line 246 of file heur_simplerounding.c.
References NULL, performSimpleRounding(), SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetRelaxSolVal(), SCIPgetVarsData(), SCIPisFeasIntegral(), SCIPisRelaxSolValid(), and SCIPlinkRelaxSol().
Referenced by SCIP_DECL_HEUREXEC().
◆ SCIP_DECL_HEURCOPY()
|
static |
copy method for primal heuristic plugins (called when SCIP copies plugins)
Definition at line 336 of file heur_simplerounding.c.
References HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPheurGetName(), and SCIPincludeHeurSimplerounding().
◆ SCIP_DECL_HEURFREE()
|
static |
destructor of primal heuristic to free user data (called when SCIP is exiting)
Definition at line 350 of file heur_simplerounding.c.
References HEUR_NAME, NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPheurGetData(), SCIPheurGetName(), and SCIPheurSetData().
◆ SCIP_DECL_HEURINIT()
|
static |
initialization method of primal heuristic (called after problem was transformed)
Definition at line 370 of file heur_simplerounding.c.
References HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreateSol(), SCIPheurGetData(), and SCIPheurGetName().
◆ SCIP_DECL_HEUREXIT()
|
static |
deinitialization method of primal heuristic (called before transformed problem is freed)
Definition at line 389 of file heur_simplerounding.c.
References HEUR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeSol(), SCIPheurGetData(), and SCIPheurGetName().
◆ SCIP_DECL_HEURINITSOL()
|
static |
solving process initialization method of primal heuristic (called when branch and bound process is about to begin)
Definition at line 406 of file heur_simplerounding.c.
References HEUR_NAME, NULL, SCIP_HEURTIMING_AFTERLPNODE, SCIP_OKAY, SCIPheurGetData(), SCIPheurGetName(), and SCIPheurSetTimingmask().
◆ SCIP_DECL_HEUREXITSOL()
|
static |
solving process deinitialization method of primal heuristic (called before branch and bound process data is freed)
Definition at line 426 of file heur_simplerounding.c.
References HEUR_TIMING, SCIP_OKAY, and SCIPheurSetTimingmask().
◆ SCIP_DECL_HEUREXEC()
|
static |
execution method of primal heuristic
Definition at line 437 of file heur_simplerounding.c.
References HEUR_NAME, NULL, performLPSimpleRounding(), performRelaxSimpleRounding(), SCIP_CALL, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_HEURTIMING_DURINGPRICINGLOOP, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIPgetCutoffbound(), SCIPgetLPObjval(), SCIPgetLPSolstat(), SCIPgetNBinVars(), SCIPgetNIntVars(), SCIPgetNLPs(), SCIPgetVars(), SCIPhasCurrentNodeLP(), SCIPheurGetData(), SCIPheurGetName(), SCIPisGE(), SCIPisRelaxSolValid(), SCIPvarMayRoundDown(), and SCIPvarMayRoundUp().