Solving Constraint Integer Programs

Detailed Description

rapidlearning separator

Timo Berthold
Jakob Witzig

Definition in file sepa_rapidlearning.c.

#include <assert.h>
#include <string.h>
#include "scip/sepa_rapidlearning.h"
#include "scip/scipdefplugins.h"
#include "scip/heuristics.h"
#include "scip/pub_var.h"

Go to the source code of this file.


#define SEPA_NAME   "rapidlearning"
#define SEPA_DESC   "rapid learning heuristic and separator"
#define SEPA_PRIORITY   -1200000
#define SEPA_FREQ   5
#define DEFAULT_MAXNVARS   10000
#define DEFAULT_MAXNCONSS   10000
#define DEFAULT_MAXCALLS   100
#define DEFAULT_MINNODES   500
#define DEFAULT_MAXNODES   5000


static SCIP_DECL_SEPACOPY (sepaCopyRapidlearning)
static SCIP_DECL_SEPAFREE (sepaFreeRapidlearning)
static SCIP_RETCODE setupAndSolveSubscipRapidlearning (SCIP *scip, SCIP *subscip, SCIP_SEPADATA *sepadata, int randseed, SCIP_Bool global, SCIP_RESULT *result)
static SCIP_RETCODE checkExec (SCIP *scip, SCIP_SEPADATA *sepadata, SCIP_Bool *run)
static SCIP_DECL_SEPAEXECLP (sepaExeclpRapidlearning)
SCIP_RETCODE SCIPincludeSepaRapidlearning (SCIP *scip)

Macro Definition Documentation


#define SEPA_NAME   "rapidlearning"

Definition at line 44 of file sepa_rapidlearning.c.


#define SEPA_DESC   "rapid learning heuristic and separator"

Definition at line 45 of file sepa_rapidlearning.c.


#define SEPA_PRIORITY   -1200000

Definition at line 46 of file sepa_rapidlearning.c.


#define SEPA_FREQ   5

Definition at line 47 of file sepa_rapidlearning.c.



Definition at line 48 of file sepa_rapidlearning.c.



does the separator use a secondary SCIP instance?

Definition at line 49 of file sepa_rapidlearning.c.



should separation method be delayed, if other separators found cuts?

Definition at line 50 of file sepa_rapidlearning.c.



should the found conflicts be applied in the original SCIP?

Definition at line 52 of file sepa_rapidlearning.c.



should the found global bound deductions be applied in the original SCIP? apply only if conflicts and incumbent solution will be copied too

Definition at line 53 of file sepa_rapidlearning.c.



should the inference values be used as initialization in the original SCIP?

Definition at line 58 of file sepa_rapidlearning.c.



should the inference values only be used when rapid learning found other reductions?

Definition at line 59 of file sepa_rapidlearning.c.



should the incumbent solution be copied to the original SCIP?

Definition at line 60 of file sepa_rapidlearning.c.



should a solved status be copied to the original SCIP?

Definition at line 61 of file sepa_rapidlearning.c.



check whether rapid learning should be executed

Definition at line 63 of file sepa_rapidlearning.c.



should local LP degeneracy be checked?

Definition at line 64 of file sepa_rapidlearning.c.



should the progress on the dual bound be checked?

Definition at line 65 of file sepa_rapidlearning.c.



should the ratio of leaves proven to be infeasible and exceeding the cutoff bound be checked?

Definition at line 66 of file sepa_rapidlearning.c.



should the local objection function be checked?

Definition at line 69 of file sepa_rapidlearning.c.



should the number of solutions found so far be checked?

Definition at line 70 of file sepa_rapidlearning.c.



minimal degeneracy threshold to allow local rapid learning

Definition at line 71 of file sepa_rapidlearning.c.



minimal threshold of inf/obj leaves to allow local rapid learning

Definition at line 72 of file sepa_rapidlearning.c.



minimal ratio of unfixed variables in relation to basis size to allow local rapid learning

Definition at line 73 of file sepa_rapidlearning.c.



number of nodes that should be processed before rapid learning is executed locally based on the progress of the dualbound

Definition at line 76 of file sepa_rapidlearning.c.


#define DEFAULT_MAXNVARS   10000

maximum problem size (variables) for which rapid learning will be called

Definition at line 80 of file sepa_rapidlearning.c.


#define DEFAULT_MAXNCONSS   10000

maximum problem size (constraints) for which rapid learning will be called

Definition at line 81 of file sepa_rapidlearning.c.


#define DEFAULT_MAXCALLS   100

maximum number of overall calls

Definition at line 82 of file sepa_rapidlearning.c.


#define DEFAULT_MINNODES   500

minimum number of nodes considered in rapid learning run

Definition at line 84 of file sepa_rapidlearning.c.


#define DEFAULT_MAXNODES   5000

maximum number of nodes considered in rapid learning run

Definition at line 85 of file sepa_rapidlearning.c.



should rapid learning be applied when there are continuous variables?

Definition at line 87 of file sepa_rapidlearning.c.



maximal portion of continuous variables to apply rapid learning

Definition at line 88 of file sepa_rapidlearning.c.



maximal fraction of LP iterations compared to node LP iterations

Definition at line 89 of file sepa_rapidlearning.c.



should all active cuts from the cutpool of the original scip be copied to constraints of the subscip

Definition at line 90 of file sepa_rapidlearning.c.

Function Documentation


static SCIP_DECL_SEPACOPY ( sepaCopyRapidlearning  )

copy method for separator plugins (called when SCIP copies plugins)

Definition at line 139 of file sepa_rapidlearning.c.


static SCIP_DECL_SEPAFREE ( sepaFreeRapidlearning  )

destructor of separator to free user data (called when SCIP is exiting)

Definition at line 153 of file sepa_rapidlearning.c.

◆ setupAndSolveSubscipRapidlearning()

static SCIP_RETCODE setupAndSolveSubscipRapidlearning ( SCIP scip,
SCIP subscip,
int  randseed,
SCIP_Bool  global,

setup and solve sub-SCIP

scipSCIP data structure
subscipsubSCIP data structure
sepadataseparator data
randseedglobal seed shift used in the sub-SCIP
globalshould rapid learning run on the global problem?
resultresult pointer

Definition at line 173 of file sepa_rapidlearning.c.

References checkExec(), FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_BRANCHDIR_DOWNWARDS, SCIP_BRANCHDIR_UPWARDS, SCIP_CALL, SCIP_CALL_ABORT, SCIP_CONFTYPE_UNKNOWN, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_INVALIDCALL, SCIP_Longint, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_PARAMEMPHASIS_CPSOLVER, SCIP_PARAMSETTING_FAST, SCIP_PARAMSETTING_OFF, SCIP_Real, SCIP_REDUCEDDOM, SCIP_STAGE_SOLVED, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_OPTIMAL, SCIP_VARTYPE_IMPLINT, SCIP_VARTYPE_INTEGER, SCIPaddConflict(), SCIPallocBufferArray, SCIPallowStrongDualReds(), SCIPblkmem(), SCIPchgVarType(), SCIPconsGetName(), SCIPconshdlrGetConss(), SCIPconshdlrGetNConss(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcopyConsCompression(), SCIPcopyCuts(), SCIPcopyLimits(), SCIPdebugMsg, SCIPfindConshdlr(), SCIPfreeBufferArray, SCIPgetConsCopy(), SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetDualbound(), SCIPgetEffectiveRootDepth(), SCIPgetIntParam(), SCIPgetNConflictConssApplied(), SCIPgetNConflictConssFound(), SCIPgetNLPIterations(), SCIPgetNLPs(), SCIPgetNRootboundChgs(), SCIPgetNSols(), SCIPgetSolOrigObj(), SCIPgetSols(), SCIPgetStage(), SCIPgetStatus(), SCIPgetUpperbound(), SCIPgetVarAvgConflictlength(), SCIPgetVarAvgInferences(), SCIPgetVarsData(), SCIPgetVarVSIDS(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPinitVarBranchStats(), SCIPisEQ(), SCIPisFeasLE(), SCIPisFeasLT(), SCIPisLE(), SCIPisParamFixed(), SCIPpresolve(), SCIPprintStatistics(), SCIPretransformObj(), SCIPsetBoolParam(), SCIPsetEmphasis(), SCIPsetIntParam(), SCIPsetLongintParam(), SCIPsetObjlimit(), SCIPsetPresolving(), SCIPsetRealParam(), SCIPsetSeparating(), SCIPsetSubscipsOff(), SCIPsolve(), SCIPtightenVarLb(), SCIPtightenVarLbGlobal(), SCIPtightenVarUb(), SCIPtightenVarUbGlobal(), SCIPtransformProb(), SCIPtranslateSubSol(), SCIPtrySolFree(), SCIPunfixParam(), SCIPupdateLocalDualbound(), SCIPvarGetLbGlobal(), SCIPvarGetTransVar(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPwarningMessage(), and TRUE.

◆ checkExec()

static SCIP_RETCODE checkExec ( SCIP scip,
SCIP_Bool run 

returns whether rapid learning is allowed to run locally

scipSCIP data structure
sepadataseparator's private data
runpointer to store whether rapid learning is allowed to run

Definition at line 696 of file sepa_rapidlearning.c.

Referenced by setupAndSolveSubscipRapidlearning().


static SCIP_DECL_SEPAEXECLP ( sepaExeclpRapidlearning  )

LP solution separation method of separator

Definition at line 817 of file sepa_rapidlearning.c.