Scippy

SCIP

Solving Constraint Integer Programs

type_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 type_symmetry.h
17  * @brief type definitions 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_TYPE_SYMMETRY_H_
24 #define __SCIP_TYPE_SYMMETRY_H_
25 
26 #include <scip/scip.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 /** symmetry type specification */
33 #define SYM_SPEC_INTEGER UINT32_C(0x00000001) /**< need symmetries for integer variables only */
34 #define SYM_SPEC_BINARY UINT32_C(0x00000002) /**< need symmetries for binary variables only */
35 #define SYM_SPEC_REAL UINT32_C(0x00000004) /**< need symmetries also for continuous variables */
36 
37 typedef uint32_t SYM_SPEC; /**< types of variables handled by symmetry */
38 
39 /** define sense of rhs */
41 {
42  SYM_SENSE_UNKOWN = 0, /**< unknown sense */
43  SYM_SENSE_INEQUALITY = 1, /**< linear inequality */
44  SYM_SENSE_EQUATION = 2, /**< linear equation */
45  SYM_SENSE_XOR = 3, /**< XOR constraint */
46  SYM_SENSE_AND = 4, /**< AND constraint */
47  SYM_SENSE_OR = 5, /**< OR constrant */
48  SYM_SENSE_BOUNDIS_TYPE_1 = 6, /**< bounddisjunction type 1 */
49  SYM_SENSE_BOUNDIS_TYPE_2 = 7 /**< bounddisjunction type 2 */
50 };
52 
53 /* type of symmetry handling codes */
54 #define SYM_HANDLETYPE_NONE UINT32_C(0x00000000) /**< no symmetry handling */
55 #define SYM_HANDLETYPE_SYMBREAK UINT32_C(0x00000001) /**< symmetry breaking inequalities */
56 #define SYM_HANDLETYPE_ORBITALFIXING UINT32_C(0x00000002) /**< orbital fixing */
57 
58 typedef uint32_t SYM_HANDLETYPE; /**< type of symmetry handling */
59 
60 typedef struct SYM_Vartype SYM_VARTYPE; /**< data of variables that are considered to be equivalent */
61 typedef struct SYM_Matrixdata SYM_MATRIXDATA;/**< data for symmetry group computation */
62 
63 #ifdef __cplusplus
64 }
65 #endif
66 
67 #endif
uint32_t SYM_SPEC
Definition: type_symmetry.h:37
SYM_Rhssense
Definition: type_symmetry.h:40
enum SYM_Rhssense SYM_RHSSENSE
Definition: type_symmetry.h:51
uint32_t SYM_HANDLETYPE
Definition: type_symmetry.h:58
SCIP callable library.