Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

common methods used to manipulate, generate, and strengthen cuts and to organize the cutpool

Functions

SCIP_RETCODE SCIPcutsCalcStrongCG (SCIP *scip, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, int *inds, int ninds, SCIP_Real scale, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
 
SCIP_RETCODE SCIPcutsCalcLpMIR (SCIP *scip, SCIP_SOL *sol, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, int *sidetypes, SCIP_Real scale, SCIP_Real *mksetcoefs, SCIP_Bool *mksetcoefsvalid, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
 
SCIP_RETCODE SCIPcutsApplyMIR (SCIP *scip, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real scale, SCIP_Real *mksetcoefs, SCIP_Bool *mksetcoefsvalid, SCIP_Real *mircoef, SCIP_Real *mirrhs, int *varinds, int *nvarinds, SCIP_Real *minact, SCIP_Bool *varused, SCIP_Bool *success, SCIP_Bool *islocal)
 
void SCIPcutsCleanupRow (SCIP *scip, SCIP_Real *coefs, SCIP_Real *rhs, SCIP_Bool *varused, int *varinds, int *nvarinds, SCIP_Bool islocal)
 
SCIP_ROWSCIPcutGetRow (SCIP_CUT *cut)
 
int SCIPcutGetAge (SCIP_CUT *cut)
 
SCIP_Real SCIPcutGetLPActivityQuot (SCIP_CUT *cut)
 
SCIP_CUT ** SCIPcutpoolGetCuts (SCIP_CUTPOOL *cutpool)
 
int SCIPcutpoolGetNCuts (SCIP_CUTPOOL *cutpool)
 
int SCIPcutpoolGetMaxNCuts (SCIP_CUTPOOL *cutpool)
 
SCIP_Real SCIPcutpoolGetTime (SCIP_CUTPOOL *cutpool)
 
SCIP_Longint SCIPcutpoolGetNCalls (SCIP_CUTPOOL *cutpool)
 
SCIP_Longint SCIPcutpoolGetNCutsFound (SCIP_CUTPOOL *cutpool)
 
SCIP_Real SCIPgetCutEfficacy (SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
 
SCIP_Bool SCIPisCutEfficacious (SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
 
SCIP_Bool SCIPisEfficacious (SCIP *scip, SCIP_Real efficacy)
 
SCIP_Real SCIPgetVectorEfficacyNorm (SCIP *scip, SCIP_Real *vals, int nvals)
 
SCIP_Bool SCIPisCutApplicable (SCIP *scip, SCIP_ROW *cut)
 
SCIP_RETCODE SCIPaddCut (SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut, SCIP_Bool forcecut, SCIP_Bool *infeasible)
 
SCIP_RETCODE SCIPaddPoolCut (SCIP *scip, SCIP_ROW *row)
 
SCIP_RETCODE SCIPdelPoolCut (SCIP *scip, SCIP_ROW *row)
 
SCIP_CUT ** SCIPgetPoolCuts (SCIP *scip)
 
int SCIPgetNPoolCuts (SCIP *scip)
 
SCIP_CUTPOOLSCIPgetGlobalCutpool (SCIP *scip)
 
SCIP_RETCODE SCIPcreateCutpool (SCIP *scip, SCIP_CUTPOOL **cutpool, int agelimit)
 
SCIP_RETCODE SCIPfreeCutpool (SCIP *scip, SCIP_CUTPOOL **cutpool)
 
SCIP_RETCODE SCIPaddRowCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
 
SCIP_RETCODE SCIPaddNewRowCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
 
SCIP_RETCODE SCIPdelRowCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
 
SCIP_RETCODE SCIPseparateCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPseparateSolCutpool (SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_SOL *sol, SCIP_RESULT *result)
 
SCIP_RETCODE SCIPaddDelayedPoolCut (SCIP *scip, SCIP_ROW *row)
 
SCIP_RETCODE SCIPdelDelayedPoolCut (SCIP *scip, SCIP_ROW *row)
 
SCIP_CUT ** SCIPgetDelayedPoolCuts (SCIP *scip)
 
int SCIPgetNDelayedPoolCuts (SCIP *scip)
 
SCIP_CUTPOOLSCIPgetDelayedGlobalCutpool (SCIP *scip)
 
SCIP_RETCODE SCIPseparateSol (SCIP *scip, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff)
 
SCIP_ROW ** SCIPgetCuts (SCIP *scip)
 
int SCIPgetNCuts (SCIP *scip)
 
SCIP_RETCODE SCIPclearCuts (SCIP *scip)
 
SCIP_RETCODE SCIPremoveInefficaciousCuts (SCIP *scip)
 
SCIP_Real SCIPgetRelaxFeastolFactor (SCIP *scip)
 

Function Documentation

◆ SCIPcutsCalcStrongCG()

SCIP_RETCODE SCIPcutsCalcStrongCG ( SCIP scip,
SCIP_Real  boundswitch,
SCIP_Bool  usevbds,
SCIP_Bool  allowlocal,
int  maxmksetcoefs,
SCIP_Real  maxweightrange,
SCIP_Real  minfrac,
SCIP_Real  maxfrac,
SCIP_Real weights,
int *  inds,
int  ninds,
SCIP_Real  scale,
SCIP_Real mircoef,
SCIP_Real mirrhs,
SCIP_Real cutactivity,
SCIP_Bool success,
SCIP_Bool cutislocal,
int *  cutrank 
)

calculates a strong CG cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0 because these rows cannot participate in an MIR cut.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
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?
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 strong CG cut for
maxfracmaximal fractionality of rhs to produce strong CG cut for
weightsrow weights in row summation; some weights might be set to zero
indsindices of non-zero entries in weights array, or NULL
nindsnumber of indices of non-zero entries in weights array, -1 if inds is NULL
scaleadditional scaling factor multiplied to all rows
mircoefarray to store strong CG coefficients: must be of size SCIPgetNVars()
mirrhspointer to store the right hand side of the strong CG row
cutactivitypointer to store the activity of the resulting cut
successpointer to store whether the returned coefficients are a valid strong CG cut
cutislocalpointer to store whether the returned cut is only valid locally
cutrankpointer to store the rank of the returned cut; or NULL

Definition at line 3176 of file cuts.c.

References cutsLpCalcStrongCG(), Scip::lp, SCIP_CALL, SCIP_OKAY, Scip::set, Scip::stat, and Scip::transprob.

Referenced by SCIPcalcStrongCG().

◆ SCIPcutsCalcLpMIR()

SCIP_RETCODE SCIPcutsCalcLpMIR ( SCIP scip,
SCIP_SOL sol,
SCIP_Real  boundswitch,
SCIP_Bool  usevbds,
SCIP_Bool  allowlocal,
SCIP_Bool  fixintegralrhs,
int *  boundsfortrans,
SCIP_BOUNDTYPE boundtypesfortrans,
int  maxmksetcoefs,
SCIP_Real  maxweightrange,
SCIP_Real  minfrac,
SCIP_Real  maxfrac,
SCIP_Real weights,
SCIP_Real  maxweight,
int *  weightinds,
int  nweightinds,
int  rowlensum,
int *  sidetypes,
SCIP_Real  scale,
SCIP_Real mksetcoefs,
SCIP_Bool mksetcoefsvalid,
SCIP_Real mircoef,
SCIP_Real mirrhs,
SCIP_Real cutactivity,
SCIP_Bool success,
SCIP_Bool cutislocal,
int *  cutrank 
)

calculates an MIR cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these rows cannot participate in an MIR cut.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

calculates an MIR cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0 because these rows cannot participate in an MIR cut.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
solthe solution that should be separated, or NULL for LP solution
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?
boundsfortransbounds that should be used for transformed variables: vlb_idx/vub_idx, -1 for global lb/ub, -2 for local lb/ub, or -3 for using closest bound; NULL for using closest bound for all variables
boundtypesfortranstype of bounds that should be used for transformed variables; NULL for using closest bound for all variables
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
weightsrow weights in row summation; some weights might be set to zero
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 nonzeros in used rows (row associated with nonzero weight coefficient); -1 if unknown
sidetypesspecify row side type (-1 = lhs, 0 = unkown, 1 = rhs) or NULL for automatic choices
scaleadditional scaling factor multiplied to all rows
mksetcoefsarray to store mixed knapsack set coefficients: size nvars; or NULL
mksetcoefsvalidpointer to store whether mixed knapsack set coefficients are valid; or NULL
mircoefarray to store MIR coefficients: must be of size SCIPgetNVars()
mirrhspointer to store the right hand side of the MIR row
cutactivitypointer to store the activity of the resulting cut
successpointer to store whether the returned coefficients are a valid MIR cut
cutislocalpointer to store whether the returned cut is only valid locally
cutrankpointer to store the rank of the returned cut; or NULL

Definition at line 3216 of file cuts.c.

References cutsLpCalcMIR(), Scip::lp, SCIP_CALL, SCIP_OKAY, Scip::set, Scip::stat, and Scip::transprob.

Referenced by SCIPcalcMIR().

◆ SCIPcutsApplyMIR()

SCIP_RETCODE SCIPcutsApplyMIR ( SCIP scip,
SCIP_Real  boundswitch,
SCIP_Bool  usevbds,
SCIP_Bool  allowlocal,
SCIP_Bool  fixintegralrhs,
int *  boundsfortrans,
SCIP_BOUNDTYPE boundtypesfortrans,
SCIP_Real  minfrac,
SCIP_Real  maxfrac,
SCIP_Real  scale,
SCIP_Real mksetcoefs,
SCIP_Bool mksetcoefsvalid,
SCIP_Real mircoef,
SCIP_Real mirrhs,
int *  varinds,
int *  nvarinds,
SCIP_Real minact,
SCIP_Bool varused,
SCIP_Bool success,
SCIP_Bool islocal 
)

applies the MIR function on a constraint; the constraint is given by pairs of variables and coefficients and a rhs.

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:

See SCIP_STAGE for a complete list of all possible solving stages.

Parameters
scipSCIP data structure
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?
boundsfortransbounds that should be used for transformed variables: 0 vlb_idx/vub_idx, -1 for global lb/ub or -2 for local lb/ub
boundtypesfortranstype of bounds that should be used for transformed variables; NULL for using closest bound for all variables
minfracminimal fractionality of rhs to produce MIR cut for
maxfracmaximal fractionality of rhs to produce MIR cut for
scaleadditional scaling factor multiplied to all rows
mksetcoefsarray to store mixed knapsack set coefficients: size nvars; or NULL
mksetcoefsvalidpointer to store whether mixed knapsack set coefficients are valid; or NULL
mircoefarray to store MIR coefficients: must be of size SCIPgetNVars()
mirrhspointer to store the right hand side of the MIR row
varindsarray of variable indices with a mircoef != 0
nvarindsnumber of variables indices in varinds array
minactpointer to store the minimal activity
varusedarray to store whether a variable has a mircoef != 0
successpointer to store whether the returned coefficients are a valid MIR cut
islocalpointer to store whether the returned constraint is only valid locally

Definition at line 3269 of file cuts.c.

References cutsApplyMIR(), SCIP_CALL, SCIP_OKAY, Scip::set, Scip::stat, and Scip::transprob.

Referenced by applyMIR().

◆ SCIPcutsCleanupRow()

void SCIPcutsCleanupRow ( SCIP scip,
SCIP_Real coefs,
SCIP_Real rhs,
SCIP_Bool varused,
int *  varinds,
int *  nvarinds,
SCIP_Bool  islocal 
)

removes all nearly-zero coefficients from MIR row and relaxes the right hand side accordingly in order to prevent numerical rounding errors

Parameters
scipSCIP data structure
coefsarray to store MIR coefficients: must be of size nvars
rhspointer to store the right hand side of the MIR row
varusedarray to flag variables that appear in the MIR constraint
varindssparsity pattern of non-zero MIR coefficients
nvarindspointer to number of non-zero MIR coefficients
islocalis the row only valid locally?

Definition at line 3305 of file cuts.c.

References cutsCleanupMIRRow(), Scip::set, and Scip::transprob.

Referenced by performDualRayAnalysis().

◆ SCIPcutGetRow()

SCIP_ROW* SCIPcutGetRow ( SCIP_CUT cut)

gets the row of the cut

Parameters
cutcut

Definition at line 351 of file cutpool.c.

References NULL, and SCIP_Cut::row.

Referenced by copyCuts(), and takeCut().

◆ SCIPcutGetAge()

int SCIPcutGetAge ( SCIP_CUT cut)

gets the age of the cut: the number of consecutive cut pool separation rounds where the cut was neither in the LP nor violated

Parameters
cutcut

Definition at line 361 of file cutpool.c.

References SCIP_Cut::age, and NULL.

Referenced by takeCut().

◆ SCIPcutGetLPActivityQuot()

SCIP_Real SCIPcutGetLPActivityQuot ( SCIP_CUT cut)

returns the ratio of LPs where the row belonging to this cut was active in an LP solution, i.e. where the age of its row has not been increased

See also
SCIPcutGetAge() to get the age of a cut
Parameters
cutcut

Definition at line 375 of file cutpool.c.

References NULL, SCIP_Cut::row, SCIP_Longint, SCIP_Real, SCIProwGetActiveLPCount(), and SCIProwGetNLPsAfterCreation().

Referenced by takeCut().

◆ SCIPcutpoolGetCuts()

SCIP_CUT** SCIPcutpoolGetCuts ( SCIP_CUTPOOL cutpool)

gets array of cuts in the cut pool

Parameters
cutpoolcut pool

Definition at line 836 of file cutpool.c.

References SCIP_Cutpool::cuts, and NULL.

Referenced by SCIPgetDelayedPoolCuts(), and SCIPgetPoolCuts().

◆ SCIPcutpoolGetNCuts()

int SCIPcutpoolGetNCuts ( SCIP_CUTPOOL cutpool)

get number of cuts in the cut pool

gets number of cuts in the cut pool

Parameters
cutpoolcut pool

Definition at line 846 of file cutpool.c.

References SCIP_Cutpool::ncuts, and NULL.

Referenced by SCIPgetNDelayedPoolCuts(), and SCIPgetNPoolCuts().

◆ SCIPcutpoolGetMaxNCuts()

int SCIPcutpoolGetMaxNCuts ( SCIP_CUTPOOL cutpool)

get maximum number of cuts that were stored in the cut pool at the same time

gets maximum number of cuts that were stored in the cut pool at the same time

Parameters
cutpoolcut pool

Definition at line 856 of file cutpool.c.

References SCIP_Cutpool::maxncuts, and NULL.

Referenced by printSeparatorStatistics().

◆ SCIPcutpoolGetTime()

SCIP_Real SCIPcutpoolGetTime ( SCIP_CUTPOOL cutpool)

gets time in seconds used for separating cuts from the pool

Parameters
cutpoolcut pool

Definition at line 866 of file cutpool.c.

References NULL, SCIP_Cutpool::poolclock, and SCIPclockGetTime().

Referenced by printSeparatorStatistics().

◆ SCIPcutpoolGetNCalls()

SCIP_Longint SCIPcutpoolGetNCalls ( SCIP_CUTPOOL cutpool)

get number of times, the cut pool was separated

Parameters
cutpoolcut pool

Definition at line 876 of file cutpool.c.

References SCIP_Cutpool::ncalls, and NULL.

Referenced by printSeparatorStatistics().

◆ SCIPcutpoolGetNCutsFound()

SCIP_Longint SCIPcutpoolGetNCutsFound ( SCIP_CUTPOOL cutpool)

get total number of cuts that were separated from the cut pool

Parameters
cutpoolcut pool

Definition at line 886 of file cutpool.c.

References SCIP_Cutpool::ncutsfound, and NULL.

Referenced by printSeparatorStatistics().

◆ SCIPgetCutEfficacy()

SCIP_Real SCIPgetCutEfficacy ( SCIP scip,
SCIP_SOL sol,
SCIP_ROW cut 
)

returns efficacy of the cut with respect to the given primal solution or the current LP solution: e = -feasibility/norm

Returns
the efficacy of the cut with respect to the given primal solution or the current LP solution: e = -feasibility/norm
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
solprimal CIP solution, or NULL for current LP solution
cutseparated cut

Definition at line 33868 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL_ABORT, SCIProwGetLPEfficacy(), SCIProwGetSolEfficacy(), Scip::set, Scip::stat, and TRUE.

Referenced by addCut(), computeCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), SCIP_DECL_SEPAEXECLP(), separateCuts(), and separatePoint().

◆ SCIPisCutEfficacious()

SCIP_Bool SCIPisCutEfficacious ( SCIP scip,
SCIP_SOL sol,
SCIP_ROW cut 
)

returns whether the cut's efficacy with respect to the given primal solution or the current LP solution is greater than the minimal cut efficacy

Returns
TRUE if the cut's efficacy with respect to the given primal solution or the current LP solution is greater than the minimal cut efficacy, otherwise FALSE
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
solprimal CIP solution, or NULL for current LP solution
cutseparated cut

Definition at line 33891 of file scip.c.

References checkStage(), FALSE, Scip::lp, NULL, SCIP_CALL_ABORT, SCIProwIsLPEfficacious(), SCIProwIsSolEfficacious(), SCIPtreeGetCurrentDepth(), Scip::set, Scip::stat, Scip::tree, and TRUE.

Referenced by addBoundCutSepa(), addCut(), computeCut(), createCGCutCMIR(), createCGCutStrongCG(), generateOddCycleCut(), initsepaBoundInequalityFromCardinality(), initsepaBoundInequalityFromSOS1Cons(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_SEPAEXECLP(), sepaImplBoundCutsSOS1(), separateCuts(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), and sepaSubtour().

◆ SCIPisEfficacious()

SCIP_Bool SCIPisEfficacious ( SCIP scip,
SCIP_Real  efficacy 
)

◆ SCIPgetVectorEfficacyNorm()

SCIP_Real SCIPgetVectorEfficacyNorm ( SCIP scip,
SCIP_Real vals,
int  nvals 
)

calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter

Returns
the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
Parameters
scipSCIP data structure
valsarray of values
nvalsnumber of values

Definition at line 33923 of file scip.c.

References FALSE, MAX, NULL, REALABS, SCIP_Real, SCIPerrorMessage, SCIPisZero(), SCIP_Set::sepa_efficacynorm, and Scip::set.

Referenced by addCut(), and tryDelta().

◆ SCIPisCutApplicable()

SCIP_Bool SCIPisCutApplicable ( SCIP scip,
SCIP_ROW cut 
)

indicates whether a cut is applicable

If the cut has only one variable and this method returns FALSE, it may still be possible that the cut can be added to the LP (as a row instead of a boundchange), but it will be a very weak cut. The user is asked to avoid such cuts.

Precondition
This method can be called if scip is in one of the following stages:
Returns
whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon

indicates whether a cut is applicable, i.e., will modify the LP when applied

Precondition
This method can be called if scip is in one of the following stages:
Returns
whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon
Parameters
scipSCIP data structure
cutseparated cut

Definition at line 33981 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPsepastoreIsCutApplicable(), Scip::set, and TRUE.

Referenced by generateCutSol(), processCut(), and separatePoint().

◆ SCIPaddCut()

SCIP_RETCODE SCIPaddCut ( SCIP scip,
SCIP_SOL sol,
SCIP_ROW cut,
SCIP_Bool  forcecut,
SCIP_Bool infeasible 
)

adds cut to separation storage

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
solprimal solution that was separated, or NULL for LP solution
cutseparated cut
forcecutshould the cut be forced to enter the LP?
infeasiblepointer to store whether cut has been detected to be infeasible for local bounds

Definition at line 33999 of file scip.c.

References checkStage(), SCIP_Row::cols, Scip::eventfilter, Scip::eventqueue, FALSE, SCIP_Row::lhs, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_Row::rhs, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_OKAY, SCIP_Real, SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPanalyzeConflict(), SCIPcolGetVar(), SCIPgetDepth(), SCIPinitConflictAnalysis(), SCIPisConflictAnalysisApplicable(), SCIPisGT(), SCIPisInfinity(), SCIPisLT(), SCIPisZero(), SCIPprobAllColsInLP(), SCIProwGetMaxActivity(), SCIProwGetMinActivity(), SCIProwGetNNonz(), SCIPsepastoreAddCut(), SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), Scip::sepastore, Scip::set, Scip::stat, Scip::transprob, Scip::tree, TRUE, and SCIP_Row::vals.

Referenced by addBoundCutSepa(), addCut(), addCuts(), addLinearizationCuts(), addRelaxation(), computeCut(), createCapacityRestrictionIntvars(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), extendToCover(), generateOddCycleCut(), initsepaBoundInequalityFromCardinality(), initsepaBoundInequalityFromSOS1Cons(), LOPseparate(), newsolCliqueAddRow(), processCut(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_SEPAEXECLP(), sepaImplBoundCutsSOS1(), separateCons(), separateConsBinaryRepresentation(), separateCoverCutsCons(), separateCuts(), separateIndicators(), separatePerspective(), separatePoint(), separateSCIs(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), and sepaSubtour().

◆ SCIPaddPoolCut()

SCIP_RETCODE SCIPaddPoolCut ( SCIP scip,
SCIP_ROW row 
)

if not already existing, adds row to global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
rowrow to remove

Definition at line 34094 of file scip.c.

References checkStage(), Scip::cutpool, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolAddRow(), Scip::set, and TRUE.

Referenced by addCut(), addLinearizationCuts(), computeCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), extendToCover(), generateOddCycleCut(), newsolCliqueAddRow(), SCIP_DECL_EVENTEXEC(), and SCIP_DECL_SEPAEXECLP().

◆ SCIPdelPoolCut()

SCIP_RETCODE SCIPdelPoolCut ( SCIP scip,
SCIP_ROW row 
)

removes the row from the global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
rowcutting plane to add

Definition at line 34114 of file scip.c.

References checkStage(), Scip::cutpool, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolDelRow(), Scip::set, Scip::stat, and TRUE.

◆ SCIPgetPoolCuts()

SCIP_CUT** SCIPgetPoolCuts ( SCIP scip)

gets current cuts in the global cut pool

Returns
the current cuts in the global cut pool
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34135 of file scip.c.

References checkStage(), Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetCuts(), and TRUE.

Referenced by SCIPcopyCuts().

◆ SCIPgetNPoolCuts()

int SCIPgetNPoolCuts ( SCIP scip)

gets current number of rows in the global cut pool

Returns
the current number of rows in the global cut pool
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34153 of file scip.c.

References checkStage(), Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetNCuts(), and TRUE.

Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPcopyCuts().

◆ SCIPgetGlobalCutpool()

SCIP_CUTPOOL* SCIPgetGlobalCutpool ( SCIP scip)

gets the global cut pool used by SCIP

Returns
the global cut pool used by SCIP
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34171 of file scip.c.

References checkStage(), Scip::cutpool, FALSE, SCIP_CALL_ABORT, and TRUE.

◆ SCIPcreateCutpool()

SCIP_RETCODE SCIPcreateCutpool ( SCIP scip,
SCIP_CUTPOOL **  cutpool,
int  agelimit 
)

creates a cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolpointer to store cut pool
agelimitmaximum age a cut can reach before it is deleted from the pool

Definition at line 34195 of file scip.c.

References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolCreate(), Scip::set, and TRUE.

◆ SCIPfreeCutpool()

SCIP_RETCODE SCIPfreeCutpool ( SCIP scip,
SCIP_CUTPOOL **  cutpool 
)

frees a cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolpointer to store cut pool

Definition at line 34226 of file scip.c.

References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolFree(), Scip::set, and TRUE.

◆ SCIPaddRowCutpool()

SCIP_RETCODE SCIPaddRowCutpool ( SCIP scip,
SCIP_CUTPOOL cutpool,
SCIP_ROW row 
)

if not already existing, adds row to a cut pool and captures it

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolcut pool
rowcutting plane to add

Definition at line 34247 of file scip.c.

References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolAddRow(), Scip::set, and TRUE.

◆ SCIPaddNewRowCutpool()

SCIP_RETCODE SCIPaddNewRowCutpool ( SCIP scip,
SCIP_CUTPOOL cutpool,
SCIP_ROW row 
)

adds row to a cut pool and captures it; doesn't check for multiple cuts

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolcut pool
rowcutting plane to add

Definition at line 34269 of file scip.c.

References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolAddNewRow(), Scip::set, and TRUE.

◆ SCIPdelRowCutpool()

SCIP_RETCODE SCIPdelRowCutpool ( SCIP scip,
SCIP_CUTPOOL cutpool,
SCIP_ROW row 
)

removes the LP row from a cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolcut pool
rowrow to remove

Definition at line 34292 of file scip.c.

References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolDelRow(), Scip::set, Scip::stat, and TRUE.

◆ SCIPseparateCutpool()

SCIP_RETCODE SCIPseparateCutpool ( SCIP scip,
SCIP_CUTPOOL cutpool,
SCIP_RESULT result 
)

separates cuts from a cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolcut pool
resultpointer to store the result of the separation call

Definition at line 34313 of file scip.c.

References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcutpoolSeparate(), SCIPerrorMessage, SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), Scip::sepastore, Scip::set, Scip::stat, Scip::tree, and TRUE.

◆ SCIPseparateSolCutpool()

SCIP_RETCODE SCIPseparateSolCutpool ( SCIP scip,
SCIP_CUTPOOL cutpool,
SCIP_SOL sol,
SCIP_RESULT result 
)

separates cuts w.r.t. given solution from a cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
cutpoolcut pool
solsolution to be separated
resultpointer to store the result of the separation call

Definition at line 34343 of file scip.c.

References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcutpoolSeparate(), SCIPerrorMessage, SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), Scip::sepastore, Scip::set, Scip::stat, Scip::tree, and TRUE.

◆ SCIPaddDelayedPoolCut()

SCIP_RETCODE SCIPaddDelayedPoolCut ( SCIP scip,
SCIP_ROW row 
)

if not already existing, adds row to the delayed global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is the stages SCIP_STAGE_SOLVING

if not already existing, adds row to delayed global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is the stages SCIP_STAGE_SOLVING
Parameters
scipSCIP data structure
rowcutting plane to add

Definition at line 34373 of file scip.c.

References checkStage(), Scip::delayedcutpool, FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolAddRow(), Scip::set, and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPdelDelayedPoolCut()

SCIP_RETCODE SCIPdelDelayedPoolCut ( SCIP scip,
SCIP_ROW row 
)

removes the row from the delayed global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is the stages SCIP_STAGE_SOLVING
Parameters
scipSCIP data structure
rowcutting plane to add

Definition at line 34392 of file scip.c.

References checkStage(), Scip::delayedcutpool, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolDelRow(), Scip::set, Scip::stat, and TRUE.

◆ SCIPgetDelayedPoolCuts()

SCIP_CUT** SCIPgetDelayedPoolCuts ( SCIP scip)

gets current cuts in the delayed global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is the stages SCIP_STAGE_SOLVING
Parameters
scipSCIP data structure

Definition at line 34411 of file scip.c.

References checkStage(), Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetCuts(), and TRUE.

Referenced by SCIPcopyCuts().

◆ SCIPgetNDelayedPoolCuts()

int SCIPgetNDelayedPoolCuts ( SCIP scip)

gets current number of rows in the delayed global cut pool

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is the stages SCIP_STAGE_SOLVING
Parameters
scipSCIP data structure

Definition at line 34427 of file scip.c.

References checkStage(), Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetNCuts(), and TRUE.

Referenced by SCIPcopyCuts().

◆ SCIPgetDelayedGlobalCutpool()

SCIP_CUTPOOL* SCIPgetDelayedGlobalCutpool ( SCIP scip)

gets the delayed global cut pool used by SCIP

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is the stages SCIP_STAGE_SOLVING
Parameters
scipSCIP data structure

Definition at line 34443 of file scip.c.

References checkStage(), Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, and TRUE.

◆ SCIPseparateSol()

SCIP_RETCODE SCIPseparateSol ( SCIP scip,
SCIP_SOL sol,
SCIP_Bool  pretendroot,
SCIP_Bool  onlydelayed,
SCIP_Bool delayed,
SCIP_Bool cutoff 
)

separates the given primal solution or the current LP solution by calling the separators and constraint handlers' separation methods; the generated cuts are stored in the separation storage and can be accessed with the methods SCIPgetCuts() and SCIPgetNCuts(); after evaluating the cuts, you have to call SCIPclearCuts() in order to remove the cuts from the separation storage; it is possible to call SCIPseparateSol() multiple times with different solutions and evaluate the found cuts afterwards

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure
solprimal solution that should be separated, or NULL for LP solution
pretendrootshould the cut separators be called as if we are at the root node?
onlydelayedshould only separators be called that were delayed in the previous round?
delayedpointer to store whether a separator was delayed
cutoffpointer to store whether the node can be cut off

Definition at line 34467 of file scip.c.

References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::messagehdlr, Scip::primal, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPseparationRound(), SCIPtreeGetCurrentDepth(), Scip::sepastore, Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPgetCuts()

SCIP_ROW** SCIPgetCuts ( SCIP scip)

gets the array of cuts currently stored in the separation storage

Returns
the array of cuts currently stored in the separation storage
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34499 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPsepastoreGetCuts(), Scip::sepastore, and TRUE.

◆ SCIPgetNCuts()

int SCIPgetNCuts ( SCIP scip)

get current number of cuts in the separation storage

Returns
the current number of cuts in the separation storage
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34517 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPsepastoreGetNCuts(), Scip::sepastore, and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPclearCuts()

SCIP_RETCODE SCIPclearCuts ( SCIP scip)

clears the separation storage

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34534 of file scip.c.

References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPsepastoreClearCuts(), Scip::sepastore, Scip::set, and TRUE.

◆ SCIPremoveInefficaciousCuts()

SCIP_RETCODE SCIPremoveInefficaciousCuts ( SCIP scip)

removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP

Returns
SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See SCIP_RETCODE for a complete list of error codes.
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34553 of file scip.c.

References checkStage(), Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_Bool, SCIP_CALL, SCIP_EFFICIACYCHOICE_LP, SCIP_OKAY, SCIPsepastoreRemoveInefficaciousCuts(), SCIPtreeGetCurrentDepth(), Scip::sepastore, Scip::set, Scip::stat, Scip::tree, and TRUE.

Referenced by SCIP_DECL_SEPAEXECLP().

◆ SCIPgetRelaxFeastolFactor()

SCIP_Real SCIPgetRelaxFeastolFactor ( SCIP scip)

returns current factor on cut infeasibility to limit feasibility tolerance for relaxation solver

Gives value of separating/feastolfac parameter.

Returns
factor on cut infeasibility to limit feasibility tolerance for relaxation solver
Precondition
This method can be called if scip is in one of the following stages:
Parameters
scipSCIP data structure

Definition at line 34579 of file scip.c.

References checkStage(), FALSE, SCIP_CALL_ABORT, SCIP_Set::sepa_feastolfac, Scip::set, and TRUE.

Referenced by enforceConstraint(), and separatePoint().