Detailed Description
methods for storing cuts in a cut pool
Definition in file cutpool.c.
#include <assert.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/lp.h"
#include "scip/cons.h"
#include "scip/sepa.h"
#include "scip/sepastore.h"
#include "scip/cutpool.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/struct_cutpool.h"
Go to the source code of this file.
Function Documentation
◆ SCIP_DECL_HASHGETKEY()
|
static |
gets the hash key of a cut
Definition at line 61 of file cutpool.c.
References NULL, and SCIP_Cut::row.
◆ SCIP_DECL_HASHKEYEQ()
|
static |
returns TRUE iff both cuts are identical
Definition at line 75 of file cutpool.c.
References SCIP_Row::cols, SCIP_Row::cols_index, FALSE, SCIP_Row::len, SCIP_Row::lpcolssorted, SCIP_Row::maxidx, SCIP_Row::minidx, SCIP_Row::nlpcols, SCIP_Row::nonlpcolssorted, NULL, SCIP_Row::nunlinked, SCIP_Row::rhs, SCIP_Real, SCIProwGetMaxval(), SCIProwGetMinval(), SCIProwSort(), SCIPsetIsFeasEQ(), SCIPsetIsInfinity(), TRUE, SCIP_Row::validminmaxidx, and SCIP_Row::vals.
◆ SCIP_DECL_HASHKEYVAL()
|
static |
Definition at line 255 of file cutpool.c.
References SCIP_Row::cols_index, SCIP_Row::len, NULL, SCIP_Row::rhs, SCIP_Real, SCIPhashTwo, SCIPrealHashCode(), SCIProwGetMaxval(), SCIPsetIsInfinity(), and SCIP_Row::vals.
◆ cutpoolEnsureCutsMem()
|
static |
resizes cuts array to be able to store at least num entries
- Parameters
-
cutpool cut pool set global SCIP settings num minimal number of slots in array
Definition at line 291 of file cutpool.c.
References BMSreallocMemoryArray, SCIP_Cutpool::cuts, SCIP_Cutpool::cutssize, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPcutpoolAddNewRow().
◆ cutCreate()
|
static |
creates a cut and captures the row
- Parameters
-
cut pointer to store the cut blkmem block memory row row this cut represents
Definition at line 321 of file cutpool.c.
References SCIP_Row::age, BMSallocBlockMemory, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIProwCapture().
Referenced by SCIPcutpoolAddNewRow().
◆ cutFree()
|
static |
frees a cut and releases the row
- Parameters
-
cut pointer to store the cut blkmem block memory set global SCIP settings lp current LP data
Definition at line 347 of file cutpool.c.
References BMSfreeBlockMemory, NULL, SCIP_CALL, SCIP_OKAY, and SCIProwRelease().
Referenced by cutpoolDelCut(), and SCIPcutpoolClear().
◆ cutIsAged()
returns whether the cut's age exceeds the age limit
- Parameters
-
cut cut to check agelimit maximum age a cut can reach before it is deleted from the pool, or -1
Definition at line 370 of file cutpool.c.
References SCIP_Cut::age, and NULL.
Referenced by SCIPcutpoolSeparate().
◆ SCIPcutpoolCreate()
SCIP_RETCODE SCIPcutpoolCreate | ( | SCIP_CUTPOOL ** | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
int | agelimit, | ||
SCIP_Bool | globalcutpool | ||
) |
creates cut pool
- Parameters
-
cutpool pointer to store cut pool blkmem block memory set global SCIP settings agelimit maximum age a cut can reach before it is deleted from the pool globalcutpool is this the global cut pool of SCIP?
Definition at line 427 of file cutpool.c.
References BMSallocMemory, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_HASHSIZE_CUTPOOLS, SCIP_HASHSIZE_CUTPOOLS_SMALL, SCIP_INVALID, SCIP_OKAY, SCIPclockCreate(), and SCIPhashtableCreate().
Referenced by initSolve(), and SCIPcreateCutpool().
◆ SCIPcutpoolFree()
SCIP_RETCODE SCIPcutpoolFree | ( | SCIP_CUTPOOL ** | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp | ||
) |
frees cut pool
- Parameters
-
cutpool pointer to store cut pool blkmem block memory set global SCIP settings lp current LP data
Definition at line 468 of file cutpool.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockFree(), SCIPcutpoolClear(), and SCIPhashtableFree().
Referenced by freeReoptSolve(), freeSolve(), and SCIPfreeCutpool().
◆ SCIPcutpoolClear()
SCIP_RETCODE SCIPcutpoolClear | ( | SCIP_CUTPOOL * | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_LP * | lp | ||
) |
removes all rows from the cut pool
- Parameters
-
cutpool cut pool blkmem block memory set global SCIP settings lp current LP data
Definition at line 494 of file cutpool.c.
References cutFree(), SCIP_Cutpool::cuts, FALSE, SCIP_Cutpool::globalcutpool, SCIP_Cutpool::hashtable, SCIP_Row::inglobalcutpool, SCIP_Cutpool::ncuts, SCIP_Cutpool::nremovablecuts, NULL, SCIP_Cut::row, SCIP_CALL, SCIP_OKAY, SCIPhashtableRemoveAll(), and SCIProwUnlock().
Referenced by freeReoptSolve(), freeSolve(), and SCIPcutpoolFree().
◆ cutpoolDelCut()
|
static |
removes the cut from the cut pool
- Parameters
-
cutpool cut pool blkmem block memory set global SCIP settings stat problem statistics data lp current LP data cut cut to remove
Definition at line 523 of file cutpool.c.
References cutFree(), SCIP_Cutpool::cuts, FALSE, SCIP_Cutpool::firstunprocessed, SCIP_Cutpool::firstunprocessedsol, SCIP_Cutpool::globalcutpool, SCIP_Cutpool::hashtable, SCIP_Row::inglobalcutpool, SCIP_Stat::lpcount, MIN, SCIP_Cutpool::ncuts, SCIP_Cutpool::nremovablecuts, NULL, SCIP_Cut::pos, SCIP_Cut::processedlp, SCIP_Cutpool::processedlp, SCIP_Cut::processedlpsol, SCIP_Cutpool::processedlpsol, SCIP_Cut::row, SCIP_CALL, SCIP_OKAY, SCIPhashtableExists(), SCIPhashtableRemove(), SCIProwIsRemovable(), and SCIProwUnlock().
Referenced by SCIPcutpoolAddRow(), SCIPcutpoolDelRow(), and SCIPcutpoolSeparate().
◆ SCIPcutpoolIsCutNew()
SCIP_Bool SCIPcutpoolIsCutNew | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_SET * | set, | ||
SCIP_ROW * | row | ||
) |
checks if cut is already existing
- Parameters
-
cutpool cut pool set global SCIP settings row cutting plane to add
Definition at line 593 of file cutpool.c.
References SCIP_Row::constant, FALSE, SCIP_Cutpool::hashtable, SCIP_Row::len, SCIP_Row::lhs, NULL, SCIP_Row::rhs, SCIP_Cut::row, SCIP_Real, SCIPhashtableRetrieve(), SCIProwGetMaxval(), SCIPsetIsFeasGT(), SCIPsetIsFeasLT(), SCIPsetIsInfinity(), and TRUE.
Referenced by SCIPisCutNew().
◆ SCIPcutpoolAddRow()
SCIP_RETCODE SCIPcutpoolAddRow | ( | SCIP_CUTPOOL * | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row | ||
) |
if not already existing, adds row to cut pool and captures it
- Parameters
-
cutpool cut pool blkmem block memory set global SCIP settings stat problem statistics data lp current LP data row cutting plane to add
Definition at line 656 of file cutpool.c.
References SCIP_Row::constant, cutpoolDelCut(), SCIP_Cutpool::hashtable, SCIP_Row::len, SCIP_Row::lhs, NULL, SCIP_Row::rhs, SCIP_Cut::row, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcutpoolAddNewRow(), SCIPcutpoolAddRow(), SCIPhashtableRetrieve(), SCIProwGetMaxidx(), SCIProwGetMaxval(), SCIPsetIsFeasLT(), SCIPsetIsInfinity(), and SCIP_Row::validminmaxidx.
Referenced by SCIPaddDelayedPoolCut(), SCIPaddPoolCut(), SCIPaddRowCutpool(), SCIPcutpoolAddRow(), and SCIPreoptApplyCuts().
◆ SCIPcutpoolAddNewRow()
SCIP_RETCODE SCIPcutpoolAddNewRow | ( | SCIP_CUTPOOL * | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row | ||
) |
adds row to cut pool and captures it; doesn't check for multiple cuts
- Parameters
-
cutpool cut pool blkmem block memory set global SCIP settings stat problem statistics data lp current LP data row cutting plane to add
Definition at line 733 of file cutpool.c.
References SCIP_Stat::bestefficacy, cutCreate(), cutpoolEnsureCutsMem(), SCIP_Cutpool::cuts, SCIP_Cutpool::globalcutpool, SCIP_Cutpool::hashtable, SCIP_Row::inglobalcutpool, MAX, SCIP_Cutpool::maxncuts, SCIP_Cutpool::ncuts, SCIP_Cutpool::ncutsfound, SCIP_Cutpool::nremovablecuts, NULL, SCIP_Cut::pos, SCIP_CALL, SCIP_INVALIDDATA, SCIP_LPSOLSTAT_OPTIMAL, SCIP_OKAY, SCIP_Real, SCIPerrorMessage, SCIPhashtableExists(), SCIPhashtableInsert(), SCIPlpGetSolstat(), SCIProwGetLPEfficacy(), SCIProwGetMaxidx(), SCIProwGetName(), SCIProwIsLocal(), SCIProwIsModifiable(), SCIProwIsRemovable(), SCIProwLock(), TRUE, and SCIP_Row::validminmaxidx.
Referenced by SCIPaddNewRowCutpool(), and SCIPcutpoolAddRow().
◆ SCIPcutpoolDelRow()
SCIP_RETCODE SCIPcutpoolDelRow | ( | SCIP_CUTPOOL * | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_LP * | lp, | ||
SCIP_ROW * | row | ||
) |
removes the LP row from the cut pool
- Parameters
-
cutpool cut pool blkmem block memory set global SCIP settings stat problem statistics data lp current LP data row row to remove
Definition at line 806 of file cutpool.c.
References cutpoolDelCut(), SCIP_Cutpool::hashtable, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPhashtableRetrieve(), and SCIProwGetName().
Referenced by SCIPdelDelayedPoolCut(), SCIPdelPoolCut(), and SCIPdelRowCutpool().
◆ SCIPcutpoolSeparate()
SCIP_RETCODE SCIPcutpoolSeparate | ( | SCIP_CUTPOOL * | cutpool, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_EVENTQUEUE * | eventqueue, | ||
SCIP_EVENTFILTER * | eventfilter, | ||
SCIP_LP * | lp, | ||
SCIP_SEPASTORE * | sepastore, | ||
SCIP_SOL * | sol, | ||
SCIP_Bool | cutpoolisdelayed, | ||
SCIP_Bool | root, | ||
SCIP_RESULT * | result | ||
) |
separates cuts of the cut pool
- Parameters
-
cutpool cut pool blkmem block memory set global SCIP settings stat problem statistics data eventqueue event queue eventfilter event filter for global events lp current LP data sepastore separation storage sol solution to be separated (or NULL for LP-solution) cutpoolisdelayed is the cutpool delayed (count cuts found)? root are we at the root node? result pointer to store the result of the separation call
Definition at line 835 of file cutpool.c.
References SCIP_Cut::age, SCIP_Cutpool::agelimit, SCIP_Stat::bestefficacy, cutIsAged(), cutpoolDelCut(), SCIP_Cutpool::cuts, FALSE, SCIP_Cutpool::firstunprocessed, SCIP_Cutpool::firstunprocessedsol, SCIP_Row::fromcutpool, SCIP_Stat::lpcount, MAX, MIN, SCIP_Stat::minefficacyfac, SCIP_Cutpool::ncalls, SCIP_Stat::ncutpoolfails, SCIP_Cutpool::ncuts, SCIP_Cutpool::ncutsadded, SCIP_Cutpool::nremovablecuts, SCIP_Cutpool::nrootcalls, NULL, SCIP_Cutpool::poolclock, SCIP_Cut::pos, SCIP_Cut::processedlp, SCIP_Cutpool::processedlp, SCIP_Cutpool::processedlpefficacy, SCIP_Cut::processedlpsol, SCIP_Cutpool::processedlpsol, SCIP_Cutpool::processedlpsolefficacy, SCIP_Cut::row, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_SEPARATED, SCIPclockStart(), SCIPclockStop(), SCIPconshdlrIncNCutsFound(), SCIProwGetLPEfficacy(), SCIProwGetLPFeasibility(), SCIProwGetName(), SCIProwGetNNonz(), SCIProwGetOriginConshdlr(), SCIProwGetOriginSepa(), SCIProwGetSolEfficacy(), SCIProwGetSolFeasibility(), SCIProwIsInLP(), SCIProwIsModifiable(), SCIPsepaIncNCutsAdded(), SCIPsepaIncNCutsFoundAtNode(), SCIPsepastoreAddCut(), SCIPsepastoreGetNCuts(), SCIPsepastoreGetNCutsAdded(), SCIPsetDebugMsg, SCIPsetGetSepaMaxcuts(), SCIPsetIsFeasPositive(), and TRUE.
Referenced by cutpoolSeparate(), SCIPseparateCutpool(), and SCIPseparateSolCutpool().
◆ SCIPcutpoolAddMaxNCuts()
void SCIPcutpoolAddMaxNCuts | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_Longint | ncuts | ||
) |
adds the maximum number of cuts that were stored in the pool; this is primarily used to keep statistics when SCIP performs a restart
- Parameters
-
cutpool cut pool ncuts number of cuts to add
Definition at line 1156 of file cutpool.c.
References SCIP_Cutpool::maxncuts, and NULL.
Referenced by SCIPsolve().
◆ SCIPcutpoolSetTime()
void SCIPcutpoolSetTime | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_Real | time | ||
) |
sets time in seconds used for separating cuts from the pool; this is primarily used to keep statistics when SCIP performs a restart
- Parameters
-
cutpool cut pool time poolclock time
Definition at line 1168 of file cutpool.c.
References NULL, SCIP_Cutpool::poolclock, and SCIPclockSetTime().
Referenced by SCIPsolve().
◆ SCIPcutpoolAddNCalls()
void SCIPcutpoolAddNCalls | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_Longint | ncalls | ||
) |
adds the number of times the cut pool was separated; this is primarily used to keep statistics when SCIP performs a restart
- Parameters
-
cutpool cut pool ncalls ncalls
Definition at line 1180 of file cutpool.c.
References SCIP_Cutpool::ncalls, and NULL.
Referenced by SCIPsolve().
◆ SCIPcutpoolAddNRootCalls()
void SCIPcutpoolAddNRootCalls | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_Longint | nrootcalls | ||
) |
adds the number of times the cut pool was separated at the root; this is primarily used to keep statistics when SCIP performs a restart
- Parameters
-
cutpool cut pool nrootcalls nrootcalls
Definition at line 1192 of file cutpool.c.
References SCIP_Cutpool::nrootcalls, and NULL.
Referenced by SCIPsolve().
◆ SCIPcutpoolAddNCutsFound()
void SCIPcutpoolAddNCutsFound | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_Longint | ncutsfound | ||
) |
adds the total number of cuts that were added to the pool; this is primarily used to keep statistics when SCIP performs a restart
- Parameters
-
cutpool cut pool ncutsfound total number of cuts added to cut pool
Definition at line 1204 of file cutpool.c.
References SCIP_Cutpool::ncutsfound, and NULL.
Referenced by SCIPsolve().
◆ SCIPcutpoolAddNCutsAdded()
void SCIPcutpoolAddNCutsAdded | ( | SCIP_CUTPOOL * | cutpool, |
SCIP_Longint | ncutsadded | ||
) |
adds the total number of cuts that were separated from the pool; this is primarily used to keep statistics when SCIP performs a restart
- Parameters
-
cutpool cut pool ncutsadded total number of cuts added from cut pool to sepastore
Definition at line 1216 of file cutpool.c.
References SCIP_Cutpool::ncutsadded, and NULL.
Referenced by SCIPsolve().