Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    implied bounds separator

    Author
    Kati Wolter
    Tobias Achterberg

    Definition in file sepa_impliedbounds.c.

    #include "blockmemshell/memory.h"
    #include "scip/pub_implics.h"
    #include "scip/pub_lp.h"
    #include "scip/pub_message.h"
    #include "scip/pub_misc.h"
    #include "scip/pub_sepa.h"
    #include "scip/pub_var.h"
    #include "scip/scip_branch.h"
    #include "scip/scip_cut.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_sepa.h"
    #include "scip/scip_sol.h"
    #include "scip/scip_solvingstats.h"
    #include "scip/scip_var.h"
    #include "scip/sepa_impliedbounds.h"
    #include <string.h>

    Go to the source code of this file.

    Macros

    #define SEPA_NAME   "impliedbounds"
     
    #define SEPA_DESC   "implied bounds separator"
     
    #define SEPA_PRIORITY   -50
     
    #define SEPA_FREQ   10
     
    #define SEPA_MAXBOUNDDIST   1.0
     
    #define SEPA_USESSUBSCIP   FALSE
     
    #define SEPA_DELAY   FALSE
     
    #define RELCUTCOEFMAXRANGE   1.0
     
    #define DEFAULT_USETWOSIZECLIQUES   TRUE
     

    Functions

    static SCIP_RETCODE addCut (SCIP *scip, SCIP_SEPA *sepa, SCIP_Real val1, SCIP_VAR *var1, SCIP_Real solval1, SCIP_Real val2, SCIP_VAR *var2, SCIP_Real solval2, SCIP_Real rhs, SCIP_Bool *cutoff, int *ncuts)
     
    static SCIP_RETCODE separateCuts (SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_Real *solvals, SCIP_VAR **fracvars, SCIP_Real *fracvals, int nfracs, SCIP_Bool *cutoff, int *ncuts)
     
    static SCIP_DECL_SEPACOPY (sepaCopyImpliedbounds)
     
    static SCIP_DECL_SEPAFREE (sepaFreeImpliedbounds)
     
    static SCIP_DECL_SEPAEXECLP (sepaExeclpImpliedbounds)
     
    static SCIP_DECL_SEPAEXECSOL (sepaExecsolImpliedbounds)
     
    SCIP_RETCODE SCIPincludeSepaImpliedbounds (SCIP *scip)
     

    Macro Definition Documentation

    ◆ SEPA_NAME

    #define SEPA_NAME   "impliedbounds"

    Definition at line 57 of file sepa_impliedbounds.c.

    ◆ SEPA_DESC

    #define SEPA_DESC   "implied bounds separator"

    Definition at line 58 of file sepa_impliedbounds.c.

    ◆ SEPA_PRIORITY

    #define SEPA_PRIORITY   -50

    Definition at line 59 of file sepa_impliedbounds.c.

    ◆ SEPA_FREQ

    #define SEPA_FREQ   10

    Definition at line 60 of file sepa_impliedbounds.c.

    ◆ SEPA_MAXBOUNDDIST

    #define SEPA_MAXBOUNDDIST   1.0

    Definition at line 61 of file sepa_impliedbounds.c.

    ◆ SEPA_USESSUBSCIP

    #define SEPA_USESSUBSCIP   FALSE

    does the separator use a secondary SCIP instance?

    Definition at line 62 of file sepa_impliedbounds.c.

    ◆ SEPA_DELAY

    #define SEPA_DELAY   FALSE

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

    Definition at line 63 of file sepa_impliedbounds.c.

    ◆ RELCUTCOEFMAXRANGE

    #define RELCUTCOEFMAXRANGE   1.0

    maximal allowed range of cut coefficients, relative to 1/feastol

    Definition at line 65 of file sepa_impliedbounds.c.

    ◆ DEFAULT_USETWOSIZECLIQUES

    #define DEFAULT_USETWOSIZECLIQUES   TRUE

    should violated inequalities for cliques with 2 variables be separated?

    Definition at line 66 of file sepa_impliedbounds.c.

    Function Documentation

    ◆ addCut()

    static SCIP_RETCODE addCut ( SCIP scip,
    SCIP_SEPA sepa,
    SCIP_Real  val1,
    SCIP_VAR var1,
    SCIP_Real  solval1,
    SCIP_Real  val2,
    SCIP_VAR var2,
    SCIP_Real  solval2,
    SCIP_Real  rhs,
    SCIP_Bool cutoff,
    int *  ncuts 
    )
    static

    adds given cut with two variables, if it is violated

    Parameters
    scipSCIP data structure
    sepaseparator
    val1given coefficient of first variable
    var1given first variable
    solval1current LP solution value of first variable
    val2given coefficient of second variable
    var2given second variable
    solval2current LP solution value of second variable
    rhsgiven right hand side of the cut to add
    cutoffwhether a cutoff has been detected
    ncutspointer to update number of cuts added

    Definition at line 80 of file sepa_impliedbounds.c.

    References FALSE, NULL, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPaddPoolCut(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPcreateEmptyRowSepa(), SCIPdebugMsg, SCIPflushRowExtensions(), SCIPgetNLPs(), SCIPinfinity(), SCIPisEfficacious(), SCIPprintRow(), SCIPreleaseRow(), SCIProwChgRank(), SCIPsnprintf(), and TRUE.

    Referenced by separateCuts().

    ◆ separateCuts()

    static SCIP_RETCODE separateCuts ( SCIP scip,
    SCIP_SEPA sepa,
    SCIP_SOL sol,
    SCIP_Real solvals,
    SCIP_VAR **  fracvars,
    SCIP_Real fracvals,
    int  nfracs,
    SCIP_Bool cutoff,
    int *  ncuts 
    )
    static

    searches and adds implied bound cuts that are violated by the given solution value array

    Parameters
    scipSCIP data structure
    sepaseparator
    solthe solution that should be separated, or NULL for LP solution
    solvalsarray with solution values of all problem variables
    fracvarsarray of fractional variables
    fracvalssolution values of fractional variables
    nfracsnumber of fractional variables
    cutoffwhether a cutoff has been detected
    ncutspointer to store the number of generated cuts

    Definition at line 138 of file sepa_impliedbounds.c.

    References addCut(), FALSE, NULL, RELCUTCOEFMAXRANGE, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPcleanupCliques(), SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPcliqueIsEquation(), SCIPdebugMsg, SCIPfeastol(), SCIPgetCliques(), SCIPgetNCliques(), SCIPgetSolVal(), SCIPisGE(), SCIPisLE(), SCIPsepaGetData(), SCIPvarGetImplBounds(), SCIPvarGetImplTypes(), SCIPvarGetImplVars(), SCIPvarGetLbGlobal(), SCIPvarGetNImpls(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsImpliedIntegral(), and TRUE.

    Referenced by SCIP_DECL_SEPAEXECLP(), and SCIP_DECL_SEPAEXECSOL().

    ◆ SCIP_DECL_SEPACOPY()

    static SCIP_DECL_SEPACOPY ( sepaCopyImpliedbounds  )
    static

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

    Definition at line 377 of file sepa_impliedbounds.c.

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

    ◆ SCIP_DECL_SEPAFREE()

    static SCIP_DECL_SEPAFREE ( sepaFreeImpliedbounds  )
    static

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

    Definition at line 391 of file sepa_impliedbounds.c.

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

    ◆ SCIP_DECL_SEPAEXECLP()

    static SCIP_DECL_SEPAEXECLP ( sepaExeclpImpliedbounds  )
    static

    ◆ SCIP_DECL_SEPAEXECSOL()

    static SCIP_DECL_SEPAEXECSOL ( sepaExecsolImpliedbounds  )
    static