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 79 of file sepastore.c.
References BMSallocMemory, FALSE, NULL, 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 105 of file sepastore.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, 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 124 of file sepastore.c.
References SCIP_SepaStore::initiallp, SCIP_SepaStore::ncuts, NULL, and TRUE.
Referenced by 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 136 of file sepastore.c.
References FALSE, SCIP_SepaStore::initiallp, SCIP_SepaStore::ncuts, and NULL.
Referenced by 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 148 of file sepastore.c.
References SCIP_SepaStore::forcecuts, NULL, 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 159 of file sepastore.c.
References FALSE, SCIP_SepaStore::forcecuts, and NULL.
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_SOL * | sol, | ||
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 |
sol | primal solution that was separated, or NULL for LP solution |
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 406 of file sepastore.c.
References SCIP_SepaStore::cuts, SCIP_SepaStore::cutssize, SCIP_SepaStore::efficacies, 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, NULL, SCIP_SepaStore::objparallelisms, SCIP_SepaStore::orthogonalities, 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(), SCIProwGetObjParallelism(), SCIProwGetRhs(), SCIProwIsInLP(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIProwRelease(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetInfinity(), SCIPsetIsInfinity(), SCIP_SepaStore::scores, sepastoreEnsureCutsMem(), sepastoreIsBdchgApplicable(), sepastoreIsCutRedundant(), and sepastoreIsCutRedundantOrInfeasible().
Referenced by SCIPaddCut(), 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 1088 of file sepastore.c.
References computeScore(), SCIP_SepaStore::cuts, SCIP_SepaStore::efficacies, FALSE, MAX, SCIP_SepaStore::ncuts, SCIP_SepaStore::nforcedcuts, NULL, SCIP_SepaStore::objparallelisms, SCIP_SepaStore::orthogonalities, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPnodeGetDepth(), SCIProwCapture(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwIsModifiable(), SCIProwRelease(), SCIPsepastoreClearCuts(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetIsFeasPositive(), SCIPsetIsInfinity(), SCIPtreeGetCurrentNode(), SCIP_SepaStore::scores, sepastoreApplyBdchg(), sepastoreApplyCut(), sepastoreDelCut(), sepastoreGetBestCut(), sepastoreIsBdchgApplicable(), and TRUE.
Referenced by applyCuts(), priceAndCutLoop(), SCIPapplyCutsProbing(), 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 1220 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(), 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 1268 of file sepastore.c.
References computeScore(), SCIP_SepaStore::efficacies, FALSE, SCIP_SepaStore::nforcedcuts, NULL, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, 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 1309 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 1318 of file sepastore.c.
References SCIP_SepaStore::cuts, and NULL.
Referenced by SCIPgetCuts().
int SCIPsepastoreGetNCuts | ( | SCIP_SEPASTORE * | sepastore | ) |
get number of cuts in the separation storage
sepastore | separation storage |
Definition at line 1328 of file sepastore.c.
References SCIP_SepaStore::ncuts, and NULL.
Referenced by applyCuts(), cutpoolSeparate(), enforceConstraints(), priceAndCutLoop(), propAndSolve(), SCIPbranchruleExecExternSol(), SCIPbranchruleExecLPSol(), SCIPconshdlrEnforceLPSol(), SCIPconshdlrEnforceRelaxSol(), SCIPconshdlrSeparateLP(), SCIPconshdlrSeparateSol(), SCIPcutpoolSeparate(), 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 1338 of file sepastore.c.
References SCIP_SepaStore::ncutsfound, and NULL.
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 1348 of file sepastore.c.
References SCIP_SepaStore::ncutsfoundround, and NULL.
Referenced by SCIPgetNCutsFoundRound().
int SCIPsepastoreGetNCutsApplied | ( | SCIP_SEPASTORE * | sepastore | ) |
get total number of cuts applied to the LPs
sepastore | separation storage |
Definition at line 1358 of file sepastore.c.
References SCIP_SepaStore::ncutsapplied, and NULL.
Referenced by applyCuts(), SCIPgetNCutsApplied(), and solveNodeLP().