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(), 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 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().