Scippy

SCIP

Solving Constraint Integer Programs

sepastore.h File Reference

Detailed Description

internal methods for storing separated cuts

Author
Tobias Achterberg
Robert Lion Gottwald

Definition in file sepastore.h.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_implics.h"
#include "scip/type_retcode.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_event.h"
#include "scip/type_lp.h"
#include "scip/type_prob.h"
#include "scip/type_tree.h"
#include "scip/type_reopt.h"
#include "scip/type_sepastore.h"
#include "scip/type_branch.h"

Go to the source code of this file.

Functions

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)
 
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)
 
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 SCIPsepastoreGetNCutsFound (SCIP_SEPASTORE *sepastore)
 
int SCIPsepastoreGetNCutsFoundRound (SCIP_SEPASTORE *sepastore)
 
int SCIPsepastoreGetNCutsApplied (SCIP_SEPASTORE *sepastore)
 

Function Documentation

◆ 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 75 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 101 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 118 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 130 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 142 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 153 of file sepastore.c.

References FALSE, SCIP_SepaStore::forcecuts, and NULL.

Referenced by enforceConstraints().

◆ 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 
)

◆ 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 859 of file sepastore.c.

References SCIP_SepaStore::cuts, FALSE, MAX, SCIP_SepaStore::ncuts, SCIP_SepaStore::nforcedcuts, NULL, SCIP_SepaStore::randnumgen, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_UNUSED, SCIPnodeGetDepth(), SCIProwGetLPEfficacy(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwIsModifiable(), SCIPselectCuts(), SCIPsepastoreClearCuts(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetIsFeasPositive(), SCIPtreeGetCurrentNode(), sepastoreApplyBdchg(), sepastoreApplyCut(), and sepastoreIsBdchgApplicable().

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 963 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 1009 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 1066 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 1075 of file sepastore.c.

References SCIP_SepaStore::cuts, and NULL.

Referenced by SCIPgetCuts().

◆ SCIPsepastoreGetNCuts()

◆ SCIPsepastoreGetNCutsFound()

int SCIPsepastoreGetNCutsFound ( SCIP_SEPASTORE sepastore)

get total number of cuts found so far

Parameters
sepastoreseparation storage

Definition at line 1095 of file sepastore.c.

References SCIP_SepaStore::ncutsfound, and NULL.

Referenced by SCIPgetNCutsFound().

◆ SCIPsepastoreGetNCutsFoundRound()

int SCIPsepastoreGetNCutsFoundRound ( SCIP_SEPASTORE sepastore)

get number of cuts found so far in current separation round

Parameters
sepastoreseparation storage

Definition at line 1105 of file sepastore.c.

References SCIP_SepaStore::ncutsfoundround, and NULL.

Referenced by SCIPgetNCutsFoundRound().

◆ SCIPsepastoreGetNCutsApplied()

int SCIPsepastoreGetNCutsApplied ( SCIP_SEPASTORE sepastore)

get total number of cuts applied to the LPs

Parameters
sepastoreseparation storage

Definition at line 1115 of file sepastore.c.

References SCIP_SepaStore::ncutsapplied, and NULL.

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