Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

methods and files provided by the default separators of SCIP

A detailed description what a separator does and how to add a separator to SCIP can be found here.

Modules

 Inclusion methods
 methods to include specific separators into SCIP
 

Functions

SCIP_RETCODE SCIPsetBasePointClosecuts (SCIP *scip, SCIP_SOL *sol)
 
SCIP_RETCODE SCIPcutGenerationHeuristicCmir (SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_Real *varsolvals, int maxtestdelta, SCIP_Real *rowweights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Bool trynegscaling, SCIP_Bool cutremovable, const char *cutclassname, SCIP_Bool *cutoff, int *ncuts, SCIP_Real *delta, SCIP_Bool *deltavalid)
 

Files

file  sepa_cgmip.h
 Chvatal-Gomory cuts computed via a sub-MIP.
 
file  sepa_clique.h
 clique separator
 
file  sepa_closecuts.h
 closecuts meta separator
 
file  sepa_cmir.h
 complemented mixed integer rounding cuts separator (Marchand's version)
 
file  sepa_convexproj.h
 convexproj separator
 
file  sepa_disjunctive.h
 disjunctive cut separator
 
file  sepa_eccuts.h
 edge concave cut separator
 
file  sepa_flowcover.h
 flowcover separator
 
file  sepa_gauge.h
 gauge separator
 
file  sepa_gomory.h
 Gomory MIR Cuts.
 
file  sepa_impliedbounds.h
 implied bounds separator
 
file  sepa_intobj.h
 integer objective value separator
 
file  sepa_mcf.h
 multi-commodity-flow network cut separator
 
file  sepa_oddcycle.h
 oddcycle separator
 
file  sepa_rapidlearning.h
 rapidlearning separator
 
file  sepa_strongcg.h
 Strong CG Cuts (Letchford & Lodi)
 
file  sepa_zerohalf.h
 {0,1/2}-cuts separator
 
file  sepa_gmi.h
 Gomory Mixed-Integer Cuts.
 

Function Documentation

◆ SCIPsetBasePointClosecuts()

SCIP_RETCODE SCIPsetBasePointClosecuts ( SCIP scip,
SCIP_SOL sol 
)

sets point to be used as base point for computing the point to be separated

The point is only stored if separation of relative interior points is used. The solution is copied.

Parameters
scipSCIP data structure
solbase point solution

Definition at line 462 of file sepa_closecuts.c.

References NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateSolCopy(), SCIPerrorMessage, SCIPfindSepa(), SCIPfreeSol(), SCIPsepaGetData(), SCIPsepaGetName(), SEPA_NAME, and TRUE.

◆ SCIPcutGenerationHeuristicCmir()

SCIP_RETCODE SCIPcutGenerationHeuristicCmir ( SCIP scip,
SCIP_SEPA sepa,
SCIP_SOL sol,
SCIP_Real varsolvals,
int  maxtestdelta,
SCIP_Real rowweights,
SCIP_Real  maxweight,
int *  weightinds,
int  nweightinds,
int  rowlensum,
SCIP_Real  boundswitch,
SCIP_Bool  usevbds,
SCIP_Bool  allowlocal,
SCIP_Bool  fixintegralrhs,
int  maxmksetcoefs,
SCIP_Real  maxweightrange,
SCIP_Real  minfrac,
SCIP_Real  maxfrac,
SCIP_Bool  trynegscaling,
SCIP_Bool  cutremovable,
const char *  cutclassname,
SCIP_Bool cutoff,
int *  ncuts,
SCIP_Real delta,
SCIP_Bool deltavalid 
)

Performs the cut generation heuristic of the c-MIR separation algorithm, i.e., tries to generate a c-MIR cut which is valid for the mixed knapsack set corresponding to the current aggregated constraint. Cuts will only be added here if no pointer to store best scaling factor delta is given.

Parameters
scipSCIP data structure
sepaseparator
solthe solution that should be separated, or NULL for LP solution
varsolvalsLP solution value of all variables in LP
maxtestdeltamaximal number of different deltas to try (-1: unlimited)
rowweightsweight of rows in aggregated row
maxweightlargest magnitude of weights; set to -1.0 if sparsity information is unknown
weightindssparsity pattern of weights; size nrowinds; NULL if sparsity info is unknown
nweightindsnumber of nonzeros in weights; -1 if rowinds is NULL
rowlensumtotal number of non-zeros in used rows (row associated with nonzero weight coefficient); -1 if unknown
boundswitchfraction of domain up to which lower bound is used in transformation
usevbdsshould variable bounds be used in bound transformation?
allowlocalshould local information allowed to be used, resulting in a local cut?
fixintegralrhsshould complementation tried to be adjusted such that rhs gets fractional?
maxmksetcoefsmaximal number of nonzeros allowed in aggregated base inequality
maxweightrangemaximal valid range max(|weights|)/min(|weights|) of row weights
minfracminimal fractionality of rhs to produce MIR cut for
maxfracmaximal fractionality of rhs to produce MIR cut for
trynegscalingshould negative values also be tested in scaling?
cutremovableshould the cut be removed from the LP due to aging or cleanup?
cutclassnamename of cut class to use for row names
cutoffwhether a cutoff has been detected
ncutspointer to count the number of generated cuts
deltapointer to store best delta found; NULL, if cut should be added here
deltavalidpointer to store whether best delta value is valid or NULL

Definition at line 428 of file sepa_cmir.c.

References addCut(), FALSE, MAX, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_CONTINUOUS, SCIPallocBufferArray, SCIPcalcMIR(), SCIPfreeBufferArray, SCIPgetNContVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasZero(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetType(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsIntegral(), TRUE, tryDelta(), and varIsContinuous().

Referenced by aggregation(), createZerohalfCutFromZerohalfWeightvector(), and tryDelta().