Scippy

SCIP

Solving Constraint Integer Programs

struct_symmetry.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-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_symmetry.h
17  * @brief structs for symmetry computations
18  * @author Marc Pfetsch
19  */
20 
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
22 
23 #ifndef __SCIP_STRUCT_SYMMETRY_H_
24 #define __SCIP_STRUCT_SYMMETRY_H_
25 
26 #include "scip/scip.h"
27 #include "symmetry/type_symmetry.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 /** data of variables that are considered to be equivalent */
35 {
36  SCIP_Real obj; /**< objective of variable */
37  SCIP_Real lb; /**< lower bound of variable */
38  SCIP_Real ub; /**< upper bound of variable */
39  SCIP_VARTYPE type; /**< type of variable */
40  int nconss; /**< number of conss a variable is contained in */
41  int color; /**< store color */
42 };
43 
44 /** data for symmetry group computation */
46 {
47  SCIP_Real* matcoef; /**< nonzero coefficients appearing in the matrix */
48  SCIP_Real* rhscoef; /**< rhs coefficients */
49  SYM_RHSSENSE* rhssense; /**< sense of rhs */
50  int* matrhsidx; /**< indices of rhs corresponding to matrix entries */
51  int* matvaridx; /**< indices of variables for matrix entries */
52  int* matidx; /**< indices in mat(rhs/var)idx array corresponding to matrix coefficients */
53  int* rhsidx; /**< indices in rhstype array corresponding to rhs coefficients */
54  int* permvarcolors; /**< array for storing the colors of the individual variables */
55  int* matcoefcolors; /**< array for storing the colors of all matrix coefficients */
56  int* rhscoefcolors; /**< array for storing the colors of all rhs coefficients */
57  SCIP_VAR** permvars; /**< variables on which permutations act */
58  int npermvars; /**< number of variables for permutations */
59  int nmatcoef; /**< number of coefficients in matrix */
60  int nrhscoef; /**< number of coefficients in rhs */
61  int nmaxmatcoef; /**< maximal number of matrix coefficients (will be increase on demand) */
62  int nuniquevars; /**< number of unique variable types */
63  int nuniquerhs; /**< number of unique rhs types */
64  int nuniquemat; /**< number of unique matrix coefficients */
65 };
66 
67 #ifdef __cplusplus
68 }
69 #endif
70 
71 #endif
SCIP_Real * matcoef
SCIP_VAR ** permvars
SCIP_Real ub
SYM_RHSSENSE * rhssense
SCIP_Real lb
SCIP_VARTYPE type
enum SYM_Rhssense SYM_RHSSENSE
Definition: type_symmetry.h:51
type definitions for symmetry computations
#define SCIP_Real
Definition: def.h:163
enum SCIP_Vartype SCIP_VARTYPE
Definition: type_var.h:60
SCIP_Real obj
SCIP_Real * rhscoef
SCIP callable library.