Detailed Description
methods and datastructures for separators
Definition in file sepa.c.
#include <assert.h>
#include <string.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/clock.h"
#include "scip/paramset.h"
#include "scip/sepastore.h"
#include "scip/scip.h"
#include "scip/sepa.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/struct_sepa.h"
Go to the source code of this file.
Function Documentation
◆ SCIP_DECL_PARAMCHGD()
|
static |
method to call, when the priority of a separator was changed
Definition at line 65 of file sepa.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPparamGetData(), SCIPparamGetInt(), and SCIPsetSepaPriority().
◆ SCIPsepaCopyInclude()
SCIP_RETCODE SCIPsepaCopyInclude | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set | ||
) |
copies the given separator to a new scip
- Parameters
-
sepa separator set SCIP_SET of SCIP to copy to
Definition at line 79 of file sepa.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPsepaGetName(), and SCIPsetDebugMsg.
Referenced by SCIPsetCopyPlugins().
◆ doSepaCreate()
|
static |
internal method for creating a separator
- Parameters
-
sepa pointer to separator data structure set global SCIP settings messagehdlr message handler blkmem block memory for parameter settings name name of separator desc description of separator priority priority of separator (>= 0: before, < 0: after constraint handlers) freq frequency for calling separator maxbounddist maximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying separation usessubscip does the separator use a secondary SCIP instance? delay should separator be delayed, if other separators found cuts? sepadata separator data
Definition at line 98 of file sepa.c.
References BMSallocMemory, BMSclearMemory, BMSduplicateMemoryArray, FALSE, NULL, paramname, SCIP_ALLOC, SCIP_CALL, SCIP_CLOCKTYPE_DEFAULT, SCIP_MAXSTRLEN, SCIP_MAXTREEDEPTH, SCIP_OKAY, SCIPclockCreate(), SCIPsetAddBoolParam(), SCIPsetAddIntParam(), SCIPsetAddRealParam(), SCIPsnprintf(), and TRUE.
Referenced by SCIPsepaCreate().
◆ SCIPsepaCreate()
SCIP_RETCODE SCIPsepaCreate | ( | SCIP_SEPA ** | sepa, |
SCIP_SET * | set, | ||
SCIP_MESSAGEHDLR * | messagehdlr, | ||
BMS_BLKMEM * | blkmem, | ||
const char * | name, | ||
const char * | desc, | ||
int | priority, | ||
int | freq, | ||
SCIP_Real | maxbounddist, | ||
SCIP_Bool | usessubscip, | ||
SCIP_Bool | delay, | ||
SCIP_DECL_SEPACOPY((*sepacopy)) | , | ||
SCIP_DECL_SEPAFREE((*sepafree)) | , | ||
SCIP_DECL_SEPAINIT((*sepainit)) | , | ||
SCIP_DECL_SEPAEXIT((*sepaexit)) | , | ||
SCIP_DECL_SEPAINITSOL((*sepainitsol)) | , | ||
SCIP_DECL_SEPAEXITSOL((*sepaexitsol)) | , | ||
SCIP_DECL_SEPAEXECLP((*sepaexeclp)) | , | ||
SCIP_DECL_SEPAEXECSOL((*sepaexecsol)) | , | ||
SCIP_SEPADATA * | sepadata | ||
) |
creates a separator
- Parameters
-
sepa pointer to separator data structure set global SCIP settings messagehdlr message handler blkmem block memory for parameter settings name name of separator desc description of separator priority priority of separator (>= 0: before, < 0: after constraint handlers) freq frequency for calling separator maxbounddist maximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying separation usessubscip does the separator use a secondary SCIP instance? delay should separator be delayed, if other separators found cuts? sepadata separator data
Definition at line 203 of file sepa.c.
References doSepaCreate(), NULL, SCIP_CALL_FINALLY, SCIP_OKAY, and SCIPsepaFree().
Referenced by SCIPincludeSepa(), and SCIPincludeSepaBasic().
◆ SCIPsepaFree()
SCIP_RETCODE SCIPsepaFree | ( | SCIP_SEPA ** | sepa, |
SCIP_SET * | set | ||
) |
calls destructor and frees memory of separator
- Parameters
-
sepa pointer to separator data structure set global SCIP settings
Definition at line 242 of file sepa.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
Referenced by SCIPsepaCreate().
◆ SCIPsepaInit()
SCIP_RETCODE SCIPsepaInit | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set | ||
) |
initializes separator
- Parameters
-
sepa separator set global SCIP settings
Definition at line 269 of file sepa.c.
References FALSE, SCIP_Sepa::initialized, SCIP_Sepa::lastsepanode, SCIP_Sepa::lpwasdelayed, SCIP_Sepa::name, SCIP_Sepa::ncalls, SCIP_Sepa::ncallsatnode, SCIP_Sepa::nconssfound, SCIP_Sepa::ncutoffs, SCIP_Sepa::ncutsadded, SCIP_Sepa::ncutsaddeddirect, SCIP_Sepa::ncutsaddedviapool, SCIP_Sepa::ncutsapplieddirect, SCIP_Sepa::ncutsappliedviapool, SCIP_Sepa::ncutsfound, SCIP_Sepa::ncutsfoundatnode, SCIP_Sepa::ndomredsfound, SCIP_Sepa::nrootcalls, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockReset(), SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIP_Sepa::sepaclock, SCIP_Sepa::setuptime, SCIP_Sepa::solwasdelayed, and TRUE.
Referenced by SCIPsetIncludeExternalCode().
◆ SCIPsepaExit()
SCIP_RETCODE SCIPsepaExit | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set | ||
) |
calls exit method of separator
- Parameters
-
sepa separator set global SCIP settings
Definition at line 322 of file sepa.c.
References FALSE, SCIP_Sepa::initialized, SCIP_Sepa::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Sepa::setuptime.
Referenced by SCIPsetInitPlugins().
◆ SCIPsepaInitsol()
SCIP_RETCODE SCIPsepaInitsol | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set | ||
) |
informs separator that the branch and bound process is being started
- Parameters
-
sepa separator set global SCIP settings
Definition at line 352 of file sepa.c.
References FALSE, SCIP_Sepa::lpwasdelayed, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIP_Sepa::setuptime, and SCIP_Sepa::solwasdelayed.
Referenced by SCIPsetExitprePlugins().
◆ SCIPsepaExitsol()
SCIP_RETCODE SCIPsepaExitsol | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set | ||
) |
informs separator that the branch and bound process data is being freed
- Parameters
-
sepa separator set global SCIP settings
Definition at line 379 of file sepa.c.
References NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Sepa::setuptime.
Referenced by SCIPsetInitsolPlugins().
◆ SCIPsepaExecLP()
SCIP_RETCODE SCIPsepaExecLP | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_SEPASTORE * | sepastore, | ||
int | depth, | ||
SCIP_Real | bounddist, | ||
SCIP_Bool | allowlocal, | ||
SCIP_Bool | execdelayed, | ||
SCIP_RESULT * | result | ||
) |
calls LP separation method of separator
- Parameters
-
sepa separator set global SCIP settings stat dynamic problem statistics sepastore separation storage depth depth of current node bounddist current relative distance of local dual bound to global dual bound allowlocal should the separator be asked to separate local cuts execdelayed execute separator even if it is marked to be delayed result pointer to store the result of the callback method
Definition at line 403 of file sepa.c.
References SCIP_Sepa::delay, SCIP_Sepa::expbackoff, SCIP_Sepa::freq, SCIP_Sepa::lastsepanode, SCIP_Sepa::lpwasdelayed, MAX, SCIP_Sepa::maxbounddist, SCIP_Stat::nactiveconss, SCIP_Sepa::name, SCIP_Stat::nboundchgs, SCIP_Sepa::ncalls, SCIP_Sepa::ncallsatnode, SCIP_Sepa::nconssfound, SCIP_Sepa::ncutoffs, SCIP_Sepa::ncutsfound, SCIP_Sepa::ncutsfoundatnode, SCIP_Sepa::ndomredsfound, SCIP_Stat::nholechgs, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, SCIP_Sepa::nrootcalls, SCIP_Stat::ntotalnodes, NULL, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DELAYED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_Longint, SCIP_NEWROUND, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPclockStart(), SCIPclockStop(), SCIPcutpoolGetNCuts(), SCIPerrorMessage, SCIPgetDelayedGlobalCutpool(), SCIPgetGlobalCutpool(), SCIPsepastoreGetNCuts(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIPsetIsLE(), and SCIP_Sepa::sepaclock.
Referenced by separationRoundLP().
◆ SCIPsepaExecSol()
SCIP_RETCODE SCIPsepaExecSol | ( | SCIP_SEPA * | sepa, |
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_SEPASTORE * | sepastore, | ||
SCIP_SOL * | sol, | ||
int | depth, | ||
SCIP_Bool | allowlocal, | ||
SCIP_Bool | execdelayed, | ||
SCIP_RESULT * | result | ||
) |
calls primal solution separation method of separator
- Parameters
-
sepa separator set global SCIP settings stat dynamic problem statistics sepastore separation storage sol primal solution that should be separated depth depth of current node allowlocal should the separator allow local cuts execdelayed execute separator even if it is marked to be delayed result pointer to store the result of the callback method
Definition at line 521 of file sepa.c.
References SCIP_Sepa::delay, SCIP_Sepa::expbackoff, SCIP_Sepa::freq, SCIP_Sepa::lastsepanode, MAX, SCIP_Stat::nactiveconss, SCIP_Sepa::name, SCIP_Stat::nboundchgs, SCIP_Sepa::ncalls, SCIP_Sepa::ncallsatnode, SCIP_Sepa::nconssfound, SCIP_Sepa::ncutoffs, SCIP_Sepa::ncutsfound, SCIP_Sepa::ncutsfoundatnode, SCIP_Sepa::ndomredsfound, SCIP_Stat::nholechgs, SCIP_Stat::nprobboundchgs, SCIP_Stat::nprobholechgs, SCIP_Sepa::nrootcalls, SCIP_Stat::ntotalnodes, NULL, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DELAYED, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_INVALIDRESULT, SCIP_Longint, SCIP_NEWROUND, SCIP_OKAY, SCIP_Real, SCIP_REDUCEDDOM, SCIP_SEPARATED, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, SCIPsepastoreGetNCuts(), SCIPsetDebugMsg, SCIPsetIsIntegral(), SCIP_Sepa::sepaclock, and SCIP_Sepa::solwasdelayed.
Referenced by separationRoundSol().
◆ SCIPsepaSetCopy()
void SCIPsepaSetCopy | ( | SCIP_SEPA * | sepa, |
SCIP_DECL_SEPACOPY((*sepacopy)) | |||
) |
sets copy method of separator
- Parameters
-
sepa separator
Definition at line 656 of file sepa.c.
References NULL.
Referenced by SCIPsetSepaCopy().
◆ SCIPsepaSetFree()
void SCIPsepaSetFree | ( | SCIP_SEPA * | sepa, |
SCIP_DECL_SEPAFREE((*sepafree)) | |||
) |
sets destructor method of separator
- Parameters
-
sepa separator
Definition at line 667 of file sepa.c.
References NULL.
Referenced by SCIPsetSepaFree().
◆ SCIPsepaSetInit()
void SCIPsepaSetInit | ( | SCIP_SEPA * | sepa, |
SCIP_DECL_SEPAINIT((*sepainit)) | |||
) |
sets initialization method of separator
- Parameters
-
sepa separator
Definition at line 678 of file sepa.c.
References NULL.
Referenced by SCIPsetSepaInit().
◆ SCIPsepaSetExit()
void SCIPsepaSetExit | ( | SCIP_SEPA * | sepa, |
SCIP_DECL_SEPAEXIT((*sepaexit)) | |||
) |
sets deinitialization method of separator
- Parameters
-
sepa separator
Definition at line 689 of file sepa.c.
References NULL.
Referenced by SCIPsetSepaExit().
◆ SCIPsepaSetInitsol()
void SCIPsepaSetInitsol | ( | SCIP_SEPA * | sepa, |
SCIP_DECL_SEPAINITSOL((*sepainitsol)) | |||
) |
sets solving process initialization method of separator
- Parameters
-
sepa separator
Definition at line 700 of file sepa.c.
References NULL.
Referenced by SCIPsetSepaInitsol().
◆ SCIPsepaSetExitsol()
void SCIPsepaSetExitsol | ( | SCIP_SEPA * | sepa, |
SCIP_DECL_SEPAEXITSOL((*sepaexitsol)) | |||
) |
sets solving process deinitialization method of separator
- Parameters
-
sepa separator
Definition at line 711 of file sepa.c.
References NULL.
Referenced by SCIPsetSepaExitsol().
◆ SCIPsepaSetIsParentsepa()
void SCIPsepaSetIsParentsepa | ( | SCIP_SEPA * | sepa | ) |
declares separator to be a parent separator
- Parameters
-
sepa separator
Definition at line 722 of file sepa.c.
References SCIP_Sepa::isparentsepa, NULL, and TRUE.
Referenced by SCIPsetSepaIsParentsepa().
◆ SCIPsepaSetParentsepa()
sets the parent separator
- Parameters
-
sepa separator parentsepa parent separator
Definition at line 732 of file sepa.c.
References NULL, and SCIP_Sepa::parentsepa.
Referenced by SCIPsetSepaParentsepa().
◆ SCIPsepaSetPriority()
sets priority of separator
- Parameters
-
sepa separator set global SCIP settings priority new priority of the separator
Definition at line 773 of file sepa.c.
References FALSE, NULL, and SCIP_Sepa::priority.
Referenced by SCIPsetSepaPriority().
◆ SCIPsepaEnableOrDisableClocks()
enables or disables all clocks of sepa
, depending on the value of the flag
- Parameters
-
sepa the separator for which all clocks should be enabled or disabled enable should the clocks of the separator be enabled?
Definition at line 828 of file sepa.c.
References NULL, SCIPclockEnableOrDisable(), SCIP_Sepa::sepaclock, and SCIP_Sepa::setuptime.
◆ SCIPsepaIncNCutsApplied()
increase count of applied cuts by one
- Parameters
-
sepa separator fromcutpool whether the cuts were added from the cutpool to sepastore
Definition at line 971 of file sepa.c.
References SCIP_Sepa::ncutsapplieddirect, SCIP_Sepa::ncutsappliedviapool, NULL, SCIPsepaGetParentsepa(), and SCIPsepaIncNCutsApplied().
Referenced by SCIPsepaIncNCutsApplied(), and sepastoreApplyCut().
◆ SCIPsepaIncNCutsAdded()
increase count of added cuts by one
- Parameters
-
sepa separator fromcutpool whether the cuts were added from the cutpool to sepastore
Definition at line 993 of file sepa.c.
References SCIP_Sepa::ncutsadded, SCIP_Sepa::ncutsaddeddirect, SCIP_Sepa::ncutsaddedviapool, NULL, SCIPsepaGetParentsepa(), and SCIPsepaIncNCutsAdded().
Referenced by SCIPcutpoolSeparate(), SCIPsepaIncNCutsAdded(), and SCIPsepastoreAddCut().
◆ SCIPsepaDecNCutsAdded()
decrease the count of added cuts by one
- Parameters
-
sepa separator fromcutpool whether the cuts were added from the cutpool to sepastore
Definition at line 1016 of file sepa.c.
References SCIP_Sepa::ncutsadded, SCIP_Sepa::ncutsaddeddirect, SCIP_Sepa::ncutsaddedviapool, NULL, SCIPsepaDecNCutsAdded(), and SCIPsepaGetParentsepa().
Referenced by SCIPsepaDecNCutsAdded(), SCIPsepastoreAddCut(), and sepastoreDelCut().
◆ SCIPsepaIncNCutsFound()
void SCIPsepaIncNCutsFound | ( | SCIP_SEPA * | sepa | ) |
increase count of found cuts by one
- Parameters
-
sepa separator
Definition at line 1039 of file sepa.c.
References SCIP_Sepa::ncutsfound, and NULL.
◆ SCIPsepaIncNCutsFoundAtNode()
void SCIPsepaIncNCutsFoundAtNode | ( | SCIP_SEPA * | sepa | ) |
increase count of found cuts at current node by one
- Parameters
-
sepa separator
Definition at line 1049 of file sepa.c.
References SCIP_Sepa::ncutsfoundatnode, and NULL.
Referenced by SCIPcutpoolSeparate().