SCIP Doxygen Documentation
Loading...
Searching...
No Matches
sepa.h File Reference

Detailed Description

internal methods for separators

Author
Tobias Achterberg

Definition in file sepa.h.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_retcode.h"
#include "scip/type_result.h"
#include "scip/type_set.h"
#include "scip/type_stat.h"
#include "scip/type_sepastore.h"
#include "scip/type_sepa.h"
#include "scip/pub_sepa.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPsepaCopyInclude (SCIP_SEPA *sepa, SCIP_SET *set)
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)
SCIP_RETCODE SCIPsepaFree (SCIP_SEPA **sepa, SCIP_SET *set)
SCIP_RETCODE SCIPsepaInit (SCIP_SEPA *sepa, SCIP_SET *set)
SCIP_RETCODE SCIPsepaExit (SCIP_SEPA *sepa, SCIP_SET *set)
SCIP_RETCODE SCIPsepaInitsol (SCIP_SEPA *sepa, SCIP_SET *set)
SCIP_RETCODE SCIPsepaExitsol (SCIP_SEPA *sepa, SCIP_SET *set)
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)
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)
void SCIPsepaSetPriority (SCIP_SEPA *sepa, SCIP_SET *set, int priority)
void SCIPsepaSetCopy (SCIP_SEPA *sepa,)
void SCIPsepaSetFree (SCIP_SEPA *sepa,)
void SCIPsepaSetInit (SCIP_SEPA *sepa,)
void SCIPsepaSetExit (SCIP_SEPA *sepa,)
void SCIPsepaSetInitsol (SCIP_SEPA *sepa,)
void SCIPsepaSetExitsol (SCIP_SEPA *sepa,)
void SCIPsepaSetIsParentsepa (SCIP_SEPA *sepa)
void SCIPsepaSetParentsepa (SCIP_SEPA *sepa, SCIP_SEPA *parentsepa)
void SCIPsepaEnableOrDisableClocks (SCIP_SEPA *sepa, SCIP_Bool enable)
void SCIPsepaIncNCutsApplied (SCIP_SEPA *sepa, SCIP_Bool fromcutpool)
void SCIPsepaIncNCutsAdded (SCIP_SEPA *sepa, SCIP_Bool fromcutpool)
void SCIPsepaDecNCutsAdded (SCIP_SEPA *sepa, SCIP_Bool fromcutpool)
void SCIPsepaIncNCutsFound (SCIP_SEPA *sepa)
void SCIPsepaIncNCutsFoundAtNode (SCIP_SEPA *sepa)

Function Documentation

◆ SCIPsepaCopyInclude()

SCIP_RETCODE SCIPsepaCopyInclude ( SCIP_SEPA * sepa,
SCIP_SET * set )

copies the given separator to a new scip

Parameters
sepaseparator
setSCIP_SET of SCIP to copy to

Definition at line 79 of file sepa.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPsepaGetName(), and SCIPsetDebugMsg.

Referenced by SCIPsetCopyPlugins().

◆ 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
sepapointer to separator data structure
setglobal SCIP settings
messagehdlrmessage handler
blkmemblock memory for parameter settings
namename of separator
descdescription of separator
prioritypriority of separator (>= 0: before, < 0: after constraint handlers)
freqfrequency for calling separator
maxbounddistmaximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying separation
usessubscipdoes the separator use a secondary SCIP instance?
delayshould separator be delayed, if other separators found cuts?
sepadataseparator data

Definition at line 203 of file sepa.c.

References assert(), doSepaCreate(), NULL, SCIP_Bool, SCIP_CALL_FINALLY, SCIP_DECL_SEPACOPY, SCIP_DECL_SEPAEXECLP, SCIP_DECL_SEPAEXECSOL, SCIP_DECL_SEPAEXIT, SCIP_DECL_SEPAEXITSOL, SCIP_DECL_SEPAFREE, SCIP_DECL_SEPAINIT, SCIP_DECL_SEPAINITSOL, SCIP_OKAY, SCIP_Real, SCIPsepaFree(), and sepadata.

Referenced by SCIPincludeSepa(), and SCIPincludeSepaBasic().

◆ SCIPsepaFree()

SCIP_RETCODE SCIPsepaFree ( SCIP_SEPA ** sepa,
SCIP_SET * set )

calls destructor and frees memory of separator

Parameters
sepapointer to separator data structure
setglobal SCIP settings

Definition at line 242 of file sepa.c.

References assert(), BMSfreeMemory, BMSfreeMemoryArrayNull, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().

Referenced by SCIPsepaCreate().

◆ SCIPsepaInit()

◆ SCIPsepaExit()

SCIP_RETCODE SCIPsepaExit ( SCIP_SEPA * sepa,
SCIP_SET * set )

calls exit method of separator

Parameters
sepaseparator
setglobal SCIP settings

Definition at line 322 of file sepa.c.

References assert(), FALSE, SCIP_Sepa::initialized, SCIP_Sepa::name, NULL, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIPerrorMessage, and SCIP_Sepa::setuptime.

◆ SCIPsepaInitsol()

SCIP_RETCODE SCIPsepaInitsol ( SCIP_SEPA * sepa,
SCIP_SET * set )

informs separator that the branch and bound process is being started

Parameters
sepaseparator
setglobal SCIP settings

Definition at line 352 of file sepa.c.

References assert(), FALSE, SCIP_Sepa::lpwasdelayed, NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), SCIP_Sepa::setuptime, and SCIP_Sepa::solwasdelayed.

◆ SCIPsepaExitsol()

SCIP_RETCODE SCIPsepaExitsol ( SCIP_SEPA * sepa,
SCIP_SET * set )

informs separator that the branch and bound process data is being freed

Parameters
sepaseparator
setglobal SCIP settings

Definition at line 379 of file sepa.c.

References assert(), NULL, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), SCIPclockStop(), and SCIP_Sepa::setuptime.

◆ 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
sepaseparator
setglobal SCIP settings
statdynamic problem statistics
sepastoreseparation storage
depthdepth of current node
bounddistcurrent relative distance of local dual bound to global dual bound
allowlocalshould the separator be asked to separate local cuts
execdelayedexecute separator even if it is marked to be delayed
resultpointer to store the result of the callback method

Definition at line 403 of file sepa.c.

References assert(), SCIP_Sepa::delay, depth, SCIP_Sepa::expbackoff, SCIP_Sepa::freq, SCIP_Sepa::lastsepanode, LOG2, 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, result, SCIP_Bool, 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
sepaseparator
setglobal SCIP settings
statdynamic problem statistics
sepastoreseparation storage
solprimal solution that should be separated
depthdepth of current node
allowlocalshould the separator allow local cuts
execdelayedexecute separator even if it is marked to be delayed
resultpointer to store the result of the callback method

Definition at line 521 of file sepa.c.

References assert(), SCIP_Sepa::delay, depth, SCIP_Sepa::expbackoff, SCIP_Sepa::freq, SCIP_Sepa::lastsepanode, LOG2, 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, result, SCIP_Bool, 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, sol, and SCIP_Sepa::solwasdelayed.

Referenced by separationRoundSol().

◆ SCIPsepaSetPriority()

void SCIPsepaSetPriority ( SCIP_SEPA * sepa,
SCIP_SET * set,
int priority )

sets priority of separator

Parameters
sepaseparator
setglobal SCIP settings
prioritynew priority of the separator

Definition at line 773 of file sepa.c.

References assert(), FALSE, NULL, and SCIP_Sepa::priority.

Referenced by SCIPsetSepaPriority().

◆ SCIPsepaSetCopy()

void SCIPsepaSetCopy ( SCIP_SEPA * sepa)

sets copy method of separator

Parameters
sepaseparator copy method of separator or NULL if you don't want to copy your plugin into sub-SCIPs

Definition at line 656 of file sepa.c.

References assert(), NULL, and SCIP_DECL_SEPACOPY.

Referenced by SCIPsetSepaCopy().

◆ SCIPsepaSetFree()

void SCIPsepaSetFree ( SCIP_SEPA * sepa)

sets destructor method of separator

Parameters
sepaseparator destructor of separator

Definition at line 667 of file sepa.c.

References assert(), NULL, and SCIP_DECL_SEPAFREE.

Referenced by SCIPsetSepaFree().

◆ SCIPsepaSetInit()

void SCIPsepaSetInit ( SCIP_SEPA * sepa)

sets initialization method of separator

Parameters
sepaseparator initialize separator

Definition at line 678 of file sepa.c.

References assert(), NULL, and SCIP_DECL_SEPAINIT.

Referenced by SCIPsetSepaInit().

◆ SCIPsepaSetExit()

void SCIPsepaSetExit ( SCIP_SEPA * sepa)

sets deinitialization method of separator

Parameters
sepaseparator deinitialize separator

Definition at line 689 of file sepa.c.

References assert(), NULL, and SCIP_DECL_SEPAEXIT.

Referenced by SCIPsetSepaExit().

◆ SCIPsepaSetInitsol()

void SCIPsepaSetInitsol ( SCIP_SEPA * sepa)

sets solving process initialization method of separator

Parameters
sepaseparator solving process initialization method of separator

Definition at line 700 of file sepa.c.

References assert(), NULL, and SCIP_DECL_SEPAINITSOL.

Referenced by SCIPsetSepaInitsol().

◆ SCIPsepaSetExitsol()

void SCIPsepaSetExitsol ( SCIP_SEPA * sepa)

sets solving process deinitialization method of separator

Parameters
sepaseparator solving process deinitialization method of separator

Definition at line 711 of file sepa.c.

References assert(), NULL, and SCIP_DECL_SEPAEXITSOL.

Referenced by SCIPsetSepaExitsol().

◆ SCIPsepaSetIsParentsepa()

void SCIPsepaSetIsParentsepa ( SCIP_SEPA * sepa)

declares separator to be a parent separator

Parameters
sepaseparator

Definition at line 722 of file sepa.c.

References assert(), SCIP_Sepa::isparentsepa, NULL, and TRUE.

Referenced by SCIPsetSepaIsParentsepa().

◆ SCIPsepaSetParentsepa()

void SCIPsepaSetParentsepa ( SCIP_SEPA * sepa,
SCIP_SEPA * parentsepa )

sets the parent separator

Parameters
sepaseparator
parentsepaparent separator

Definition at line 732 of file sepa.c.

References assert(), NULL, and SCIP_Sepa::parentsepa.

Referenced by SCIPsetSepaParentsepa().

◆ SCIPsepaEnableOrDisableClocks()

void SCIPsepaEnableOrDisableClocks ( SCIP_SEPA * sepa,
SCIP_Bool enable )

enables or disables all clocks of sepa, depending on the value of the flag

Parameters
sepathe separator for which all clocks should be enabled or disabled
enableshould the clocks of the separator be enabled?

Definition at line 828 of file sepa.c.

References assert(), NULL, SCIP_Bool, SCIPclockEnableOrDisable(), SCIP_Sepa::sepaclock, and SCIP_Sepa::setuptime.

◆ SCIPsepaIncNCutsApplied()

void SCIPsepaIncNCutsApplied ( SCIP_SEPA * sepa,
SCIP_Bool fromcutpool )

increase count of applied cuts by one

Parameters
sepaseparator
fromcutpoolwhether the cuts were added from the cutpool to sepastore

Definition at line 971 of file sepa.c.

References assert(), SCIP_Sepa::ncutsapplieddirect, SCIP_Sepa::ncutsappliedviapool, NULL, SCIP_Bool, SCIPsepaGetParentsepa(), and SCIPsepaIncNCutsApplied().

Referenced by SCIPsepaIncNCutsApplied(), and sepastoreApplyCut().

◆ SCIPsepaIncNCutsAdded()

void SCIPsepaIncNCutsAdded ( SCIP_SEPA * sepa,
SCIP_Bool fromcutpool )

increase count of found cuts by one

increase count of added cuts by one

Parameters
sepaseparator
fromcutpoolwhether the cuts were added from the cutpool to sepastore

Definition at line 993 of file sepa.c.

References assert(), SCIP_Sepa::ncutsadded, SCIP_Sepa::ncutsaddeddirect, SCIP_Sepa::ncutsaddedviapool, NULL, SCIP_Bool, SCIPsepaGetParentsepa(), and SCIPsepaIncNCutsAdded().

Referenced by SCIPcutpoolSeparate(), SCIPsepaIncNCutsAdded(), and SCIPsepastoreAddCut().

◆ SCIPsepaDecNCutsAdded()

void SCIPsepaDecNCutsAdded ( SCIP_SEPA * sepa,
SCIP_Bool fromcutpool )

decrease the count of added cuts by one

Parameters
sepaseparator
fromcutpoolwhether the cuts were added from the cutpool to sepastore

Definition at line 1016 of file sepa.c.

References assert(), SCIP_Sepa::ncutsadded, SCIP_Sepa::ncutsaddeddirect, SCIP_Sepa::ncutsaddedviapool, NULL, SCIP_Bool, SCIPsepaDecNCutsAdded(), and SCIPsepaGetParentsepa().

Referenced by SCIPsepaDecNCutsAdded(), SCIPsepastoreAddCut(), and sepastoreDelCut().

◆ SCIPsepaIncNCutsFound()

void SCIPsepaIncNCutsFound ( SCIP_SEPA * sepa)

increase count of found cuts by one

Parameters
sepaseparator

Definition at line 1039 of file sepa.c.

References assert(), SCIP_Sepa::ncutsfound, and NULL.

◆ SCIPsepaIncNCutsFoundAtNode()

void SCIPsepaIncNCutsFoundAtNode ( SCIP_SEPA * sepa)

increase count of found cuts at current node by one

Parameters
sepaseparator

Definition at line 1049 of file sepa.c.

References assert(), SCIP_Sepa::ncutsfoundatnode, and NULL.

Referenced by SCIPcutpoolSeparate().