Scippy

GCG

Branch-and-Price & Column Generation for Everyone

struct_detector.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 struct_detector.h
29  * @ingroup DATASTRUCTURES
30  * @brief data structures for detectors
31  * @author Martin Bergner
32  * @author Christian Puchert
33  * @author Michael Bastubbe
34  */
35 
36 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
37 
38 #ifndef GCG_STRUCT_DETECTOR_H__
39 #define GCG_STRUCT_DETECTOR_H__
40 
41 #include "type_detector.h"
42 
43 
44 
45 /** detector data structure */
46 struct DEC_Detector {
47  const char* name; /**< name of the detector */
48  DEC_DETECTORDATA* decdata; /**< custom data structure of the detectors */
49  char decchar; /**< display character of detector */
50  const char* description; /**< description of the detector */
51  int freqCallRound; /** frequency the detector gets called in detection loop ,ie it is called in round r if and only if minCallRound <= r <= maxCallRound AND (r - minCallRound) mod freqCallRound == 0 */
52  int maxCallRound; /** last round the detector gets called */
53  int minCallRound; /** first round the detector gets called (offset in detection loop) */
54  int freqCallRoundOriginal; /** frequency the detector gets called in detection loop while detecting the original problem */
55  int maxCallRoundOriginal; /** last round the detector gets called while detecting the original problem */
56  int minCallRoundOriginal; /** first round the detector gets calles (offset in detection loop) while detecting the original problem */
57  int priority; /**< detector priority */
58  SCIP_Bool enabled; /**< flag to indicate whether detector is enabled */
59  SCIP_Bool enabledFinishing; /**< flag to indicate whether finishing is enabled */
60  SCIP_Bool enabledPostprocessing; /**< flag to indicate whether finishing is enabled */
61  SCIP_Bool skip; /**< should detector be skipped if other detectors found decompositions */
62  SCIP_Bool usefulRecall; /** is it useful to call this detector on a descendant of the propagated partialdec */
63  SCIP_Bool overruleemphasis; /**< should the emphasis settings be overruled */
64  int ndecomps; /**< number of decompositions the detector has worked on */
65  int ncompletedecomps; /**< number of complete decompositions the detector has worked on (including decompositions that were finished by other detectors) */
66  SCIP_Real dectime; /**< time the detector took to find decompositions */
67 
68  DEC_DECL_FREEDETECTOR((*freeDetector)); /**< destructor of detector */
69  DEC_DECL_INITDETECTOR((*initDetector)); /**< initialization method of detector */
70  DEC_DECL_EXITDETECTOR((*exitDetector)); /**< deinitialization method of detector */
71  DEC_DECL_EXITDETECTOR((*exitDetection)); /**< deinitialization method of detector */
72  DEC_DECL_PROPAGATEPARTIALDEC((*propagatePartialdec)); /**< propagation method of detector (or NULL) */
73  DEC_DECL_FINISHPARTIALDEC((*finishPartialdec)); /**< finish method of detector (or NULL) */
74  DEC_DECL_POSTPROCESSPARTIALDEC((*postprocessPartialdec)); /**< postprocess method of detector (or NULL) */
75  DEC_DECL_SETPARAMAGGRESSIVE((*setParamAggressive)); /**< set method for aggressive parameters of detector (or NULL) */
76  DEC_DECL_SETPARAMDEFAULT((*setParamDefault)); /**< set method for default parameters of detector (or NULL) */
77  DEC_DECL_SETPARAMFAST((*setParamFast)); /**< set method for fast parameters of detector (or NULL) */
78 
79 
80 };
81 
82 
83 #endif
SCIP_Bool skip
DEC_DECL_POSTPROCESSPARTIALDEC((*postprocessPartialdec))
SCIP_Real dectime
type definitions for detectors in GCG projects
SCIP_Bool enabledFinishing
SCIP_Bool usefulRecall
DEC_DECL_SETPARAMDEFAULT((*setParamDefault))
DEC_DECL_INITDETECTOR((*initDetector))
DEC_DECL_SETPARAMFAST((*setParamFast))
DEC_DECL_SETPARAMAGGRESSIVE((*setParamAggressive))
const char * description
SCIP_Bool overruleemphasis
DEC_DETECTORDATA * decdata
int freqCallRoundOriginal
int minCallRoundOriginal
SCIP_Bool enabledPostprocessing
DEC_DECL_PROPAGATEPARTIALDEC((*propagatePartialdec))
const char * name
DEC_DECL_FINISHPARTIALDEC((*finishPartialdec))
DEC_DECL_FREEDETECTOR((*freeDetector))
DEC_DECL_EXITDETECTOR((*exitDetector))
SCIP_Bool enabled
int maxCallRoundOriginal