Scippy

GCG

Branch-and-Price & Column Generation for Everyone

heur_masterdiving.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 heur_masterdiving.h
29  * @ingroup DIVINGHEURISTICS
30  * @brief primal heuristic interface for LP diving heuristics on the master variables
31  * @author Christian Puchert
32  */
33 
34 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
35 
36 #ifndef GCG_HEUR_MASTERDIVING_H__
37 #define GCG_HEUR_MASTERDIVING_H__
38 
39 
40 #include "scip/scip.h"
41 #include "type_masterdiving.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /** gets diving rule specific data of a diving heuristic */
48 SCIP_EXPORT
50  SCIP_HEUR* heur /**< primal heuristic */
51  );
52 
53 /** sets diving rule specific data of a diving heuristic */
54 SCIP_EXPORT
56  SCIP_HEUR* heur, /**< primal heuristic */
57  GCG_DIVINGDATA* divingdata /**< diving rule specific data */
58  );
59 
60 /** creates a master diving heuristic and includes it in GCG */
61 SCIP_EXPORT
62 SCIP_RETCODE GCGincludeDivingHeurMaster(
63  SCIP* scip, /**< SCIP data structure */
64  SCIP_HEUR** heur, /**< pointer to diving heuristic */
65  const char* name, /**< name of primal heuristic */
66  const char* desc, /**< description of primal heuristic */
67  char dispchar, /**< display character of primal heuristic */
68  int priority, /**< priority of the primal heuristic */
69  int freq, /**< frequency for calling primal heuristic */
70  int freqofs, /**< frequency offset for calling primal heuristic */
71  int maxdepth, /**< maximal depth level to call heuristic at (-1: no limit) */
72  GCG_DECL_DIVINGFREE ((*divingfree)), /**< destructor of diving heuristic */
73  GCG_DECL_DIVINGINIT ((*divinginit)), /**< initialize diving heuristic */
74  GCG_DECL_DIVINGEXIT ((*divingexit)), /**< deinitialize diving heuristic */
75  GCG_DECL_DIVINGINITSOL ((*divinginitsol)), /**< solving process initialization method of diving heuristic */
76  GCG_DECL_DIVINGEXITSOL ((*divingexitsol)), /**< solving process deinitialization method of diving heuristic */
77  GCG_DECL_DIVINGINITEXEC ((*divinginitexec)), /**< execution initialization method of diving heuristic */
78  GCG_DECL_DIVINGEXITEXEC ((*divingexitexec)), /**< execution deinitialization method of diving heuristic */
79  GCG_DECL_DIVINGSELECTVAR ((*divingselectvar)), /**< variable selection method of diving heuristic */
80  GCG_DIVINGDATA* divingdata /**< diving rule specific data (or NULL) */
81  );
82 
83 /** creates event handler for masterdiving event */
84 SCIP_EXPORT
86  SCIP* scip /**< SCIP data structure */
87  );
88 
89 #ifdef __cplusplus
90 }
91 #endif
92 
93 #endif
SCIP_EXPORT GCG_DIVINGDATA * GCGheurGetDivingDataMaster(SCIP_HEUR *heur)
#define GCG_DECL_DIVINGSELECTVAR(x)
#define GCG_DECL_DIVINGINIT(x)
SCIP_EXPORT SCIP_RETCODE SCIPincludeEventHdlrMasterdiving(SCIP *scip)
SCIP_EXPORT SCIP_RETCODE GCGincludeDivingHeurMaster(SCIP *scip, SCIP_HEUR **heur, const char *name, const char *desc, char dispchar, int priority, int freq, int freqofs, int maxdepth, GCG_DECL_DIVINGFREE((*divingfree)), GCG_DECL_DIVINGINIT((*divinginit)), GCG_DECL_DIVINGEXIT((*divingexit)), GCG_DECL_DIVINGINITSOL((*divinginitsol)), GCG_DECL_DIVINGEXITSOL((*divingexitsol)), GCG_DECL_DIVINGINITEXEC((*divinginitexec)), GCG_DECL_DIVINGEXITEXEC((*divingexitexec)), GCG_DECL_DIVINGSELECTVAR((*divingselectvar)), GCG_DIVINGDATA *divingdata)
#define GCG_DECL_DIVINGEXIT(x)
#define GCG_DECL_DIVINGEXITEXEC(x)
type definitions for GCG diving heuristics on the master variables
#define GCG_DECL_DIVINGINITEXEC(x)
#define GCG_DECL_DIVINGEXITSOL(x)
SCIP_EXPORT void GCGheurSetDivingDataMaster(SCIP_HEUR *heur, GCG_DIVINGDATA *divingdata)
#define GCG_DECL_DIVINGINITSOL(x)
#define GCG_DECL_DIVINGFREE(x)