Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    methods for presolver plugins

    Modules

     Special Methods
     methods commonly used for presolving
     

    Functions

     SCIP_DECL_SORTPTRCOMP (SCIPpresolComp)
     
     SCIP_DECL_SORTPTRCOMP (SCIPpresolCompName)
     
    SCIP_PRESOLDATASCIPpresolGetData (SCIP_PRESOL *presol)
     
    void SCIPpresolSetData (SCIP_PRESOL *presol, SCIP_PRESOLDATA *presoldata)
     
    void SCIPpresolMarkExact (SCIP_PRESOL *presol)
     
    const char * SCIPpresolGetName (SCIP_PRESOL *presol)
     
    const char * SCIPpresolGetDesc (SCIP_PRESOL *presol)
     
    int SCIPpresolGetPriority (SCIP_PRESOL *presol)
     
    int SCIPpresolGetMaxrounds (SCIP_PRESOL *presol)
     
    SCIP_PRESOLTIMING SCIPpresolGetTiming (SCIP_PRESOL *presol)
     
    void SCIPpresolSetTiming (SCIP_PRESOL *presol, SCIP_PRESOLTIMING timing)
     
    SCIP_Bool SCIPpresolIsInitialized (SCIP_PRESOL *presol)
     
    SCIP_Real SCIPpresolGetSetupTime (SCIP_PRESOL *presol)
     
    SCIP_Real SCIPpresolGetTime (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNFixedVars (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNAggrVars (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNChgVarTypes (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNChgBds (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNAddHoles (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNDelConss (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNAddConss (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNUpgdConss (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNChgCoefs (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNChgSides (SCIP_PRESOL *presol)
     
    int SCIPpresolGetNCalls (SCIP_PRESOL *presol)
     
    SCIP_RETCODE SCIPincludePresol (SCIP *scip, const char *name, const char *desc, int priority, int maxrounds, SCIP_PRESOLTIMING timing, SCIP_DECL_PRESOLCOPY((*presolcopy)), SCIP_DECL_PRESOLFREE((*presolfree)), SCIP_DECL_PRESOLINIT((*presolinit)), SCIP_DECL_PRESOLEXIT((*presolexit)), SCIP_DECL_PRESOLINITPRE((*presolinitpre)), SCIP_DECL_PRESOLEXITPRE((*presolexitpre)), SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
     
    SCIP_RETCODE SCIPincludePresolBasic (SCIP *scip, SCIP_PRESOL **presolptr, const char *name, const char *desc, int priority, int maxrounds, SCIP_PRESOLTIMING timing, SCIP_DECL_PRESOLEXEC((*presolexec)), SCIP_PRESOLDATA *presoldata)
     
    SCIP_RETCODE SCIPsetPresolCopy (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLCOPY((*presolcopy)))
     
    SCIP_RETCODE SCIPsetPresolFree (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLFREE((*presolfree)))
     
    SCIP_RETCODE SCIPsetPresolInit (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINIT((*presolinit)))
     
    SCIP_RETCODE SCIPsetPresolExit (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXIT((*presolexit)))
     
    SCIP_RETCODE SCIPsetPresolInitpre (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLINITPRE((*presolinitpre)))
     
    SCIP_RETCODE SCIPsetPresolExitpre (SCIP *scip, SCIP_PRESOL *presol, SCIP_DECL_PRESOLEXITPRE((*presolexitpre)))
     
    SCIP_PRESOLSCIPfindPresol (SCIP *scip, const char *name)
     
    SCIP_PRESOL ** SCIPgetPresols (SCIP *scip)
     
    int SCIPgetNPresols (SCIP *scip)
     
    SCIP_RETCODE SCIPsetPresolPriority (SCIP *scip, SCIP_PRESOL *presol, int priority)
     
    int SCIPgetNPresolRounds (SCIP *scip)
     

    Function Documentation

    ◆ SCIP_DECL_SORTPTRCOMP() [1/2]

    SCIP_DECL_SORTPTRCOMP ( SCIPpresolComp  )

    compares two presolvers w. r. to their priority

    Definition at line 57 of file presol.c.

    ◆ SCIP_DECL_SORTPTRCOMP() [2/2]

    SCIP_DECL_SORTPTRCOMP ( SCIPpresolCompName  )

    comparison method for sorting presolvers w.r.t. to their name

    Definition at line 63 of file presol.c.

    References SCIPpresolGetName().

    ◆ SCIPpresolGetData()

    SCIP_PRESOLDATA * SCIPpresolGetData ( SCIP_PRESOL presol)

    ◆ SCIPpresolSetData()

    void SCIPpresolSetData ( SCIP_PRESOL presol,
    SCIP_PRESOLDATA presoldata 
    )

    sets user data of presolver; user has to free old data in advance!

    Parameters
    presolpresolver
    presoldatanew presolver user data

    Definition at line 538 of file presol.c.

    References NULL, and SCIP_Presol::presoldata.

    Referenced by SCIP_DECL_PRESOLFREE().

    ◆ SCIPpresolMarkExact()

    void SCIPpresolMarkExact ( SCIP_PRESOL presol)

    marks the presolver as safe to use in exact solving mode

    Parameters
    presolpresolver

    Definition at line 615 of file presol.c.

    References SCIP_Presol::exact, NULL, and TRUE.

    ◆ SCIPpresolGetName()

    ◆ SCIPpresolGetDesc()

    const char * SCIPpresolGetDesc ( SCIP_PRESOL presol)

    gets description of presolver

    Parameters
    presolpresolver

    Definition at line 635 of file presol.c.

    References SCIP_Presol::desc, and NULL.

    Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcollectPresolverStatistics(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

    ◆ SCIPpresolGetPriority()

    int SCIPpresolGetPriority ( SCIP_PRESOL presol)

    gets priority of presolver

    Parameters
    presolpresolver

    Definition at line 645 of file presol.c.

    References NULL, and SCIP_Presol::priority.

    Referenced by presolveRound(), and SCIP_DECL_DIALOGEXEC().

    ◆ SCIPpresolGetMaxrounds()

    int SCIPpresolGetMaxrounds ( SCIP_PRESOL presol)

    gets round limit of presolver

    Parameters
    presolpresolver

    Definition at line 655 of file presol.c.

    References SCIP_Presol::maxrounds, and NULL.

    Referenced by SCIP_DECL_DIALOGEXEC().

    ◆ SCIPpresolGetTiming()

    SCIP_PRESOLTIMING SCIPpresolGetTiming ( SCIP_PRESOL presol)

    gets the timing mask of the presolver

    Parameters
    presolpresolver

    Definition at line 679 of file presol.c.

    References NULL, and SCIP_Presol::timing.

    Referenced by SCIP_DECL_DIALOGEXEC().

    ◆ SCIPpresolSetTiming()

    void SCIPpresolSetTiming ( SCIP_PRESOL presol,
    SCIP_PRESOLTIMING  timing 
    )

    sets the timing mask of the presolver

    Parameters
    presolpresolver
    timingtiming mask of the presolver

    Definition at line 689 of file presol.c.

    References NULL, and SCIP_Presol::timing.

    ◆ SCIPpresolIsInitialized()

    SCIP_Bool SCIPpresolIsInitialized ( SCIP_PRESOL presol)

    is presolver initialized?

    Parameters
    presolpresolver

    Definition at line 700 of file presol.c.

    References SCIP_Presol::initialized, and NULL.

    ◆ SCIPpresolGetSetupTime()

    SCIP_Real SCIPpresolGetSetupTime ( SCIP_PRESOL presol)

    gets time in seconds used in this presolver for setting up for next stages

    Parameters
    presolpresolver

    Definition at line 722 of file presol.c.

    References NULL, SCIPclockGetTime(), and SCIP_Presol::setuptime.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetTime()

    SCIP_Real SCIPpresolGetTime ( SCIP_PRESOL presol)

    gets time in seconds used in this presolver

    Parameters
    presolpresolver

    Definition at line 732 of file presol.c.

    References NULL, SCIP_Presol::presolclock, and SCIPclockGetTime().

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNFixedVars()

    int SCIPpresolGetNFixedVars ( SCIP_PRESOL presol)

    gets number of variables fixed in presolver

    Parameters
    presolpresolver

    Definition at line 742 of file presol.c.

    References SCIP_Presol::nfixedvars, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNAggrVars()

    int SCIPpresolGetNAggrVars ( SCIP_PRESOL presol)

    gets number of variables aggregated in presolver

    Parameters
    presolpresolver

    Definition at line 752 of file presol.c.

    References SCIP_Presol::naggrvars, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNChgVarTypes()

    int SCIPpresolGetNChgVarTypes ( SCIP_PRESOL presol)

    gets number of variable types changed in presolver

    Parameters
    presolpresolver

    Definition at line 762 of file presol.c.

    References SCIP_Presol::nchgvartypes, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNChgBds()

    int SCIPpresolGetNChgBds ( SCIP_PRESOL presol)

    gets number of bounds changed in presolver

    Parameters
    presolpresolver

    Definition at line 772 of file presol.c.

    References SCIP_Presol::nchgbds, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNAddHoles()

    int SCIPpresolGetNAddHoles ( SCIP_PRESOL presol)

    gets number of holes added to domains of variables in presolver

    Parameters
    presolpresolver

    Definition at line 782 of file presol.c.

    References SCIP_Presol::naddholes, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNDelConss()

    int SCIPpresolGetNDelConss ( SCIP_PRESOL presol)

    gets number of constraints deleted in presolver

    Parameters
    presolpresolver

    Definition at line 792 of file presol.c.

    References SCIP_Presol::ndelconss, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNAddConss()

    int SCIPpresolGetNAddConss ( SCIP_PRESOL presol)

    gets number of constraints added in presolver

    Parameters
    presolpresolver

    Definition at line 802 of file presol.c.

    References SCIP_Presol::naddconss, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNUpgdConss()

    int SCIPpresolGetNUpgdConss ( SCIP_PRESOL presol)

    gets number of constraints upgraded in presolver

    Parameters
    presolpresolver

    Definition at line 812 of file presol.c.

    References NULL, and SCIP_Presol::nupgdconss.

    ◆ SCIPpresolGetNChgCoefs()

    int SCIPpresolGetNChgCoefs ( SCIP_PRESOL presol)

    gets number of coefficients changed in presolver

    Parameters
    presolpresolver

    Definition at line 822 of file presol.c.

    References SCIP_Presol::nchgcoefs, and NULL.

    Referenced by SCIP_DECL_PRESOLEXEC(), SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNChgSides()

    int SCIPpresolGetNChgSides ( SCIP_PRESOL presol)

    gets number of constraint sides changed in presolver

    Parameters
    presolpresolver

    Definition at line 832 of file presol.c.

    References SCIP_Presol::nchgsides, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPpresolGetNCalls()

    int SCIPpresolGetNCalls ( SCIP_PRESOL presol)

    gets number of times the presolver was called and tried to find reductions

    Parameters
    presolpresolver

    Definition at line 842 of file presol.c.

    References SCIP_Presol::ncalls, and NULL.

    Referenced by SCIPcollectPresolverStatistics(), and SCIPprintPresolverStatistics().

    ◆ SCIPincludePresol()

    SCIP_RETCODE SCIPincludePresol ( SCIP scip,
    const char *  name,
    const char *  desc,
    int  priority,
    int  maxrounds,
    SCIP_PRESOLTIMING  timing,
    SCIP_DECL_PRESOLCOPY((*presolcopy))  ,
    SCIP_DECL_PRESOLFREE((*presolfree))  ,
    SCIP_DECL_PRESOLINIT((*presolinit))  ,
    SCIP_DECL_PRESOLEXIT((*presolexit))  ,
    SCIP_DECL_PRESOLINITPRE((*presolinitpre))  ,
    SCIP_DECL_PRESOLEXITPRE((*presolexitpre))  ,
    SCIP_DECL_PRESOLEXEC((*presolexec))  ,
    SCIP_PRESOLDATA presoldata 
    )

    creates a presolver and includes it in SCIP

    Note
    method has all presolver callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludePresolBasic() and setter functions if you seek for a method which is less likely to change in future releases

    creates a presolver and includes it in SCIP.

    Precondition
    This method can be called if SCIP is in one of the following stages:
    Note
    method has all presolver callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludePresolBasic() and setter functions if you seek for a method which is less likely to change in future releases
    Parameters
    scipSCIP data structure
    namename of presolver
    descdescription of presolver
    prioritypriority of the presolver (>= 0: before, < 0: after constraint handlers)
    maxroundsmaximal number of presolving rounds the presolver participates in (-1: no limit)
    timingtiming mask of the presolver
    presoldatapresolver data

    Definition at line 66 of file scip_presol.c.

    References FALSE, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcheckStage, SCIPerrorMessage, SCIPfindPresol(), SCIPpresolCreate(), SCIPsetIncludePresol(), and TRUE.

    Referenced by SCIPincludeObjPresol().

    ◆ SCIPincludePresolBasic()

    SCIP_RETCODE SCIPincludePresolBasic ( SCIP scip,
    SCIP_PRESOL **  presolptr,
    const char *  name,
    const char *  desc,
    int  priority,
    int  maxrounds,
    SCIP_PRESOLTIMING  timing,
    SCIP_DECL_PRESOLEXEC((*presolexec))  ,
    SCIP_PRESOLDATA presoldata 
    )

    Creates a presolver and includes it in SCIP with its fundamental callback. All non-fundamental (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions. These are SCIPsetPresolCopy(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolExit(), SCIPsetPresolInitpre(), and SCIPsetPresolExitPre().

    Note
    if you want to set all callbacks with a single method call, consider using SCIPincludePresol() instead

    creates a presolver and includes it in SCIP with its fundamental callback. All non-fundamental (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions. These are SCIPsetPresolCopy(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolExit(), SCIPsetPresolInitpre(), and SCIPsetPresolExitPre().

    Precondition
    This method can be called if SCIP is in one of the following stages:
    Note
    if you want to set all callbacks with a single method call, consider using SCIPincludePresol() instead
    Parameters
    scipSCIP data structure
    presolptrreference to presolver, or NULL
    namename of presolver
    descdescription of presolver
    prioritypriority of the presolver (>= 0: before, < 0: after constraint handlers)
    maxroundsmaximal number of presolving rounds the presolver participates in (-1: no limit)
    timingtiming mask of the presolver
    presoldatapresolver data

    Definition at line 113 of file scip_presol.c.

    References FALSE, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcheckStage, SCIPerrorMessage, SCIPfindPresol(), SCIPpresolCreate(), SCIPsetIncludePresol(), and TRUE.

    Referenced by SCIPincludePresolBoundshift(), SCIPincludePresolConvertinttobin(), SCIPincludePresolDomcol(), SCIPincludePresolDualagg(), SCIPincludePresolDualcomp(), SCIPincludePresolDualinfer(), SCIPincludePresolDualsparsify(), SCIPincludePresolGateextraction(), SCIPincludePresolImplics(), SCIPincludePresolImplint(), SCIPincludePresolInttobinary(), SCIPincludePresolQPKKTref(), SCIPincludePresolRedvub(), SCIPincludePresolSparsify(), SCIPincludePresolStuffing(), SCIPincludePresolTrivial(), and SCIPincludePresolTworowbnd().

    ◆ SCIPsetPresolCopy()

    ◆ SCIPsetPresolFree()

    ◆ SCIPsetPresolInit()

    SCIP_RETCODE SCIPsetPresolInit ( SCIP scip,
    SCIP_PRESOL presol,
    SCIP_DECL_PRESOLINIT((*presolinit))   
    )

    sets initialization method of presolver

    Parameters
    scipSCIP data structure
    presolpresolver

    Definition at line 180 of file scip_presol.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPpresolSetInit(), and TRUE.

    Referenced by SCIPincludePresolDualsparsify(), SCIPincludePresolSparsify(), and SCIPincludePresolTworowbnd().

    ◆ SCIPsetPresolExit()

    SCIP_RETCODE SCIPsetPresolExit ( SCIP scip,
    SCIP_PRESOL presol,
    SCIP_DECL_PRESOLEXIT((*presolexit))   
    )

    sets deinitialization method of presolver

    Parameters
    scipSCIP data structure
    presolpresolver

    Definition at line 196 of file scip_presol.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPpresolSetExit(), and TRUE.

    Referenced by SCIPincludePresolGateextraction().

    ◆ SCIPsetPresolInitpre()

    SCIP_RETCODE SCIPsetPresolInitpre ( SCIP scip,
    SCIP_PRESOL presol,
    SCIP_DECL_PRESOLINITPRE((*presolinitpre))   
    )

    sets solving process initialization method of presolver

    Parameters
    scipSCIP data structure
    presolpresolver

    Definition at line 212 of file scip_presol.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPpresolSetInitpre(), and TRUE.

    Referenced by SCIPincludePresolGateextraction().

    ◆ SCIPsetPresolExitpre()

    SCIP_RETCODE SCIPsetPresolExitpre ( SCIP scip,
    SCIP_PRESOL presol,
    SCIP_DECL_PRESOLEXITPRE((*presolexitpre))   
    )

    sets solving process deinitialization method of presolver

    Parameters
    scipSCIP data structure
    presolpresolver

    Definition at line 228 of file scip_presol.c.

    References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage, SCIPpresolSetExitpre(), and TRUE.

    Referenced by SCIPincludePresolGateextraction().

    ◆ SCIPfindPresol()

    SCIP_PRESOL * SCIPfindPresol ( SCIP scip,
    const char *  name 
    )

    returns the presolver of the given name, or NULL if not existing

    Parameters
    scipSCIP data structure
    namename of presolver

    Definition at line 244 of file scip_presol.c.

    References NULL, and SCIPsetFindPresol().

    Referenced by SCIP_DECL_PRESOLCOPY(), SCIPcopyConcurrentSolvingStats(), SCIPfindObjPresol(), SCIPincludePresol(), and SCIPincludePresolBasic().

    ◆ SCIPgetPresols()

    SCIP_PRESOL ** SCIPgetPresols ( SCIP scip)

    returns the array of currently available presolvers

    Parameters
    scipSCIP data structure

    Definition at line 257 of file scip_presol.c.

    References NULL, and SCIPsetSortPresols().

    Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

    ◆ SCIPgetNPresols()

    int SCIPgetNPresols ( SCIP scip)

    returns the number of currently available presolvers

    Parameters
    scipSCIP data structure

    Definition at line 270 of file scip_presol.c.

    References NULL.

    Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

    ◆ SCIPsetPresolPriority()

    SCIP_RETCODE SCIPsetPresolPriority ( SCIP scip,
    SCIP_PRESOL presol,
    int  priority 
    )

    sets the priority of a presolver

    Parameters
    scipSCIP data structure
    presolpresolver
    prioritynew priority of the presolver

    Definition at line 281 of file scip_presol.c.

    References NULL, SCIP_OKAY, and SCIPpresolSetPriority().

    Referenced by SCIP_DECL_PARAMCHGD().

    ◆ SCIPgetNPresolRounds()

    int SCIPgetNPresolRounds ( SCIP scip)

    returns the number of presolve rounds (current or last presolve)

    Parameters
    scipSCIP data structure

    Definition at line 296 of file scip_presol.c.

    References NULL.

    Referenced by solveSubNLP().