Toggle navigation
SCIP Optimization Suite
SCIP
SoPlex
ZIMPL
UG
GCG
Documentation
SCIP 9.2.0
SCIP 8.1.0
SCIP 7.0.3
SCIP 6.0.2
SCIP 5.0.1
SCIP 4.0.1
SCIP 3.2.1
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-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 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
36
SCIP_RETCODE
SCIPincludePresolSymbreak
(
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
49
SCIP_RETCODE
SCIPcomputeGroupOrbitsSymbreak
(
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
Definition:
struct_scip.h:58
SCIPincludePresolSymbreak
SCIP_RETCODE SCIPincludePresolSymbreak(SCIP *scip)
Definition:
presol_symbreak.c:1264
SCIP_Var
Definition:
struct_var.h:198
SCIP_RETCODE
enum SCIP_Retcode SCIP_RETCODE
Definition:
type_retcode.h:53
SCIPcomputeGroupOrbitsSymbreak
SCIP_RETCODE SCIPcomputeGroupOrbitsSymbreak(SCIP *scip, SCIP_VAR **permvars, int npermvars, int **perms, int nperms, SCIP_Shortbool *activeperms, int *orbits, int *orbitbegins, int *norbits)
Definition:
presol_symbreak.c:1336
SCIP_Shortbool
#define SCIP_Shortbool
Definition:
def.h:69
scip
Definition:
objbranchrule.h:33
scip.h
SCIP callable library.