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 (c) 2002-2025 Zuse Institute Berlin (ZIB) */
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
42extern "C" {
43#endif
44
45/**@addtogroup PublicBranchRuleMethods
46 *
47 * @{
48 */
49
50/** compares two branching rules w. r. to their priority */
51SCIP_EXPORT
52SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp);
53
54/** comparison method for sorting branching rules w.r.t. to their name */
55SCIP_EXPORT
56SCIP_DECL_SORTPTRCOMP(SCIPbranchruleCompName);
57
58/** gets user data of branching rule */
59SCIP_EXPORT
61 SCIP_BRANCHRULE* branchrule /**< branching rule */
62 );
63
64/** sets user data of branching rule; user has to free old data in advance! */
65SCIP_EXPORT
67 SCIP_BRANCHRULE* branchrule, /**< branching rule */
68 SCIP_BRANCHRULEDATA* branchruledata /**< new branching rule user data */
69 );
70
71/** marks this branching rule as safe to use in exact solving mode */
72SCIP_EXPORT
74 SCIP_BRANCHRULE* branchrule /**< branching rule */
75 );
76
77/** gets name of branching rule */
78SCIP_EXPORT
79const char* SCIPbranchruleGetName(
80 SCIP_BRANCHRULE* branchrule /**< branching rule */
81 );
82
83/** gets description of branching rule */
84SCIP_EXPORT
85const char* SCIPbranchruleGetDesc(
86 SCIP_BRANCHRULE* branchrule /**< branching rule */
87 );
88
89/** gets priority of branching rule */
90SCIP_EXPORT
92 SCIP_BRANCHRULE* branchrule /**< branching rule */
93 );
94
95/** gets maximal depth level, up to which this branching rule should be used (-1 for no limit) */
96SCIP_EXPORT
98 SCIP_BRANCHRULE* branchrule /**< branching rule */
99 );
100
101/** gets maximal relative distance from current node's dual bound to primal bound for applying branching rule */
102SCIP_EXPORT
104 SCIP_BRANCHRULE* branchrule /**< branching rule */
105 );
106
107/** gets time in seconds used in this branching rule for setting up for next stages */
108SCIP_EXPORT
110 SCIP_BRANCHRULE* branchrule /**< branching rule */
111 );
112
113/** gets time in seconds used in this branching rule */
114SCIP_EXPORT
116 SCIP_BRANCHRULE* branchrule /**< branching rule */
117 );
118
119/** gets the total number of times, the branching rule was called on an LP solution */
120SCIP_EXPORT
122 SCIP_BRANCHRULE* branchrule /**< branching rule */
123 );
124
125/** gets the total number of times, the branching rule was called on external candidates */
126SCIP_EXPORT
128 SCIP_BRANCHRULE* branchrule /**< branching rule */
129 );
130
131/** gets the total number of times, the branching rule was called on a pseudo solution */
132SCIP_EXPORT
134 SCIP_BRANCHRULE* branchrule /**< branching rule */
135 );
136
137/** gets the total number of times, the branching rule detected a cutoff */
138SCIP_EXPORT
140 SCIP_BRANCHRULE* branchrule /**< branching rule */
141 );
142
143/** gets the total number of cuts, the branching rule separated */
144SCIP_EXPORT
146 SCIP_BRANCHRULE* branchrule /**< branching rule */
147 );
148
149/** gets the total number of constraints, the branching rule added to the respective local nodes (not counting constraints
150 * that were added to the child nodes as branching decisions)
151 */
152SCIP_EXPORT
154 SCIP_BRANCHRULE* branchrule /**< branching rule */
155 );
156
157/** gets the total number of domain reductions, the branching rule found */
158SCIP_EXPORT
160 SCIP_BRANCHRULE* branchrule /**< branching rule */
161 );
162
163/** gets the total number of children, the branching rule created */
164SCIP_EXPORT
166 SCIP_BRANCHRULE* branchrule /**< branching rule */
167 );
168
169/** is branching rule initialized? */
170SCIP_EXPORT
172 SCIP_BRANCHRULE* branchrule /**< branching rule */
173 );
174
175/** @} */
176
177#ifdef __cplusplus
178}
179#endif
180
181#endif
common defines and data types used in all packages of SCIP
#define SCIP_Longint
Definition: def.h:141
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_Bool SCIPbranchruleIsInitialized(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2220
SCIP_Longint SCIPbranchruleGetNDomredsFound(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2200
SCIP_Longint SCIPbranchruleGetNPseudoCalls(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2158
int SCIPbranchruleGetMaxdepth(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2062
SCIP_Longint SCIPbranchruleGetNConssFound(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2190
SCIP_DECL_SORTPTRCOMP(SCIPbranchruleComp)
Definition: branch.c:1253
SCIP_Longint SCIPbranchruleGetNLPCalls(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2138
const char * SCIPbranchruleGetName(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2018
SCIP_BRANCHRULEDATA * SCIPbranchruleGetData(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1886
SCIP_Longint SCIPbranchruleGetNChildren(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2210
SCIP_Real SCIPbranchruleGetTime(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2128
void SCIPbranchruleMarkExact(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1907
int SCIPbranchruleGetPriority(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2038
SCIP_Real SCIPbranchruleGetSetupTime(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2118
SCIP_Real SCIPbranchruleGetMaxbounddist(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2084
const char * SCIPbranchruleGetDesc(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2028
SCIP_Longint SCIPbranchruleGetNCutoffs(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2168
SCIP_Longint SCIPbranchruleGetNExternCalls(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2148
void SCIPbranchruleSetData(SCIP_BRANCHRULE *branchrule, SCIP_BRANCHRULEDATA *branchruledata)
Definition: branch.c:1896
SCIP_Longint SCIPbranchruleGetNCutsFound(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2178
type definitions for branching rules
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
Definition: type_branch.h:57
type definitions for miscellaneous datastructures