Scippy

GCG

Branch-and-Price & Column Generation for Everyone

type_decomp.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program */
4 /* GCG --- Generic Column Generation */
5 /* a Dantzig-Wolfe decomposition based extension */
6 /* of the branch-cut-and-price framework */
7 /* SCIP --- Solving Constraint Integer Programs */
8 /* */
9 /* Copyright (C) 2010-2021 Operations Research, RWTH Aachen University */
10 /* Zuse Institute Berlin (ZIB) */
11 /* */
12 /* This program is free software; you can redistribute it and/or */
13 /* modify it under the terms of the GNU Lesser General Public License */
14 /* as published by the Free Software Foundation; either version 3 */
15 /* of the License, or (at your option) any later version. */
16 /* */
17 /* This program is distributed in the hope that it will be useful, */
18 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
19 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
20 /* GNU Lesser General Public License for more details. */
21 /* */
22 /* You should have received a copy of the GNU Lesser General Public License */
23 /* along with this program; if not, write to the Free Software */
24 /* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.*/
25 /* */
26 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27 
28 /**@file type_decomp.h
29  * @ingroup DECOMP
30  * @ingroup TYPEDEFINITIONS
31  * @brief type definitions for decomposition information in GCG projects
32  * @author Martin Bergner
33  */
34 
35 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
36 
37 #ifndef GCG_TYPE_DECOMP_H__
38 #define GCG_TYPE_DECOMP_H__
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 typedef struct DecDecomp DEC_DECOMP; /**< decomposition structure */
45 
46 /** type of the decomposition */
47 enum Dectype
48 {
49  DEC_DECTYPE_UNKNOWN = 0, /**< unknown structure (used for initialization) */
50  DEC_DECTYPE_ARROWHEAD = 1, /**< arrowhead structure (linking variables and constraints) */
51  DEC_DECTYPE_STAIRCASE = 2, /**< staircase structure (linking variables between consecutive blocks) */
52  DEC_DECTYPE_DIAGONAL = 3, /**< block diagonal structure (no linking variables and constraints) */
53  DEC_DECTYPE_BORDERED = 4 /**< bordered block diagonal structure (linking constraints only) */
54 };
55 
56 typedef enum Dectype DEC_DECTYPE; /**< decomposition type */
57 
58 /** the decomposition mode */
59 enum Decmode
60 {
61  DEC_DECMODE_DANTZIGWOLFE = 0, /**< Datizig-Wolfe reformulation */
62  DEC_DECMODE_BENDERS = 1, /**< Benders' decomposition */
63  DEC_DECMODE_ORIGINAL = 2, /**< the original problem will be solved without decomposition */
64  DEC_DECMODE_AUTO = 3, /**< the best of either Dantzig-Wolfe or Benders' will be applied */
65  DEC_DECMODE_UNKNOWN = 4 /**< the mode can not be determined from the given information */
66 };
67 
68 typedef enum Decmode DEC_DECMODE; /**< decomposition mode */
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 
74 #endif
@ DEC_DECMODE_BENDERS
Definition: type_decomp.h:62
@ DEC_DECTYPE_BORDERED
Definition: type_decomp.h:53
@ DEC_DECTYPE_ARROWHEAD
Definition: type_decomp.h:50
@ DEC_DECTYPE_UNKNOWN
Definition: type_decomp.h:49
@ DEC_DECMODE_ORIGINAL
Definition: type_decomp.h:63
Dectype
Definition: type_decomp.h:47
@ DEC_DECMODE_DANTZIGWOLFE
Definition: type_decomp.h:61
enum Decmode DEC_DECMODE
Definition: type_decomp.h:68
@ DEC_DECTYPE_STAIRCASE
Definition: type_decomp.h:51
Decmode
Definition: type_decomp.h:59
enum Dectype DEC_DECTYPE
Definition: type_decomp.h:56
@ DEC_DECTYPE_DIAGONAL
Definition: type_decomp.h:52
@ DEC_DECMODE_UNKNOWN
Definition: type_decomp.h:65
@ DEC_DECMODE_AUTO
Definition: type_decomp.h:64