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-2019 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 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/def.h"
29 #include "scip/type_retcode.h"
30 #include "scip/type_scip.h"
31 #include "scip/type_var.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 /** creates the symmetry breaking presolver and includes it in SCIP */
38 extern
40  SCIP* scip /**< SCIP data structure */
41  );
42 
43 /** compute non-trivial orbits of symmetry group
44  *
45  * The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
46  * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
47  * consecutively in the orbits array. The variables of the i-th orbit have indices
48  * orbits[orbitbegins[i]], ... , orbits[orbitbegins[i + 1] - 1].
49  * Note that the description of the orbits ends at orbitbegins[norbits] - 1.
50  */
51 extern
53  SCIP* scip, /**< SCIP instance */
54  SCIP_VAR** permvars, /**< variables considered by symbreak presolver */
55  int npermvars, /**< length of a permutation array */
56  int** perms, /**< matrix containing in each row a permutation of the symmetry group */
57  int nperms, /**< number of permutations encoded in perms */
58  SCIP_Shortbool* activeperms, /**< array for marking active permutations (or NULL) */
59  int* orbits, /**< array of non-trivial orbits */
60  int* orbitbegins, /**< array containing begin positions of new orbits in orbits array */
61  int* norbits /**< pointer to number of orbits currently stored in orbits */
62  );
63 
64 #ifdef __cplusplus
65 }
66 #endif
67 
68 #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)
type definitions for return codes for SCIP methods
type definitions for SCIP&#39;s main datastructure
#define SCIP_Shortbool
Definition: def.h:77
type definitions for problem variables
common defines and data types used in all packages of SCIP