Scippy

SCIP

Solving Constraint Integer Programs

pub_branch.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 2002-2022 Zuse Institute Berlin */
7 /* */
8 /* Licensed under the Apache License, Version 2.0 (the "License"); */
9 /* you may not use this file except in compliance with the License. */
10 /* You may obtain a copy of the License at */
11 /* */
12 /* http://www.apache.org/licenses/LICENSE-2.0 */
13 /* */
14 /* Unless required by applicable law or agreed to in writing, software */
15 /* distributed under the License is distributed on an "AS IS" BASIS, */
16 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17 /* See the License for the specific language governing permissions and */
18 /* limitations under the License. */
19 /* */
20 /* You should have received a copy of the Apache-2.0 license */
21 /* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22 /* */
23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24 
25 /**@file pub_branch.h
26  * @ingroup PUBLICCOREAPI
27  * @brief public methods for branching rules
28  * @author Tobias Achterberg
29  */
30 
31 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32 
33 #ifndef __SCIP_PUB_BRANCH_H__
34 #define __SCIP_PUB_BRANCH_H__
35 
36 
37 #include "scip/def.h"
38 #include "scip/type_misc.h"
39 #include "scip/type_branch.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /**@addtogroup PublicBranchRuleMethods
46  *
47  * @{
48  */
49 
50 /** compares two branching rules w. r. to their priority */
51 SCIP_EXPORT
52 SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp);
53 
54 /** comparison method for sorting branching rules w.r.t. to their name */
55 SCIP_EXPORT
56 SCIP_DECL_SORTPTRCOMP(SCIPbranchruleCompName);
57 
58 /** gets user data of branching rule */
59 SCIP_EXPORT
61  SCIP_BRANCHRULE* branchrule /**< branching rule */
62  );
63 
64 /** sets user data of branching rule; user has to free old data in advance! */
65 SCIP_EXPORT
67  SCIP_BRANCHRULE* branchrule, /**< branching rule */
68  SCIP_BRANCHRULEDATA* branchruledata /**< new branching rule user data */
69  );
70 
71 /** gets name of branching rule */
72 SCIP_EXPORT
73 const char* SCIPbranchruleGetName(
74  SCIP_BRANCHRULE* branchrule /**< branching rule */
75  );
76 
77 /** gets description of branching rule */
78 SCIP_EXPORT
79 const char* SCIPbranchruleGetDesc(
80  SCIP_BRANCHRULE* branchrule /**< branching rule */
81  );
82 
83 /** gets priority of branching rule */
84 SCIP_EXPORT
86  SCIP_BRANCHRULE* branchrule /**< branching rule */
87  );
88 
89 /** gets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
90 SCIP_EXPORT
92  SCIP_BRANCHRULE* branchrule /**< branching rule */
93  );
94 
95 /** gets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
96 SCIP_EXPORT
98  SCIP_BRANCHRULE* branchrule /**< branching rule */
99  );
100 
101 /** gets time in seconds used in this branching rule for setting up for next stages */
102 SCIP_EXPORT
104  SCIP_BRANCHRULE* branchrule /**< branching rule */
105  );
106 
107 /** gets time in seconds used in this branching rule */
108 SCIP_EXPORT
110  SCIP_BRANCHRULE* branchrule /**< branching rule */
111  );
112 
113 /** gets the total number of times, the branching rule was called on an LP solution */
114 SCIP_EXPORT
116  SCIP_BRANCHRULE* branchrule /**< branching rule */
117  );
118 
119 /** gets the total number of times, the branching rule was called on external candidates */
120 SCIP_EXPORT
122  SCIP_BRANCHRULE* branchrule /**< branching rule */
123  );
124 
125 /** gets the total number of times, the branching rule was called on a pseudo solution */
126 SCIP_EXPORT
128  SCIP_BRANCHRULE* branchrule /**< branching rule */
129  );
130 
131 /** gets the total number of times, the branching rule detected a cutoff */
132 SCIP_EXPORT
134  SCIP_BRANCHRULE* branchrule /**< branching rule */
135  );
136 
137 /** gets the total number of cuts, the branching rule separated */
138 SCIP_EXPORT
140  SCIP_BRANCHRULE* branchrule /**< branching rule */
141  );
142 
143 /** gets the total number of constraints, the branching rule added to the respective local nodes (not counting constraints
144  * that were added to the child nodes as branching decisions)
145  */
146 SCIP_EXPORT
148  SCIP_BRANCHRULE* branchrule /**< branching rule */
149  );
150 
151 /** gets the total number of domain reductions, the branching rule found */
152 SCIP_EXPORT
154  SCIP_BRANCHRULE* branchrule /**< branching rule */
155  );
156 
157 /** gets the total number of children, the branching rule created */
158 SCIP_EXPORT
160  SCIP_BRANCHRULE* branchrule /**< branching rule */
161  );
162 
163 /** is branching rule initialized? */
164 SCIP_EXPORT
166  SCIP_BRANCHRULE* branchrule /**< branching rule */
167  );
168 
169 /** @} */
170 
171 #ifdef __cplusplus
172 }
173 #endif
174 
175 #endif
SCIP_BRANCHRULEDATA * SCIPbranchruleGetData(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1849
SCIP_Bool SCIPbranchruleIsInitialized(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2173
SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp)
Definition: branch.c:1220
type definitions for miscellaneous datastructures
SCIP_Real SCIPbranchruleGetMaxbounddist(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2037
SCIP_Longint SCIPbranchruleGetNChildren(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2163
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
Definition: type_branch.h:57
const char * SCIPbranchruleGetDesc(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1981
SCIP_Longint SCIPbranchruleGetNDomredsFound(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2153
SCIP_Longint SCIPbranchruleGetNCutoffs(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2121
SCIP_Longint SCIPbranchruleGetNExternCalls(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2101
type definitions for branching rules
SCIP_Real SCIPbranchruleGetSetupTime(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2071
SCIP_Longint SCIPbranchruleGetNConssFound(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2143
SCIP_Longint SCIPbranchruleGetNLPCalls(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2091
SCIP_Real SCIPbranchruleGetTime(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2081
SCIP_Longint SCIPbranchruleGetNCutsFound(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2131
#define SCIP_Bool
Definition: def.h:93
void SCIPbranchruleSetData(SCIP_BRANCHRULE *branchrule, SCIP_BRANCHRULEDATA *branchruledata)
Definition: branch.c:1859
int SCIPbranchruleGetMaxdepth(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2015
SCIP_Longint SCIPbranchruleGetNPseudoCalls(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2111
#define SCIP_Real
Definition: def.h:186
const char * SCIPbranchruleGetName(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1971
#define SCIP_Longint
Definition: def.h:171
common defines and data types used in all packages of SCIP
int SCIPbranchruleGetPriority(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1991