Scippy

SCIP

Solving Constraint Integer Programs

type_nodesel.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2014 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file type_nodesel.h
17  * @ingroup TYPEDEFINITIONS
18  * @brief type definitions for node selectors
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_TYPE_NODESEL_H__
25 #define __SCIP_TYPE_NODESEL_H__
26 
27 #include "scip/def.h"
28 #include "scip/type_retcode.h"
29 #include "scip/type_tree.h"
30 #include "scip/type_scip.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 typedef struct SCIP_NodePQ SCIP_NODEPQ; /**< node priority queue */
37 typedef struct SCIP_Nodesel SCIP_NODESEL; /**< node selector data structure */
38 typedef struct SCIP_NodeselData SCIP_NODESELDATA; /**< node selector specific data */
39 
40 
41 /** copy method for node selector plugins (called when SCIP copies plugins)
42  *
43  * input:
44  * - scip : SCIP main data structure
45  * - nodesel : the node selector itself
46  */
47 #define SCIP_DECL_NODESELCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
48 
49 
50 /** destructor of node selector to free user data (called when SCIP is exiting)
51  *
52  * input:
53  * - scip : SCIP main data structure
54  * - nodesel : the node selector itself
55  */
56 #define SCIP_DECL_NODESELFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
57 
58 /** initialization method of node selector (called after problem was transformed)
59  *
60  * input:
61  * - scip : SCIP main data structure
62  * - nodesel : the node selector itself
63  */
64 #define SCIP_DECL_NODESELINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
65 
66 /** deinitialization method of node selector (called before transformed problem is freed)
67  *
68  * input:
69  * - scip : SCIP main data structure
70  * - nodesel : the node selector itself
71  */
72 #define SCIP_DECL_NODESELEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
73 
74 /** solving process initialization method of node selector (called when branch and bound process is about to begin)
75  *
76  * This method is called when the presolving was finished and the branch and bound process is about to begin.
77  * The node selector may use this call to initialize its branch and bound specific data.
78  *
79  * input:
80  * - scip : SCIP main data structure
81  * - nodesel : the node selector itself
82  */
83 #define SCIP_DECL_NODESELINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
84 
85 /** solving process deinitialization method of node selector (called before branch and bound process data is freed)
86  *
87  * This method is called before the branch and bound process is freed.
88  * The node selector should use this call to clean up its branch and bound data.
89  *
90  * input:
91  * - scip : SCIP main data structure
92  * - nodesel : the node selector itself
93  */
94 #define SCIP_DECL_NODESELEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel)
95 
96 /** node selection method of node selector
97  *
98  * This method is called to select the next leaf of the branch and bound tree to be processed.
99  *
100  * input:
101  * - scip : SCIP main data structure
102  * - nodesel : the node selector itself
103  * - selnode : pointer to store the selected node
104  *
105  * possible return values for *selnode:
106  * - NULL : problem is solved, because tree is empty
107  * - non-NULL: node to be solved next
108  */
109 #define SCIP_DECL_NODESELSELECT(x) SCIP_RETCODE x (SCIP* scip, SCIP_NODESEL* nodesel, SCIP_NODE** selnode)
110 
111 /** node comparison method of node selector
112  *
113  * This method is called to compare two nodes regarding their order in the node priority queue.
114  *
115  * input:
116  * - scip : SCIP main data structure
117  * - nodesel : the node selector itself
118  * - node1 : first node to compare
119  * - node2 : second node to compare
120  *
121  * possible return values:
122  * - value < 0: node1 comes before (is better than) node2
123  * - value = 0: both nodes are equally good
124  * - value > 0: node2 comes after (is worse than) node2
125  */
126 #define SCIP_DECL_NODESELCOMP(x) int x (SCIP* scip, SCIP_NODESEL* nodesel, SCIP_NODE* node1, SCIP_NODE* node2)
127 
128 #ifdef __cplusplus
129 }
130 #endif
131 
132 #endif
133