1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (c) 2002-2023 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_scip.h 26 * @ingroup INTERNALAPI 27 * @brief SCIP main data structure 28 * @author Tobias Achterberg 29 */ 30 31 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 32 33 #ifndef __SCIP_STRUCT_SCIP_H__ 34 #define __SCIP_STRUCT_SCIP_H__ 35 36 37 #include "scip/def.h" 38 #include "scip/type_set.h" 39 #include "scip/type_stat.h" 40 #include "scip/type_clock.h" 41 #include "scip/type_dcmp.h" 42 #include "scip/type_event.h" 43 #include "scip/type_interrupt.h" 44 #include "scip/type_mem.h" 45 #include "scip/type_lp.h" 46 #include "scip/type_nlp.h" 47 #include "scip/type_implics.h" 48 #include "scip/type_prob.h" 49 #include "scip/type_primal.h" 50 #include "scip/type_relax.h" 51 #include "scip/type_tree.h" 52 #include "scip/type_pricestore.h" 53 #include "scip/type_sepastore.h" 54 #include "scip/type_conflictstore.h" 55 #include "scip/type_cutpool.h" 56 #include "scip/type_branch.h" 57 #include "scip/type_conflict.h" 58 #include "scip/type_dialog.h" 59 #include "scip/type_reopt.h" 60 #include "scip/type_concurrent.h" 61 #include "scip/type_syncstore.h" 62 63 #ifdef __cplusplus 64 extern "C" { 65 #endif 66 67 /** SCIP main data structure */ 68 struct Scip 69 { 70 /* INIT */ 71 SCIP_MEM* mem; /**< block memory buffers */ 72 SCIP_SET* set; /**< global SCIP settings */ 73 SCIP_INTERRUPT* interrupt; /**< CTRL-C interrupt data */ 74 SCIP_DIALOGHDLR* dialoghdlr; /**< dialog handler for user interface */ 75 SCIP_MESSAGEHDLR* messagehdlr; /**< message handler for output handling, or NULL */ 76 SCIP_CLOCK* totaltime; /**< total SCIP running time */ 77 78 /* PROBLEM */ 79 SCIP_STAT* stat; /**< dynamic problem statistics */ 80 SCIP_PROB* origprob; /**< original problem data */ 81 SCIP_PRIMAL* origprimal; /**< primal data and solution storage for solution candidates */ 82 SCIP_DECOMPSTORE* decompstore; /**< decomposition storage data structure */ 83 84 /* REOPTIMIZATION */ 85 SCIP_REOPT* reopt; /**< reoptimization data */ 86 87 /* TRANSFORMED */ 88 SCIP_EVENTFILTER* eventfilter; /**< event filter for global (not variable dependent) events */ 89 SCIP_EVENTQUEUE* eventqueue; /**< event queue to cache events and process them later (bound change events) */ 90 SCIP_BRANCHCAND* branchcand; /**< storage for branching candidates */ 91 SCIP_LP* lp; /**< LP data */ 92 SCIP_NLP* nlp; /**< NLP data */ 93 SCIP_RELAXATION* relaxation; /**< global relaxation data */ 94 SCIP_PRIMAL* primal; /**< primal data and solution storage */ 95 SCIP_TREE* tree; /**< branch and bound tree */ 96 SCIP_CONFLICT* conflict; /**< conflict analysis data */ 97 SCIP_CLIQUETABLE* cliquetable; /**< collection of cliques */ 98 SCIP_PROB* transprob; /**< transformed problem after presolve */ 99 100 /* SOLVING */ 101 SCIP_PRICESTORE* pricestore; /**< storage for priced variables */ 102 SCIP_SEPASTORE* sepastore; /**< storage for separated cuts */ 103 SCIP_SEPASTORE* sepastoreprobing; /**< storage for separated cuts during probing mode */ 104 SCIP_CONFLICTSTORE* conflictstore; /**< storage for conflicts */ 105 SCIP_CUTPOOL* cutpool; /**< global cut pool */ 106 SCIP_CUTPOOL* delayedcutpool; /**< global delayed cut pool */ 107 108 /* PARALLEL */ 109 SCIP_SYNCSTORE* syncstore; /**< the data structure for storing synchronization information */ 110 SCIP_CONCURRENT* concurrent; /**< data required for concurrent solve */ 111 }; 112 113 #ifdef __cplusplus 114 } 115 #endif 116 117 #endif 118