1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (C) 2002-2021 Konrad-Zuse-Zentrum */ 7 /* fuer Informationstechnik Berlin */ 8 /* */ 9 /* SCIP is distributed under the terms of the ZIB Academic License. */ 10 /* */ 11 /* You should have received a copy of the ZIB Academic License */ 12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */ 13 /* */ 14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 16 /**@file struct_matrix.h 17 * @ingroup INTERNALAPI 18 * @brief data structure for MIP matrix 19 * @author Dieter Weninger 20 * @author Gerald Gamrath 21 */ 22 23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 24 25 #ifndef __SCIP_STRUCT_MATRIX_H__ 26 #define __SCIP_STRUCT_MATRIX_H__ 27 28 #include "scip/def.h" 29 #include "scip/type_var.h" 30 #include "scip/type_cons.h" 31 #include "scip/type_matrix.h" 32 33 #ifdef __cplusplus 34 extern "C" { 35 #endif 36 37 /** constraint matrix data structure in column and row major format */ 38 struct SCIP_Matrix 39 { 40 SCIP_Real* colmatval; /**< coefficients in column major format */ 41 int* colmatind; /**< row indexes in column major format */ 42 int* colmatbeg; /**< column storage offset */ 43 int* colmatcnt; /**< number of row entries per column */ 44 int ncols; /**< complete number of columns */ 45 SCIP_Real* lb; /**< lower bound per variable */ 46 SCIP_Real* ub; /**< upper bound per variable */ 47 int* nuplocks; /**< number of up locks per variable */ 48 int* ndownlocks; /**< number of down locks per variable */ 49 50 SCIP_VAR** vars; /**< variables pointer */ 51 52 SCIP_Real* rowmatval; /**< coefficients in row major format */ 53 int* rowmatind; /**< column indexed in row major format */ 54 int* rowmatbeg; /**< row storage offset */ 55 int* rowmatcnt; /**< number of column entries per row */ 56 57 int nrows; /**< complete number of rows */ 58 SCIP_Real* lhs; /**< left hand side per row */ 59 SCIP_Real* rhs; /**< right hand side per row */ 60 61 SCIP_CONS** cons; /**< constraints pointer */ 62 63 SCIP_Bool* isrhsinfinite; /**< is right hand side infinity */ 64 int nnonzs; /**< sparsity counter */ 65 SCIP_Real* minactivity; /**< min activity per row */ 66 SCIP_Real* maxactivity; /**< max activity per row */ 67 int* minactivityneginf; /**< min activity negative infinity counter */ 68 int* minactivityposinf; /**< min activity positive infinity counter */ 69 int* maxactivityneginf; /**< max activity negative infinity counter */ 70 int* maxactivityposinf; /**< max activity positive infinity counter */ 71 }; 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif 78