Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods for separator plugins

Functions

 SCIP_DECL_SORTPTRCOMP (SCIPsepaComp)
 
 SCIP_DECL_SORTPTRCOMP (SCIPsepaCompName)
 
SCIP_SEPADATASCIPsepaGetData (SCIP_SEPA *sepa)
 
void SCIPsepaSetData (SCIP_SEPA *sepa, SCIP_SEPADATA *sepadata)
 
const char * SCIPsepaGetName (SCIP_SEPA *sepa)
 
const char * SCIPsepaGetDesc (SCIP_SEPA *sepa)
 
int SCIPsepaGetPriority (SCIP_SEPA *sepa)
 
int SCIPsepaGetFreq (SCIP_SEPA *sepa)
 
void SCIPsepaSetFreq (SCIP_SEPA *sepa, int freq)
 
SCIP_Real SCIPsepaGetMaxbounddist (SCIP_SEPA *sepa)
 
SCIP_Bool SCIPsepaUsesSubscip (SCIP_SEPA *sepa)
 
SCIP_Real SCIPsepaGetSetupTime (SCIP_SEPA *sepa)
 
SCIP_Real SCIPsepaGetTime (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNCalls (SCIP_SEPA *sepa)
 
int SCIPsepaGetNCallsAtNode (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNCutoffs (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNCutsFound (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNCutsApplied (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNCutsFoundAtNode (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNConssFound (SCIP_SEPA *sepa)
 
SCIP_Longint SCIPsepaGetNDomredsFound (SCIP_SEPA *sepa)
 
SCIP_Bool SCIPsepaIsDelayed (SCIP_SEPA *sepa)
 
SCIP_Bool SCIPsepaWasLPDelayed (SCIP_SEPA *sepa)
 
SCIP_Bool SCIPsepaWasSolDelayed (SCIP_SEPA *sepa)
 
SCIP_Bool SCIPsepaIsInitialized (SCIP_SEPA *sepa)
 
SCIP_RETCODE SCIPincludeSepa (SCIP *scip, 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 SCIPincludeSepaBasic (SCIP *scip, SCIP_SEPA **sepa, const char *name, const char *desc, int priority, int freq, SCIP_Real maxbounddist, SCIP_Bool usessubscip, SCIP_Bool delay, SCIP_DECL_SEPAEXECLP((*sepaexeclp)), SCIP_DECL_SEPAEXECSOL((*sepaexecsol)), SCIP_SEPADATA *sepadata)
 
SCIP_RETCODE SCIPsetSepaCopy (SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPACOPY((*sepacopy)))
 
SCIP_RETCODE SCIPsetSepaFree (SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAFREE((*sepafree)))
 
SCIP_RETCODE SCIPsetSepaInit (SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAINIT((*sepainit)))
 
SCIP_RETCODE SCIPsetSepaExit (SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXIT((*sepaexit)))
 
SCIP_RETCODE SCIPsetSepaInitsol (SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAINITSOL((*sepainitsol)))
 
SCIP_RETCODE SCIPsetSepaExitsol (SCIP *scip, SCIP_SEPA *sepa, SCIP_DECL_SEPAEXITSOL((*sepaexitsol)))
 
SCIP_SEPASCIPfindSepa (SCIP *scip, const char *name)
 
SCIP_SEPA ** SCIPgetSepas (SCIP *scip)
 
int SCIPgetNSepas (SCIP *scip)
 
SCIP_RETCODE SCIPsetSepaPriority (SCIP *scip, SCIP_SEPA *sepa, int priority)
 
SCIP_Real SCIPgetSepaMinEfficacy (SCIP *scip)
 

Function Documentation

◆ SCIP_DECL_SORTPTRCOMP() [1/2]

SCIP_DECL_SORTPTRCOMP ( SCIPsepaComp  )

compares two separators w. r. to their priority

Definition at line 42 of file sepa.c.

◆ SCIP_DECL_SORTPTRCOMP() [2/2]

SCIP_DECL_SORTPTRCOMP ( SCIPsepaCompName  )

comparison method for sorting separators w.r.t. to their name

Definition at line 48 of file sepa.c.

References SCIPsepaGetName().

◆ SCIPsepaGetData()

◆ SCIPsepaSetData()

void SCIPsepaSetData ( SCIP_SEPA sepa,
SCIP_SEPADATA sepadata 
)

sets user data of separator; user has to free old data in advance!

Parameters
sepaseparator
sepadatanew separator user data

Definition at line 610 of file sepa.c.

References NULL, and SCIP_Sepa::sepadata.

Referenced by SCIP_DECL_SEPAFREE().

◆ SCIPsepaGetName()

◆ SCIPsepaGetDesc()

const char* SCIPsepaGetDesc ( SCIP_SEPA sepa)

gets description of separator

Parameters
sepaseparator

Definition at line 699 of file sepa.c.

References SCIP_Sepa::desc, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPsepaGetPriority()

int SCIPsepaGetPriority ( SCIP_SEPA sepa)

gets priority of separator

Parameters
sepaseparator

Definition at line 709 of file sepa.c.

References NULL, and SCIP_Sepa::priority.

Referenced by SCIP_DECL_DIALOGEXEC(), separationRoundLP(), and separationRoundSol().

◆ SCIPsepaGetFreq()

int SCIPsepaGetFreq ( SCIP_SEPA sepa)

gets frequency of separator

Parameters
sepaseparator

Definition at line 733 of file sepa.c.

References SCIP_Sepa::freq, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC(), and separateCuts().

◆ SCIPsepaSetFreq()

void SCIPsepaSetFreq ( SCIP_SEPA sepa,
int  freq 
)

sets frequency of separator

Parameters
sepaseparator
freqnew frequency of separator

Definition at line 743 of file sepa.c.

References SCIP_Sepa::freq, and NULL.

◆ SCIPsepaGetMaxbounddist()

SCIP_Real SCIPsepaGetMaxbounddist ( SCIP_SEPA sepa)

get maximal bound distance at which the separator is called

Parameters
sepaseparator

Definition at line 754 of file sepa.c.

References SCIP_Sepa::maxbounddist, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPsepaUsesSubscip()

SCIP_Bool SCIPsepaUsesSubscip ( SCIP_SEPA sepa)

does the separator use a secondary SCIP instance?

Parameters
sepaseparator

Definition at line 764 of file sepa.c.

References NULL, and SCIP_Sepa::usessubscip.

Referenced by SCIPparamsetSetToSubscipsOff().

◆ SCIPsepaGetSetupTime()

SCIP_Real SCIPsepaGetSetupTime ( SCIP_SEPA sepa)

gets time in seconds used in this separator for setting up for next stages

Parameters
sepaseparator

Definition at line 786 of file sepa.c.

References NULL, SCIPclockGetTime(), and SCIP_Sepa::setuptime.

Referenced by SCIPprintSeparatorStatistics().

◆ SCIPsepaGetTime()

SCIP_Real SCIPsepaGetTime ( SCIP_SEPA sepa)

gets time in seconds used in this separator

Parameters
sepaseparator

Definition at line 796 of file sepa.c.

References NULL, SCIPclockGetTime(), and SCIP_Sepa::sepaclock.

Referenced by SCIPprintSeparatorStatistics(), and separateOddCycles().

◆ SCIPsepaGetNCalls()

SCIP_Longint SCIPsepaGetNCalls ( SCIP_SEPA sepa)

gets the total number of times, the separator was called

Parameters
sepaseparator

Definition at line 806 of file sepa.c.

References SCIP_Sepa::ncalls, and NULL.

Referenced by SCIPprintSeparatorStatistics(), and separateCuts().

◆ SCIPsepaGetNCallsAtNode()

int SCIPsepaGetNCallsAtNode ( SCIP_SEPA sepa)

gets the number of times, the separator was called at the current node

Parameters
sepaseparator

Definition at line 816 of file sepa.c.

References SCIP_Sepa::ncallsatnode, and NULL.

Referenced by doSeparation(), SCIP_DECL_SEPAEXECLP(), separateCuts(), and separateOddCycles().

◆ SCIPsepaGetNCutoffs()

SCIP_Longint SCIPsepaGetNCutoffs ( SCIP_SEPA sepa)

gets total number of times, the separator detected a cutoff

Parameters
sepaseparator

Definition at line 826 of file sepa.c.

References SCIP_Sepa::ncutoffs, and NULL.

Referenced by SCIPprintSeparatorStatistics().

◆ SCIPsepaGetNCutsFound()

SCIP_Longint SCIPsepaGetNCutsFound ( SCIP_SEPA sepa)

gets the total number of cutting planes found by this separator

Parameters
sepaseparator

Definition at line 836 of file sepa.c.

References SCIP_Sepa::ncutsfound, and NULL.

Referenced by SCIPprintSeparatorStatistics(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), and separateSupLiftedMinimalCoverInequality().

◆ SCIPsepaGetNCutsApplied()

SCIP_Longint SCIPsepaGetNCutsApplied ( SCIP_SEPA sepa)

gets the total number of cutting planes applied to lp

Parameters
sepaseparator

Definition at line 846 of file sepa.c.

References SCIP_Sepa::ncutsapplied, and NULL.

Referenced by SCIPprintSeparatorStatistics().

◆ SCIPsepaGetNCutsFoundAtNode()

SCIP_Longint SCIPsepaGetNCutsFoundAtNode ( SCIP_SEPA sepa)

gets the number of cutting planes found by this separator at the current node

Parameters
sepaseparator

Definition at line 886 of file sepa.c.

References SCIP_Sepa::ncutsfoundatnode, and NULL.

◆ SCIPsepaGetNConssFound()

SCIP_Longint SCIPsepaGetNConssFound ( SCIP_SEPA sepa)

gets total number of additional constraints added by this separator

Parameters
sepaseparator

Definition at line 896 of file sepa.c.

References SCIP_Sepa::nconssfound, and NULL.

Referenced by SCIPprintSeparatorStatistics().

◆ SCIPsepaGetNDomredsFound()

SCIP_Longint SCIPsepaGetNDomredsFound ( SCIP_SEPA sepa)

gets total number of domain reductions found by this separator

Parameters
sepaseparator

Definition at line 906 of file sepa.c.

References SCIP_Sepa::ndomredsfound, and NULL.

Referenced by SCIPprintSeparatorStatistics().

◆ SCIPsepaIsDelayed()

SCIP_Bool SCIPsepaIsDelayed ( SCIP_SEPA sepa)

should separator be delayed, if other separators found cuts?

Parameters
sepaseparator

Definition at line 916 of file sepa.c.

References SCIP_Sepa::delay, and NULL.

Referenced by SCIP_DECL_DIALOGEXEC().

◆ SCIPsepaWasLPDelayed()

SCIP_Bool SCIPsepaWasLPDelayed ( SCIP_SEPA sepa)

was separation of the LP solution delayed at the last call?

Parameters
sepaseparator

Definition at line 926 of file sepa.c.

References SCIP_Sepa::lpwasdelayed, and NULL.

Referenced by SCIP_DECL_SEPAEXECLP(), separateCuts(), and separationRoundLP().

◆ SCIPsepaWasSolDelayed()

SCIP_Bool SCIPsepaWasSolDelayed ( SCIP_SEPA sepa)

was separation of the primal solution delayed at the last call?

Parameters
sepaseparator

Definition at line 936 of file sepa.c.

References NULL, and SCIP_Sepa::solwasdelayed.

Referenced by separationRoundSol().

◆ SCIPsepaIsInitialized()

SCIP_Bool SCIPsepaIsInitialized ( SCIP_SEPA sepa)

is separator initialized?

Parameters
sepaseparator

Definition at line 946 of file sepa.c.

References SCIP_Sepa::initialized, and NULL.

Referenced by SCIPsetIncludeRelax().

◆ SCIPincludeSepa()

SCIP_RETCODE SCIPincludeSepa ( SCIP scip,
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 and includes it in SCIP.

Note
method has all separator callbacks as arguments and is thus changed every time a new callback is added in future releases; consider using SCIPincludeSepaBasic() and setter functions if you seek for a method which is less likely to change in future releases
Parameters
scipSCIP data structure
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 131 of file scip_sepa.c.

References FALSE, Scip::mem, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcheckStage(), SCIPerrorMessage, SCIPfindSepa(), SCIPsepaCreate(), SCIPsetIncludeSepa(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludeObjSepa().

◆ SCIPincludeSepaBasic()

SCIP_RETCODE SCIPincludeSepaBasic ( SCIP scip,
SCIP_SEPA **  sepa,
const char *  name,
const char *  desc,
int  priority,
int  freq,
SCIP_Real  maxbounddist,
SCIP_Bool  usessubscip,
SCIP_Bool  delay,
SCIP_DECL_SEPAEXECLP((*sepaexeclp))  ,
SCIP_DECL_SEPAEXECSOL((*sepaexecsol))  ,
SCIP_SEPADATA sepadata 
)

creates a separator and includes it in SCIP with its most fundamental callbacks. All non-fundamental (or optional) callbacks as, e.g., init and exit callbacks, will be set to NULL. Optional callbacks can be set via specific setter functions, see SCIPsetSepaInit(), SCIPsetSepaFree(), SCIPsetSepaInitsol(), SCIPsetSepaExitsol(), SCIPsetSepaCopy(), SCIPsetExit().

Note
if you want to set all callbacks with a single method call, consider using SCIPincludeSepa() instead
Parameters
scipSCIP data structure
separeference to a separator, or NULL
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 178 of file scip_sepa.c.

References FALSE, Scip::mem, Scip::messagehdlr, NULL, SCIP_CALL, SCIP_INVALIDDATA, SCIP_OKAY, SCIPcheckStage(), SCIPerrorMessage, SCIPfindSepa(), SCIPsepaCreate(), SCIPsetIncludeSepa(), Scip::set, SCIP_Mem::setmem, and TRUE.

Referenced by SCIPincludeSepaCGMIP(), SCIPincludeSepaClique(), SCIPincludeSepaClosecuts(), SCIPincludeSepaConvexproj(), SCIPincludeSepaDisjunctive(), SCIPincludeSepaEccuts(), SCIPincludeSepaEdge(), SCIPincludeSepaGauge(), SCIPincludeSepaGMI(), SCIPincludeSepaGomory(), SCIPincludeSepaImpliedbounds(), SCIPincludeSepaIntobj(), SCIPincludeSepaMcf(), SCIPincludeSepaOddcycle(), SCIPincludeSepaPartition(), SCIPincludeSepaStrongcg(), SCIPincludeSepaSubtour(), and SCIPincludeSepaZerohalf().

◆ SCIPsetSepaCopy()

◆ SCIPsetSepaFree()

◆ SCIPsetSepaInit()

SCIP_RETCODE SCIPsetSepaInit ( SCIP scip,
SCIP_SEPA sepa,
SCIP_DECL_SEPAINIT((*sepainit))   
)

sets initialization method of separator

Parameters
scipSCIP data structure
sepaseparator

Definition at line 252 of file scip_sepa.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPsepaSetInit(), and TRUE.

Referenced by SCIPincludeSepaCGMIP(), SCIPincludeSepaGomory(), SCIPincludeSepaOddcycle(), and SCIPincludeSepaStrongcg().

◆ SCIPsetSepaExit()

SCIP_RETCODE SCIPsetSepaExit ( SCIP scip,
SCIP_SEPA sepa,
SCIP_DECL_SEPAEXIT((*sepaexit))   
)

sets deinitialization method of separator

Parameters
scipSCIP data structure
sepaseparator

Definition at line 268 of file scip_sepa.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPsepaSetExit(), and TRUE.

Referenced by SCIPincludeSepaCGMIP(), SCIPincludeSepaGomory(), SCIPincludeSepaIntobj(), and SCIPincludeSepaStrongcg().

◆ SCIPsetSepaInitsol()

SCIP_RETCODE SCIPsetSepaInitsol ( SCIP scip,
SCIP_SEPA sepa,
SCIP_DECL_SEPAINITSOL((*sepainitsol))   
)

sets solving process initialization method of separator

Parameters
scipSCIP data structure
sepaseparator

Definition at line 284 of file scip_sepa.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPsepaSetInitsol(), and TRUE.

Referenced by SCIPincludeSepaDisjunctive(), SCIPincludeSepaMcf(), SCIPincludeSepaOddcycle(), and SCIPincludeSepaZerohalf().

◆ SCIPsetSepaExitsol()

SCIP_RETCODE SCIPsetSepaExitsol ( SCIP scip,
SCIP_SEPA sepa,
SCIP_DECL_SEPAEXITSOL((*sepaexitsol))   
)

sets solving process deinitialization method of separator

Parameters
scipSCIP data structure
sepaseparator

Definition at line 300 of file scip_sepa.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPsepaSetExitsol(), and TRUE.

Referenced by SCIPincludeSepaClique(), SCIPincludeSepaClosecuts(), SCIPincludeSepaConvexproj(), SCIPincludeSepaEccuts(), SCIPincludeSepaGauge(), SCIPincludeSepaIntobj(), SCIPincludeSepaMcf(), and SCIPincludeSepaZerohalf().

◆ SCIPfindSepa()

SCIP_SEPA* SCIPfindSepa ( SCIP scip,
const char *  name 
)

returns the separator of the given name, or NULL if not existing

Parameters
scipSCIP data structure
namename of separator

Definition at line 316 of file scip_sepa.c.

References NULL, SCIPsetFindSepa(), and Scip::set.

Referenced by SCIPcopyConcurrentSolvingStats(), SCIPfindObjSepa(), SCIPincludeSepa(), SCIPincludeSepaBasic(), and SCIPsetBasePointClosecuts().

◆ SCIPgetSepas()

SCIP_SEPA** SCIPgetSepas ( SCIP scip)

returns the array of currently available separators

Parameters
scipSCIP data structure

Definition at line 329 of file scip_sepa.c.

References NULL, SCIPsetSortSepas(), SCIP_Set::sepas, and Scip::set.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPgetNSepas()

int SCIPgetNSepas ( SCIP scip)

returns the number of currently available separators

Parameters
scipSCIP data structure

Definition at line 342 of file scip_sepa.c.

References SCIP_Set::nsepas, NULL, and Scip::set.

Referenced by SCIP_DECL_DIALOGEXEC(), SCIPcopyConcurrentSolvingStats(), SCIPincludeDialogDefaultFix(), and SCIPincludeDialogDefaultSet().

◆ SCIPsetSepaPriority()

SCIP_RETCODE SCIPsetSepaPriority ( SCIP scip,
SCIP_SEPA sepa,
int  priority 
)

sets the priority of a separator

Parameters
scipSCIP data structure
sepaseparator
prioritynew priority of the separator

Definition at line 353 of file scip_sepa.c.

References NULL, SCIP_OKAY, SCIPsepaSetPriority(), and Scip::set.

Referenced by SCIP_DECL_PARAMCHGD().

◆ SCIPgetSepaMinEfficacy()

SCIP_Real SCIPgetSepaMinEfficacy ( SCIP scip)

gets value of minimal efficacy for a cut to enter the LP

Precondition
This method can be called if scip is in one of the following stages:
Returns
value of "separating/minefficacyroot" if at root node, otherwise value of "separating/minefficacy"
Parameters
scipSCIP data structure

Definition at line 376 of file scip_sepa.c.

References FALSE, NULL, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPtreeGetCurrentDepth(), SCIP_Set::sepa_minefficacy, SCIP_Set::sepa_minefficacyroot, Scip::set, Scip::tree, and TRUE.

Referenced by SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIPcleanupRowprep(), and separatePoint().