Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    rapidlearning separator

    Author
    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.

    Macros

    #define SEPA_NAME   "rapidlearning"
     
    #define SEPA_DESC   "rapid learning heuristic and separator"
     
    #define SEPA_PRIORITY   -1200000
     
    #define SEPA_FREQ   5
     
    #define SEPA_MAXBOUNDDIST   1.0
     
    #define SEPA_USESSUBSCIP   TRUE
     
    #define SEPA_DELAY   FALSE
     
    #define DEFAULT_APPLYCONFLICTS   TRUE
     
    #define DEFAULT_APPLYBDCHGS   TRUE
     
    #define DEFAULT_APPLYINFERVALS   TRUE
     
    #define DEFAULT_REDUCEDINFER   FALSE
     
    #define DEFAULT_APPLYPRIMALSOL   TRUE
     
    #define DEFAULT_APPLYSOLVED   TRUE
     
    #define DEFAULT_CHECKEXEC   TRUE
     
    #define DEFAULT_CHECKDEGANERACY   TRUE
     
    #define DEFAULT_CHECKDUALBOUND   FALSE
     
    #define DEFAULT_CHECKLEAVES   FALSE
     
    #define DEFAULT_CHECKOBJ   FALSE
     
    #define DEFAULT_CHECKNSOLS   TRUE
     
    #define DEFAULT_MINDEGENERACY   0.7
     
    #define DEFAULT_MININFLPRATIO   10.0
     
    #define DEFAULT_MINVARCONSRATIO   2.0
     
    #define DEFAULT_NWAITINGNODES   100L
     
    #define DEFAULT_MAXNVARS   10000
     
    #define DEFAULT_MAXNCONSS   10000
     
    #define DEFAULT_MAXCALLS   100
     
    #define DEFAULT_MINNODES   500
     
    #define DEFAULT_MAXNODES   5000
     
    #define DEFAULT_CONTVARS   FALSE
     
    #define DEFAULT_CONTVARSQUOT   0.3
     
    #define DEFAULT_LPITERQUOT   0.2
     
    #define DEFAULT_COPYCUTS   TRUE
     

    Functions

    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

    ◆ SEPA_NAME

    #define SEPA_NAME   "rapidlearning"

    Definition at line 44 of file sepa_rapidlearning.c.

    ◆ SEPA_DESC

    #define SEPA_DESC   "rapid learning heuristic and separator"

    Definition at line 45 of file sepa_rapidlearning.c.

    ◆ SEPA_PRIORITY

    #define SEPA_PRIORITY   -1200000

    Definition at line 46 of file sepa_rapidlearning.c.

    ◆ SEPA_FREQ

    #define SEPA_FREQ   5

    Definition at line 47 of file sepa_rapidlearning.c.

    ◆ SEPA_MAXBOUNDDIST

    #define SEPA_MAXBOUNDDIST   1.0

    Definition at line 48 of file sepa_rapidlearning.c.

    ◆ SEPA_USESSUBSCIP

    #define SEPA_USESSUBSCIP   TRUE

    does the separator use a secondary SCIP instance?

    Definition at line 49 of file sepa_rapidlearning.c.

    ◆ SEPA_DELAY

    #define SEPA_DELAY   FALSE

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

    Definition at line 50 of file sepa_rapidlearning.c.

    ◆ DEFAULT_APPLYCONFLICTS

    #define DEFAULT_APPLYCONFLICTS   TRUE

    should the found conflicts be applied in the original SCIP?

    Definition at line 52 of file sepa_rapidlearning.c.

    ◆ DEFAULT_APPLYBDCHGS

    #define DEFAULT_APPLYBDCHGS   TRUE

    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 55 of file sepa_rapidlearning.c.

    ◆ DEFAULT_APPLYINFERVALS

    #define DEFAULT_APPLYINFERVALS   TRUE

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

    Definition at line 56 of file sepa_rapidlearning.c.

    ◆ DEFAULT_REDUCEDINFER

    #define DEFAULT_REDUCEDINFER   FALSE

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

    Definition at line 57 of file sepa_rapidlearning.c.

    ◆ DEFAULT_APPLYPRIMALSOL

    #define DEFAULT_APPLYPRIMALSOL   TRUE

    should the incumbent solution be copied to the original SCIP?

    Definition at line 58 of file sepa_rapidlearning.c.

    ◆ DEFAULT_APPLYSOLVED

    #define DEFAULT_APPLYSOLVED   TRUE

    should a solved status be copied to the original SCIP?

    Definition at line 59 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CHECKEXEC

    #define DEFAULT_CHECKEXEC   TRUE

    check whether rapid learning should be executed

    Definition at line 61 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CHECKDEGANERACY

    #define DEFAULT_CHECKDEGANERACY   TRUE

    should local LP degeneracy be checked?

    Definition at line 62 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CHECKDUALBOUND

    #define DEFAULT_CHECKDUALBOUND   FALSE

    should the progress on the dual bound be checked?

    Definition at line 63 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CHECKLEAVES

    #define DEFAULT_CHECKLEAVES   FALSE

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

    Definition at line 65 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CHECKOBJ

    #define DEFAULT_CHECKOBJ   FALSE

    should the local objection function be checked?

    Definition at line 66 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CHECKNSOLS

    #define DEFAULT_CHECKNSOLS   TRUE

    should the number of solutions found so far be checked?

    Definition at line 67 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MINDEGENERACY

    #define DEFAULT_MINDEGENERACY   0.7

    minimal degeneracy threshold to allow local rapid learning

    Definition at line 68 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MININFLPRATIO

    #define DEFAULT_MININFLPRATIO   10.0

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

    Definition at line 69 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MINVARCONSRATIO

    #define DEFAULT_MINVARCONSRATIO   2.0

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

    Definition at line 71 of file sepa_rapidlearning.c.

    ◆ DEFAULT_NWAITINGNODES

    #define DEFAULT_NWAITINGNODES   100L

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

    Definition at line 73 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MAXNVARS

    #define DEFAULT_MAXNVARS   10000

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

    Definition at line 75 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MAXNCONSS

    #define DEFAULT_MAXNCONSS   10000

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

    Definition at line 76 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MAXCALLS

    #define DEFAULT_MAXCALLS   100

    maximum number of overall calls

    Definition at line 77 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MINNODES

    #define DEFAULT_MINNODES   500

    minimum number of nodes considered in rapid learning run

    Definition at line 79 of file sepa_rapidlearning.c.

    ◆ DEFAULT_MAXNODES

    #define DEFAULT_MAXNODES   5000

    maximum number of nodes considered in rapid learning run

    Definition at line 80 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CONTVARS

    #define DEFAULT_CONTVARS   FALSE

    should rapid learning be applied when there are continuous variables?

    Definition at line 82 of file sepa_rapidlearning.c.

    ◆ DEFAULT_CONTVARSQUOT

    #define DEFAULT_CONTVARSQUOT   0.3

    maximal portion of continuous variables to apply rapid learning

    Definition at line 83 of file sepa_rapidlearning.c.

    ◆ DEFAULT_LPITERQUOT

    #define DEFAULT_LPITERQUOT   0.2

    maximal fraction of LP iterations compared to node LP iterations

    Definition at line 84 of file sepa_rapidlearning.c.

    ◆ DEFAULT_COPYCUTS

    #define DEFAULT_COPYCUTS   TRUE

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

    Definition at line 86 of file sepa_rapidlearning.c.

    Function Documentation

    ◆ SCIP_DECL_SEPACOPY()

    static SCIP_DECL_SEPACOPY ( sepaCopyRapidlearning  )
    static

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

    Definition at line 133 of file sepa_rapidlearning.c.

    References NULL, SCIP_CALL, SCIP_OKAY, SCIPincludeSepaRapidlearning(), SCIPsepaGetName(), and SEPA_NAME.

    ◆ SCIP_DECL_SEPAFREE()

    static SCIP_DECL_SEPAFREE ( sepaFreeRapidlearning  )
    static

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

    Definition at line 147 of file sepa_rapidlearning.c.

    References NULL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPsepaGetData(), SCIPsepaGetName(), SCIPsepaSetData(), and SEPA_NAME.

    ◆ setupAndSolveSubscipRapidlearning()

    static SCIP_RETCODE setupAndSolveSubscipRapidlearning ( SCIP scip,
    SCIP subscip,
    SCIP_SEPADATA sepadata,
    int  randseed,
    SCIP_Bool  global,
    SCIP_RESULT result 
    )
    static

    setup and solve sub-SCIP

    Parameters
    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 167 of file sepa_rapidlearning.c.

    References 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_IMPLINTTYPE_NONE, 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_INTEGER, SCIPaddConflict(), SCIPallocBufferArray, SCIPallowStrongDualReds(), SCIPblkmem(), SCIPchgVarImplType(), 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(), SCIPvarGetUbGlobal(), SCIPvarIsImpliedIntegral(), SCIPwarningMessage(), and TRUE.

    Referenced by SCIP_DECL_SEPAEXECLP().

    ◆ checkExec()

    static SCIP_RETCODE checkExec ( SCIP scip,
    SCIP_SEPADATA sepadata,
    SCIP_Bool run 
    )
    static

    ◆ SCIP_DECL_SEPAEXECLP()