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-2018 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 scip.zib.de. */
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 color; /**< store color */
41 };
42 
43 /** data for symmetry group computation */
45 {
46  SCIP_Real* matcoef; /**< nonzero coefficients appearing in the matrix */
47  SCIP_Real* rhscoef; /**< rhs coefficients */
48  SYM_RHSSENSE* rhssense; /**< sense of rhs */
49  int* matrhsidx; /**< indices of rhs corresponding to matrix entries */
50  int* matvaridx; /**< indices of variables for matrix entries */
51  int* matidx; /**< indices in mat(rhs/var)idx array corresponding to matrix coefficients */
52  int* rhsidx; /**< indices in rhstype array corresponding to rhs coefficients */
53  int* permvarcolors; /**< array for storing the colors of the individual variables */
54  int* matcoefcolors; /**< array for storing the colors of all matrix coefficients */
55  int* rhscoefcolors; /**< array for storing the colors of all rhs coefficients */
56  SCIP_VAR** permvars; /**< variables on which permutations act */
57  int npermvars; /**< number of variables for permutations */
58  int nmatcoef; /**< number of coefficients in matrix */
59  int nrhscoef; /**< number of coefficients in rhs */
60  int nmaxmatcoef; /**< maximal number of matrix coefficients (will be increase on demand) */
61  int nuniquevars; /**< number of unique variable types */
62  int nuniquerhs; /**< number of unique rhs types */
63  int nuniquemat; /**< number of unique matrix coefficients */
64 };
65 
66 #ifdef __cplusplus
67 }
68 #endif
69 
70 #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:49
type definitions for symmetry computations
#define SCIP_Real
Definition: def.h:150
enum SCIP_Vartype SCIP_VARTYPE
Definition: type_var.h:60
SCIP_Real obj
SCIP_Real * rhscoef
SCIP callable library.