Scippy

GCG

Branch-and-Price & Column Generation for Everyone

xternal.c
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 xternal.c
29  * @brief documentation page for GCG's C-API (no other pages)
30  */
31 
32 /**@defgroup PUBLICAPI Public API of GCG
33  * @brief methods and headers of the public C-API of \GCG
34  *
35  * The public API of \GCG is separated into a Core API and a Plugin API.
36  * The first contains all methods that can be accessed by including the header gcg.h.
37  * The Plugin API is a collection of methods that are provided by the default plugins of \GCG.
38  * The Plugin API is provided by gcgplugins.c."
39  *
40  *
41  */
42 
43 /**@defgroup PUBLICCOREAPI Core API
44 * @ingroup PUBLICAPI
45 * @brief methods and headers of the plugin-independent C-API provided by \GCG.
46 *
47 * In order facilitate the navigation through the core API of \GCG, it is structured into different modules.
48 */
49 
50 /**@defgroup DATASTRUCTURES Data Structures
51  * @ingroup PUBLICCOREAPI
52  * @brief Commonly used data structures
53  */
54 
55 /**@defgroup TYPEDEFINITIONS Type Definitions
56  * @ingroup PUBLICCOREAPI
57  * @brief Type definitions and callback declarations
58  */
59 
60 
61 /**@defgroup BLISS Bliss
62  * @ingroup PUBLICCOREAPI
63  * @brief Methods concerning BLISS
64  */
65 
66 /**@defgroup DECOMP Decomposition
67  * @ingroup PUBLICCOREAPI
68  * @brief Public methods concerning the decomposition.
69  *
70  */
71 
72 /**@defgroup HEURISTICS Heuristics
73  * @ingroup PUBLICCOREAPI
74  * @brief Public methods concerning heuristics.
75  */
76 
77 /**@defgroup PRICING_PUB Pricing
78  * @ingroup PUBLICCOREAPI
79  * @brief All pricing-related public functionalities.
80  *
81  */
82 
83 /**@defgroup PRICINGJOB Pricing Job
84  * @ingroup PRICING_PUB
85  */
86 
87 /**@defgroup PRICINGPROB Pricing Problem
88  * @ingroup PRICING_PUB
89  */
90 
91 /**@defgroup SEPARATORS_PUB Separators
92  * @ingroup PUBLICCOREAPI
93  * @brief Public methods for separators.
94  */
95 
96 /**@defgroup MISC Miscellaneous
97  * @ingroup PUBLICCOREAPI
98  * @brief Public methods from the scip_misc.c file.
99  */
100 
101 
102 
103 
104 /**@defgroup PUBLICPLUGINAPI Plugin API of GCG
105  * @ingroup PUBLICAPI
106  * @brief core API extensions provided by the default plugins of \GCG.
107  *
108  * All of the modules listed below provide functions that are allowed to be used by user-written extensions of \GCG.
109  */
110 
111  /**@defgroup BENDERS Benders' Decomposition
112  * @ingroup PUBLICPLUGINAPI
113  * @brief This page contains a description of all methods and files provided by the Benders' decomposition.
114  *
115  */
116 
117  /**@defgroup BRANCHINGRULES Branching Rules
118  * @ingroup PUBLICPLUGINAPI
119  * @brief This page contains a list of all branching rule which are currently available.
120  *
121  * A detailed description what a branching rule does and how to add a branching rule to \GCG can be found
122  * \ref own-branching-rule "here".
123  */
124 
125  /**@defgroup CONSHDLRS Constraint Handler
126  * @ingroup PUBLICPLUGINAPI
127  * @brief This page contains a list of all constraint handlers which are currently available.
128  *
129  * A detailed description what a constraint handler does and how to add a constraint handler to \GCG can be found
130  * in the SCIP documentation.
131  */
132 
133  /**@defgroup DETECTORS Detectors
134  * @ingroup PUBLICPLUGINAPI
135  * @brief This page contains a list of all detectors which are currently available.
136  *
137  * A detailed description what a detector does and how to add a detector to \GCG can be found
138  * \ref detection "here".
139  */
140 
141  /**@defgroup CLASSIFIERS Classifiers
142  * @ingroup PUBLICPLUGINAPI
143  * @brief This page contains a list of all classifiers which are currently available.
144  *
145  * A detailed description what a classifier does can be found \ref classifiers "here"
146  * and a guide on how to add a classifier to \GCG can be found \ref own-classifier "here".
147  *
148  */
149 
150  /**@defgroup DIALOGS Dialogs
151  * @ingroup PUBLICPLUGINAPI
152  * @brief This page contains a list of all dialogs which are currently available.
153  *
154  * A detailed description what a dialog does and how to add a dialog to \GCG can be found
155  * n the SCIP documentation.
156  */
157 
158  /**@defgroup DISPLAYS Displays
159  * @ingroup PUBLICPLUGINAPI
160  * @brief This page contains a list of all displays (output columns) which are currently available.
161  *
162  * A detailed description what a display does and how to add a display to \GCG can be found
163  * in the SCIP documentation.
164  *
165  */
166 
167  /**@defgroup FILEREADERS File Readers
168  * @ingroup PUBLICPLUGINAPI
169  * @brief This page contains a list of all file readers which are currently available.
170  *
171  * A detailed description what a file reader does and how to add a file reader to \GCG can be found
172  * in the SCIP documentation.
173  */
174 
175  /**@defgroup NODESELECTORS Node Selectors
176  * @ingroup PUBLICPLUGINAPI
177  * @brief This page contains a list of all node selectors which are currently available.
178  *
179  * A detailed description what a node selector does and how to add a node selector to \GCG can be found
180  * in the SCIP documentation.
181  */
182 
183  /**@defgroup PRICING Pricing
184  * @ingroup PUBLICPLUGINAPI
185  * @brief This page contains a list of all pricers, pricing solvers and the pricing jobs and problem structures.
186  *
187  */
188 
189  /**@defgroup PRICERS Pricers
190  * @ingroup PRICING
191  * @brief This page contains a list of all pricers which are currently available.
192  *
193  * Per default there exist no variable pricer. A detailed description what a variable pricer does and how to add a
194  * variable pricer to \GCG can be found in the SCIP documentation.
195  */
196 
197  /**@defgroup PRICINGSOLVERS Pricing Solvers
198  * @ingroup PRICING
199  * @brief This page contains a list of all pricing solvers which are currently available.
200  *
201  * A detailed description what a pricing solver does and how to add a pricing solver to \GCG can be found
202  * \ref pricing "here".
203  */
204 
205  /**@defgroup PRIMALHEURISTICS Primal Heuristics
206  * @ingroup PUBLICPLUGINAPI
207  * @brief This page contains a list of all primal heuristics which are currently available.
208  *
209  * A detailed description what a primal heuristic does and how to add a primal heuristic to \GCG can be found
210  * \ref own-primal-heuristic "here".
211  */
212 
213  /**@defgroup DIVINGHEURISTICS Diving Heuristics
214  * @ingroup PRIMALHEURISTICS
215  * @brief This page contains a list of all diving heuristics which are currently available.
216  *
217  * A detailed description what a diving heuristic does can be found
218  * \ref diving-heuristics "here".
219  */
220 
221  /**@defgroup RELAXATORS Relaxators
222  * @ingroup PUBLICPLUGINAPI
223  * @brief This page contains a list of all relaxators which are currently available.
224  */
225 
226  /**@defgroup SEPARATORS Separators
227  * @ingroup PUBLICPLUGINAPI
228  * @brief This page contains a list of all separators which are currently available.
229  *
230  * A detailed description what a separator does and how to add a separator to \GCG can be found
231  * in the SCIP documentation.
232  */
233 
234  /**@defgroup TYPEDEFINITIONS Type Definitions
235  * @ingroup PUBLICCOREAPI
236  * This page lists headers containing branch-and-price specific public methods provided by \GCG.
237  *
238  * All of the headers listed below include functions that are allowed to be called by external users. Besides those
239  * functions it is also valid to call methods that are listed in one of the headers of the (default) \GCG plug-ins; in
240  * particular, this holds for relax_gcg.h and pricer_gcg.h.
241  *
242  */
243 
244  /**\@defgroup INTERNALAPI Internal API of \GCG
245  * \@brief internal API methods that should only be used by the core of \GCG
246  *
247  * This page lists the header files of internal API methods. In contrast to the public API, these internal methods
248  * should not be used by user plugins and extensions of \GCG. Please consult
249  * \ref PUBLICCOREAPI "the Core API" and \ref PUBLICPLUGINAPI "Plugin API" for the complete API available to user plugins.
250  *
251  */