Scippy

SCIP

Solving Constraint Integer Programs

type_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-2024 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 type_branch.h
26 * @ingroup TYPEDEFINITIONS
27 * @brief type definitions for branching rules
28 * @author Tobias Achterberg
29 *
30 * This file defines the interface for branching rules implemented in C.
31 *
32 * - \ref BRANCH "Instructions for implementing a branching rule"
33 * - \ref PRIMALHEURISTICS "List of available branching rule"
34 * - \ref scip::ObjBranchrule "C++ wrapper class"
35 */
36
37/** @defgroup DEFPLUGINS_BRANCH Default branching rules
38 * @ingroup DEFPLUGINS
39 * @brief implementation files (.c files) of the default branching rules of SCIP
40 */
41
42/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
43
44#ifndef __SCIP_TYPE_BRANCH_H__
45#define __SCIP_TYPE_BRANCH_H__
46
47#include "scip/def.h"
48#include "scip/type_result.h"
49#include "scip/type_scip.h"
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55typedef struct SCIP_BranchCand SCIP_BRANCHCAND; /**< branching candidate storage */
56typedef struct SCIP_Branchrule SCIP_BRANCHRULE; /**< branching method data structure */
57typedef struct SCIP_BranchruleData SCIP_BRANCHRULEDATA; /**< branching method specific data */
58typedef struct SCIP_Treemodel SCIP_TREEMODEL; /**< parameter storage for the Treemodel branching rules */
59
60
61/** copy method for branchrule plugins (called when SCIP copies plugins)
62 *
63 * input:
64 * - scip : SCIP main data structure
65 * - branchrule : the branching rule itself
66 */
67#define SCIP_DECL_BRANCHCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule)
68
69/** destructor of branching method to free user data (called when SCIP is exiting)
70 *
71 * input:
72 * - scip : SCIP main data structure
73 * - branchrule : the branching rule itself
74 */
75#define SCIP_DECL_BRANCHFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule)
76
77/** initialization method of branching rule (called after problem was transformed)
78 *
79 * input:
80 * - scip : SCIP main data structure
81 * - branchrule : the branching rule itself
82 */
83#define SCIP_DECL_BRANCHINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule)
84
85/** deinitialization method of branching rule (called before transformed problem is freed)
86 *
87 * input:
88 * - scip : SCIP main data structure
89 * - branchrule : the branching rule itself
90 */
91#define SCIP_DECL_BRANCHEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule)
92
93/** solving process initialization method of branching rule (called when branch and bound process is about to begin)
94 *
95 * This method is called when the presolving was finished and the branch and bound process is about to begin.
96 * The branching rule may use this call to initialize its branch and bound specific data.
97 *
98 * input:
99 * - scip : SCIP main data structure
100 * - branchrule : the branching rule itself
101 */
102#define SCIP_DECL_BRANCHINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule)
103
104/** solving process deinitialization method of branching rule (called before branch and bound process data is freed)
105 *
106 * This method is called before the branch and bound process is freed.
107 * The branching rule should use this call to clean up its branch and bound data.
108 *
109 * input:
110 * - scip : SCIP main data structure
111 * - branchrule : the branching rule itself
112 */
113#define SCIP_DECL_BRANCHEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule)
114
115/** branching execution method for fractional LP solutions
116 *
117 * input:
118 * - scip : SCIP main data structure
119 * - branchrule : the branching rule itself
120 * - allowaddcons : is the branching rule allowed to add constraints to the current node in order to cut off the
121 * current solution instead of creating a branching?
122 * - result : pointer to store the result of the branching call
123 *
124 * possible return values for *result (if more than one applies, the first in the list should be used):
125 * - SCIP_CUTOFF : the current node was detected to be infeasible
126 * - SCIP_CONSADDED : an additional constraint (e.g. a conflict constraint) was generated; this result code must not be
127 * returned, if allowaddcons is FALSE
128 * - SCIP_REDUCEDDOM : a domain was reduced that rendered the current LP solution infeasible
129 * - SCIP_SEPARATED : a cutting plane was generated
130 * - SCIP_BRANCHED : branching was applied
131 * - SCIP_DIDNOTFIND : the branching rule searched, but did not find a branching
132 * - SCIP_DIDNOTRUN : the branching rule was skipped
133 */
134#define SCIP_DECL_BRANCHEXECLP(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result)
135
136
137/** branching execution method for external candidates
138 *
139 * input:
140 * - scip : SCIP main data structure
141 * - branchrule : the branching rule itself
142 * - allowaddcons : is the branching rule allowed to add constraints to the current node in order to cut off the
143 * current solution instead of creating a branching?
144 * - result : pointer to store the result of the branching call
145 *
146 * possible return values for *result (if more than one applies, the first in the list should be used):
147 * - SCIP_CUTOFF : the current node was detected to be infeasible
148 * - SCIP_CONSADDED : an additional constraint (e.g. a conflict constraint) was generated; this result code must not be
149 * returned, if allowaddcons is FALSE
150 * - SCIP_REDUCEDDOM : a domain was reduced that rendered the current pseudo solution infeasible
151 * - SCIP_BRANCHED : branching was applied
152 * - SCIP_DIDNOTFIND : the branching rule searched, but did not find a branching
153 * - SCIP_DIDNOTRUN : the branching rule was skipped
154 */
155#define SCIP_DECL_BRANCHEXECEXT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result)
156
157
158/** branching execution method for not completely fixed pseudo solutions
159 *
160 * input:
161 * - scip : SCIP main data structure
162 * - branchrule : the branching rule itself
163 * - allowaddcons : is the branching rule allowed to add constraints to the current node in order to cut off the
164 * current solution instead of creating a branching?
165 * - result : pointer to store the result of the branching call
166 *
167 * possible return values for *result (if more than one applies, the first in the list should be used):
168 * - SCIP_CUTOFF : the current node was detected to be infeasible
169 * - SCIP_CONSADDED : an additional constraint (e.g. a conflict constraint) was generated; this result code must not be
170 * returned, if allowaddcons is FALSE
171 * - SCIP_REDUCEDDOM : a domain was reduced that rendered the current pseudo solution infeasible
172 * - SCIP_BRANCHED : branching was applied
173 * - SCIP_DIDNOTFIND : the branching rule searched, but did not find a branching
174 * - SCIP_DIDNOTRUN : the branching rule was skipped
175 */
176#define SCIP_DECL_BRANCHEXECPS(x) SCIP_RETCODE x (SCIP* scip, SCIP_BRANCHRULE* branchrule, SCIP_Bool allowaddcons, SCIP_RESULT* result)
177
178#ifdef __cplusplus
179}
180#endif
181
182#endif
common defines and data types used in all packages of SCIP
struct SCIP_BranchruleData SCIP_BRANCHRULEDATA
Definition: type_branch.h:57
result codes for SCIP callback methods
type definitions for SCIP's main datastructure