Scippy

    SCIP

    Solving Constraint Integer Programs

    struct_tree.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 struct_tree.h
    26 * @ingroup INTERNALAPI
    27 * @brief data structures for branch and bound tree
    28 * @author Tobias Achterberg
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_STRUCT_TREE_H__
    34#define __SCIP_STRUCT_TREE_H__
    35
    36
    37#include "lpi/type_lpi.h"
    38#include "scip/def.h"
    39#include "scip/type_cons.h"
    40#include "scip/type_history.h"
    41#include "scip/type_lp.h"
    42#include "scip/type_nodesel.h"
    43#include "scip/type_prop.h"
    44#include "scip/type_tree.h"
    45#include "scip/type_var.h"
    46
    47
    48#ifdef __cplusplus
    49extern "C" {
    50#endif
    51
    52/** probing node, possibly with solved LP, where bounds and constraints have been changed,
    53 * and rows and columns might have been added
    54 */
    56{
    57 SCIP_LPISTATE* lpistate; /**< LP state information */
    58 SCIP_LPINORMS* lpinorms; /**< LP pricing norms information */
    59 int ninitialcols; /**< number of LP columns before the node was processed */
    60 int ninitialrows; /**< number of LP rows before the node was processed */
    61 int ncols; /**< total number of columns of this node's LP */
    62 int nrows; /**< total number of rows of this node's LP */
    63 SCIP_VAR** origobjvars; /**< variables whose objective function coefficients have changed */
    64 SCIP_Real* origobjvals; /**< original objective function coefficients */
    65 int nchgdobjs; /**< number of changed objective coefficients */
    66 SCIP_Bool lpwasprimfeas; /**< primal feasibility of saved LP state information */
    67 SCIP_Bool lpwasprimchecked; /**< primal feasibility check state of saved LP state information */
    68 SCIP_Bool lpwasdualfeas; /**< dual feasibility of saved LP state information */
    69 SCIP_Bool lpwasdualchecked; /**< dual feasibility check state of saved LP state information */
    70};
    71
    72/** sibling information (should not exceed the size of a pointer) */
    74{
    75 int arraypos; /**< position of node in the siblings array */
    76};
    77
    78/** child information (should not exceed the size of a pointer) */
    80{
    81 int arraypos; /**< position of node in the children array */
    82};
    83
    84/** leaf information (should not exceed the size of a pointer) */
    86{
    87 SCIP_NODE* lpstatefork; /**< fork/subroot node defining the LP state of the leaf */
    88};
    89
    90/** fork without LP solution, where only bounds and constraints have been changed */
    92{
    93 int nchildren; /**< number of children of this parent node */
    94};
    95
    96/** fork without LP solution, where bounds and constraints have been changed, and rows and columns were added */
    98{
    99 SCIP_COL** addedcols; /**< array with pointers to new columns added at this node into the LP */
    100 SCIP_ROW** addedrows; /**< array with pointers to new rows added at this node into the LP */
    101 int naddedcols; /**< number of columns added at this node */
    102 int naddedrows; /**< number of rows added at this node */
    103 int nchildren; /**< number of children of this parent node */
    104};
    105
    106/** fork with solved LP, where bounds and constraints have been changed, and rows and columns were added */
    108{
    109 SCIP_COL** addedcols; /**< array with pointers to new columns added at this node into the LP */
    110 SCIP_ROW** addedrows; /**< array with pointers to new rows added at this node into the LP */
    111 SCIP_LPISTATE* lpistate; /**< LP state information */
    112 SCIP_Real lpobjval; /**< the LP objective value for that node, needed to compute the pseudo costs correctly */
    113 int naddedcols; /**< number of columns added at this node */
    114 int naddedrows; /**< number of rows added at this node */
    115 int nlpistateref; /**< number of times, the LP state is needed */
    116 unsigned int nchildren:28; /**< number of children of this parent node */
    117 unsigned int lpwasprimfeas:1; /**< primal feasibility of saved LP state information */
    118 unsigned int lpwasprimchecked:1; /**< primal feasibility check state of saved LP state information */
    119 unsigned int lpwasdualfeas:1; /**< dual feasibility of saved LP state information */
    120 unsigned int lpwasdualchecked:1; /**< dual feasibility check state of saved LP state information */
    121};
    122
    123/** fork with solved LP, where bounds and constraints have been changed, and rows and columns were removed and added */
    125{
    126 SCIP_COL** cols; /**< array with pointers to the columns in the same order as in the LP */
    127 SCIP_ROW** rows; /**< array with pointers to the rows in the same order as in the LP */
    128 SCIP_LPISTATE* lpistate; /**< LP state information */
    129 SCIP_Real lpobjval; /**< the LP objective value for that node, needed to compute the pseudo costs correctly */
    130 int ncols; /**< number of columns in the LP */
    131 int nrows; /**< number of rows in the LP */
    132 int nlpistateref; /**< number of times, the LP state is needed */
    133 unsigned int nchildren:30; /**< number of children of this parent node */
    134 unsigned int lpwasprimfeas:1; /**< primal feasibility of saved LP state information */
    135 unsigned int lpwasprimchecked:1; /**< primal feasibility check state of saved LP state information */
    136 unsigned int lpwasdualfeas:1; /**< dual feasibility of saved LP state information */
    137 unsigned int lpwasdualchecked:1; /**< dual feasibility check state of saved LP state information */
    138};
    139
    140/** node data structure */
    142{
    143 SCIP_Longint number; /**< successively assigned number of the node */
    144 SCIP_Real lowerbound; /**< lower (dual) bound of subtree */
    145 SCIP_RATIONAL* lowerboundexact; /**< lower (dual) rational bound of subtree */
    146 SCIP_Real estimate; /**< estimated value of feasible solution in subtree */
    147 union
    148 {
    149 SCIP_PROBINGNODE* probingnode; /**< data for probing nodes */
    150 SCIP_SIBLING sibling; /**< data for sibling nodes */
    151 SCIP_CHILD child; /**< data for child nodes */
    152 SCIP_LEAF leaf; /**< data for leaf nodes */
    153 SCIP_JUNCTION junction; /**< data for junction nodes */
    154 SCIP_PSEUDOFORK* pseudofork; /**< data for pseudo fork nodes */
    155 SCIP_FORK* fork; /**< data for fork nodes */
    156 SCIP_SUBROOT* subroot; /**< data for subroot nodes */
    158 SCIP_NODE* parent; /**< parent node in the tree */
    159 SCIP_CONSSETCHG* conssetchg; /**< constraint set changes at this node or NULL */
    160 SCIP_DOMCHG* domchg; /**< domain changes at this node or NULL */
    161 unsigned int depth:30; /**< depth in the tree */
    162 unsigned int reoptid:32; /**< unique id to identify the node during reoptimization */
    163 unsigned int reopttype:3; /**< node type during reoptimization */
    164 unsigned int repropsubtreemark:9;/**< subtree repropagation marker for subtree repropagation */
    165 unsigned int active:1; /**< is node in the path to the current node? */
    166 unsigned int cutoff:1; /**< should the node and all sub nodes be cut off from the tree? */
    167 unsigned int reprop:1; /**< should propagation be applied again, if the node is on the active path? */
    168 unsigned int nodetype:4; /**< type of node */
    169};
    170
    171/** bound change information for pending bound changes */
    173{
    174 SCIP_NODE* node; /**< node to add bound change to */
    175 SCIP_VAR* var; /**< variable to change the bounds for */
    176 SCIP_Real newbound; /**< new value for bound */
    177 SCIP_RATIONAL* newboundexact; /**< new value for exact bound, or NULL if not needed */
    178 SCIP_BOUNDTYPE boundtype; /**< type of bound: lower or upper bound */
    179 SCIP_CONS* infercons; /**< constraint that deduced the bound change, or NULL */
    180 SCIP_PROP* inferprop; /**< propagator that deduced the bound change, or NULL */
    181 int inferinfo; /**< user information for inference to help resolving the conflict */
    182 SCIP_Bool probingchange; /**< is the bound change a temporary setting due to probing? */
    183};
    184
    185/** branch and bound tree */
    187{
    188 SCIP_NODE* root; /**< root node of the tree */
    189 SCIP_NODEPQ* leaves; /**< leaves of the tree */
    190 SCIP_NODE** path; /**< array of nodes storing the active path from root to current node, which
    191 * is usually the focus or a probing node; in case of a cut off, the path
    192 * may already end earlier */
    193 SCIP_NODE* focusnode; /**< focus node: the node that is stored together with its children and
    194 * siblings in the tree data structure; the focus node is the currently
    195 * processed node; it doesn't need to be active all the time, because it
    196 * may be cut off and the active path stops at the cut off node */
    197 SCIP_NODE* focuslpfork; /**< LP defining pseudofork/fork/subroot of the focus node */
    198 SCIP_NODE* focuslpstatefork; /**< LP state defining fork/subroot of the focus node */
    199 SCIP_NODE* focussubroot; /**< subroot of the focus node's sub tree */
    200 SCIP_NODE* probingroot; /**< root node of the current probing path, or NULL */
    201 SCIP_NODE** children; /**< array with children of the focus node */
    202 SCIP_NODE** siblings; /**< array with siblings of the focus node */
    203 SCIP_Real* childrenprio; /**< array with node selection priorities of children */
    204 SCIP_Real* siblingsprio; /**< array with node selection priorities of siblings */
    205 SCIP_VAR** divebdchgvars[2]; /**< two arrays to store variables for branching */
    206 SCIP_BRANCHDIR* divebdchgdirs[2]; /**< arrays to hold the directions for diving */
    207 SCIP_Real* divebdchgvals[2]; /**< arrays to store bound change values for diving */
    208 int* pathnlpcols; /**< array with number of LP columns for each problem in active path (except
    209 * newly added columns of the focus node and the current probing node) */
    210 int* pathnlprows; /**< array with number of LP rows for each problem in active path (except
    211 * newly added rows of the focus node and the current probing node) */
    212 SCIP_LPISTATE* probinglpistate; /**< LP state information before probing started */
    213 SCIP_LPISTATE* focuslpistate; /**< LP state information of focus node */
    214 SCIP_LPINORMS* probinglpinorms; /**< LP pricing norms information before probing started */
    215 SCIP_PENDINGBDCHG* pendingbdchgs; /**< array of pending bound changes, or NULL */
    216 SCIP_Real* probdiverelaxsol; /**< array with stored original relaxation solution during diving or probing */
    217 SCIP_Real probinglpobjval; /**< lp objective value before probing started */
    218 int nprobdiverelaxsol; /**< size of probdiverelaxsol */
    219 SCIP_Longint focuslpstateforklpcount; /**< LP number of last solved LP in current LP state fork, or -1 if unknown */
    220 SCIP_Longint lastbranchparentid; /**< last node id/number of branching parent */
    221 int divebdchgsize[2]; /**< holds the two sizes of the dive bound change information */
    222 int ndivebdchanges[2]; /**< current number of stored dive bound changes for the next depth */
    223 int pendingbdchgssize; /**< size of pendingbdchgs array */
    224 int npendingbdchgs; /**< number of pending bound changes */
    225 int childrensize; /**< available slots in children vector */
    226 int nchildren; /**< number of children of focus node (number of used slots in children vector) */
    227 int siblingssize; /**< available slots in siblings vector */
    228 int nsiblings; /**< number of siblings of focus node (number of used slots in siblings vector) */
    229 int pathlen; /**< length of the current path */
    230 int pathsize; /**< number of available slots in path arrays */
    231 int effectiverootdepth; /**< the effective root depth which was already enforced */
    232 int updatedeffectiverootdepth; /**< first depth of node with at least two children or focus node */
    233 int correctlpdepth; /**< depth to which current LP data corresponds to LP data of active path */
    234 int cutoffdepth; /**< depth of first node in active path that is marked being cutoff */
    235 int repropdepth; /**< depth of first node in active path that has to be propagated again */
    236 int repropsubtreecount; /**< cyclicly increased counter to create markers for subtree repropagation */
    237 int probingsumchgdobjs; /**< number of changed objective coefficients in all probing nodes */
    238 SCIP_Bool focusnodehaslp; /**< is LP being processed in the focus node? */
    239 SCIP_Bool probingnodehaslp; /**< was the LP solved (at least once) in the current probing node? */
    240 SCIP_Bool focuslpconstructed; /**< was the LP of the focus node already constructed? */
    241 SCIP_Bool cutoffdelayed; /**< the treeCutoff() call was delayed because of diving and has to be executed */
    242 SCIP_Bool probinglpwasflushed;/**< was the LP flushed before we entered the probing mode? */
    243 SCIP_Bool probinglpwassolved; /**< was the LP solved before we entered the probing mode? */
    244 SCIP_Bool probingloadlpistate;/**< must the LP state be reloaded because of a backtrack in probing? */
    245 SCIP_Bool probinglpwasrelax; /**< was the LP a valid relaxation before we entered the probing mode? */
    246 SCIP_Bool probingsolvedlp; /**< was the LP solved during probing mode, i.e., was SCIPsolveProbingLP() called? */
    247 SCIP_Bool forcinglpmessage; /**< was forcing LP solving message be posted */
    248 SCIP_Bool probingobjchanged; /**< was the objective function changed during probing? */
    249 SCIP_Bool sbprobing; /**< is the probing mode used for strong branching? */
    250 SCIP_Bool probinglpwasprimfeas;/**< primal feasibility when probing started */
    251 SCIP_Bool probinglpwasprimchecked;/**< primal feasibility has been checked when probing started */
    252 SCIP_Bool probinglpwasdualfeas;/**< dual feasibility when probing started */
    253 SCIP_Bool probinglpwasdualchecked;/**< dual feasibility has been check when probing started */
    254 SCIP_Bool probinglphadsafebound;/**< lp had a proven dual bound when probing started? */
    255 SCIP_Bool probdiverelaxstored; /**< was a relax solution stored before diving or probing ? */
    256 SCIP_Bool probdiverelaxincludeslp; /**< did the stored relaxation solution include all lp cuts ? */
    257};
    258
    259#ifdef __cplusplus
    260}
    261#endif
    262
    263#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
    int arraypos
    Definition: struct_tree.h:81
    unsigned int lpwasprimfeas
    Definition: struct_tree.h:117
    SCIP_COL ** addedcols
    Definition: struct_tree.h:109
    unsigned int nchildren
    Definition: struct_tree.h:116
    unsigned int lpwasprimchecked
    Definition: struct_tree.h:118
    unsigned int lpwasdualfeas
    Definition: struct_tree.h:119
    int nlpistateref
    Definition: struct_tree.h:115
    int naddedrows
    Definition: struct_tree.h:114
    SCIP_Real lpobjval
    Definition: struct_tree.h:112
    int naddedcols
    Definition: struct_tree.h:113
    SCIP_LPISTATE * lpistate
    Definition: struct_tree.h:111
    SCIP_ROW ** addedrows
    Definition: struct_tree.h:110
    unsigned int lpwasdualchecked
    Definition: struct_tree.h:120
    SCIP_NODE * lpstatefork
    Definition: struct_tree.h:87
    unsigned int reoptid
    Definition: struct_tree.h:162
    union SCIP_Node::@21 data
    unsigned int repropsubtreemark
    Definition: struct_tree.h:164
    unsigned int reprop
    Definition: struct_tree.h:167
    SCIP_DOMCHG * domchg
    Definition: struct_tree.h:160
    SCIP_PROBINGNODE * probingnode
    Definition: struct_tree.h:149
    SCIP_PSEUDOFORK * pseudofork
    Definition: struct_tree.h:154
    SCIP_Longint number
    Definition: struct_tree.h:143
    SCIP_JUNCTION junction
    Definition: struct_tree.h:153
    SCIP_LEAF leaf
    Definition: struct_tree.h:152
    unsigned int nodetype
    Definition: struct_tree.h:168
    unsigned int cutoff
    Definition: struct_tree.h:166
    unsigned int reopttype
    Definition: struct_tree.h:163
    SCIP_SUBROOT * subroot
    Definition: struct_tree.h:156
    SCIP_FORK * fork
    Definition: struct_tree.h:155
    SCIP_CHILD child
    Definition: struct_tree.h:151
    SCIP_SIBLING sibling
    Definition: struct_tree.h:150
    SCIP_Real lowerbound
    Definition: struct_tree.h:144
    SCIP_RATIONAL * lowerboundexact
    Definition: struct_tree.h:145
    SCIP_Real estimate
    Definition: struct_tree.h:146
    SCIP_CONSSETCHG * conssetchg
    Definition: struct_tree.h:159
    unsigned int depth
    Definition: struct_tree.h:161
    SCIP_NODE * parent
    Definition: struct_tree.h:158
    unsigned int active
    Definition: struct_tree.h:165
    SCIP_NODE * node
    Definition: struct_tree.h:174
    SCIP_Real newbound
    Definition: struct_tree.h:176
    SCIP_Bool probingchange
    Definition: struct_tree.h:182
    SCIP_PROP * inferprop
    Definition: struct_tree.h:180
    SCIP_RATIONAL * newboundexact
    Definition: struct_tree.h:177
    SCIP_CONS * infercons
    Definition: struct_tree.h:179
    SCIP_VAR * var
    Definition: struct_tree.h:175
    SCIP_BOUNDTYPE boundtype
    Definition: struct_tree.h:178
    SCIP_Bool lpwasdualchecked
    Definition: struct_tree.h:69
    SCIP_Bool lpwasprimfeas
    Definition: struct_tree.h:66
    SCIP_VAR ** origobjvars
    Definition: struct_tree.h:63
    SCIP_Bool lpwasdualfeas
    Definition: struct_tree.h:68
    SCIP_LPISTATE * lpistate
    Definition: struct_tree.h:57
    SCIP_Real * origobjvals
    Definition: struct_tree.h:64
    SCIP_LPINORMS * lpinorms
    Definition: struct_tree.h:58
    SCIP_Bool lpwasprimchecked
    Definition: struct_tree.h:67
    SCIP_ROW ** addedrows
    Definition: struct_tree.h:100
    SCIP_COL ** addedcols
    Definition: struct_tree.h:99
    SCIP_LPISTATE * lpistate
    Definition: struct_tree.h:128
    unsigned int lpwasdualchecked
    Definition: struct_tree.h:137
    SCIP_COL ** cols
    Definition: struct_tree.h:126
    unsigned int nchildren
    Definition: struct_tree.h:133
    SCIP_ROW ** rows
    Definition: struct_tree.h:127
    unsigned int lpwasdualfeas
    Definition: struct_tree.h:136
    SCIP_Real lpobjval
    Definition: struct_tree.h:129
    unsigned int lpwasprimchecked
    Definition: struct_tree.h:135
    unsigned int lpwasprimfeas
    Definition: struct_tree.h:134
    SCIP_LPISTATE * focuslpistate
    Definition: struct_tree.h:213
    int repropsubtreecount
    Definition: struct_tree.h:236
    SCIP_Bool focuslpconstructed
    Definition: struct_tree.h:240
    int correctlpdepth
    Definition: struct_tree.h:233
    SCIP_NODE * root
    Definition: struct_tree.h:188
    SCIP_LPISTATE * probinglpistate
    Definition: struct_tree.h:212
    SCIP_Real * siblingsprio
    Definition: struct_tree.h:204
    SCIP_Bool cutoffdelayed
    Definition: struct_tree.h:241
    SCIP_PENDINGBDCHG * pendingbdchgs
    Definition: struct_tree.h:215
    SCIP_Bool probinglpwasdualchecked
    Definition: struct_tree.h:253
    SCIP_NODE * focuslpstatefork
    Definition: struct_tree.h:198
    SCIP_Bool probinglpwasprimfeas
    Definition: struct_tree.h:250
    int cutoffdepth
    Definition: struct_tree.h:234
    int * pathnlprows
    Definition: struct_tree.h:210
    SCIP_NODE ** path
    Definition: struct_tree.h:190
    SCIP_BRANCHDIR * divebdchgdirs[2]
    Definition: struct_tree.h:206
    SCIP_Bool probinglpwassolved
    Definition: struct_tree.h:243
    SCIP_Bool probinglpwasrelax
    Definition: struct_tree.h:245
    SCIP_Bool sbprobing
    Definition: struct_tree.h:249
    SCIP_NODE * focusnode
    Definition: struct_tree.h:193
    int pathsize
    Definition: struct_tree.h:230
    SCIP_Bool probingnodehaslp
    Definition: struct_tree.h:239
    SCIP_Bool probingobjchanged
    Definition: struct_tree.h:248
    SCIP_Real probinglpobjval
    Definition: struct_tree.h:217
    int nsiblings
    Definition: struct_tree.h:228
    SCIP_Bool focusnodehaslp
    Definition: struct_tree.h:238
    int npendingbdchgs
    Definition: struct_tree.h:224
    SCIP_Real * divebdchgvals[2]
    Definition: struct_tree.h:207
    int divebdchgsize[2]
    Definition: struct_tree.h:221
    int nprobdiverelaxsol
    Definition: struct_tree.h:218
    int updatedeffectiverootdepth
    Definition: struct_tree.h:232
    SCIP_NODE ** siblings
    Definition: struct_tree.h:202
    SCIP_Bool probdiverelaxincludeslp
    Definition: struct_tree.h:256
    int repropdepth
    Definition: struct_tree.h:235
    int nchildren
    Definition: struct_tree.h:226
    int childrensize
    Definition: struct_tree.h:225
    SCIP_Bool forcinglpmessage
    Definition: struct_tree.h:247
    SCIP_VAR ** divebdchgvars[2]
    Definition: struct_tree.h:205
    int siblingssize
    Definition: struct_tree.h:227
    int ndivebdchanges[2]
    Definition: struct_tree.h:222
    SCIP_Bool probingsolvedlp
    Definition: struct_tree.h:246
    int effectiverootdepth
    Definition: struct_tree.h:231
    SCIP_Bool probinglpwasprimchecked
    Definition: struct_tree.h:251
    SCIP_LPINORMS * probinglpinorms
    Definition: struct_tree.h:214
    SCIP_Bool probinglpwasflushed
    Definition: struct_tree.h:242
    int probingsumchgdobjs
    Definition: struct_tree.h:237
    SCIP_Longint lastbranchparentid
    Definition: struct_tree.h:220
    int * pathnlpcols
    Definition: struct_tree.h:208
    SCIP_Real * childrenprio
    Definition: struct_tree.h:203
    SCIP_NODE * focussubroot
    Definition: struct_tree.h:199
    SCIP_Bool probdiverelaxstored
    Definition: struct_tree.h:255
    SCIP_NODE ** children
    Definition: struct_tree.h:201
    SCIP_Real * probdiverelaxsol
    Definition: struct_tree.h:216
    SCIP_NODE * probingroot
    Definition: struct_tree.h:200
    SCIP_Bool probingloadlpistate
    Definition: struct_tree.h:244
    SCIP_Longint focuslpstateforklpcount
    Definition: struct_tree.h:219
    SCIP_NODE * focuslpfork
    Definition: struct_tree.h:197
    int pendingbdchgssize
    Definition: struct_tree.h:223
    SCIP_NODEPQ * leaves
    Definition: struct_tree.h:189
    SCIP_Bool probinglphadsafebound
    Definition: struct_tree.h:254
    SCIP_Bool probinglpwasdualfeas
    Definition: struct_tree.h:252
    type definitions for constraints and constraint handlers
    type definitions for branching and inference history
    enum SCIP_BranchDir SCIP_BRANCHDIR
    Definition: type_history.h:48
    type definitions for LP management
    enum SCIP_BoundType SCIP_BOUNDTYPE
    Definition: type_lp.h:60
    type definitions for specific LP solvers interface
    type definitions for node selectors
    type definitions for propagators
    type definitions for branch and bound tree
    type definitions for problem variables