Detailed Description
common methods used to manipulate, generate, and strengthen cuts and to organize the cutpool
Function Documentation
◆ SCIPcutsTightenCoefficients()
SCIP_EXPORT SCIP_Bool SCIPcutsTightenCoefficients | ( | SCIP * | scip, |
SCIP_Bool | cutislocal, | ||
SCIP_Real * | cutcoefs, | ||
SCIP_Real * | cutrhs, | ||
int * | cutinds, | ||
int * | cutnnz, | ||
int * | nchgcoefs | ||
) |
perform activity based coefficient tigthening on the given cut; returns TRUE if the cut was detected to be redundant due to acitvity bounds
perform activity based coefficient tightening on the given cut; returns TRUE if the cut was detected to be redundant due to activity bounds
- Parameters
-
scip SCIP data structure cutislocal is the cut local? cutcoefs array of the non-zero coefficients in the cut cutrhs the right hand side of the cut cutinds array of the problem indices of variables with a non-zero coefficient in the cut cutnnz the number of non-zeros in the cut nchgcoefs number of changed coefficients
Definition at line 1348 of file cuts.c.
References FALSE, MAX, NULL, QUAD, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_Bool, SCIP_CALL_ABORT, SCIP_Real, SCIPallocBufferArray, SCIPdebugPrintf, SCIPfreeBufferArray, SCIPfreeBufferArrayNull, SCIPgetNContVars(), SCIPgetNVars(), SCIPgetVars(), SCIPisFeasLE(), SCIPisGT(), SCIPisInfinity(), SCIPisLE(), SCIPisNegative(), SCIPisPositive(), SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPquadprecSumQQ, SCIPsortDownRealRealInt(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarIsIntegral(), and TRUE.
Referenced by generateZerohalfCut(), tightenCoefficients(), and transformNonIntegralRow().
◆ SCIPaggrRowCreate()
SCIP_EXPORT SCIP_RETCODE SCIPaggrRowCreate | ( | SCIP * | scip, |
SCIP_AGGRROW ** | aggrrow | ||
) |
create an empty the aggregation row
create an empty aggregation row
- Parameters
-
scip SCIP data structure aggrrow pointer to return aggregation row
Definition at line 1549 of file cuts.c.
References BMSclearMemoryArray, FALSE, NULL, QUAD_ARRAY_SIZE, QUAD_ASSIGN, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, and SCIPgetNVars().
Referenced by conflictAnalyzeLP(), createCGCuts(), doSeparation(), generateClusterCuts(), runBoundHeuristic(), SCIP_DECL_SEPAEXECLP(), and setupAggregationData().
◆ SCIPaggrRowFree()
SCIP_EXPORT void SCIPaggrRowFree | ( | SCIP * | scip, |
SCIP_AGGRROW ** | aggrrow | ||
) |
free a the aggregation row
free a aggregation row
- Parameters
-
scip SCIP data structure aggrrow pointer to aggregation row that should be freed
Definition at line 1581 of file cuts.c.
References NULL, QUAD_ARRAY_SIZE, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, and SCIPgetNVars().
Referenced by conflictAnalyzeLP(), createCGCuts(), doSeparation(), generateClusterCuts(), runBoundHeuristic(), SCIP_DECL_SEPAEXECLP(), and setupAggregationData().
◆ SCIPaggrRowPrint()
SCIP_EXPORT void SCIPaggrRowPrint | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
FILE * | file | ||
) |
output aggregation row to file stream
- Parameters
-
scip SCIP data structure aggrrow pointer to return aggregation row file output file (or NULL for standard output)
Definition at line 1601 of file cuts.c.
References SCIP_AggrRow::inds, SCIP_AggrRow::nnz, NULL, QUAD, QUAD_ARRAY_LOAD, QUAD_TO_DBL, SCIP_Real, SCIPgetMessagehdlr(), SCIPgetVars(), SCIPmessageFPrintInfo(), SCIPvarGetName(), SCIPvarGetProbindex(), and SCIP_AggrRow::vals.
◆ SCIPaggrRowCopy()
SCIP_EXPORT SCIP_RETCODE SCIPaggrRowCopy | ( | SCIP * | scip, |
SCIP_AGGRROW ** | aggrrow, | ||
SCIP_AGGRROW * | source | ||
) |
copy the aggregation row
copy a aggregation row
- Parameters
-
scip SCIP data structure aggrrow pointer to return aggregation row source source aggregation row
Definition at line 1638 of file cuts.c.
References SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NULL, QUAD_ARRAY_SIZE, QUAD_ASSIGN_Q, SCIP_AggrRow::rank, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPduplicateBlockMemoryArray, SCIPgetNVars(), SCIP_AggrRow::slacksign, and SCIP_AggrRow::vals.
◆ SCIPaggrRowAddRow()
SCIP_EXPORT SCIP_RETCODE SCIPaggrRowAddRow | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
SCIP_ROW * | row, | ||
SCIP_Real | weight, | ||
int | sidetype | ||
) |
add weighted row to the aggregation row
add weighted row to aggregation row
- Parameters
-
scip SCIP data structure aggrrow aggregation row row row to add to aggregation row weight scale for adding given row to aggregation row sidetype specify row side type (-1 = lhs, 0 = automatic, 1 = rhs)
Definition at line 1684 of file cuts.c.
References SCIP_Row::constant, FALSE, SCIP_AggrRow::inds, SCIP_Row::integral, SCIP_Row::lhs, SCIP_AggrRow::local, SCIP_Row::local, SCIP_Row::lppos, MAX, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, SCIP_AggrRow::rank, SCIP_Row::rank, SCIP_Row::rhs, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowssize, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPcalcMemGrowSize(), SCIPceil(), SCIPfloor(), SCIPisInfinity(), SCIPquadprecSumQD, SCIPreallocBlockMemoryArray, SCIProwGetLPPos(), SCIP_AggrRow::slacksign, TRUE, SCIP_AggrRow::vals, and varVecAddScaledRowCoefsQuad().
Referenced by aggregateNextRow(), aggregation(), getDualProof(), and getFarkasProof().
◆ SCIPaggrRowCancelVarWithBound()
SCIP_EXPORT void SCIPaggrRowCancelVarWithBound | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
SCIP_VAR * | var, | ||
int | pos, | ||
SCIP_Bool * | valid | ||
) |
Removes a given variable var
from position pos
the aggregation row and updates the right-hand side according to sign of the coefficient, i.e., rhs -= coef * bound, where bound = lb if coef >= 0 and bound = ub, otherwise.
- Note
- : The choice of global or local bounds depend on the validity (global or local) of the aggregation row.
-
: The list of non-zero indices will be updated by swapping the last non-zero index to
pos
.
- Parameters
-
scip SCIP data structure aggrrow the aggregation row var variable that should be removed pos position of the variable in the aggregation row valid pointer to return whether the aggregation row is still valid
Definition at line 1771 of file cuts.c.
References FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NULL, QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_HI, QUAD_TO_DBL, SCIP_Real, SCIPinfinity(), SCIPisInfinity(), SCIPquadprecProdQD, SCIPquadprecSumQQ, SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetProbindex(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), TRUE, and SCIP_AggrRow::vals.
◆ SCIPaggrRowAddObjectiveFunction()
SCIP_EXPORT SCIP_RETCODE SCIPaggrRowAddObjectiveFunction | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
SCIP_Real | rhs, | ||
SCIP_Real | scale | ||
) |
add the objective function with right-hand side rhs
and scaled by scale
to the aggregation row
- Parameters
-
scip SCIP data structure aggrrow the aggregation row rhs right-hand side of the artificial row scale scalar
Definition at line 1828 of file cuts.c.
References SCIP_AggrRow::inds, SCIP_AggrRow::nnz, NONZERO, NULL, QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_HI, SCIP_OKAY, SCIP_Real, SCIPgetNVars(), SCIPgetVars(), SCIPisZero(), SCIPquadprecSumQD, SCIPvarGetObj(), SCIPvarGetProbindex(), and SCIP_AggrRow::vals.
Referenced by getDualProof().
◆ SCIPaggrRowAddCustomCons()
SCIP_EXPORT SCIP_RETCODE SCIPaggrRowAddCustomCons | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
int * | inds, | ||
SCIP_Real * | vals, | ||
int | len, | ||
SCIP_Real | rhs, | ||
SCIP_Real | weight, | ||
int | rank, | ||
SCIP_Bool | local | ||
) |
add weighted constraint to the aggregation row
- Parameters
-
scip SCIP data structure aggrrow the aggregation row inds variable problem indices in constraint to add to the aggregation row vals values of constraint to add to the aggregation row len length of constraint to add to the aggregation row rhs right hand side of constraint to add to the aggregation row weight (positive) scale for adding given constraint to the aggregation row rank rank to use for given constraint local is constraint only valid locally
Definition at line 1899 of file cuts.c.
References SCIP_AggrRow::inds, SCIP_AggrRow::local, MAX, SCIP_AggrRow::nnz, NONZERO, QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_STORE, QUAD_HI, SCIP_AggrRow::rank, REALABS, SCIP_OKAY, SCIP_Real, SCIPisInfinity(), SCIPquadprecSumQD, and SCIP_AggrRow::vals.
◆ SCIPaggrRowCalcEfficacyNorm()
SCIP_EXPORT SCIP_Real SCIPaggrRowCalcEfficacyNorm | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow | ||
) |
calculates the efficacy norm of the given aggregation row, which depends on the "separating/efficacynorm" parameter
- Returns
- the efficacy norm of the given aggregation row, which depends on the "separating/efficacynorm" parameter
- Parameters
-
scip SCIP data structure aggrrow the aggregation row
Definition at line 1974 of file cuts.c.
References calcEfficacyNormQuad(), SCIP_AggrRow::inds, SCIP_AggrRow::nnz, and SCIP_AggrRow::vals.
Referenced by separateAlternativeProofs().
◆ SCIPaggrRowClear()
SCIP_EXPORT void SCIPaggrRowClear | ( | SCIP_AGGRROW * | aggrrow | ) |
clear all entries in the aggregation row but do not free the internal memory
clear all entries int the aggregation row but don't free memory
- Parameters
-
aggrrow the aggregation row
Definition at line 1949 of file cuts.c.
References FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, QUAD, QUAD_ARRAY_STORE, QUAD_ASSIGN, SCIP_AggrRow::rank, SCIP_Real, and SCIP_AggrRow::vals.
Referenced by aggregation(), getDualProof(), and SCIPaggrRowSumRows().
◆ SCIPaggrRowSumRows()
SCIP_EXPORT SCIP_RETCODE SCIPaggrRowSumRows | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
SCIP_Real * | weights, | ||
int * | rowinds, | ||
int | nrowinds, | ||
SCIP_Bool | sidetypebasis, | ||
SCIP_Bool | allowlocal, | ||
int | negslack, | ||
int | maxaggrlen, | ||
SCIP_Bool * | valid | ||
) |
aggregate rows using the given weights; the current content of the aggregation row, aggrrow
, gets overwritten
- Parameters
-
scip SCIP data structure aggrrow the aggregation row weights row weights in row summation rowinds array to store indices of non-zero entries of the weights array, or NULL nrowinds number of non-zero entries in weights array, -1 if rowinds is NULL sidetypebasis choose sidetypes of row (lhs/rhs) based on basis information? allowlocal should local rows allowed to be used? negslack should negative slack variables allowed to be used? (0: no, 1: only for integral rows, 2: yes) maxaggrlen maximal length of aggregation row valid is the aggregation valid
Definition at line 2093 of file cuts.c.
References addOneRow(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaggrRowClear(), SCIPaggrRowRemoveZeros(), SCIPgetLPRowsData(), and SCIPgetVarsData().
Referenced by createCGCutCMIR(), createCGCutStrongCG(), generateClusterCuts(), and SCIP_DECL_SEPAEXECLP().
◆ SCIPaggrRowRemoveZeros()
SCIP_EXPORT void SCIPaggrRowRemoveZeros | ( | SCIP * | scip, |
SCIP_AGGRROW * | aggrrow, | ||
SCIP_Bool * | valid | ||
) |
removes all (close enough to) zero entries in the aggregation row
removes almost zero entries from the aggregation row.
- Parameters
-
scip SCIP datastructure aggrrow the aggregation row valid pointer to return whether the aggregation row is still valid
Definition at line 2285 of file cuts.c.
References SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NULL, QUAD, removeZerosQuad(), SCIPsumepsilon(), and SCIP_AggrRow::vals.
Referenced by aggregateNextRow(), getDualProof(), getFarkasProof(), and SCIPaggrRowSumRows().
◆ SCIPaggrRowGetRowInds()
SCIP_EXPORT int* SCIPaggrRowGetRowInds | ( | SCIP_AGGRROW * | aggrrow | ) |
get array with lp positions of aggregated rows
get array with lp positions of rows used in aggregation
- Parameters
-
aggrrow the aggregation row
Definition at line 2308 of file cuts.c.
References SCIP_AggrRow::nrows, NULL, and SCIP_AggrRow::rowsinds.
Referenced by aggregation().
◆ SCIPaggrRowGetRowWeights()
SCIP_EXPORT SCIP_Real* SCIPaggrRowGetRowWeights | ( | SCIP_AGGRROW * | aggrrow | ) |
get array with weights of aggregated rows
- Parameters
-
aggrrow the aggregation row
Definition at line 2319 of file cuts.c.
References SCIP_AggrRow::nrows, NULL, and SCIP_AggrRow::rowweights.
◆ SCIPaggrRowHasRowBeenAdded()
SCIP_EXPORT SCIP_Bool SCIPaggrRowHasRowBeenAdded | ( | SCIP_AGGRROW * | aggrrow, |
SCIP_ROW * | row | ||
) |
checks whether a given row has been added to the aggregation row
- Parameters
-
aggrrow the aggregation row row row for which it is checked whether it has been added to the aggregation
Definition at line 2330 of file cuts.c.
References FALSE, SCIP_AggrRow::nrows, NULL, SCIP_AggrRow::rowsinds, SCIProwGetLPPos(), and TRUE.
Referenced by aggregateNextRow().
◆ SCIPaggrRowGetAbsWeightRange()
SCIP_EXPORT void SCIPaggrRowGetAbsWeightRange | ( | SCIP_AGGRROW * | aggrrow, |
SCIP_Real * | minabsrowweight, | ||
SCIP_Real * | maxabsrowweight | ||
) |
gets the min and max absolute value of the weights used to aggregate the rows; must not be called for empty aggregation rows
- Parameters
-
aggrrow the aggregation row minabsrowweight pointer to store smallest absolute value of weights used for aggregating rows maxabsrowweight pointer to store largest absolute value of weights used for aggregating rows
◆ SCIPaggrRowGetInds()
SCIP_EXPORT int* SCIPaggrRowGetInds | ( | SCIP_AGGRROW * | aggrrow | ) |
gets the array of corresponding variable problem indices for each non-zero in the aggregation row
- Parameters
-
aggrrow aggregation row
Definition at line 2353 of file cuts.c.
References SCIP_AggrRow::inds, and NULL.
Referenced by aggregateNextRow(), aggrRowGetMinActivity(), conflictAnalyzeLP(), proofsetAddAggrrow(), runBoundHeuristic(), separateAlternativeProofs(), and tightenDualproof().
◆ SCIPaggrRowGetNNz()
SCIP_EXPORT int SCIPaggrRowGetNNz | ( | SCIP_AGGRROW * | aggrrow | ) |
gets the number of non-zeros in the aggregation row
- Parameters
-
aggrrow aggregation row
Definition at line 2363 of file cuts.c.
References SCIP_AggrRow::nnz, and NULL.
Referenced by aggregateNextRow(), aggregation(), aggrRowGetMinActivity(), conflictAnalyzeDualProof(), conflictAnalyzeLP(), proofsetAddAggrrow(), runBoundHeuristic(), separateAlternativeProofs(), and tightenDualproof().
◆ SCIPaggrRowGetValue()
|
static |
gets the non-zero value for the given non-zero index
- Parameters
-
aggrrow the aggregation row i non-zero index; must be between 0 and SCIPaggrRowGetNNz(aggrrow) - 1
Definition at line 225 of file cuts.h.
References SCIP_AggrRow::inds, INLINE, QUAD, QUAD_ARRAY_LOAD, QUAD_TO_DBL, SCIP_Real, and SCIP_AggrRow::vals.
◆ SCIPaggrRowGetProbvarValue()
|
static |
gets the non-zero value for the given problem index of a variable
- Parameters
-
aggrrow the aggregation row probindex problem index of variable; must be between 0 and SCIPgetNVars(scip) - 1
Definition at line 239 of file cuts.h.
References QUAD, QUAD_ARRAY_LOAD, QUAD_TO_DBL, SCIP_Bool, SCIP_EXPORT, SCIP_Real, SCIPaggrRowGetNRows(), SCIPaggrRowGetRank(), SCIPaggrRowGetRhs(), SCIPaggrRowIsLocal(), SCIPcalcFlowCover(), SCIPcalcMIR(), SCIPcalcStrongCG(), SCIPcutGenerationHeuristicCMIR(), SCIPselectCuts(), and SCIP_AggrRow::vals.
Referenced by aggregateNextRow(), aggrRowGetMinActivity(), conflictAnalyzeLP(), proofsetAddAggrrow(), runBoundHeuristic(), and separateAlternativeProofs().
◆ SCIPaggrRowGetRank()
SCIP_EXPORT int SCIPaggrRowGetRank | ( | SCIP_AGGRROW * | aggrrow | ) |
gets the rank of the aggregation row
- Parameters
-
aggrrow aggregation row
Definition at line 2373 of file cuts.c.
References NULL, and SCIP_AggrRow::rank.
Referenced by SCIPaggrRowGetProbvarValue().
◆ SCIPaggrRowIsLocal()
SCIP_EXPORT SCIP_Bool SCIPaggrRowIsLocal | ( | SCIP_AGGRROW * | aggrrow | ) |
checks if the aggregation row is only valid locally
- Parameters
-
aggrrow aggregation row
Definition at line 2383 of file cuts.c.
References SCIP_AggrRow::local, and NULL.
Referenced by SCIPaggrRowGetProbvarValue().
◆ SCIPaggrRowGetRhs()
SCIP_EXPORT SCIP_Real SCIPaggrRowGetRhs | ( | SCIP_AGGRROW * | aggrrow | ) |
gets the right hand side of the aggregation row
- Parameters
-
aggrrow aggregation row
Definition at line 2393 of file cuts.c.
References NULL, and QUAD_TO_DBL.
Referenced by conflictAnalyzeDualProof(), conflictAnalyzeLP(), getDualProof(), getFarkasProof(), proofsetAddAggrrow(), runBoundHeuristic(), SCIPaggrRowGetProbvarValue(), separateAlternativeProofs(), and tightenDualproof().
◆ SCIPaggrRowGetNRows()
SCIP_EXPORT int SCIPaggrRowGetNRows | ( | SCIP_AGGRROW * | aggrrow | ) |
gets the number of row aggregations
get number of aggregated rows
- Parameters
-
aggrrow the aggregation row
Definition at line 2298 of file cuts.c.
References SCIP_AggrRow::nrows, and NULL.
Referenced by aggregation(), and SCIPaggrRowGetProbvarValue().
◆ SCIPselectCuts()
SCIP_EXPORT SCIP_RETCODE SCIPselectCuts | ( | SCIP * | scip, |
SCIP_ROW ** | cuts, | ||
SCIP_RANDNUMGEN * | randnumgen, | ||
SCIP_Real | goodscorefac, | ||
SCIP_Real | badscorefac, | ||
SCIP_Real | goodmaxparall, | ||
SCIP_Real | maxparall, | ||
SCIP_Real | dircutoffdistweight, | ||
SCIP_Real | efficacyweight, | ||
SCIP_Real | objparalweight, | ||
SCIP_Real | intsupportweight, | ||
int | ncuts, | ||
int | nforcedcuts, | ||
int | maxselectedcuts, | ||
int * | nselectedcuts | ||
) |
perform a cut selection algorithm for the given array of cuts; the array is partitioned so that the selected cuts come first and the remaining ones are at the end of the array
- Parameters
-
scip SCIP data structure cuts array with cuts to perform selection algorithm randnumgen random number generator for tie-breaking, or NULL goodscorefac factor of best score among the given cuts to consider a cut good and filter with less strict settings of the maximum parallelism badscorefac factor of best score among the given cuts to consider a cut bad and discard it regardless of its parallelism to other cuts goodmaxparall maximum parallelism for good cuts maxparall maximum parallelism for non-good cuts dircutoffdistweight weight of directed cutoff distance in score calculation efficacyweight weight of efficacy (shortest cutoff distance) in score calculation objparalweight weight of objective parallelism in score calculation intsupportweight weight of integral support in score calculation ncuts number of cuts in given array nforcedcuts number of forced cuts at start of given array maxselectedcuts maximal number of cuts to select nselectedcuts pointer to return number of selected cuts
Definition at line 2475 of file cuts.c.
References filterWithParallelism(), Scip::lp, MAX, MIN, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetBestSol(), SCIPrandomGetReal(), SCIProwGetLPEfficacy(), SCIProwGetLPSolCutoffDistance(), SCIProwGetNNonz(), SCIProwGetNumIntCols(), SCIProwGetObjParallelism(), SCIProwIsInGlobalCutpool(), SCIProwIsLocal(), selectBestCut(), Scip::set, and Scip::stat.
Referenced by doSeparation(), SCIP_DECL_SEPAEXECLP(), SCIPaggrRowGetProbvarValue(), and SCIPsepastoreApplyCuts().
◆ SCIPcalcMIR()
SCIP_EXPORT SCIP_RETCODE SCIPcalcMIR | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_Bool | postprocess, | ||
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_AGGRROW * | aggrrow, | ||
SCIP_Real * | cutcoefs, | ||
SCIP_Real * | cutrhs, | ||
int * | cutinds, | ||
int * | cutnnz, | ||
SCIP_Real * | cutefficacy, | ||
int * | cutrank, | ||
SCIP_Bool * | cutislocal, | ||
SCIP_Bool * | success | ||
) |
calculates an MIR cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, 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
-
scip SCIP data structure sol the solution that should be separated, or NULL for LP solution postprocess apply a post-processing step to the resulting cut? boundswitch fraction of domain up to which lower bound is used in transformation usevbds should variable bounds be used in bound transformation? allowlocal should local information allowed to be used, resulting in a local cut? fixintegralrhs should complementation tried to be adjusted such that rhs gets fractional? boundsfortrans bounds 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 boundtypesfortrans type of bounds that should be used for transformed variables; NULL for using closest bound for all variables minfrac minimal fractionality of rhs to produce MIR cut for maxfrac maximal fractionality of rhs to produce MIR cut for scale additional scaling factor multiplied to the aggrrow; must be positive aggrrow aggrrow to compute MIR cut for cutcoefs array to store the non-zero coefficients in the cut cutrhs pointer to store the right hand side of the cut cutinds array to store the problem indices of variables with a non-zero coefficient in the cut cutnnz pointer to store the number of non-zeros in the cut cutefficacy pointer to store efficacy of cut, or NULL cutrank pointer to return rank of generated cut cutislocal pointer to store whether the generated cut is only valid locally success pointer to store whether the returned coefficients are a valid MIR cut
Definition at line 3907 of file cuts.c.
References BMScopyMemoryArray, calcEfficacy(), cutsRoundMIR(), cutsSubstituteMIR(), cutsTransformMIR(), FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, MAXCMIRSCALE, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NULL, postprocessCutQuad(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, REALABS, removeZerosQuad(), SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPdebug, SCIPdebugMessage, SCIPepsilon(), SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNVars(), SCIPisPositive(), SCIPquadprecEpsFloorQ, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQQ, SCIPsumepsilon(), SCIP_AggrRow::slacksign, and SCIP_AggrRow::vals.
Referenced by createCGCutCMIR(), generateClusterCuts(), SCIP_DECL_SEPAEXECLP(), and SCIPaggrRowGetProbvarValue().
◆ SCIPcutGenerationHeuristicCMIR()
SCIP_EXPORT SCIP_RETCODE SCIPcutGenerationHeuristicCMIR | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_Bool | postprocess, | ||
SCIP_Real | boundswitch, | ||
SCIP_Bool | usevbds, | ||
SCIP_Bool | allowlocal, | ||
int | maxtestdelta, | ||
int * | boundsfortrans, | ||
SCIP_BOUNDTYPE * | boundtypesfortrans, | ||
SCIP_Real | minfrac, | ||
SCIP_Real | maxfrac, | ||
SCIP_AGGRROW * | aggrrow, | ||
SCIP_Real * | cutcoefs, | ||
SCIP_Real * | cutrhs, | ||
int * | cutinds, | ||
int * | cutnnz, | ||
SCIP_Real * | cutefficacy, | ||
int * | cutrank, | ||
SCIP_Bool * | cutislocal, | ||
SCIP_Bool * | success | ||
) |
calculates an MIR cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in an MIR cut. The function uses a cut generation heuristic which tries different scaling factors and complementations of the variables to improve the cut's efficacy. For further details we refer to:
Marchand, H., & Wolsey, L. A. (2001). Aggregation and mixed integer rounding to solve MIPs. Operations research, 49(3), 363-371.
- 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 an aggregation of LP rows
Given the aggregation, it is transformed to a mixed knapsack set via complementation (using bounds or variable bounds) Then, different scalings of the mkset are used to generate a MIR and the best is chosen. One of the steps of the MIR is to round the coefficients of the integer variables down, so one would prefer to have integer coefficients for integer variables which are far away from their bounds in the mkset.
- 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
-
scip SCIP data structure sol the solution that should be separated, or NULL for LP solution postprocess apply a post-processing step to the resulting cut? boundswitch fraction of domain up to which lower bound is used in transformation usevbds should variable bounds be used in bound transformation? allowlocal should local information allowed to be used, resulting in a local cut? maxtestdelta maximum number of deltas to test boundsfortrans bounds 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 boundtypesfortrans type of bounds that should be used for transformed variables; NULL for using closest bound for all variables minfrac minimal fractionality of rhs to produce MIR cut for maxfrac maximal fractionality of rhs to produce MIR cut for aggrrow aggrrow to compute MIR cut for cutcoefs array to store the non-zero coefficients in the cut cutrhs pointer to store the right hand side of the cut cutinds array to store the problem indices of variables with a non-zero coefficient in the cut cutnnz pointer to store the number of non-zeros in the cut cutefficacy pointer to store efficacy of best cut; only cuts that are strictly better than the value of this efficacy on input to this function are returned cutrank pointer to return rank of generated cut (or NULL) cutislocal pointer to store whether the generated cut is only valid locally success pointer to store whether a valid and efficacious cut was returned
Definition at line 4225 of file cuts.c.
References BMScopyMemoryArray, calcEfficacyDenseStorageQuad(), computeMIREfficacy(), cutsRoundMIR(), cutsSubstituteMIR(), cutsTransformMIR(), EPSZ, FALSE, findBestLb(), findBestUb(), SCIP_AggrRow::inds, SCIP_Row::integral, SCIP_Row::lhs, SCIP_AggrRow::local, MAX, MIN, SCIP_AggrRow::nnz, SCIP_AggrRow::nrows, NULL, postprocessCutQuad(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_EPSILON, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, REALABS, removeZerosQuad(), SCIP_Row::rhs, SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPcalcIntegralScalar(), SCIPdebug, SCIPdebugMessage, SCIPepsilon(), SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetLPRows(), SCIPgetNContVars(), SCIPgetNVars(), SCIPgetRowSolActivity(), SCIPgetSolVal(), SCIPgetVars(), SCIPinfinity(), SCIPisEfficacious(), SCIPisEQ(), SCIPisFeasIntegral(), SCIPisInfinity(), SCIPquadprecEpsFloorQ, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQD, SCIPquadprecSumQQ, SCIPrelDiff(), SCIPsortDownRealRealInt(), SCIPsumepsilon(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarGetVlbCoefs(), SCIPvarGetVlbConstants(), SCIPvarGetVlbVars(), SCIPvarGetVubCoefs(), SCIPvarGetVubConstants(), SCIPvarGetVubVars(), SCIP_AggrRow::slacksign, SQR, TRUE, and SCIP_AggrRow::vals.
Referenced by aggregation(), SCIPaggrRowGetProbvarValue(), and separateAlternativeProofs().
◆ SCIPcalcFlowCover()
SCIP_EXPORT SCIP_RETCODE SCIPcalcFlowCover | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_Bool | postprocess, | ||
SCIP_Real | boundswitch, | ||
SCIP_Bool | allowlocal, | ||
SCIP_AGGRROW * | aggrrow, | ||
SCIP_Real * | cutcoefs, | ||
SCIP_Real * | cutrhs, | ||
int * | cutinds, | ||
int * | cutnnz, | ||
SCIP_Real * | cutefficacy, | ||
int * | cutrank, | ||
SCIP_Bool * | cutislocal, | ||
SCIP_Bool * | success | ||
) |
calculates a lifted simple generalized flow cover cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in an MIR cut. For further details we refer to:
Gu, Z., Nemhauser, G. L., & Savelsbergh, M. W. (1999). Lifted flow cover inequalities for mixed 0-1 integer programs. Mathematical Programming, 85(3), 439-467.
- 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 a lifted simple generalized flow cover cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in the cut. For further details we refer to:
Gu, Z., Nemhauser, G. L., & Savelsbergh, M. W. (1999). Lifted flow cover inequalities for mixed 0-1 integer programs. Mathematical Programming, 85(3), 439-467.
- 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
-
scip SCIP data structure sol the solution that should be separated, or NULL for LP solution postprocess apply a post-processing step to the resulting cut? boundswitch fraction of domain up to which lower bound is used in transformation allowlocal should local information allowed to be used, resulting in a local cut? aggrrow the aggregation row to compute flow cover cut for cutcoefs array to store the non-zero coefficients in the cut cutrhs pointer to store the right hand side of the cut cutinds array to store the problem indices of variables with a non-zero coefficient in the cut cutnnz pointer to store the number of non-zeros in the cut cutefficacy pointer to store the efficacy of the cut, or NULL cutrank pointer to return rank of generated cut cutislocal pointer to store whether the generated cut is only valid locally success pointer to store whether a valid cut was returned
Definition at line 7412 of file cuts.c.
References allocSNFRelaxation(), calcEfficacy(), constructSNFRelaxation(), destroySNFRelaxation(), FALSE, generateLiftedFlowCoverCut(), getFlowCover(), SCIP_AggrRow::inds, LiftingData::lambda, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NULL, postprocessCut(), QUAD, QUAD_ASSIGN, QUAD_TO_DBL, SCIP_AggrRow::rank, removeZeros(), SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPdebug, SCIPdebugMsg, SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNCuts(), SCIPgetNLPs(), SCIPgetNVars(), SCIPsumepsilon(), and SCIP_AggrRow::vals.
Referenced by aggregation(), SCIPaggrRowGetProbvarValue(), and separateAlternativeProofs().
◆ SCIPcalcStrongCG()
SCIP_EXPORT SCIP_RETCODE SCIPcalcStrongCG | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_Bool | postprocess, | ||
SCIP_Real | boundswitch, | ||
SCIP_Bool | usevbds, | ||
SCIP_Bool | allowlocal, | ||
SCIP_Real | minfrac, | ||
SCIP_Real | maxfrac, | ||
SCIP_Real | scale, | ||
SCIP_AGGRROW * | aggrrow, | ||
SCIP_Real * | cutcoefs, | ||
SCIP_Real * | cutrhs, | ||
int * | cutinds, | ||
int * | cutnnz, | ||
SCIP_Real * | cutefficacy, | ||
int * | cutrank, | ||
SCIP_Bool * | cutislocal, | ||
SCIP_Bool * | success | ||
) |
calculates a strong CG cut out of the weighted sum of LP rows given by an aggregation row; the aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot participate in a strongcg 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
-
scip SCIP data structure sol the solution that should be separated, or NULL for LP solution postprocess apply a post-processing step to the resulting cut? boundswitch fraction of domain up to which lower bound is used in transformation usevbds should variable bounds be used in bound transformation? allowlocal should local information allowed to be used, resulting in a local cut? minfrac minimal fractionality of rhs to produce strong CG cut for maxfrac maximal fractionality of rhs to produce strong CG cut for scale additional scaling factor multiplied to all rows aggrrow the aggregation row to compute a strong CG cut for cutcoefs array to store the non-zero coefficients in the cut cutrhs pointer to store the right hand side of the cut cutinds array to store the problem indices of variables with a non-zero coefficient in the cut cutnnz pointer to store the number of non-zeros in the cut cutefficacy pointer to store the efficacy of the cut, or NULL cutrank pointer to return rank of generated cut cutislocal pointer to store whether the generated cut is only valid locally success pointer to store whether a valid cut was returned
Definition at line 8219 of file cuts.c.
References BMScopyMemoryArray, calcEfficacy(), cutsRoundStrongCG(), cutsSubstituteStrongCG(), cutsTransformStrongCG(), FALSE, SCIP_AggrRow::inds, SCIP_AggrRow::local, SCIP_AggrRow::nnz, NONZERO, SCIP_AggrRow::nrows, NULL, postprocessCutQuad(), QUAD, QUAD_ARRAY_LOAD, QUAD_ARRAY_SIZE, QUAD_ARRAY_STORE, QUAD_ASSIGN, QUAD_ASSIGN_Q, QUAD_HI, QUAD_LO, QUAD_TO_DBL, SCIP_AggrRow::rank, removeZerosQuad(), SCIP_AggrRow::rowsinds, SCIP_AggrRow::rowweights, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPallocCleanBufferArray, SCIPdebug, SCIPdebugMessage, SCIPepsilon(), SCIPfreeBufferArray, SCIPfreeCleanBufferArray, SCIPgetNVars(), SCIPisPositive(), SCIPquadprecDivDQ, SCIPquadprecEpsFloorQ, SCIPquadprecProdQD, SCIPquadprecSumDD, SCIPquadprecSumQQ, SCIPround(), SCIPsumepsilon(), SCIP_AggrRow::slacksign, and SCIP_AggrRow::vals.
Referenced by createCGCutStrongCG(), SCIP_DECL_SEPAEXECLP(), and SCIPaggrRowGetProbvarValue().
◆ SCIPcutGetRow()
SCIP_EXPORT SCIP_ROW* SCIPcutGetRow | ( | SCIP_CUT * | cut | ) |
gets the row of the cut
- Parameters
-
cut cut
Definition at line 372 of file cutpool.c.
References NULL, and SCIP_Cut::row.
Referenced by copyCuts(), and takeCut().
◆ SCIPcutGetAge()
SCIP_EXPORT 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
-
cut cut
Definition at line 382 of file cutpool.c.
References SCIP_Cut::age, and NULL.
Referenced by takeCut().
◆ SCIPcutGetLPActivityQuot()
SCIP_EXPORT 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
-
cut cut
Definition at line 396 of file cutpool.c.
References NULL, SCIP_Cut::row, SCIP_Longint, SCIP_Real, SCIProwGetActiveLPCount(), and SCIProwGetNLPsAfterCreation().
Referenced by takeCut().
◆ SCIPcutpoolGetCuts()
SCIP_EXPORT SCIP_CUT** SCIPcutpoolGetCuts | ( | SCIP_CUTPOOL * | cutpool | ) |
gets array of cuts in the cut pool
- Parameters
-
cutpool cut pool
Definition at line 1040 of file cutpool.c.
References SCIP_Cutpool::cuts, and NULL.
Referenced by SCIPgetDelayedPoolCuts(), and SCIPgetPoolCuts().
◆ SCIPcutpoolGetNCuts()
SCIP_EXPORT int SCIPcutpoolGetNCuts | ( | SCIP_CUTPOOL * | cutpool | ) |
get number of cuts in the cut pool
gets number of cuts in the cut pool
- Parameters
-
cutpool cut pool
Definition at line 1050 of file cutpool.c.
References SCIP_Cutpool::ncuts, and NULL.
Referenced by SCIPgetNDelayedPoolCuts(), SCIPgetNPoolCuts(), and SCIPsepaExecLP().
◆ SCIPcutpoolGetMaxNCuts()
SCIP_EXPORT 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
-
cutpool cut pool
Definition at line 1060 of file cutpool.c.
References SCIP_Cutpool::maxncuts, and NULL.
Referenced by SCIPprintSeparatorStatistics().
◆ SCIPcutpoolGetTime()
SCIP_EXPORT SCIP_Real SCIPcutpoolGetTime | ( | SCIP_CUTPOOL * | cutpool | ) |
gets time in seconds used for separating cuts from the pool
- Parameters
-
cutpool cut pool
Definition at line 1070 of file cutpool.c.
References NULL, SCIP_Cutpool::poolclock, and SCIPclockGetTime().
Referenced by SCIPprintSeparatorStatistics().
◆ SCIPcutpoolGetNCalls()
SCIP_EXPORT SCIP_Longint SCIPcutpoolGetNCalls | ( | SCIP_CUTPOOL * | cutpool | ) |
get number of times, the cut pool was separated
- Parameters
-
cutpool cut pool
Definition at line 1080 of file cutpool.c.
References SCIP_Cutpool::ncalls, and NULL.
Referenced by SCIPprintSeparatorStatistics().
◆ SCIPcutpoolGetNCutsFound()
SCIP_EXPORT SCIP_Longint SCIPcutpoolGetNCutsFound | ( | SCIP_CUTPOOL * | cutpool | ) |
get total number of cuts that were separated from the cut pool
- Parameters
-
cutpool cut pool
Definition at line 1090 of file cutpool.c.
References SCIP_Cutpool::ncutsfound, and NULL.
Referenced by SCIPprintSeparatorStatistics().
◆ SCIPgetCutEfficacy()
SCIP_EXPORT 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
-
scip SCIP data structure sol primal CIP solution, or NULL for current LP solution cut separated cut
Definition at line 64 of file scip_cut.c.
References FALSE, Scip::lp, NULL, SCIP_CALL_ABORT, SCIPcheckStage(), SCIProwGetLPEfficacy(), SCIProwGetSolEfficacy(), Scip::set, Scip::stat, and TRUE.
Referenced by addCut(), computeCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), SCIP_DECL_SEPAEXECLP(), separateCuts(), and separatePoint().
◆ SCIPisCutEfficacious()
SCIP_EXPORT 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
-
scip SCIP data structure sol primal CIP solution, or NULL for current LP solution cut separated cut
Definition at line 87 of file scip_cut.c.
References FALSE, Scip::lp, NULL, SCIP_CALL_ABORT, SCIPcheckStage(), SCIProwIsLPEfficacious(), SCIProwIsSolEfficacious(), SCIPtreeGetCurrentDepth(), Scip::set, Scip::stat, Scip::tree, and TRUE.
Referenced by addBoundCutSepa(), addCut(), computeCut(), createCGCutCMIR(), createCGCutStrongCG(), createRow(), cut_add(), generateOddCycleCut(), initsepaBoundInequalityFromCardinality(), initsepaBoundInequalityFromSOS1Cons(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_SEPAEXECLP(), sepaImplBoundCutsSOS1(), separateCuts(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), and sepaSubtour().
◆ SCIPisEfficacious()
SCIP_EXPORT SCIP_Bool SCIPisEfficacious | ( | SCIP * | scip, |
SCIP_Real | efficacy | ||
) |
checks, if the given cut's efficacy is larger than the minimal cut efficacy
- Returns
- TRUE if the given cut's efficacy is larger than the minimal cut efficacy, otherwise FALSE
- Parameters
-
scip SCIP data structure efficacy efficacy of the cut
Definition at line 105 of file scip_cut.c.
References NULL, SCIPsetIsEfficacious(), SCIPtreeGetCurrentDepth(), Scip::set, and Scip::tree.
Referenced by addCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), extendToCover(), generateClusterCuts(), generateZerohalfCut(), LOPseparate(), SCIP_DECL_SEPAEXECLP(), SCIPcutGenerationHeuristicCMIR(), SCIPseparateCoversOrbisack(), separateCons(), separateIndicators(), separateOrbisack(), separateOrbisackCovers(), separatePerspective(), separateSCIs(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), separateSymresackCovers(), solCutIsViolated(), and TCLIQUE_NEWSOL().
◆ SCIPgetVectorEfficacyNorm()
SCIP_EXPORT 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
-
scip SCIP data structure vals array of values nvals number of values
Definition at line 119 of file scip_cut.c.
References FALSE, MAX, NULL, REALABS, SCIP_Real, SCIPerrorMessage, SCIPisZero(), SCIP_Set::sepa_efficacynorm, Scip::set, SQR, and SQRT.
Referenced by calcEfficacy(), and SCIP_DECL_SEPAEXECLP().
◆ SCIPisCutApplicable()
SCIP_EXPORT 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
-
scip SCIP data structure cut separated cut
Definition at line 177 of file scip_cut.c.
References FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), 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:
- Deprecated:
- Please use SCIPaddRow() instead, or, if the row is a global cut and it might be useful to keep it for future use, consider adding it to the global cutpool with SCIPaddPoolCut().
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:
- Deprecated:
- Please use SCIPaddRow() instead, or, if the row is a global cut, add it only to the global cutpool.
- Parameters
-
scip SCIP data structure sol primal solution that was separated, or NULL for LP solution cut separated cut forcecut should the cut be forced to enter the LP? infeasible pointer to store whether cut has been detected to be infeasible for local bounds
Definition at line 197 of file scip_cut.c.
References FALSE, SCIP_CALL, SCIP_UNUSED, SCIPaddRow(), SCIPcheckStage(), and TRUE.
◆ SCIPaddRow()
SCIP_EXPORT SCIP_RETCODE SCIPaddRow | ( | SCIP * | scip, |
SCIP_ROW * | row, | ||
SCIP_Bool | forcecut, | ||
SCIP_Bool * | infeasible | ||
) |
adds row 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
-
scip SCIP data structure row row forcecut should the row be forced to enter the LP? infeasible pointer to store whether row has been detected to be infeasible for local bounds
Definition at line 220 of file scip_cut.c.
References 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(), SCIPcheckStage(), 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(), addOrbisackCover(), addOrbisackInequality(), addRelaxation(), addSymresackInequality(), computeCut(), createCapacityRestrictionIntvars(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), createRow(), cut_add(), doSeparation(), extendToCover(), generateAndApplyBendersCuts(), generateAndApplyBendersIntegerCuts(), generateAndApplyBendersNogoodCut(), generateOddCycleCut(), initLP(), initsepaBoundInequalityFromCardinality(), initsepaBoundInequalityFromSOS1Cons(), LOPseparate(), processCut(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSINITLP(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_CONSSEPASOL(), SCIP_DECL_SEPAEXECLP(), SCIPaddCut(), SCIPseparateCoversOrbisack(), SCIPStpDualAscent(), SCIPStpDualAscentPcMw(), sep_flow(), sepaImplBoundCutsSOS1(), separateCons(), separateConsBinaryRepresentation(), separateCoverCutsCons(), separateCuts(), separateIndicators(), separatePerspective(), separatePoint(), separateSCIs(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), and sepaSubtour().
◆ SCIPisCutNew()
SCIP_EXPORT SCIP_Bool SCIPisCutNew | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
checks if cut is already existing in global cutpool
- Returns
- TRUE is returned if the cut is not already existing in the global cutpool, FALSE otherwise
- Precondition
- This method can be called if
scip
is in one of the following stages:
- Parameters
-
scip SCIP data structure row cutting plane to add
Definition at line 313 of file scip_cut.c.
References Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPcutpoolIsCutNew(), Scip::set, and TRUE.
Referenced by addCut(), generateZerohalfCut(), and SCIP_DECL_SEPAEXECLP().
◆ SCIPaddPoolCut()
SCIP_EXPORT 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
-
scip SCIP data structure row row to remove
Definition at line 331 of file scip_cut.c.
References Scip::cutpool, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolAddRow(), Scip::set, Scip::stat, and TRUE.
Referenced by addCut(), addLinearizationCuts(), addPathCuts(), addSubtourCuts(), addTourCuts(), computeCut(), createAndAddTransferredCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), cut_add(), doSeparation(), extendToCover(), generateAndApplyBendersCuts(), generateAndApplyBendersIntegerCuts(), generateAndApplyBendersNogoodCut(), generateOddCycleCut(), newsolCliqueAddRow(), SCIP_DECL_EVENTEXEC(), SCIP_DECL_SEPAEXECLP(), and sep_flow().
◆ SCIPdelPoolCut()
SCIP_EXPORT 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
-
scip SCIP data structure row cutting plane to add
Definition at line 351 of file scip_cut.c.
References Scip::cutpool, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolDelRow(), Scip::set, Scip::stat, and TRUE.
◆ SCIPgetPoolCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 372 of file scip_cut.c.
References Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPcutpoolGetCuts(), and TRUE.
Referenced by SCIPcopyCuts().
◆ SCIPgetNPoolCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 390 of file scip_cut.c.
References Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPcutpoolGetNCuts(), and TRUE.
Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPcopyCuts().
◆ SCIPgetGlobalCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 408 of file scip_cut.c.
References Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), and TRUE.
Referenced by SCIPsepaExecLP().
◆ SCIPcreateCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool pointer to store cut pool agelimit maximum age a cut can reach before it is deleted from the pool
Definition at line 432 of file scip_cut.c.
References FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolCreate(), Scip::set, and TRUE.
◆ SCIPfreeCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool pointer to store cut pool
Definition at line 463 of file scip_cut.c.
References FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolFree(), Scip::set, and TRUE.
◆ SCIPaddRowCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool cut pool row cutting plane to add
Definition at line 484 of file scip_cut.c.
References FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolAddRow(), Scip::set, Scip::stat, and TRUE.
◆ SCIPaddNewRowCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool cut pool row cutting plane to add
Definition at line 506 of file scip_cut.c.
References FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolAddNewRow(), Scip::set, Scip::stat, and TRUE.
◆ SCIPdelRowCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool cut pool row row to remove
Definition at line 529 of file scip_cut.c.
References FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolDelRow(), Scip::set, Scip::stat, and TRUE.
◆ SCIPseparateCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool cut pool result pointer to store the result of the separation call
Definition at line 550 of file scip_cut.c.
References Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolSeparate(), SCIPerrorMessage, SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), Scip::sepastore, Scip::set, Scip::stat, Scip::tree, and TRUE.
◆ SCIPseparateSolCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure cutpool cut pool sol solution to be separated result pointer to store the result of the separation call
Definition at line 580 of file scip_cut.c.
References Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, NULL, SCIP_Mem::probmem, SCIP_CALL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolSeparate(), SCIPerrorMessage, SCIPtreeGetCurrentDepth(), SCIPtreeGetCurrentNode(), SCIPtreeHasCurrentNodeLP(), Scip::sepastore, Scip::set, Scip::stat, Scip::tree, and TRUE.
◆ SCIPaddDelayedPoolCut()
SCIP_EXPORT 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
-
scip SCIP data structure row cutting plane to add
Definition at line 610 of file scip_cut.c.
References Scip::delayedcutpool, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolAddRow(), Scip::set, Scip::stat, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP().
◆ SCIPdelDelayedPoolCut()
SCIP_EXPORT 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
-
scip SCIP data structure row cutting plane to add
Definition at line 629 of file scip_cut.c.
References Scip::delayedcutpool, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPcutpoolDelRow(), Scip::set, Scip::stat, and TRUE.
◆ SCIPgetDelayedPoolCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 648 of file scip_cut.c.
References Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPcutpoolGetCuts(), and TRUE.
Referenced by SCIPcopyCuts().
◆ SCIPgetNDelayedPoolCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 664 of file scip_cut.c.
References Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPcutpoolGetNCuts(), and TRUE.
Referenced by SCIPcopyCuts().
◆ SCIPgetDelayedGlobalCutpool()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 680 of file scip_cut.c.
References Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), and TRUE.
Referenced by SCIPsepaExecLP().
◆ SCIPseparateSol()
SCIP_EXPORT SCIP_RETCODE SCIPseparateSol | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_Bool | pretendroot, | ||
SCIP_Bool | allowlocal, | ||
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
-
scip SCIP data structure sol primal solution that should be separated, or NULL for LP solution pretendroot should the cut separators be called as if we are at the root node? allowlocal should the separator be asked to separate local cuts onlydelayed should only separators be called that were delayed in the previous round? delayed pointer to store whether a separator was delayed cutoff pointer to store whether the node can be cut off
Definition at line 704 of file scip_cut.c.
References Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, Scip::messagehdlr, Scip::primal, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPseparationRound(), SCIPtreeGetCurrentDepth(), Scip::sepastore, Scip::set, Scip::stat, Scip::transprob, Scip::tree, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP().
◆ SCIPgetCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 738 of file scip_cut.c.
References FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPsepastoreGetCuts(), Scip::sepastore, and TRUE.
◆ SCIPgetNCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 756 of file scip_cut.c.
References FALSE, SCIP_CALL_ABORT, SCIPcheckStage(), SCIPsepastoreGetNCuts(), Scip::sepastore, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP(), and SCIPcalcFlowCover().
◆ SCIPclearCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 773 of file scip_cut.c.
References Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcheckStage(), SCIPsepastoreClearCuts(), Scip::sepastore, Scip::set, and TRUE.
◆ SCIPremoveInefficaciousCuts()
SCIP_EXPORT 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
-
scip SCIP data structure
Definition at line 792 of file scip_cut.c.
References Scip::eventfilter, Scip::eventqueue, FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_Bool, SCIP_CALL, SCIP_EFFICIACYCHOICE_LP, SCIP_OKAY, SCIPcheckStage(), SCIPsepastoreRemoveInefficaciousCuts(), SCIPtreeGetCurrentDepth(), Scip::sepastore, Scip::set, Scip::stat, Scip::tree, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP().