common methods used to manipulate, generate, and strengthen cuts and to organize the cutpool
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.
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
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? |
maxmksetcoefs | maximal number of nonzeros allowed in aggregated base inequality |
maxweightrange | maximal valid range max(|weights|)/min(|weights|) of row weights |
minfrac | minimal fractionality of rhs to produce strong CG cut for |
maxfrac | maximal fractionality of rhs to produce strong CG cut for |
weights | row weights in row summation; some weights might be set to zero |
inds | indices of non-zero entries in weights array, or NULL |
ninds | number of indices of non-zero entries in weights array, -1 if inds is NULL |
scale | additional scaling factor multiplied to all rows |
mircoef | array to store strong CG coefficients: must be of size SCIPgetNVars() |
mirrhs | pointer to store the right hand side of the strong CG row |
cutactivity | pointer to store the activity of the resulting cut |
success | pointer to store whether the returned coefficients are a valid strong CG cut |
cutislocal | pointer to store whether the returned cut is only valid locally |
cutrank | pointer 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().
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.
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.
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
sol | the solution that should be separated, or NULL for LP solution |
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 |
maxmksetcoefs | maximal number of nonzeros allowed in aggregated base inequality |
maxweightrange | maximal valid range max(|weights|)/min(|weights|) of row weights |
minfrac | minimal fractionality of rhs to produce MIR cut for |
maxfrac | maximal fractionality of rhs to produce MIR cut for |
weights | row weights in row summation; some weights might be set to zero |
maxweight | largest magnitude of weights; set to -1.0 if sparsity information is unknown |
weightinds | sparsity pattern of weights; size nrowinds; NULL if sparsity info is unknown |
nweightinds | number of nonzeros in weights; -1 if rowinds is NULL |
rowlensum | total number of nonzeros in used rows (row associated with nonzero weight coefficient); -1 if unknown |
sidetypes | specify row side type (-1 = lhs, 0 = unkown, 1 = rhs) or NULL for automatic choices |
scale | additional scaling factor multiplied to all rows |
mksetcoefs | array to store mixed knapsack set coefficients: size nvars; or NULL |
mksetcoefsvalid | pointer to store whether mixed knapsack set coefficients are valid; or NULL |
mircoef | array to store MIR coefficients: must be of size SCIPgetNVars() |
mirrhs | pointer to store the right hand side of the MIR row |
cutactivity | pointer to store the activity of the resulting cut |
success | pointer to store whether the returned coefficients are a valid MIR cut |
cutislocal | pointer to store whether the returned cut is only valid locally |
cutrank | pointer 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().
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.
scip
is in one of the following stages:
See SCIP_STAGE for a complete list of all possible solving stages.
scip | SCIP data structure |
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: 0 vlb_idx/vub_idx, -1 for global lb/ub or -2 for local lb/ub |
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 all rows |
mksetcoefs | array to store mixed knapsack set coefficients: size nvars; or NULL |
mksetcoefsvalid | pointer to store whether mixed knapsack set coefficients are valid; or NULL |
mircoef | array to store MIR coefficients: must be of size SCIPgetNVars() |
mirrhs | pointer to store the right hand side of the MIR row |
varinds | array of variable indices with a mircoef != 0 |
nvarinds | number of variables indices in varinds array |
minact | pointer to store the minimal activity |
varused | array to store whether a variable has a mircoef != 0 |
success | pointer to store whether the returned coefficients are a valid MIR cut |
islocal | pointer 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().
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
scip | SCIP data structure |
coefs | array to store MIR coefficients: must be of size nvars |
rhs | pointer to store the right hand side of the MIR row |
varused | array to flag variables that appear in the MIR constraint |
varinds | sparsity pattern of non-zero MIR coefficients |
nvarinds | pointer to number of non-zero MIR coefficients |
islocal | is the row only valid locally? |
Definition at line 3305 of file cuts.c.
References cutsCleanupMIRRow(), Scip::set, and Scip::transprob.
Referenced by performDualRayAnalysis().
gets the row of the cut
cut | cut |
Definition at line 357 of file cutpool.c.
References NULL, and SCIP_Cut::row.
Referenced by copyCuts(), and takeCut().
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
cut | cut |
Definition at line 367 of file cutpool.c.
References SCIP_Cut::age, and NULL.
Referenced by takeCut().
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
cut | cut |
Definition at line 381 of file cutpool.c.
References NULL, SCIP_Cut::row, SCIP_Longint, SCIP_Real, SCIProwGetActiveLPCount(), and SCIProwGetNLPsAfterCreation().
Referenced by takeCut().
SCIP_CUT** SCIPcutpoolGetCuts | ( | SCIP_CUTPOOL * | cutpool | ) |
gets array of cuts in the cut pool
cutpool | cut pool |
Definition at line 842 of file cutpool.c.
References SCIP_Cutpool::cuts, and NULL.
Referenced by SCIPgetDelayedPoolCuts(), and SCIPgetPoolCuts().
int SCIPcutpoolGetNCuts | ( | SCIP_CUTPOOL * | cutpool | ) |
get number of cuts in the cut pool
gets number of cuts in the cut pool
cutpool | cut pool |
Definition at line 852 of file cutpool.c.
References SCIP_Cutpool::ncuts, and NULL.
Referenced by SCIPgetNDelayedPoolCuts(), and SCIPgetNPoolCuts().
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
cutpool | cut pool |
Definition at line 862 of file cutpool.c.
References SCIP_Cutpool::maxncuts, and NULL.
Referenced by printSeparatorStatistics().
SCIP_Real SCIPcutpoolGetTime | ( | SCIP_CUTPOOL * | cutpool | ) |
gets time in seconds used for separating cuts from the pool
cutpool | cut pool |
Definition at line 872 of file cutpool.c.
References NULL, SCIP_Cutpool::poolclock, and SCIPclockGetTime().
Referenced by printSeparatorStatistics().
SCIP_Longint SCIPcutpoolGetNCalls | ( | SCIP_CUTPOOL * | cutpool | ) |
get number of times, the cut pool was separated
cutpool | cut pool |
Definition at line 882 of file cutpool.c.
References SCIP_Cutpool::ncalls, and NULL.
Referenced by printSeparatorStatistics().
SCIP_Longint SCIPcutpoolGetNCutsFound | ( | SCIP_CUTPOOL * | cutpool | ) |
get total number of cuts that were separated from the cut pool
cutpool | cut pool |
Definition at line 892 of file cutpool.c.
References SCIP_Cutpool::ncutsfound, and NULL.
Referenced by printSeparatorStatistics().
returns efficacy of the cut with respect to the given primal solution or the current LP solution: e = -feasibility/norm
scip
is in one of the following stages:
scip | SCIP data structure |
sol | primal CIP solution, or NULL for current LP solution |
cut | separated cut |
Definition at line 33738 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().
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
scip
is in one of the following stages:
scip | SCIP data structure |
sol | primal CIP solution, or NULL for current LP solution |
cut | separated cut |
Definition at line 33761 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().
checks, if the given cut's efficacy is larger than the minimal cut efficacy
scip | SCIP data structure |
efficacy | efficacy of the cut |
Definition at line 33779 of file scip.c.
References NULL, SCIPsetIsEfficacious(), SCIPtreeGetCurrentDepth(), Scip::set, and Scip::tree.
Referenced by addCut(), createCGCutCMIR(), createCGCutDirect(), createCGCutStrongCG(), createZerohalfCutFromZerohalfWeightvector(), cutGenerationHeuristic(), extendToCover(), LOPseparate(), process(), SCIP_DECL_SEPAEXECLP(), SCIPcutGenerationHeuristicCmir(), separateCons(), separateIndicators(), separatePerspective(), separateSCIs(), separateSequLiftedExtendedWeightInequality(), separateSequLiftedMinimalCoverInequality(), separateSupLiftedMinimalCoverInequality(), solCutIsViolated(), and TCLIQUE_NEWSOL().
calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
scip | SCIP data structure |
vals | array of values |
nvals | number of values |
Definition at line 33793 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().
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.
scip
is in one of the following stages:
indicates whether a cut is applicable, i.e., will modify the LP when applied
scip
is in one of the following stages:
scip | SCIP data structure |
cut | separated cut |
Definition at line 33851 of file scip.c.
References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPsepastoreIsCutApplicable(), Scip::set, and TRUE.
Referenced by generateCutSol(), processCut(), and separatePoint().
SCIP_RETCODE SCIPaddCut | ( | SCIP * | scip, |
SCIP_SOL * | sol, | ||
SCIP_ROW * | cut, | ||
SCIP_Bool | forcecut, | ||
SCIP_Bool * | infeasible | ||
) |
adds cut to separation storage
scip
is in one of the following stages:
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 33869 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().
SCIP_RETCODE SCIPaddPoolCut | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
if not already existing, adds row to global cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
row | row to remove |
Definition at line 33964 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().
SCIP_RETCODE SCIPdelPoolCut | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
removes the row from the global cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
row | cutting plane to add |
Definition at line 33984 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.
gets current cuts in the global cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34005 of file scip.c.
References checkStage(), Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetCuts(), and TRUE.
Referenced by SCIPcopyCuts().
int SCIPgetNPoolCuts | ( | SCIP * | scip | ) |
gets current number of rows in the global cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34023 of file scip.c.
References checkStage(), Scip::cutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetNCuts(), and TRUE.
Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPcopyCuts().
SCIP_CUTPOOL* SCIPgetGlobalCutpool | ( | SCIP * | scip | ) |
gets the global cut pool used by SCIP
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34041 of file scip.c.
References checkStage(), Scip::cutpool, FALSE, SCIP_CALL_ABORT, and TRUE.
SCIP_RETCODE SCIPcreateCutpool | ( | SCIP * | scip, |
SCIP_CUTPOOL ** | cutpool, | ||
int | agelimit | ||
) |
creates a cut pool
scip
is in one of the following stages:
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 34065 of file scip.c.
References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolCreate(), Scip::set, and TRUE.
SCIP_RETCODE SCIPfreeCutpool | ( | SCIP * | scip, |
SCIP_CUTPOOL ** | cutpool | ||
) |
frees a cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
cutpool | pointer to store cut pool |
Definition at line 34096 of file scip.c.
References checkStage(), FALSE, Scip::lp, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolFree(), Scip::set, and TRUE.
SCIP_RETCODE SCIPaddRowCutpool | ( | SCIP * | scip, |
SCIP_CUTPOOL * | cutpool, | ||
SCIP_ROW * | row | ||
) |
if not already existing, adds row to a cut pool and captures it
scip
is in one of the following stages:
scip | SCIP data structure |
cutpool | cut pool |
row | cutting plane to add |
Definition at line 34117 of file scip.c.
References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolAddRow(), Scip::set, and TRUE.
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
scip
is in one of the following stages:
scip | SCIP data structure |
cutpool | cut pool |
row | cutting plane to add |
Definition at line 34139 of file scip.c.
References checkStage(), FALSE, Scip::mem, SCIP_Mem::probmem, SCIP_CALL, SCIP_OKAY, SCIPcutpoolAddNewRow(), Scip::set, and TRUE.
SCIP_RETCODE SCIPdelRowCutpool | ( | SCIP * | scip, |
SCIP_CUTPOOL * | cutpool, | ||
SCIP_ROW * | row | ||
) |
removes the LP row from a cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
cutpool | cut pool |
row | row to remove |
Definition at line 34162 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.
SCIP_RETCODE SCIPseparateCutpool | ( | SCIP * | scip, |
SCIP_CUTPOOL * | cutpool, | ||
SCIP_RESULT * | result | ||
) |
separates cuts from a cut pool
scip
is in one of the following stages:
scip | SCIP data structure |
cutpool | cut pool |
result | pointer to store the result of the separation call |
Definition at line 34183 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.
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
scip
is in one of the following stages:
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 34213 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.
SCIP_RETCODE SCIPaddDelayedPoolCut | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
if not already existing, adds row to the delayed global cut pool
scip
is the stages SCIP_STAGE_SOLVINGif not already existing, adds row to delayed global cut pool
scip
is the stages SCIP_STAGE_SOLVING scip | SCIP data structure |
row | cutting plane to add |
Definition at line 34243 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().
SCIP_RETCODE SCIPdelDelayedPoolCut | ( | SCIP * | scip, |
SCIP_ROW * | row | ||
) |
removes the row from the delayed global cut pool
scip
is the stages SCIP_STAGE_SOLVING scip | SCIP data structure |
row | cutting plane to add |
Definition at line 34262 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.
gets current cuts in the delayed global cut pool
scip
is the stages SCIP_STAGE_SOLVING scip | SCIP data structure |
Definition at line 34281 of file scip.c.
References checkStage(), Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetCuts(), and TRUE.
Referenced by SCIPcopyCuts().
int SCIPgetNDelayedPoolCuts | ( | SCIP * | scip | ) |
gets current number of rows in the delayed global cut pool
scip
is the stages SCIP_STAGE_SOLVING scip | SCIP data structure |
Definition at line 34297 of file scip.c.
References checkStage(), Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, SCIPcutpoolGetNCuts(), and TRUE.
Referenced by SCIPcopyCuts().
SCIP_CUTPOOL* SCIPgetDelayedGlobalCutpool | ( | SCIP * | scip | ) |
gets the delayed global cut pool used by SCIP
scip
is the stages SCIP_STAGE_SOLVING scip | SCIP data structure |
Definition at line 34313 of file scip.c.
References checkStage(), Scip::delayedcutpool, FALSE, SCIP_CALL_ABORT, and TRUE.
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
scip
is in one of the following stages:
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? |
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 34337 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().
gets the array of cuts currently stored in the separation storage
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34369 of file scip.c.
References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPsepastoreGetCuts(), Scip::sepastore, and TRUE.
int SCIPgetNCuts | ( | SCIP * | scip | ) |
get current number of cuts in the separation storage
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34387 of file scip.c.
References checkStage(), FALSE, SCIP_CALL_ABORT, SCIPsepastoreGetNCuts(), Scip::sepastore, and TRUE.
Referenced by SCIP_DECL_SEPAEXECLP().
SCIP_RETCODE SCIPclearCuts | ( | SCIP * | scip | ) |
clears the separation storage
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34404 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.
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
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34423 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().
returns current factor on cut infeasibility to limit feasibility tolerance for relaxation solver
Gives value of separating/feastolfac parameter.
scip
is in one of the following stages:
scip | SCIP data structure |
Definition at line 34449 of file scip.c.
References checkStage(), FALSE, SCIP_CALL_ABORT, SCIP_Set::sepa_feastolfac, Scip::set, and TRUE.
Referenced by enforceConstraint(), and separatePoint().