cuts.h
Go to the documentation of this file.
24 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
48 /** perform activity based coefficient tigthening on the given cut; returns TRUE if the cut was detected
59 int* cutinds, /**< array of the problem indices of variables with a non-zero coefficient in the cut */
104 /** Removes a given variable @p var from position @p pos the aggregation row and updates the right-hand side according
105 * to sign of the coefficient, i.e., rhs -= coef * bound, where bound = lb if coef >= 0 and bound = ub, otherwise.
107 * @note: The choice of global or local bounds depend on the validity (global or local) of the aggregation row.
109 * @note: The list of non-zero indices will be updated by swapping the last non-zero index to @p pos.
120 /** add the objective function with right-hand side @p rhs and scaled by @p scale to the aggregation row */
143 /** calculates the efficacy norm of the given aggregation row, which depends on the "separating/efficacynorm" parameter
145 * @return the efficacy norm of the given aggregation row, which depends on the "separating/efficacynorm" parameter
171 int negslack, /**< should negative slack variables be used? (0: no, 1: only for integral rows, 2: yes) */
210 SCIP_Real* minabsrowweight, /**< pointer to store smallest absolute value of weights used for aggregating rows */
211 SCIP_Real* maxabsrowweight /**< pointer to store largest absolute value of weights used for aggregating rows */
214 /** gets the array of corresponding variable problem indices for each non-zero in the aggregation row */
279 * aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot
282 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
295 SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
297 SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
298 SCIP_Bool fixintegralrhs, /**< should complementation tried to be adjusted such that rhs gets fractional? */
299 int* boundsfortrans, /**< bounds that should be used for transformed variables: vlb_idx/vub_idx,
302 SCIP_BOUNDTYPE* boundtypesfortrans, /**< type of bounds that should be used for transformed variables;
310 int* cutinds, /**< array to store the problem indices of variables with a non-zero coefficient in the cut */
315 SCIP_Bool* success /**< pointer to store whether the returned coefficients are a valid MIR cut */
319 * aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot
320 * participate in an MIR cut. The function uses a cut generation heuristic which tries different scaling
327 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
340 SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
342 SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
344 int* boundsfortrans, /**< bounds that should be used for transformed variables: vlb_idx/vub_idx,
347 SCIP_BOUNDTYPE* boundtypesfortrans, /**< type of bounds that should be used for transformed variables;
354 int* cutinds, /**< array to store the problem indices of variables with a non-zero coefficient in the cut */
356 SCIP_Real* cutefficacy, /**< pointer to store efficacy of best cut; only cuts that are strictly better than the value of
363 /** calculates a lifted simple generalized flow cover cut out of the weighted sum of LP rows given by an aggregation row; the
364 * aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot
368 * Gu, Z., Nemhauser, G. L., & Savelsbergh, M. W. (1999). Lifted flow cover inequalities for mixed 0-1 integer programs.
371 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
384 SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
385 SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
389 int* cutinds, /**< array to store the problem indices of variables with a non-zero coefficient in the cut */
397 /** calculates a lifted knapsack cover cut out of the weighted sum of LP rows given by an aggregation row; the
398 * aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot
402 * Letchford, A. N., & Souli, G. (2019). On lifted cover inequalities: A new lifting procedure with unusual properties.
405 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
417 SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
421 int* cutinds, /**< array to store the problem indices of variables with a non-zero coefficient in the cut */
429 /** calculates a strong CG cut out of the weighted sum of LP rows given by an aggregation row; the
430 * aggregation row must not contain non-zero weights for modifiable rows, because these rows cannot
433 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
446 SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
448 SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
455 int* cutinds, /**< array to store the problem indices of variables with a non-zero coefficient in the cut */
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)
Definition: cuts.c:8866
type definitions for miscellaneous datastructures
Definition: struct_scip.h:59
SCIP_RETCODE SCIPaggrRowAddRow(SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_ROW *row, SCIP_Real weight, int sidetype)
Definition: cuts.c:1790
Definition: struct_cuts.h:31
void SCIPaggrRowCancelVarWithBound(SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_VAR *var, int pos, SCIP_Bool *valid)
Definition: cuts.c:1874
Definition: struct_var.h:198
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)
Definition: cuts.c:4124
type definitions for cuts
SCIP_RETCODE SCIPcalcKnapsackCover(SCIP *scip, SCIP_SOL *sol, 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)
Definition: cuts.c:7955
type definitions for return codes for SCIP methods
void SCIPaggrRowPrint(SCIP *scip, SCIP_AGGRROW *aggrrow, FILE *file)
Definition: cuts.c:1707
SCIP_Bool SCIPaggrRowHasRowBeenAdded(SCIP_AGGRROW *aggrrow, SCIP_ROW *row)
Definition: cuts.c:2437
type definitions for LP management
Definition: struct_sol.h:64
SCIP_RETCODE SCIPaggrRowAddObjectiveFunction(SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_Real rhs, SCIP_Real scale)
Definition: cuts.c:1933
type definitions for SCIP's main datastructure
void SCIPaggrRowRemoveZeros(SCIP *scip, SCIP_AGGRROW *aggrrow, SCIP_Bool useglbbounds, SCIP_Bool *valid)
Definition: cuts.c:2390
type definitions for problem variables
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)
Definition: cuts.c:2004
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)
Definition: cuts.c:3792
SCIP_Real SCIPaggrRowCalcEfficacyNorm(SCIP *scip, SCIP_AGGRROW *aggrrow)
Definition: cuts.c:2079
SCIP_Bool SCIPcutsTightenCoefficients(SCIP *scip, SCIP_Bool cutislocal, SCIP_Real *cutcoefs, SCIP_Real *cutrhs, int *cutinds, int *cutnnz, int *nchgcoefs)
Definition: cuts.c:1462
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)
Definition: cuts.c:7329
Definition: struct_lp.h:192
SCIP_Real * SCIPaggrRowGetRowWeights(SCIP_AGGRROW *aggrrow)
Definition: cuts.c:2426
type definitions for storing primal CIP solutions
SCIP_RETCODE SCIPaggrRowCopy(SCIP *scip, SCIP_AGGRROW **aggrrow, SCIP_AGGRROW *source)
Definition: cuts.c:1744
void SCIPaggrRowGetAbsWeightRange(SCIP_AGGRROW *aggrrow, SCIP_Real *minabsrowweight, SCIP_Real *maxabsrowweight)
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)
Definition: cuts.c:2198
SCIP_RETCODE SCIPaggrRowCreate(SCIP *scip, SCIP_AGGRROW **aggrrow)
Definition: cuts.c:1654
static INLINE SCIP_Real SCIPaggrRowGetProbvarValue(SCIP_AGGRROW *aggrrow, int probindex)
Definition: cuts.h:242
common defines and data types used in all packages of SCIP
Definition: objbenders.h:33
static INLINE SCIP_Real SCIPaggrRowGetValue(SCIP_AGGRROW *aggrrow, int i)
Definition: cuts.h:228
struct definitions for cuts