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-2014 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 boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
48  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
49  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
50  SCIP_Bool fixintegralrhs, /**< should complementation tried to be adjusted such that rhs gets fractional? */
51  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
52  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
53  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce MIR cut for */
54  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce MIR cut for */
55  SCIP_Bool trynegscaling, /**< should negative values also be tested in scaling? */
56  SCIP_Bool cutremovable, /**< should the cut be removed from the LP due to aging or cleanup? */
57  const char* cutclassname, /**< name of cut class to use for row names */
58  SCIP_Bool* cutoff, /**< whether a cutoff has been detected */
59  int* ncuts, /**< pointer to count the number of generated cuts */
60  SCIP_Real* delta, /**< pointer to store best delta found; NULL, if cut should be added here */
61  SCIP_Bool* deltavalid /**< pointer to store whether best delta value is valid or NULL */
62  );
63 
64 /** creates the cmir separator and includes it in SCIP */
65 extern
67  SCIP* scip /**< SCIP data structure */
68  );
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 
74 #endif
75