Scippy

GCG

Branch-and-Price & Column Generation for Everyone

type_origdiving.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_origdiving.h
29  * @ingroup TYPEDEFINITIONS
30  * @brief type definitions for GCG diving heuristics on the original variables
31  * @author Christian Puchert
32  */
33 
34 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
35 
36 #ifndef __SCIP_TYPE_ORIGDIVING_H__
37 #define __SCIP_TYPE_ORIGDIVING_H__
38 
39 #include "scip/type_scip.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 typedef struct GCG_DivingData GCG_DIVINGDATA; /**< locally defined diving data */
46 
47 
48 /** destructor of diving heuristic to free user data (called when GCG is exiting)
49  *
50  * input:
51  * - scip : SCIP main data structure
52  * - heur : the diving heuristic itself
53  */
54 #define GCG_DECL_DIVINGFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
55 
56 /** initialization method of diving heuristic (called after problem was transformed)
57  *
58  * input:
59  * - scip : SCIP main data structure
60  * - heur : the diving heuristic itself
61  */
62 #define GCG_DECL_DIVINGINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
63 
64 /** deinitialization method of diving heuristic (called before transformed problem is freed)
65  *
66  * input:
67  * - scip : SCIP main data structure
68  * - heur : the diving heuristic itself
69  */
70 #define GCG_DECL_DIVINGEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
71 
72 /** solving process initialization method of diving heuristic (called when branch and bound process is about to begin)
73  *
74  * This method is called when the presolving was finished and the branch and bound process is about to begin.
75  * The diving heuristic may use this call to initialize its branch and bound specific data.
76  *
77  * input:
78  * - scip : SCIP main data structure
79  * - heur : the diving heuristic itself
80  */
81 #define GCG_DECL_DIVINGINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
82 
83 /** solving process deinitialization method of primal heuristic (called before branch and bound process data is freed)
84  *
85  * This method is called before the branch and bound process is freed.
86  * The diving heuristic should use this call to clean up its branch and bound data.
87  *
88  * input:
89  * - scip : SCIP main data structure
90  * - heur : the diving heuristic itself
91  */
92 #define GCG_DECL_DIVINGEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
93 
94 /** execution initialization method of diving heuristic (called when execution of diving heuristic is about to begin)
95  *
96  * This method is called when the execution of the diving heuristic starts, before the diving loop.
97  * The diving heuristic may use this call to collect data which is specific to this call of the heuristic.
98  *
99  * input:
100  * - scip : SCIP main data structure
101  * - heur : the diving heuristic itself
102  */
103 #define GCG_DECL_DIVINGINITEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
104 
105 /** execution deinitialization method of diving heuristic (called when execution data is freed)
106  *
107  * This method is called before the execution of the heuristic stops.
108  * The diving heuristic should use this call to clean up its execution specific data.
109  *
110  * input:
111  * - scip : SCIP main data structure
112  * - heur : the diving heuristic itself
113  */
114 #define GCG_DECL_DIVINGEXITEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur)
115 
116 /** variable selection method of diving heuristic
117  *
118  * Selects a master variable to dive on
119  *
120  * input:
121  * - scip : SCIP main data structure
122  * - heur : the diving heuristic itself
123  * - tabulist : an array containing variables that must not be chosen
124  * - tabulistsize : the size of the array
125  * - bestcand : pointer to store the SCIP_VAR* returned by the selection rule
126  * - bestcandmayround : pointer to store whether the variable may be rounded without losing LP feasibility
127  * - bestcandroundup : pointer to store whether the variable is to be rounded up
128  */
129 #define GCG_DECL_DIVINGSELECTVAR(x) SCIP_RETCODE x (SCIP* scip, SCIP_HEUR* heur, SCIP_VAR** tabulist, int tabulistsize, SCIP_VAR** bestcand, SCIP_Bool* bestcandmayround, SCIP_Bool* bestcandroundup)
130 
131 #ifdef __cplusplus
132 }
133 #endif
134 
135 #endif