Scippy

    SCIP

    Solving Constraint Integer Programs

    Detailed Description

    methods for storing separated cuts

    Author
    Tobias Achterberg
    Marc Pfetsch
    Leona Gottwald

    Definition in file sepastore.c.

    #include <assert.h>
    #include "scip/def.h"
    #include "scip/set.h"
    #include "scip/stat.h"
    #include "scip/lp.h"
    #include "scip/lpexact.h"
    #include "scip/var.h"
    #include "scip/tree.h"
    #include "scip/reopt.h"
    #include "scip/sepastore.h"
    #include "scip/event.h"
    #include "scip/sepa.h"
    #include "scip/cons.h"
    #include "scip/debug.h"
    #include "scip/scip.h"
    #include "scip/cuts.h"
    #include "scip/cutsel.h"
    #include "scip/struct_event.h"
    #include "scip/struct_sepastore.h"
    #include "scip/misc.h"
    #include "scip/pub_lpexact.h"
    #include "scip/scip_lpexact.h"

    Go to the source code of this file.

    Functions

    static SCIP_RETCODE sepastoreEnsureCutsMem (SCIP_SEPASTORE *sepastore, SCIP_SET *set, int num)
     
    SCIP_RETCODE SCIPsepastoreCreate (SCIP_SEPASTORE **sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set)
     
    SCIP_RETCODE SCIPsepastoreFree (SCIP_SEPASTORE **sepastore, BMS_BLKMEM *blkmem)
     
    void SCIPsepastoreStartInitialLP (SCIP_SEPASTORE *sepastore)
     
    void SCIPsepastoreEndInitialLP (SCIP_SEPASTORE *sepastore)
     
    void SCIPsepastoreStartForceCuts (SCIP_SEPASTORE *sepastore)
     
    void SCIPsepastoreEndForceCuts (SCIP_SEPASTORE *sepastore)
     
    static SCIP_Bool sepastoreIsCutRedundant (SCIP_SEPASTORE *sepastore, SCIP_SET *set, SCIP_STAT *stat, SCIP_ROW *cut)
     
    static SCIP_Bool sepastoreIsCutRedundantOrInfeasible (SCIP_SEPASTORE *sepastore, SCIP_SET *set, SCIP_STAT *stat, SCIP_ROW *cut, SCIP_Bool *infeasible)
     
    static SCIP_Bool sepastoreIsBdchgApplicable (SCIP_SET *set, SCIP_ROW *cut)
     
    static SCIP_RETCODE sepastoreDelCut (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, int pos)
     
    SCIP_RETCODE SCIPsepastoreAddCut (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_ROW *cut, SCIP_Bool forcecut, SCIP_Bool root, SCIP_Bool *infeasible)
     
    static SCIP_RETCODE sepastoreApplyLb (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real bound, SCIP_Bool local, SCIP_Bool *applied, SCIP_Bool *cutoff)
     
    static SCIP_RETCODE sepastoreApplyUb (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_Real bound, SCIP_Bool local, SCIP_Bool *applied, SCIP_Bool *cutoff)
     
    static SCIP_RETCODE sepastoreApplyBdchg (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_ROW *cut, SCIP_Bool *applied, SCIP_Bool *cutoff)
     
    static SCIP_RETCODE sepastoreApplyCut (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_ROW *cut, int depth, int *ncutsapplied)
     
    SCIP_RETCODE SCIPsepastoreApplyCuts (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool root, SCIP_EFFICIACYCHOICE efficiacychoice, SCIP_Bool *cutoff)
     
    SCIP_RETCODE SCIPsepastoreClearCuts (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp)
     
    SCIP_RETCODE SCIPsepastoreRemoveInefficaciousCuts (SCIP_SEPASTORE *sepastore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_LP *lp, SCIP_Bool root, SCIP_EFFICIACYCHOICE efficiacychoice)
     
    SCIP_Bool SCIPsepastoreIsCutApplicable (SCIP_SET *set, SCIP_ROW *cut)
     
    SCIP_ROW ** SCIPsepastoreGetCuts (SCIP_SEPASTORE *sepastore)
     
    int SCIPsepastoreGetNCuts (SCIP_SEPASTORE *sepastore)
     
    int SCIPsepastoreGetNCutsAdded (SCIP_SEPASTORE *sepastore)
     
    int SCIPsepastoreGetNCutsAddedViaPool (SCIP_SEPASTORE *sepastore)
     
    int SCIPsepastoreGetNCutsAddedDirect (SCIP_SEPASTORE *sepastore)
     
    int SCIPsepastoreGetNCutsFoundRound (SCIP_SEPASTORE *sepastore)
     
    int SCIPsepastoreGetNCutsApplied (SCIP_SEPASTORE *sepastore)
     

    Function Documentation

    ◆ sepastoreEnsureCutsMem()

    static SCIP_RETCODE sepastoreEnsureCutsMem ( SCIP_SEPASTORE sepastore,
    SCIP_SET set,
    int  num 
    )
    static

    resizes cuts and score arrays to be able to store at least num entries

    Parameters
    sepastoreseparation storage
    setglobal SCIP settings
    numminimal number of slots in array

    Definition at line 67 of file sepastore.c.

    References BMSreallocMemoryArray, SCIP_SepaStore::cuts, SCIP_SepaStore::cutssize, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().

    Referenced by SCIPsepastoreAddCut().

    ◆ SCIPsepastoreCreate()

    SCIP_RETCODE SCIPsepastoreCreate ( SCIP_SEPASTORE **  sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set 
    )

    creates separation storage

    Parameters
    sepastorepointer to store separation storage
    blkmemblock memory
    setglobal SCIP settings

    Definition at line 90 of file sepastore.c.

    References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPrandomCreate(), and SCIPsetInitializeRandomSeed().

    Referenced by initSolve().

    ◆ SCIPsepastoreFree()

    SCIP_RETCODE SCIPsepastoreFree ( SCIP_SEPASTORE **  sepastore,
    BMS_BLKMEM blkmem 
    )

    frees separation storage

    Parameters
    sepastorepointer to store separation storage
    blkmemblock memory

    Definition at line 118 of file sepastore.c.

    References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_OKAY, and SCIPrandomFree().

    Referenced by freeReoptSolve(), and freeSolve().

    ◆ SCIPsepastoreStartInitialLP()

    void SCIPsepastoreStartInitialLP ( SCIP_SEPASTORE sepastore)

    informs separation storage that the setup of the initial LP starts now

    Parameters
    sepastoreseparation storage

    Definition at line 135 of file sepastore.c.

    References SCIP_SepaStore::initiallp, SCIP_SepaStore::ncuts, NULL, and TRUE.

    Referenced by SCIPconstructCurrentLP(), and SCIPinitConssLP().

    ◆ SCIPsepastoreEndInitialLP()

    void SCIPsepastoreEndInitialLP ( SCIP_SEPASTORE sepastore)

    informs separation storage that the setup of the initial LP is now finished

    Parameters
    sepastoreseparation storage

    Definition at line 147 of file sepastore.c.

    References FALSE, SCIP_SepaStore::initiallp, SCIP_SepaStore::ncuts, and NULL.

    Referenced by SCIPconstructCurrentLP(), and SCIPinitConssLP().

    ◆ SCIPsepastoreStartForceCuts()

    void SCIPsepastoreStartForceCuts ( SCIP_SEPASTORE sepastore)

    informs separation storage that the following cuts should be used in any case

    Parameters
    sepastoreseparation storage

    Definition at line 159 of file sepastore.c.

    References SCIP_SepaStore::forcecuts, NULL, and TRUE.

    Referenced by enforceConstraints().

    ◆ SCIPsepastoreEndForceCuts()

    void SCIPsepastoreEndForceCuts ( SCIP_SEPASTORE sepastore)

    informs separation storage that the following cuts should no longer be used in any case

    Parameters
    sepastoreseparation storage

    Definition at line 170 of file sepastore.c.

    References FALSE, SCIP_SepaStore::forcecuts, and NULL.

    Referenced by enforceConstraints().

    ◆ sepastoreIsCutRedundant()

    static SCIP_Bool sepastoreIsCutRedundant ( SCIP_SEPASTORE sepastore,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_ROW cut 
    )
    static

    checks cut for redundancy due to activity bounds

    Parameters
    sepastoreseparation storage
    setglobal SCIP settings
    statproblem statistics data
    cutseparated cut

    Definition at line 182 of file sepastore.c.

    References FALSE, NULL, SCIP_Real, SCIProwGetLhs(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsModifiable(), SCIPsetDebugMsg, SCIPsetIsInfinity(), SCIPsetIsLE(), and TRUE.

    Referenced by SCIPsepastoreAddCut().

    ◆ sepastoreIsCutRedundantOrInfeasible()

    static SCIP_Bool sepastoreIsCutRedundantOrInfeasible ( SCIP_SEPASTORE sepastore,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_ROW cut,
    SCIP_Bool infeasible 
    )
    static

    checks cut for redundancy or infeasibility due to activity bounds

    Parameters
    sepastoreseparation storage
    setglobal SCIP settings
    statproblem statistics data
    cutseparated cut
    infeasiblepointer to store whether the cut has been detected to be infeasible

    Definition at line 225 of file sepastore.c.

    References FALSE, NULL, SCIP_Real, SCIProwGetLhs(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetName(), SCIProwGetRhs(), SCIProwIsModifiable(), SCIPsetDebugMsg, SCIPsetIsFeasNegative(), SCIPsetIsFeasPositive(), SCIPsetIsInfinity(), SCIPsetIsLE(), and TRUE.

    Referenced by SCIPsepastoreAddCut().

    ◆ sepastoreIsBdchgApplicable()

    static SCIP_Bool sepastoreIsBdchgApplicable ( SCIP_SET set,
    SCIP_ROW cut 
    )
    static

    checks whether a cut with only one variable can be applied as boundchange

    This is the case if the bound change would prove infeasibility (w.r.t feastol), or if the new bound is at least epsilon better than the old bound. In the latter case, also the opposite bound has to be taken into account.

    Parameters
    setglobal SCIP settings
    cutcut with a single variable

    Definition at line 286 of file sepastore.c.

    References FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_Real, SCIPcolGetVar(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetNNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsFeasZero(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPsetIsZero(), SCIPvarAdjustLb(), SCIPvarAdjustUb(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.

    Referenced by SCIPsepastoreAddCut(), SCIPsepastoreApplyCuts(), and SCIPsepastoreIsCutApplicable().

    ◆ sepastoreDelCut()

    static SCIP_RETCODE sepastoreDelCut ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_LP lp,
    int  pos 
    )
    static

    removes a non-forced cut from the separation storage

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    eventqueueevent queue
    eventfilterevent filter for global events
    lpLP data
    posposition of cut to delete

    Definition at line 390 of file sepastore.c.

    References SCIP_SepaStore::cuts, SCIP_EventFilter::eventmask, SCIP_Row::fromcutpool, SCIP_SepaStore::initiallp, SCIP_EventFilter::len, SCIP_SepaStore::ncuts, SCIP_SepaStore::ncutsadded, SCIP_SepaStore::ncutsaddeddirect, SCIP_SepaStore::ncutsaddedviapool, SCIP_SepaStore::nforcedcuts, NULL, SCIP_Row::origintype, SCIP_CALL, SCIP_EVENTTYPE_ROWDELETEDSEPA, SCIP_OKAY, SCIP_ROWORIGINTYPE_SEPA, SCIPeventCreateRowDeletedSepa(), SCIPeventqueueAdd(), SCIProwGetOriginSepa(), SCIProwRelease(), and SCIPsepaDecNCutsAdded().

    Referenced by SCIPsepastoreRemoveInefficaciousCuts().

    ◆ SCIPsepastoreAddCut()

    SCIP_RETCODE SCIPsepastoreAddCut ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_LP lp,
    SCIP_ROW cut,
    SCIP_Bool  forcecut,
    SCIP_Bool  root,
    SCIP_Bool infeasible 
    )

    adds cut to separation storage and captures it

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    statproblem statistics data
    eventqueueevent queue
    eventfilterevent filter for global events
    lpLP data
    cutseparated cut
    forcecutshould the cut be forced to enter the LP?
    rootare we at the root node?
    infeasiblepointer to store whether the cut is infeasible

    Definition at line 439 of file sepastore.c.

    References SCIP_SepaStore::cuts, SCIP_SepaStore::cutssize, SCIP_EventFilter::eventmask, FALSE, SCIP_SepaStore::forcecuts, SCIP_Row::fromcutpool, SCIP_SepaStore::initiallp, SCIP_EventFilter::len, SCIP_SepaStore::ncuts, SCIP_SepaStore::ncutsadded, SCIP_SepaStore::ncutsaddeddirect, SCIP_SepaStore::ncutsaddedviapool, SCIP_SepaStore::ncutsfoundround, SCIP_SepaStore::nforcedcuts, NULL, SCIP_Row::origintype, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_ROWADDEDSEPA, SCIP_EVENTTYPE_ROWDELETEDSEPA, SCIP_OKAY, SCIP_ROWORIGINTYPE_SEPA, SCIPdebugCheckRow, SCIPeventCreateRowAddedSepa(), SCIPeventCreateRowDeletedSepa(), SCIPeventqueueAdd(), SCIProwCapture(), SCIProwChgLocal(), SCIProwGetLhs(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetOriginSepa(), SCIProwGetRhs(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIProwRelease(), SCIPsepaDecNCutsAdded(), SCIPsepaIncNCutsAdded(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetIsInfinity(), sepastoreEnsureCutsMem(), sepastoreIsBdchgApplicable(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().

    Referenced by SCIPaddRow(), SCIPconstructCurrentLP(), SCIPcutpoolSeparate(), and SCIPreoptApplyCuts().

    ◆ sepastoreApplyLb()

    static SCIP_RETCODE sepastoreApplyLb ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_PROB transprob,
    SCIP_PROB origprob,
    SCIP_TREE tree,
    SCIP_REOPT reopt,
    SCIP_LP lp,
    SCIP_BRANCHCAND branchcand,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_CLIQUETABLE cliquetable,
    SCIP_VAR var,
    SCIP_Real  bound,
    SCIP_Bool  local,
    SCIP_Bool applied,
    SCIP_Bool cutoff 
    )
    static

    applies a lower bound change

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    statproblem statistics
    transprobtransformed problem
    origproboriginal problem
    treebranch and bound tree
    reoptreoptimization data structure
    lpLP data
    branchcandbranching candidate storage
    eventqueueevent queue
    eventfilterglobal event filter
    cliquetableclique table data structure
    varproblem variable
    boundnew lower bound of variable
    localis it a local bound change? (otherwise global)
    appliedpointer to store whether the domain change was applied
    cutoffpointer to store TRUE, if an infeasibility has been detected

    Definition at line 595 of file sepastore.c.

    References bound, FALSE, NULL, SCIP_BOUNDTYPE_LOWER, SCIP_CALL, SCIP_OKAY, SCIPnodeAddBoundchg(), SCIPnodeCutoff(), SCIPsetDebugMsg, SCIPsetIsFeasLE(), SCIPsetIsGT(), SCIPsetIsInfinity(), SCIPtreeGetCurrentNode(), SCIPtreeGetRootNode(), SCIPvarAdjustLb(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.

    Referenced by sepastoreApplyBdchg().

    ◆ sepastoreApplyUb()

    static SCIP_RETCODE sepastoreApplyUb ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_PROB transprob,
    SCIP_PROB origprob,
    SCIP_TREE tree,
    SCIP_REOPT reopt,
    SCIP_LP lp,
    SCIP_BRANCHCAND branchcand,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_CLIQUETABLE cliquetable,
    SCIP_VAR var,
    SCIP_Real  bound,
    SCIP_Bool  local,
    SCIP_Bool applied,
    SCIP_Bool cutoff 
    )
    static

    applies an upper bound change

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    statproblem statistics
    transprobtransformed problem
    origproboriginal problem
    treebranch and bound tree
    reoptreoptimization data structure
    lpLP data
    branchcandbranching candidate storage
    eventqueueevent queue
    eventfilterglobal event filter
    cliquetableclique table data structure
    varproblem variable
    boundnew upper bound of variable
    localis it a local bound change? (otherwise global)
    appliedpointer to store whether the domain change was applied
    cutoffpointer to store TRUE, if an infeasibility has been detected

    Definition at line 687 of file sepastore.c.

    References bound, FALSE, NULL, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIPnodeAddBoundchg(), SCIPnodeCutoff(), SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsInfinity(), SCIPsetIsLT(), SCIPtreeGetCurrentNode(), SCIPtreeGetRootNode(), SCIPvarAdjustUb(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.

    Referenced by sepastoreApplyBdchg().

    ◆ sepastoreApplyBdchg()

    static SCIP_RETCODE sepastoreApplyBdchg ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_PROB transprob,
    SCIP_PROB origprob,
    SCIP_TREE tree,
    SCIP_REOPT reopt,
    SCIP_LP lp,
    SCIP_BRANCHCAND branchcand,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_CLIQUETABLE cliquetable,
    SCIP_ROW cut,
    SCIP_Bool applied,
    SCIP_Bool cutoff 
    )
    static

    applies a cut that is a bound change directly as bound change instead of adding it as row to the LP

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    statproblem statistics
    transprobtransformed problem
    origproboriginal problem
    treebranch and bound tree
    reoptreoptimization data structure
    lpLP data
    branchcandbranching candidate storage
    eventqueueevent queue
    eventfilterglobal event filter
    cliquetableclique table data structure
    cutcut with a single variable
    appliedpointer to store whether the domain change was applied
    cutoffpointer to store whether an empty domain was created

    Definition at line 779 of file sepastore.c.

    References FALSE, SCIP_SepaStore::initiallp, SCIP_SepaStore::ncutsapplied, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcolGetVar(), SCIProwGetCols(), SCIProwGetConstant(), SCIProwGetLhs(), SCIProwGetNNonz(), SCIProwGetRhs(), SCIProwGetVals(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsetIsFeasZero(), SCIPsetIsInfinity(), SCIPsetIsZero(), sepastoreApplyLb(), and sepastoreApplyUb().

    Referenced by SCIPsepastoreApplyCuts().

    ◆ sepastoreApplyCut()

    static SCIP_RETCODE sepastoreApplyCut ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_LP lp,
    SCIP_ROW cut,
    int  depth,
    int *  ncutsapplied 
    )
    static

    applies the given cut to the LP and updates the orthogonalities and scores of remaining cuts

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    eventqueueevent queue
    eventfilterglobal event filter
    lpLP data
    cutcut to apply to the LP
    depthdepth of current node
    ncutsappliedpointer to count the number of applied cuts

    Definition at line 876 of file sepastore.c.

    References SCIP_Row::fromcutpool, SCIP_SepaStore::initiallp, SCIP_SepaStore::ncutsapplied, NULL, SCIP_Row::origin, SCIP_Row::origintype, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIP_ROWORIGINTYPE_CONS, SCIP_ROWORIGINTYPE_CONSHDLR, SCIP_ROWORIGINTYPE_REOPT, SCIP_ROWORIGINTYPE_SEPA, SCIP_ROWORIGINTYPE_UNSPEC, SCIPconsGetHdlr(), SCIPconshdlrIncNAppliedCuts(), SCIPerrorMessage, SCIPlpAddRow(), SCIProwIsInLP(), and SCIPsepaIncNCutsApplied().

    Referenced by SCIPsepastoreApplyCuts().

    ◆ SCIPsepastoreApplyCuts()

    SCIP_RETCODE SCIPsepastoreApplyCuts ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_PROB transprob,
    SCIP_PROB origprob,
    SCIP_TREE tree,
    SCIP_REOPT reopt,
    SCIP_LP lp,
    SCIP_BRANCHCAND branchcand,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_CLIQUETABLE cliquetable,
    SCIP_Bool  root,
    SCIP_EFFICIACYCHOICE  efficiacychoice,
    SCIP_Bool cutoff 
    )

    adds cuts to the LP and clears separation storage

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    statproblem statistics
    transprobtransformed problem
    origproboriginal problem
    treebranch and bound tree
    reoptreoptimization data structure
    lpLP data
    branchcandbranching candidate storage
    eventqueueevent queue
    eventfilterglobal event filter
    cliquetableclique table data structure
    rootare we at the root node?
    efficiacychoicetype of solution to base efficiacy computation on
    cutoffpointer to store whether an empty domain was created

    Definition at line 935 of file sepastore.c.

    References SCIP_SepaStore::cuts, FALSE, SCIP_SepaStore::initiallp, SCIP_Lp::lpexact, MIN, SCIP_SepaStore::ncuts, SCIP_SepaStore::nforcedcuts, NULL, SCIP_Row::rowexact, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_UNUSED, SCIPaddPoolCut(), SCIPaddRowExact(), SCIPcutselsSelect(), SCIPdelPoolCut(), SCIPisCutNew(), SCIPnodeGetDepth(), SCIProwExactCreateFromRow(), SCIProwGetLPEfficacy(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetRowExact(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIPsepastoreClearCuts(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetIsFeasPositive(), SCIPtreeGetCurrentNode(), sepastoreApplyBdchg(), sepastoreApplyCut(), sepastoreIsBdchgApplicable(), and TRUE.

    Referenced by applyCuts(), priceAndCutLoop(), SCIPapplyCutsProbing(), SCIPconstructCurrentLP(), and SCIPinitConssLP().

    ◆ SCIPsepastoreClearCuts()

    SCIP_RETCODE SCIPsepastoreClearCuts ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_LP lp 
    )

    clears the separation storage without adding the cuts to the LP

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    eventqueueevent queue
    eventfilterevent filter for global events
    lpLP data

    Definition at line 1061 of file sepastore.c.

    References BMSfreeMemoryArrayNull, SCIP_SepaStore::cuts, SCIP_SepaStore::cutssize, SCIP_EventFilter::eventmask, SCIP_SepaStore::initiallp, SCIP_EventFilter::len, SCIP_SepaStore::ncuts, SCIP_SepaStore::ncutsfoundround, SCIP_SepaStore::nforcedcuts, NULL, SCIP_CALL, SCIP_EVENTTYPE_ROWDELETEDSEPA, SCIP_OKAY, SCIPeventCreateRowDeletedSepa(), SCIPeventqueueAdd(), SCIProwRelease(), and SCIPsetDebugMsg.

    Referenced by applyCuts(), priceAndCutLoop(), SCIPclearCuts(), SCIPconstructCurrentLP(), SCIPinitConssLP(), and SCIPsepastoreApplyCuts().

    ◆ SCIPsepastoreRemoveInefficaciousCuts()

    SCIP_RETCODE SCIPsepastoreRemoveInefficaciousCuts ( SCIP_SEPASTORE sepastore,
    BMS_BLKMEM blkmem,
    SCIP_SET set,
    SCIP_STAT stat,
    SCIP_EVENTQUEUE eventqueue,
    SCIP_EVENTFILTER eventfilter,
    SCIP_LP lp,
    SCIP_Bool  root,
    SCIP_EFFICIACYCHOICE  efficiacychoice 
    )

    removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP

    Parameters
    sepastoreseparation storage
    blkmemblock memory
    setglobal SCIP settings
    statproblem statistics data
    eventqueueevent queue
    eventfilterevent filter for global events
    lpLP data
    rootare we at the root node?
    efficiacychoicetype of solution to base efficiacy computation on

    Definition at line 1107 of file sepastore.c.

    References SCIP_SepaStore::cuts, SCIP_SepaStore::nforcedcuts, NULL, SCIP_CALL, SCIP_EFFICIACYCHOICE_LP, SCIP_EFFICIACYCHOICE_NLP, SCIP_EFFICIACYCHOICE_RELAX, SCIP_INVALIDCALL, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIProwGetLPEfficacy(), SCIProwGetNLPEfficacy(), SCIProwGetRelaxEfficacy(), SCIPsetDebugMsg, SCIPsetIsEfficacious(), and sepastoreDelCut().

    Referenced by SCIPremoveInefficaciousCuts().

    ◆ SCIPsepastoreIsCutApplicable()

    SCIP_Bool SCIPsepastoreIsCutApplicable ( SCIP_SET set,
    SCIP_ROW cut 
    )

    indicates whether a cut is applicable

    A cut is applicable if it is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon.

    Parameters
    setglobal SCIP settings
    cutcut to check

    Definition at line 1164 of file sepastore.c.

    References SCIProwGetNNonz(), SCIProwIsModifiable(), and sepastoreIsBdchgApplicable().

    Referenced by SCIPisCutApplicable().

    ◆ SCIPsepastoreGetCuts()

    SCIP_ROW ** SCIPsepastoreGetCuts ( SCIP_SEPASTORE sepastore)

    get cuts in the separation storage

    Parameters
    sepastoreseparation storage

    Definition at line 1173 of file sepastore.c.

    References SCIP_SepaStore::cuts, and NULL.

    Referenced by SCIPgetCuts().

    ◆ SCIPsepastoreGetNCuts()

    ◆ SCIPsepastoreGetNCutsAdded()

    int SCIPsepastoreGetNCutsAdded ( SCIP_SEPASTORE sepastore)

    gets the total number of cutting planes added to the separation storage; this is equal to the sum of added cuts directly and via the pool.

    Parameters
    sepastoreseparation storage

    Definition at line 1194 of file sepastore.c.

    References SCIP_SepaStore::ncutsadded, and NULL.

    Referenced by SCIPcutpoolSeparate(), and SCIPgetNCutsFound().

    ◆ SCIPsepastoreGetNCutsAddedViaPool()

    int SCIPsepastoreGetNCutsAddedViaPool ( SCIP_SEPASTORE sepastore)

    gets the number of cutting planes added to the separation storage from the cut pool

    Parameters
    sepastoreseparation storage

    Definition at line 1204 of file sepastore.c.

    References SCIP_SepaStore::ncutsaddedviapool, and NULL.

    ◆ SCIPsepastoreGetNCutsAddedDirect()

    int SCIPsepastoreGetNCutsAddedDirect ( SCIP_SEPASTORE sepastore)

    gets the number of cutting planes added to the separation storage directly

    Parameters
    sepastoreseparation storage

    Definition at line 1214 of file sepastore.c.

    References SCIP_SepaStore::ncutsaddeddirect, and NULL.

    ◆ SCIPsepastoreGetNCutsFoundRound()

    int SCIPsepastoreGetNCutsFoundRound ( SCIP_SEPASTORE sepastore)

    get number of cuts found so far in current separation round

    Parameters
    sepastoreseparation storage

    Definition at line 1224 of file sepastore.c.

    References SCIP_SepaStore::ncutsfoundround, and NULL.

    Referenced by SCIPgetNCutsFoundRound().

    ◆ SCIPsepastoreGetNCutsApplied()

    int SCIPsepastoreGetNCutsApplied ( SCIP_SEPASTORE sepastore)

    gets the total number of cutting planes applied to the LP

    Parameters
    sepastoreseparation storage

    Definition at line 1234 of file sepastore.c.

    References SCIP_SepaStore::ncutsapplied, and NULL.

    Referenced by applyCuts(), SCIPgetNCutsApplied(), and solveNodeLP().