Scippy

    SCIP

    Solving Constraint Integer Programs

    type_presol.h File Reference

    Detailed Description

    type definitions for presolvers

    Author
    Tobias Achterberg

    Definition in file type_presol.h.

    #include "scip/def.h"
    #include "scip/type_retcode.h"
    #include "scip/type_result.h"
    #include "scip/type_scip.h"

    Go to the source code of this file.

    Macros

    #define SCIP_DECL_PRESOLCOPY(x)   SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)
     
    #define SCIP_DECL_PRESOLFREE(x)   SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)
     
    #define SCIP_DECL_PRESOLINIT(x)   SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)
     
    #define SCIP_DECL_PRESOLEXIT(x)   SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)
     
    #define SCIP_DECL_PRESOLINITPRE(x)   SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)
     
    #define SCIP_DECL_PRESOLEXITPRE(x)   SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)
     
    #define SCIP_DECL_PRESOLEXEC(x)
     

    Typedefs

    typedef struct SCIP_Presol SCIP_PRESOL
     
    typedef struct SCIP_PresolData SCIP_PRESOLDATA
     

    Macro Definition Documentation

    ◆ SCIP_DECL_PRESOLCOPY

    #define SCIP_DECL_PRESOLCOPY (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)

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

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself

    Definition at line 60 of file type_presol.h.

    ◆ SCIP_DECL_PRESOLFREE

    #define SCIP_DECL_PRESOLFREE (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)

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

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself

    Definition at line 68 of file type_presol.h.

    ◆ SCIP_DECL_PRESOLINIT

    #define SCIP_DECL_PRESOLINIT (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)

    initialization method of presolver (called after problem was transformed)

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself

    Definition at line 76 of file type_presol.h.

    ◆ SCIP_DECL_PRESOLEXIT

    #define SCIP_DECL_PRESOLEXIT (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)

    deinitialization method of presolver (called before transformed problem is freed)

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself

    Definition at line 84 of file type_presol.h.

    ◆ SCIP_DECL_PRESOLINITPRE

    #define SCIP_DECL_PRESOLINITPRE (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)

    presolving initialization method of presolver (called when presolving is about to begin)

    This method is called when the presolving process is about to begin, even if presolving is turned off. The presolver may use this call to initialize its data structures.

    Necessary modifications that have to be performed even if presolving is turned off should be done here or in the presolving deinitialization call (SCIP_DECL_PRESOLSEXITPRE()).

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself

    Definition at line 98 of file type_presol.h.

    ◆ SCIP_DECL_PRESOLEXITPRE

    #define SCIP_DECL_PRESOLEXITPRE (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol)

    presolving deinitialization method of presolver (called after presolving has been finished)

    This method is called after the presolving has been finished, even if presolving is turned off. The presolver may use this call e.g. to clean up or modify its data structures.

    Necessary modifications that have to be performed even if presolving is turned off should be done here or in the presolving initialization call (SCIP_DECL_PRESOLINITPRE()).

    Besides necessary modifications and clean up, no time consuming operations should be performed, especially if the problem has already been solved. Use the method SCIPgetStatus(), which in this case returns SCIP_STATUS_OPTIMAL, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_UNBOUNDED, or SCIP_STATUS_INFORUNBD.

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself

    Definition at line 116 of file type_presol.h.

    ◆ SCIP_DECL_PRESOLEXEC

    #define SCIP_DECL_PRESOLEXEC (   x)
    Value:
    SCIP_RETCODE x (SCIP* scip, SCIP_PRESOL* presol, int nrounds, SCIP_PRESOLTIMING presoltiming, \
    int nnewfixedvars, int nnewaggrvars, int nnewchgvartypes, int nnewchgbds, int nnewholes, \
    int nnewdelconss, int nnewaddconss, int nnewupgdconss, int nnewchgcoefs, int nnewchgsides, \
    int* nfixedvars, int* naggrvars, int* nchgvartypes, int* nchgbds, int* naddholes, \
    int* ndelconss, int* naddconss, int* nupgdconss, int* nchgcoefs, int* nchgsides, SCIP_RESULT* result)
    SCIP_VAR ** x
    Definition: circlepacking.c:63
    enum SCIP_Result SCIP_RESULT
    Definition: type_result.h:61
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    unsigned int SCIP_PRESOLTIMING
    Definition: type_timing.h:61

    execution method of presolver

    The presolver should go through the variables and constraints and tighten the domains or constraints. Each tightening should increase the given total numbers of changes.

    input:

    • scip : SCIP main data structure
    • presol : the presolver itself
    • nrounds : number of presolving rounds already done
    • presoltiming : current presolving timing
    • nnewfixedvars : number of variables fixed since the last call to the presolver
    • nnewaggrvars : number of variables aggregated since the last call to the presolver
    • nnewchgvartypes : number of variable type changes since the last call to the presolver
    • nnewchgbds : number of variable bounds tightened since the last call to the presolver
    • nnewholes : number of domain holes added since the last call to the presolver
    • nnewdelconss : number of deleted constraints since the last call to the presolver
    • nnewaddconss : number of added constraints since the last call to the presolver
    • nnewupgdconss : number of upgraded constraints since the last call to the presolver
    • nnewchgcoefs : number of changed coefficients since the last call to the presolver
    • nnewchgsides : number of changed left or right hand sides since the last call to the presolver
    Note
    the counters state the changes since the last call including the changes of this presolver during its last last call
    if the presolver uses dual information it is nesassary to check via calling SCIPallowWeakDualReds and SCIPallowStrongDualReds if dual reductions are allowed.

    input/output:

    • nfixedvars : pointer to total number of variables fixed of all presolvers
    • naggrvars : pointer to total number of variables aggregated of all presolvers
    • nchgvartypes : pointer to total number of variable type changes of all presolvers
    • nchgbds : pointer to total number of variable bounds tightened of all presolvers
    • naddholes : pointer to total number of domain holes added of all presolvers
    • ndelconss : pointer to total number of deleted constraints of all presolvers
    • naddconss : pointer to total number of added constraints of all presolvers
    • nupgdconss : pointer to total number of upgraded constraints of all presolvers
    • nchgcoefs : pointer to total number of changed coefficients of all presolvers
    • nchgsides : pointer to total number of changed left/right hand sides of all presolvers

    output:

    • result : pointer to store the result of the presolving call

    possible return values for *result:

    • SCIP_UNBOUNDED : at least one variable is not bounded by any constraint in obj. direction -> problem is unbounded
    • SCIP_CUTOFF : at least one constraint is infeasible in the variable's bounds -> problem is infeasible
    • SCIP_SUCCESS : the presolver found a reduction
    • SCIP_DIDNOTFIND : the presolver searched, but did not find a presolving change
    • SCIP_DIDNOTRUN : the presolver was skipped

    Definition at line 167 of file type_presol.h.

    Typedef Documentation

    ◆ SCIP_PRESOL

    typedef struct SCIP_Presol SCIP_PRESOL

    presolver data structure

    Definition at line 50 of file type_presol.h.

    ◆ SCIP_PRESOLDATA

    typedef struct SCIP_PresolData SCIP_PRESOLDATA

    presolver specific data

    Definition at line 51 of file type_presol.h.