Scippy

SCIP

Solving Constraint Integer Programs

presol_symbreak.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-2017 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 email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file presol_symbreak.h
17  * @ingroup PRESOLVERS
18  * @brief presolver for adding symmetry breaking constraints
19  * @author Marc Pfetsch
20  * @author Thomas Rehn
21  */
22 
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
24 
25 #ifndef __SCIP_PRESOL_SYMBREAK_H__
26 #define __SCIP_PRESOL_SYMBREAK_H__
27 
28 #include "scip/scip.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 /** creates the symmetry breaking presolver and includes it in SCIP */
35 extern
37  SCIP* scip /**< SCIP data structure */
38  );
39 
40 /** compute non-trivial orbits of symmetry group
41  *
42  * The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
43  * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
44  * consecutively in the orbits array. The variables of the i-th orbit have indices
45  * orbits[orbitbegins[i]], ... , orbits[orbitbegins[i + 1] - 1].
46  * Note that the description of the orbits ends at orbitbegins[norbits] - 1.
47  */
48 extern
50  SCIP* scip, /**< SCIP instance */
51  SCIP_VAR** permvars, /**< variables considered by symbreak presolver */
52  int npermvars, /**< length of a permutation array */
53  int** perms, /**< matrix containing in each row a permutation of the symmetry group */
54  int nperms, /**< number of permutations encoded in perms */
55  SCIP_Shortbool* activeperms, /**< array for marking active permutations (or NULL) */
56  int* orbits, /**< array of non-trivial orbits */
57  int* orbitbegins, /**< array containing begin positions of new orbits in orbits array */
58  int* norbits /**< pointer to number of orbits currently stored in orbits */
59  );
60 
61 #ifdef __cplusplus
62 }
63 #endif
64 
65 #endif
SCIP_RETCODE SCIPincludePresolSymbreak(SCIP *scip)
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_RETCODE SCIPcomputeGroupOrbitsSymbreak(SCIP *scip, SCIP_VAR **permvars, int npermvars, int **perms, int nperms, SCIP_Shortbool *activeperms, int *orbits, int *orbitbegins, int *norbits)
#define SCIP_Shortbool
Definition: def.h:69
SCIP callable library.