Scippy

    SCIP

    Solving Constraint Integer Programs

    struct_var.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_var.h
    26 * @ingroup INTERNALAPI
    27 * @brief datastructures for problem variables
    28 * @author Tobias Achterberg
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_STRUCT_VAR_H__
    34#define __SCIP_STRUCT_VAR_H__
    35
    36
    37#include "scip/def.h"
    38#include "scip/type_history.h"
    39#include "scip/type_event.h"
    40#include "scip/type_var.h"
    41#include "scip/type_implics.h"
    42#include "scip/type_cons.h"
    43#include "scip/type_prop.h"
    44#include "scip/type_lp.h"
    45#include "scip/rational.h"
    46#include "scip/type_lpexact.h"
    47#include "scip/intervalarith.h"
    48
    49#ifdef __cplusplus
    50extern "C" {
    51#endif
    52
    53/** hole in a domain */
    55{
    56 SCIP_Real left; /**< left bound of open interval defining the hole (left,right) */
    57 SCIP_Real right; /**< right bound of open interval defining the hole (left,right) */
    58};
    59
    60/** list of domain holes */
    62{
    63 SCIP_HOLE hole; /**< this hole */
    64 SCIP_HOLELIST* next; /**< next hole in list */
    65};
    66
    67/** change in a hole list */
    69{
    70 SCIP_HOLELIST** ptr; /**< changed list pointer */
    71 SCIP_HOLELIST* newlist; /**< new value of list pointer */
    72 SCIP_HOLELIST* oldlist; /**< old value of list pointer */
    73};
    74
    75/** data for branching decision bound changes */
    76struct SCIP_BranchingData
    77{
    78 SCIP_Real lpsolval; /**< sol val of var in last LP prior to bound change, or SCIP_INVALID if unknown */
    79};
    80
    81/** data for inferred bound changes */
    82struct SCIP_InferenceData
    83{
    84 SCIP_VAR* var; /**< variable that was changed (parent of var, or var itself) */
    85 union
    86 {
    87 SCIP_CONS* cons; /**< constraint that inferred this bound change, or NULL */
    88 SCIP_PROP* prop; /**< propagator that inferred this bound change, or NULL */
    89 } reason;
    90 int info; /**< user information for inference to help resolving the conflict */
    91};
    92
    93/** change in one bound of a variable */
    95{
    96 SCIP_Real newbound; /**< new value for bound */
    97 SCIP_RATIONAL* newboundexact; /**< new value for exact bound, or NULL if not needed */
    98 union
    99 {
    100 SCIP_BRANCHINGDATA branchingdata; /**< data for branching decisions */
    101 SCIP_INFERENCEDATA inferencedata; /**< data for inferred bound changes */
    103 SCIP_Longint certificateindex; /**< line in certificate for this bound change (-1 if not used) */
    104 SCIP_VAR* var; /**< active variable to change the bounds for */
    105 unsigned int boundchgtype:2; /**< bound change type: branching decision or inferred bound change */
    106 unsigned int boundtype:1; /**< type of bound for var: lower or upper bound */
    107 unsigned int inferboundtype:1; /**< type of bound for inference var (see inference data): lower or upper bound */
    108 unsigned int applied:1; /**< was this bound change applied at least once? */
    109 unsigned int redundant:1; /**< is this bound change redundant? */
    110};
    111
    112/** bound change index representing the time of the bound change in path from root to current node */
    114{
    115 int depth; /**< depth of node where the bound change was created */
    116 int pos; /**< position of bound change in node's domchg array */
    117};
    118
    119/** bound change information to track bound changes from root node to current node */
    121{
    122 SCIP_Real oldbound; /**< old value for bound */
    123 SCIP_Real newbound; /**< new value for bound */
    124 SCIP_Longint oldcertificateindex;/**< certificate line for old bound (-1 if certificate is not used) */
    125 SCIP_VAR* var; /**< active variable that changed the bounds */
    126 SCIP_INFERENCEDATA inferencedata; /**< data for inferred bound changes */
    127 SCIP_BDCHGIDX bdchgidx; /**< bound change index in path from root to current node */
    128 unsigned int pos:27; /**< position in the variable domain change array */
    129 unsigned int boundchgtype:2; /**< bound change type: branching decision or inferred bound change */
    130 unsigned int boundtype:1; /**< type of bound for var: lower or upper bound */
    131 unsigned int inferboundtype:1; /**< type of bound for inference var (see inference data): lower or upper bound */
    132 unsigned int redundant:1; /**< does the bound change info belong to a redundant bound change? */
    133};
    134
    135/** tracks changes of the variables' domains (static arrays, bound changes only) */
    137{
    138 unsigned int nboundchgs:30; /**< number of bound changes (must be first structure entry!) */
    139 unsigned int domchgtype:2; /**< type of domain change data (must be first structure entry!) */
    140 SCIP_BOUNDCHG* boundchgs; /**< array with changes in bounds of variables */
    141};
    142
    143/** tracks changes of the variables' domains (static arrays, bound and hole changes) */
    145{
    146 unsigned int nboundchgs:30; /**< number of bound changes (must be first structure entry!) */
    147 unsigned int domchgtype:2; /**< type of domain change data (must be first structure entry!) */
    148 SCIP_BOUNDCHG* boundchgs; /**< array with changes in bounds of variables */
    149 SCIP_HOLECHG* holechgs; /**< array with changes in hole lists */
    150 int nholechgs; /**< number of hole list changes */
    151};
    152
    153/** tracks changes of the variables' domains (dynamic arrays) */
    155{
    156 unsigned int nboundchgs:30; /**< number of bound changes (must be first structure entry!) */
    157 unsigned int domchgtype:2; /**< type of domain change data (must be first structure entry!) */
    158 SCIP_BOUNDCHG* boundchgs; /**< array with changes in bounds of variables */
    159 SCIP_HOLECHG* holechgs; /**< array with changes in hole lists */
    160 int nholechgs; /**< number of hole list changes */
    161 int boundchgssize; /**< size of bound changes array */
    162 int holechgssize; /**< size of hole changes array */
    163};
    164
    165/** tracks changes of the variables' domains */
    167{
    168 SCIP_DOMCHGBOUND domchgbound; /**< bound changes */
    169 SCIP_DOMCHGBOTH domchgboth; /**< bound and hole changes */
    170 SCIP_DOMCHGDYN domchgdyn; /**< bound and hole changes with dynamic arrays */
    171};
    172
    173/** domain of a variable */
    175{
    176 SCIP_Real lb; /**< lower bounds of variables */
    177 SCIP_Real ub; /**< upper bounds of variables */
    178 SCIP_HOLELIST* holelist; /**< list of holes */
    179};
    180
    181/** exact domain of a variable */
    183{
    184 SCIP_RATIONAL* lb; /**< exact lower bound of variables */
    185 SCIP_RATIONAL* ub; /**< exact upper bound of variables */
    186 SCIP_Longint lbcertificateidx; /**< certificate index of lower bound (-1 if not set or no certificate active) */
    187 SCIP_Longint ubcertificateidx; /**< certificate index of upper bound (-1 if not set or no certificate active) */
    188};
    189
    190/** original variable information */
    192{
    193 SCIP_DOM origdom; /**< domain of variable in original problem */
    194 SCIP_VAR* transvar; /**< pointer to representing transformed variable */
    195};
    196
    197/** loose variable information
    198 *
    199 * bounds on the absolute values of the coefficients with which the variable appears in aggregations (after flattening the aggregation graph)
    200 */
    202{
    203 SCIP_Real minaggrcoef; /**< lower bound on absolute coefficient the variable has in aggregations */
    204 SCIP_Real maxaggrcoef; /**< upper bound on absolute coefficient the variable has in aggregations */
    205};
    206
    207/** aggregation information: x = a*y + c */
    209{
    210 SCIP_Real scalar; /**< multiplier a in aggregation */
    211 SCIP_Real constant; /**< constant shift c in aggregation */
    212 SCIP_VAR* var; /**< variable y in aggregation */
    213};
    214
    215/** exact aggregation information: x = a*y + c */
    217{
    218 SCIP_RATIONAL* scalar; /**< multiplier a in aggregation */
    219 SCIP_RATIONAL* constant; /**< constant shift c in aggregation */
    220};
    221
    222/** multiple aggregation information: x = a_1*y_1 + ... + a_k*y_k + c */
    224{
    225 SCIP_Real constant; /**< constant shift c in multiple aggregation */
    226 SCIP_Real* scalars; /**< multipliers a in multiple aggregation */
    227 SCIP_VAR** vars; /**< variables y in multiple aggregation */
    228 int nvars; /**< number of variables in aggregation */
    229 int varssize; /**< size of vars and scalars arrays */
    230};
    231
    232/** multiple aggregation information: x = a_1*y_1 + ... + a_k*y_k + c */
    234{
    235 SCIP_RATIONAL* constant; /**< constant shift c in multiple aggregation */
    236 SCIP_RATIONAL** scalars; /**< multipliers a in multiple aggregation */
    237};
    238
    239/** negation information: x' = c - x */
    241{
    242 SCIP_Real constant; /**< constant shift c in negation */
    243};
    244
    245/** exact variable domains and further information */
    247{
    248 SCIP_RATIONAL* obj; /**< exact rational objective */
    249 SCIP_INTERVAL objinterval; /**< interval approximation of obj (for faster performance) */
    250 SCIP_DOMEXACT locdom; /**< exact local bounds */
    251 SCIP_DOMEXACT glbdom; /**< exact global bound */
    252 SCIP_DOMEXACT origdom; /**< original domain */
    253 SCIP_AGGREGATEEXACT aggregate; /**< exact aggregation data */
    254 SCIP_MULTAGGREXACT multaggr; /**< exact aggregation data */
    255 SCIP_COLEXACT* colexact; /**< column in exact lp */
    256 SCIP_VARSTATUS varstatusexact; /**< status in exact lp */
    257 int certificateindex; /**< original probindex (needed for certificate), or -1 */
    258};
    259
    260/** variable of the problem */
    262{
    263 SCIP_Real obj; /**< objective function value of variable (might be changed temporarily in probing mode)*/
    264 SCIP_Real unchangedobj; /**< unchanged objective function value of variable (ignoring temporary changes in probing mode) */
    265 SCIP_Real branchfactor; /**< factor to weigh variable's branching score with */
    266 SCIP_Real rootsol; /**< last primal solution of variable in root node, or zero */
    267 SCIP_Real bestrootsol; /**< best primal solution of variable in root node, or zero, w.r.t. root LP value and root reduced cost */
    268 SCIP_Real bestrootredcost; /**< best reduced costs of variable in root node, or zero, w.r.t. root LP value and root solution value */
    269 SCIP_Real bestrootlpobjval; /**< best root LP objective value, or SCIP_INVALID, w.r.t. root solution value and root reduced cost */
    270 SCIP_Real relaxsol; /**< primal solution of variable in current relaxation solution, or SCIP_INVALID */
    271 SCIP_Real nlpsol; /**< primal solution of variable in current NLP solution, or SCIP_INVALID */
    272 SCIP_Real primsolavg; /**< weighted average of all values of variable in primal feasible solutions */
    273 SCIP_Real conflictlb; /**< maximal lower bound of variable in the current conflict */
    274 SCIP_Real conflictub; /**< minimal upper bound of variable in the current conflict */
    275 SCIP_Real conflictrelaxedlb; /**< maximal relaxed lower bound of variable in the current conflict (conflictrelaxedlb <= conflictlb) */
    276 SCIP_Real conflictrelaxedub; /**< minimal relaxed upper bound of variable in the current conflict (conflictrelaxedub >= conflictub) */
    277 SCIP_Real lazylb; /**< global lower bound that is ensured by constraints and has not to be added to the LP */
    278 SCIP_Real lazyub; /**< global upper bound that is ensured by constraints and has not to be added to the LP */
    279 SCIP_DOM glbdom; /**< domain of variable in global problem */
    280 SCIP_DOM locdom; /**< domain of variable in current subproblem */
    281 union
    282 {
    283 SCIP_ORIGINAL original; /**< original variable information */
    284 SCIP_LOOSE loose; /**< loose variable information */
    285 SCIP_NEGATE negate; /**< negation variable information */
    286 SCIP_AGGREGATE aggregate; /**< aggregation variable information */
    287 SCIP_MULTAGGR multaggr; /**< multi-aggregation variable information */
    288 SCIP_COL* col; /**< LP column for column variable */
    290 SCIP_VARDATAEXACT* exactdata; /**< exact variable data (obj, lb, ub, ...) */
    291 char* name; /**< name of the variable */
    292 SCIP_DECL_VARCOPY ((*varcopy)); /**< copies variable data if wanted to subscip, or NULL */
    293 SCIP_DECL_VARDELORIG ((*vardelorig)); /**< frees user data of original variable */
    294 SCIP_DECL_VARTRANS ((*vartrans)); /**< creates transformed user data by transforming original user data */
    295 SCIP_DECL_VARDELTRANS ((*vardeltrans)); /**< frees user data of transformed variable */
    296 SCIP_VARDATA* vardata; /**< user data for this specific variable */
    297 SCIP_VAR** parentvars; /**< parent variables in the aggregation tree */
    298 SCIP_VAR* negatedvar; /**< pointer to the variables negation: x' = lb + ub - x, or NULL if not created */
    299 SCIP_VBOUNDS* vlbs; /**< variable lower bounds x >= b*y + d */
    300 SCIP_VBOUNDS* vubs; /**< variable upper bounds x <= b*y + d */
    301 SCIP_IMPLICS* implics; /**< implications y >=/<= b following from x <= 0 and x >= 1 (x binary), or NULL if x is not binary */
    302 SCIP_CLIQUELIST* cliquelist; /**< list of cliques the variable and its negation is member of */
    303 SCIP_EVENTFILTER* eventfilter; /**< event filter for events concerning this variable; not for ORIGINAL vars */
    304 SCIP_BDCHGINFO* lbchginfos; /**< bound change informations for lower bound changes from root to current node */
    305 SCIP_BDCHGINFO* ubchginfos; /**< bound change informations for upper bound changes from root to current node */
    306 SCIP_HISTORY* history; /**< branching and inference history information */
    307 SCIP_HISTORY* historycrun; /**< branching and inference history information for current run */
    308 SCIP_VALUEHISTORY* valuehistory; /**< branching and inference history information which are value based, or NULL if not used */
    309 SCIP_Longint closestvblpcount; /**< LP count for which the closestvlbidx/closestvubidx entries are valid */
    310 int index; /**< consecutively numbered variable identifier */
    311 int probindex; /**< array position in problems vars array, or -1 if not assigned to a problem */
    312 int pseudocandindex; /**< array position in pseudo branching candidates array, or -1 */
    313 int eventqueueindexobj; /**< array position in event queue of objective change event, or -1 */
    314 int eventqueueindexlb; /**< array position in event queue of lower bound change event, or -1 */
    315 int eventqueueindexub; /**< array position in event queue of upper bound change event, or -1 */
    316 int parentvarssize; /**< available slots in parentvars array */
    317 int nparentvars; /**< number of parent variables in aggregation tree (used slots of parentvars) */
    318 int nuses; /**< number of times, this variable is referenced */
    319 int nlocksdown[NLOCKTYPES]; /**< array of variable locks for rounding down; if zero, rounding down is always feasible */
    320 int nlocksup[NLOCKTYPES]; /**< array of variable locks for rounding up; if zero, rounding up is always feasible */
    321 int branchpriority; /**< priority of the variable for branching */
    322 int lbchginfossize; /**< available slots in lbchginfos array */
    323 int nlbchginfos; /**< number of lower bound changes from root node to current node */
    324 int ubchginfossize; /**< available slots in ubchginfos array */
    325 int nubchginfos; /**< number of upper bound changes from root node to current node */
    326 int conflictlbcount; /**< number of last conflict, the lower bound was member of */
    327 int conflictubcount; /**< number of last conflict, the upper bound was member of */
    328 int closestvlbidx; /**< index of closest VLB variable in current LP solution, or -1 */
    329 int closestvubidx; /**< index of closest VUB variable in current LP solution, or -1 */
    330 unsigned int initial:1; /**< TRUE iff var's column should be present in the initial root LP */
    331 unsigned int removable:1; /**< TRUE iff var's column is removable from the LP (due to aging or cleanup) */
    332 unsigned int deletable:1; /**< TRUE iff the variable is removable from the problem */
    333 unsigned int deleted:1; /**< TRUE iff variable was marked for deletion from the problem */
    334 unsigned int donotaggr:1; /**< TRUE iff variable is not allowed to be aggregated */
    335 unsigned int donotmultaggr:1; /**< TRUE iff variable is not allowed to be multi-aggregated */
    336 unsigned int vartype:2; /**< type of variable: binary, integer, continuous */
    337 unsigned int varimpltype:2; /**< implied integral type of variable: none, weak or strong */
    338 unsigned int varstatus:3; /**< status of variable: original, loose, column, fixed, aggregated, multiaggregated, negated */
    339 unsigned int pseudocostflag:2; /**< temporary flag used in pseudo cost update */
    340 unsigned int branchdirection:2; /**< preferred branching direction of the variable (downwards, upwards, auto) */
    341 unsigned int eventqueueimpl:1; /**< is an IMPLADDED event on this variable currently in the event queue? */
    342 unsigned int delglobalstructs:1; /**< is variable marked to be removed from global structures (cliques etc.)? */
    343 unsigned int relaxationonly:1; /**< TRUE if variable has been introduced only to define a relaxation */
    344#ifndef NDEBUG
    345 SCIP* scip; /**< SCIP data structure */
    346#endif
    347};
    348
    349#ifdef __cplusplus
    350}
    351#endif
    352
    353#endif
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:141
    #define SCIP_Real
    Definition: def.h:156
    interval arithmetics for provable bounds
    wrapper for rational number arithmetic
    SCIP_RATIONAL * scalar
    Definition: struct_var.h:218
    SCIP_RATIONAL * constant
    Definition: struct_var.h:219
    SCIP_VAR * var
    Definition: struct_var.h:212
    SCIP_Real scalar
    Definition: struct_var.h:210
    SCIP_Real constant
    Definition: struct_var.h:211
    SCIP_BDCHGIDX bdchgidx
    Definition: struct_var.h:127
    SCIP_Real newbound
    Definition: struct_var.h:123
    SCIP_INFERENCEDATA inferencedata
    Definition: struct_var.h:126
    unsigned int boundchgtype
    Definition: struct_var.h:129
    unsigned int boundtype
    Definition: struct_var.h:130
    SCIP_VAR * var
    Definition: struct_var.h:125
    unsigned int redundant
    Definition: struct_var.h:132
    unsigned int inferboundtype
    Definition: struct_var.h:131
    SCIP_Longint oldcertificateindex
    Definition: struct_var.h:124
    SCIP_Real oldbound
    Definition: struct_var.h:122
    unsigned int pos
    Definition: struct_var.h:128
    SCIP_RATIONAL * newboundexact
    Definition: struct_var.h:97
    union SCIP_BoundChg::@23 data
    SCIP_Longint certificateindex
    Definition: struct_var.h:103
    SCIP_Real newbound
    Definition: struct_var.h:96
    unsigned int applied
    Definition: struct_var.h:108
    unsigned int boundtype
    Definition: struct_var.h:106
    SCIP_INFERENCEDATA inferencedata
    Definition: struct_var.h:101
    unsigned int redundant
    Definition: struct_var.h:109
    SCIP_VAR * var
    Definition: struct_var.h:104
    SCIP_BRANCHINGDATA branchingdata
    Definition: struct_var.h:100
    unsigned int inferboundtype
    Definition: struct_var.h:107
    unsigned int boundchgtype
    Definition: struct_var.h:105
    SCIP_BOUNDCHG * boundchgs
    Definition: struct_var.h:148
    unsigned int nboundchgs
    Definition: struct_var.h:146
    SCIP_HOLECHG * holechgs
    Definition: struct_var.h:149
    unsigned int domchgtype
    Definition: struct_var.h:147
    SCIP_BOUNDCHG * boundchgs
    Definition: struct_var.h:140
    unsigned int domchgtype
    Definition: struct_var.h:139
    unsigned int nboundchgs
    Definition: struct_var.h:138
    SCIP_BOUNDCHG * boundchgs
    Definition: struct_var.h:158
    SCIP_HOLECHG * holechgs
    Definition: struct_var.h:159
    unsigned int nboundchgs
    Definition: struct_var.h:156
    unsigned int domchgtype
    Definition: struct_var.h:157
    SCIP_RATIONAL * ub
    Definition: struct_var.h:185
    SCIP_Longint lbcertificateidx
    Definition: struct_var.h:186
    SCIP_RATIONAL * lb
    Definition: struct_var.h:184
    SCIP_Longint ubcertificateidx
    Definition: struct_var.h:187
    SCIP_Real lb
    Definition: struct_var.h:176
    SCIP_Real ub
    Definition: struct_var.h:177
    SCIP_HOLELIST * holelist
    Definition: struct_var.h:178
    SCIP_HOLELIST ** ptr
    Definition: struct_var.h:70
    SCIP_HOLELIST * oldlist
    Definition: struct_var.h:72
    SCIP_HOLELIST * newlist
    Definition: struct_var.h:71
    SCIP_Real right
    Definition: struct_var.h:57
    SCIP_Real left
    Definition: struct_var.h:56
    SCIP_HOLELIST * next
    Definition: struct_var.h:64
    SCIP_HOLE hole
    Definition: struct_var.h:63
    SCIP_Real minaggrcoef
    Definition: struct_var.h:203
    SCIP_Real maxaggrcoef
    Definition: struct_var.h:204
    SCIP_RATIONAL ** scalars
    Definition: struct_var.h:236
    SCIP_RATIONAL * constant
    Definition: struct_var.h:235
    SCIP_VAR ** vars
    Definition: struct_var.h:227
    SCIP_Real constant
    Definition: struct_var.h:225
    SCIP_Real * scalars
    Definition: struct_var.h:226
    SCIP_Real constant
    Definition: struct_var.h:242
    SCIP_DOM origdom
    Definition: struct_var.h:193
    SCIP_VAR * transvar
    Definition: struct_var.h:194
    SCIP_INTERVAL objinterval
    Definition: struct_var.h:249
    SCIP_DOMEXACT glbdom
    Definition: struct_var.h:251
    SCIP_RATIONAL * obj
    Definition: struct_var.h:248
    SCIP_DOMEXACT origdom
    Definition: struct_var.h:252
    SCIP_COLEXACT * colexact
    Definition: struct_var.h:255
    SCIP_MULTAGGREXACT multaggr
    Definition: struct_var.h:254
    SCIP_VARSTATUS varstatusexact
    Definition: struct_var.h:256
    SCIP_AGGREGATEEXACT aggregate
    Definition: struct_var.h:253
    SCIP_DOMEXACT locdom
    Definition: struct_var.h:250
    SCIP_Real lazylb
    Definition: struct_var.h:277
    SCIP_VARDATA * vardata
    Definition: struct_var.h:296
    SCIP_EVENTFILTER * eventfilter
    Definition: struct_var.h:303
    int nubchginfos
    Definition: struct_var.h:325
    SCIP_Real lazyub
    Definition: struct_var.h:278
    SCIP_ORIGINAL original
    Definition: struct_var.h:283
    SCIP_VBOUNDS * vlbs
    Definition: struct_var.h:299
    SCIP_AGGREGATE aggregate
    Definition: struct_var.h:286
    SCIP_IMPLICS * implics
    Definition: struct_var.h:301
    SCIP_VAR ** parentvars
    Definition: struct_var.h:297
    SCIP_BDCHGINFO * lbchginfos
    Definition: struct_var.h:304
    SCIP_Real rootsol
    Definition: struct_var.h:266
    SCIP_DECL_VARDELTRANS((*vardeltrans))
    SCIP_VAR * negatedvar
    Definition: struct_var.h:298
    int eventqueueindexobj
    Definition: struct_var.h:313
    SCIP * scip
    Definition: struct_var.h:345
    unsigned int varstatus
    Definition: struct_var.h:338
    int nlocksdown[NLOCKTYPES]
    Definition: struct_var.h:319
    SCIP_Real bestrootsol
    Definition: struct_var.h:267
    SCIP_HISTORY * historycrun
    Definition: struct_var.h:307
    unsigned int relaxationonly
    Definition: struct_var.h:343
    unsigned int donotmultaggr
    Definition: struct_var.h:335
    int closestvubidx
    Definition: struct_var.h:329
    SCIP_DOM glbdom
    Definition: struct_var.h:279
    unsigned int vartype
    Definition: struct_var.h:336
    unsigned int varimpltype
    Definition: struct_var.h:337
    SCIP_Real branchfactor
    Definition: struct_var.h:265
    int pseudocandindex
    Definition: struct_var.h:312
    int conflictubcount
    Definition: struct_var.h:327
    SCIP_Real unchangedobj
    Definition: struct_var.h:264
    unsigned int eventqueueimpl
    Definition: struct_var.h:341
    SCIP_Real conflictrelaxedub
    Definition: struct_var.h:276
    SCIP_BDCHGINFO * ubchginfos
    Definition: struct_var.h:305
    unsigned int pseudocostflag
    Definition: struct_var.h:339
    SCIP_Real conflictub
    Definition: struct_var.h:274
    SCIP_Real bestrootredcost
    Definition: struct_var.h:268
    char * name
    Definition: struct_var.h:291
    SCIP_DECL_VARTRANS((*vartrans))
    int eventqueueindexlb
    Definition: struct_var.h:314
    int eventqueueindexub
    Definition: struct_var.h:315
    SCIP_Real conflictrelaxedlb
    Definition: struct_var.h:275
    unsigned int deletable
    Definition: struct_var.h:332
    SCIP_VARDATAEXACT * exactdata
    Definition: struct_var.h:290
    unsigned int initial
    Definition: struct_var.h:330
    SCIP_DOM locdom
    Definition: struct_var.h:280
    unsigned int removable
    Definition: struct_var.h:331
    SCIP_CLIQUELIST * cliquelist
    Definition: struct_var.h:302
    SCIP_COL * col
    Definition: struct_var.h:288
    unsigned int deleted
    Definition: struct_var.h:333
    SCIP_MULTAGGR multaggr
    Definition: struct_var.h:287
    SCIP_Real obj
    Definition: struct_var.h:263
    int probindex
    Definition: struct_var.h:311
    SCIP_Real nlpsol
    Definition: struct_var.h:271
    int nlocksup[NLOCKTYPES]
    Definition: struct_var.h:320
    int nlbchginfos
    Definition: struct_var.h:323
    unsigned int branchdirection
    Definition: struct_var.h:340
    unsigned int delglobalstructs
    Definition: struct_var.h:342
    union SCIP_Var::@24 data
    int lbchginfossize
    Definition: struct_var.h:322
    SCIP_HISTORY * history
    Definition: struct_var.h:306
    int index
    Definition: struct_var.h:310
    SCIP_VBOUNDS * vubs
    Definition: struct_var.h:300
    int nparentvars
    Definition: struct_var.h:317
    SCIP_DECL_VARDELORIG((*vardelorig))
    unsigned int donotaggr
    Definition: struct_var.h:334
    int parentvarssize
    Definition: struct_var.h:316
    int nuses
    Definition: struct_var.h:318
    int closestvlbidx
    Definition: struct_var.h:328
    SCIP_LOOSE loose
    Definition: struct_var.h:284
    SCIP_DECL_VARCOPY((*varcopy))
    SCIP_NEGATE negate
    Definition: struct_var.h:285
    SCIP_Real primsolavg
    Definition: struct_var.h:272
    SCIP_Real conflictlb
    Definition: struct_var.h:273
    SCIP_Real relaxsol
    Definition: struct_var.h:270
    SCIP_Longint closestvblpcount
    Definition: struct_var.h:309
    SCIP_Real bestrootlpobjval
    Definition: struct_var.h:269
    int ubchginfossize
    Definition: struct_var.h:324
    SCIP_VALUEHISTORY * valuehistory
    Definition: struct_var.h:308
    int branchpriority
    Definition: struct_var.h:321
    int conflictlbcount
    Definition: struct_var.h:326
    type definitions for constraints and constraint handlers
    type definitions for managing events
    type definitions for branching and inference history
    type definitions for implications, variable bounds, and cliques
    type definitions for LP management
    type definitions for exact LP management
    type definitions for propagators
    type definitions for problem variables
    struct SCIP_VarData SCIP_VARDATA
    Definition: type_var.h:167
    #define NLOCKTYPES
    Definition: type_var.h:138
    struct SCIP_BranchingData SCIP_BRANCHINGDATA
    Definition: type_var.h:153
    enum SCIP_Varstatus SCIP_VARSTATUS
    Definition: type_var.h:59
    struct SCIP_InferenceData SCIP_INFERENCEDATA
    Definition: type_var.h:154
    SCIP_DOMCHGBOUND domchgbound
    Definition: struct_var.h:168
    SCIP_DOMCHGDYN domchgdyn
    Definition: struct_var.h:170
    SCIP_DOMCHGBOTH domchgboth
    Definition: struct_var.h:169