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_matrix.h 26 * @ingroup INTERNALAPI 27 * @brief data structure for MIP matrix 28 * @author Dieter Weninger 29 * @author Gerald Gamrath 30 */ 31 32 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 33 34 #ifndef __SCIP_STRUCT_MATRIX_H__ 35 #define __SCIP_STRUCT_MATRIX_H__ 36 37 #include "scip/def.h" 38 #include "scip/type_var.h" 39 #include "scip/type_cons.h" 40 #include "scip/type_matrix.h" 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 /** constraint matrix data structure in column and row major format */ 47 struct SCIP_Matrix 48 { 49 SCIP_Real* colmatval; /**< coefficients in column major format */ 50 int* colmatind; /**< row indexes in column major format */ 51 int* colmatbeg; /**< column storage offset */ 52 int* colmatcnt; /**< number of row entries per column */ 53 int ncols; /**< complete number of columns */ 54 SCIP_Real* lb; /**< lower bound per variable */ 55 SCIP_Real* ub; /**< upper bound per variable */ 56 int* nuplocks; /**< number of up locks per variable */ 57 int* ndownlocks; /**< number of down locks per variable */ 58 59 SCIP_VAR** vars; /**< variables pointer */ 60 61 SCIP_Real* rowmatval; /**< coefficients in row major format */ 62 int* rowmatind; /**< column indexed in row major format */ 63 int* rowmatbeg; /**< row storage offset */ 64 int* rowmatcnt; /**< number of column entries per row */ 65 66 int nrows; /**< complete number of rows */ 67 SCIP_Real* lhs; /**< left hand side per row */ 68 SCIP_Real* rhs; /**< right hand side per row */ 69 70 SCIP_CONS** cons; /**< constraints pointer */ 71 72 SCIP_Bool* isrhsinfinite; /**< is right hand side infinity */ 73 int nnonzs; /**< sparsity counter */ 74 SCIP_Real* minactivity; /**< min activity per row */ 75 SCIP_Real* maxactivity; /**< max activity per row */ 76 int* minactivityneginf; /**< min activity negative infinity counter */ 77 int* minactivityposinf; /**< min activity positive infinity counter */ 78 int* maxactivityneginf; /**< max activity negative infinity counter */ 79 int* maxactivityposinf; /**< max activity positive infinity counter */ 80 }; 81 82 #ifdef __cplusplus 83 } 84 #endif 85 86 #endif 87