Scippy

SCIP

Solving Constraint Integer Programs

prop_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-2022 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 prop_symmetry.h
17  * @ingroup PROPAGATORS
18  * @brief propagator for symmetry handling
19  * @author Marc Pfetsch
20  * @author Thomas Rehn
21  * @author Christopher Hojny
22  */
23 
24 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
25 
26 #ifndef __SCIP_PROP_SYMMETRY_H_
27 #define __SCIP_PROP_SYMMETRY_H_
28 
29 #include <scip/scip.h>
30 
31 #include <symmetry/type_symmetry.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 /** include symmetry propagator */
38 SCIP_EXPORT
40  SCIP* scip /**< SCIP data structure */
41  );
42 
43 /** return currently available symmetry group information */
44 SCIP_EXPORT
46  SCIP* scip, /**< SCIP data structure */
47  int* npermvars, /**< pointer to store number of variables for permutations */
48  SCIP_VAR*** permvars, /**< pointer to store variables on which permutations act */
49  SCIP_HASHMAP** permvarmap, /**< pointer to store hash map of permvars (or NULL) */
50  int* nperms, /**< pointer to store number of permutations */
51  int*** perms, /**< pointer to store permutation generators as (nperms x npermvars) matrix (or NULL)*/
52  int*** permstrans, /**< pointer to store permutation generators as (npermvars x nperms) matrix (or NULL)*/
53  SCIP_Real* log10groupsize, /**< pointer to store log10 of group size (or NULL) */
54  SCIP_Bool* binvaraffected, /**< pointer to store whether binary variables are affected */
55  int** components, /**< pointer to store components of symmetry group (or NULL) */
56  int** componentbegins, /**< pointer to store begin positions of components in components array (or NULL) */
57  int** vartocomponent, /**< pointer to store assignment from variable to its component (or NULL) */
58  int* ncomponents /**< pointer to store number of components (or NULL) */
59  );
60 
61 /** return whether orbital fixing is enabled */
62 SCIP_EXPORT
64  SCIP* scip /**< SCIP data structure */
65  );
66 
67 /** return number of the symmetry group's generators */
68 SCIP_EXPORT
70  SCIP* scip /**< SCIP data structure */
71  );
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 
77 #endif
int SCIPgetSymmetryNGenerators(SCIP *scip)
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
SCIP_Bool SCIPisOrbitalfixingEnabled(SCIP *scip)
SCIP_RETCODE SCIPincludePropSymmetry(SCIP *scip)
#define SCIP_Bool
Definition: def.h:84
type definitions for symmetry computations
#define SCIP_Real
Definition: def.h:177
SCIP_RETCODE SCIPgetSymmetry(SCIP *scip, int *npermvars, SCIP_VAR ***permvars, SCIP_HASHMAP **permvarmap, int *nperms, int ***perms, int ***permstrans, SCIP_Real *log10groupsize, SCIP_Bool *binvaraffected, int **components, int **componentbegins, int **vartocomponent, int *ncomponents)
SCIP callable library.