Scippy

SCIP

Solving Constraint Integer Programs

sepa_cmir.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2016 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file sepa_cmir.h
17  * @ingroup SEPARATORS
18  * @brief complemented mixed integer rounding cuts separator (Marchand's version)
19  * @author Kati Wolter
20  * @author Tobias Achterberg
21  */
22 
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
24 
25 #ifndef __SCIP_SEPA_CMIR_H__
26 #define __SCIP_SEPA_CMIR_H__
27 
28 
29 #include "scip/scip.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /** Performs the cut generation heuristic of the c-MIR separation algorithm, i.e., tries to generate a c-MIR cut which is
36  * valid for the mixed knapsack set corresponding to the current aggregated constraint. Cuts will only be added here if
37  * no pointer to store best scaling factor delta is given.
38  */
39 extern
41  SCIP* scip, /**< SCIP data structure */
42  SCIP_SEPA* sepa, /**< separator */
43  SCIP_SOL* sol, /**< the solution that should be separated, or NULL for LP solution */
44  SCIP_Real* varsolvals, /**< LP solution value of all variables in LP */
45  int maxtestdelta, /**< maximal number of different deltas to try (-1: unlimited) */
46  SCIP_Real* rowweights, /**< weight of rows in aggregated row */
47  SCIP_Real maxweight, /**< largest magnitude of weights; set to -1.0 if sparsity information is
48  * unknown */
49  int* weightinds, /**< sparsity pattern of weights; size nrowinds; NULL if sparsity info is
50  * unknown */
51  int nweightinds, /**< number of nonzeros in weights; -1 if rowinds is NULL */
52  int rowlensum, /**< total number of non-zeros in used rows (row associated with nonzero weight coefficient); -1 if unknown */
53  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
54  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
55  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
56  SCIP_Bool fixintegralrhs, /**< should complementation tried to be adjusted such that rhs gets fractional? */
57  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
58  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
59  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce MIR cut for */
60  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce MIR cut for */
61  SCIP_Bool trynegscaling, /**< should negative values also be tested in scaling? */
62  SCIP_Bool cutremovable, /**< should the cut be removed from the LP due to aging or cleanup? */
63  const char* cutclassname, /**< name of cut class to use for row names */
64  SCIP_Bool* cutoff, /**< whether a cutoff has been detected */
65  int* ncuts, /**< pointer to count the number of generated cuts */
66  SCIP_Real* delta, /**< pointer to store best delta found; NULL, if cut should be added here */
67  SCIP_Bool* deltavalid /**< pointer to store whether best delta value is valid or NULL */
68  );
69 
70 /** creates the cmir separator and includes it in SCIP */
71 extern
73  SCIP* scip /**< SCIP data structure */
74  );
75 
76 #ifdef __cplusplus
77 }
78 #endif
79 
80 #endif
SCIP_RETCODE SCIPcutGenerationHeuristicCmir(SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_Real *varsolvals, int maxtestdelta, SCIP_Real *rowweights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Bool trynegscaling, SCIP_Bool cutremovable, const char *cutclassname, SCIP_Bool *cutoff, int *ncuts, SCIP_Real *delta, SCIP_Bool *deltavalid)
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_RETCODE SCIPincludeSepaCmir(SCIP *scip)
struct Scip SCIP
Definition: type_scip.h:30
struct SCIP_Sepa SCIP_SEPA
Definition: type_sepa.h:37
struct SCIP_Sol SCIP_SOL
Definition: type_sol.h:45
#define SCIP_Bool
Definition: def.h:53
#define SCIP_Real
Definition: def.h:127
SCIP callable library.