internal methods for storing separated cuts
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.
SCIP_RETCODE SCIPsepastoreCreate | ( | SCIP_SEPASTORE ** | sepastore | ) |
creates separation storage
sepastore | pointer to store separation storage |
Definition at line 76 of file sepastore.c.
References BMSallocMemory, FALSE, SCIP_ALLOC, and SCIP_OKAY.
Referenced by initSolve().
SCIP_RETCODE SCIPsepastoreFree | ( | SCIP_SEPASTORE ** | sepastore | ) |
frees separation storage
sepastore | pointer to store separation storage |
Definition at line 99 of file sepastore.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, and SCIP_OKAY.
Referenced by freeReoptSolve(), and freeSolve().
void SCIPsepastoreStartInitialLP | ( | SCIP_SEPASTORE * | sepastore | ) |
informs separation storage, that the setup of the initial LP starts now
sepastore | separation storage |
Definition at line 115 of file sepastore.c.
References SCIP_SepaStore::initiallp, SCIP_SepaStore::ncuts, and TRUE.
Referenced by SCIPconstructCurrentLP(), and SCIPinitConssLP().
void SCIPsepastoreEndInitialLP | ( | SCIP_SEPASTORE * | sepastore | ) |
informs separation storage, that the setup of the initial LP is now finished
sepastore | separation storage |
Definition at line 127 of file sepastore.c.
References FALSE, SCIP_SepaStore::initiallp, and SCIP_SepaStore::ncuts.
Referenced by SCIPconstructCurrentLP(), and SCIPinitConssLP().
void SCIPsepastoreStartForceCuts | ( | SCIP_SEPASTORE * | sepastore | ) |
informs separation storage, that the following cuts should be used in any case
sepastore | separation storage |
Definition at line 139 of file sepastore.c.
References SCIP_SepaStore::forcecuts, and TRUE.
Referenced by enforceConstraints().
void SCIPsepastoreEndForceCuts | ( | SCIP_SEPASTORE * | sepastore | ) |
informs separation storage, that the following cuts should no longer be used in any case
sepastore | separation storage |
Definition at line 150 of file sepastore.c.
References FALSE, and SCIP_SepaStore::forcecuts.
Referenced by enforceConstraints().
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; if the cut should be forced to enter the LP, an infinite score has to be used
sepastore | separation storage |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics data |
eventqueue | event queue |
eventfilter | event filter for global events |
lp | LP data |
cut | separated cut |
forcecut | should the cut be forced to enter the LP? |
root | are we at the root node? |
infeasible | pointer to store whether the cut is infeasible |
Definition at line 394 of file sepastore.c.
References SCIP_SepaStore::cuts, SCIP_SepaStore::cutssize, SCIP_EventFilter::eventmask, FALSE, SCIP_SepaStore::forcecuts, SCIP_SepaStore::initiallp, SCIP_EventFilter::len, SCIP_SepaStore::ncuts, SCIP_SepaStore::ncutsfound, SCIP_SepaStore::ncutsfoundround, SCIP_SepaStore::nforcedcuts, SCIP_Bool, SCIP_CALL, SCIP_EVENTTYPE_ROWADDEDSEPA, SCIP_EVENTTYPE_ROWDELETEDSEPA, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPdebugCheckRow, SCIPeventCreateRowAddedSepa(), SCIPeventCreateRowDeletedSepa(), SCIPeventqueueAdd(), SCIProwCapture(), SCIProwChgLocal(), SCIProwGetLhs(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetRhs(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIProwRelease(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIP_SepaStore::scores, sepastoreEnsureCutsMem(), sepastoreIsBdchgApplicable(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().
Referenced by SCIPaddRow(), SCIPconstructCurrentLP(), SCIPcutpoolSeparate(), and SCIPreoptApplyCuts().
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
sepastore | separation storage |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree |
reopt | reoptimization data structure |
lp | LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
eventfilter | global event filter |
cliquetable | clique table data structure |
root | are we at the root node? |
efficiacychoice | type of solution to base efficiacy computation on |
cutoff | pointer to store whether an empty domain was created |
Definition at line 978 of file sepastore.c.
References computeScore(), SCIP_SepaStore::cuts, FALSE, MAX, SCIP_SepaStore::ncuts, SCIP_SepaStore::nforcedcuts, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPnodeGetDepth(), SCIProwCapture(), SCIProwGetLPEfficacy(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetObjParallelism(), SCIProwIsModifiable(), SCIProwRelease(), SCIPsepastoreClearCuts(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetIsFeasPositive(), SCIPsetIsInfinity(), SCIPtreeGetCurrentNode(), SCIP_SepaStore::scores, sepastoreApplyBdchg(), sepastoreApplyCut(), sepastoreDelCut(), sepastoreGetBestCut(), sepastoreIsBdchgApplicable(), and TRUE.
Referenced by applyCuts(), priceAndCutLoop(), SCIPapplyCutsProbing(), SCIPconstructCurrentLP(), and SCIPinitConssLP().
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
sepastore | separation storage |
blkmem | block memory |
set | global SCIP settings |
eventqueue | event queue |
eventfilter | event filter for global events |
lp | LP data |
Definition at line 1114 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, SCIP_CALL, SCIP_EVENTTYPE_ROWDELETEDSEPA, SCIP_OKAY, SCIPeventCreateRowDeletedSepa(), SCIPeventqueueAdd(), SCIProwRelease(), and SCIPsetDebugMsg.
Referenced by applyCuts(), priceAndCutLoop(), SCIPclearCuts(), SCIPconstructCurrentLP(), SCIPinitConssLP(), and SCIPsepastoreApplyCuts().
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
sepastore | separation storage |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics data |
eventqueue | event queue |
eventfilter | event filter for global events |
lp | LP data |
root | are we at the root node? |
efficiacychoice | type of solution to base efficiacy computation on |
Definition at line 1162 of file sepastore.c.
References SCIP_SepaStore::cuts, SCIP_SepaStore::nforcedcuts, 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().
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.
set | global SCIP settings |
cut | cut to check |
Definition at line 1218 of file sepastore.c.
References SCIProwGetNNonz(), SCIProwIsModifiable(), and sepastoreIsBdchgApplicable().
Referenced by SCIPisCutApplicable().
SCIP_ROW** SCIPsepastoreGetCuts | ( | SCIP_SEPASTORE * | sepastore | ) |
get cuts in the separation storage
sepastore | separation storage |
Definition at line 1227 of file sepastore.c.
References SCIP_SepaStore::cuts.
Referenced by SCIPgetCuts().
int SCIPsepastoreGetNCuts | ( | SCIP_SEPASTORE * | sepastore | ) |
get number of cuts in the separation storage
sepastore | separation storage |
Definition at line 1237 of file sepastore.c.
References SCIP_SepaStore::ncuts.
Referenced by applyCuts(), cutpoolSeparate(), enforceConstraints(), priceAndCutLoop(), propAndSolve(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPconshdlrEnforceLPSol(), SCIPconshdlrEnforceRelaxSol(), SCIPconshdlrSeparateLP(), SCIPconshdlrSeparateSol(), SCIPcutpoolSeparate(), SCIPendProbing(), SCIPgetNCuts(), SCIPsepaExecLP(), SCIPsepaExecSol(), separationRoundLP(), separationRoundSol(), solveNode(), and solveNodeLP().
int SCIPsepastoreGetNCutsFound | ( | SCIP_SEPASTORE * | sepastore | ) |
get total number of cuts found so far
sepastore | separation storage |
Definition at line 1247 of file sepastore.c.
References SCIP_SepaStore::ncutsfound.
Referenced by SCIPgetNCutsFound().
int SCIPsepastoreGetNCutsFoundRound | ( | SCIP_SEPASTORE * | sepastore | ) |
get number of cuts found so far in current separation round
sepastore | separation storage |
Definition at line 1257 of file sepastore.c.
References SCIP_SepaStore::ncutsfoundround.
Referenced by SCIPgetNCutsFoundRound().
int SCIPsepastoreGetNCutsApplied | ( | SCIP_SEPASTORE * | sepastore | ) |
get total number of cuts applied to the LPs
sepastore | separation storage |
Definition at line 1267 of file sepastore.c.
References SCIP_SepaStore::ncutsapplied.
Referenced by applyCuts(), SCIPgetNCutsApplied(), and solveNodeLP().