presolver for adding symmetry breaking constraints
Definition in file presol_symbreak.h.
#include "scip/scip.h"
Go to the source code of this file.
Functions | |
SCIP_RETCODE | SCIPincludePresolSymbreak (SCIP *scip) |
SCIP_RETCODE | SCIPcomputeGroupOrbitsSymbreak (SCIP *scip, SCIP_VAR **permvars, int npermvars, int **perms, int nperms, SCIP_Shortbool *activeperms, int *orbits, int *orbitbegins, int *norbits) |
SCIP_RETCODE SCIPincludePresolSymbreak | ( | SCIP * | scip | ) |
creates the symmetry breaking presolver and includes it in SCIP
creates the symbreak presolver and includes it in SCIP
scip | SCIP data structure |
Definition at line 1264 of file presol_symbreak.c.
References DEFAULT_ADDSYMRESACKS, DEFAULT_COMPUTEORBITS, DEFAULT_CONSSADDLP, DEFAULT_DETECTORBITOPES, FALSE, PRESOL_DESC, PRESOL_MAXROUNDS, PRESOL_NAME, PRESOL_PRIORITY, PRESOL_TIMING, SCIP_CALL, SCIP_OKAY, SCIPaddBoolParam(), SCIPallocMemory, SCIPincludePresolBasic(), SCIPsetPresolExit(), SCIPsetPresolFree(), SCIPsetPresolInit(), SCIPsetPresolInitpre(), and TRUE.
Referenced by SCIPincludeDefaultPlugins().
SCIP_RETCODE SCIPcomputeGroupOrbitsSymbreak | ( | SCIP * | scip, |
SCIP_VAR ** | permvars, | ||
int | npermvars, | ||
int ** | perms, | ||
int | nperms, | ||
SCIP_Shortbool * | activeperms, | ||
int * | orbits, | ||
int * | orbitbegins, | ||
int * | norbits | ||
) |
compute non-trivial orbits of symmetry group
The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains the indices of variables from the permvars array such that variables that are contained in the same orbit appear consecutively in the orbits array. The variables of the i-th orbit have indices orbits[orbitbegins[i]], ... , orbits[orbitbegins[i + 1] - 1]. Note that the description of the orbits ends at orbitbegins[norbits] - 1.
scip | SCIP instance |
permvars | variables considered by symbreak presolver |
npermvars | length of a permutation array |
perms | matrix containing in each row a permutation of the symmetry group |
nperms | number of permutations encoded in perms |
activeperms | array for marking active permutations (or NULL) |
orbits | array of non-trivial orbits |
orbitbegins | array containing begin positions of new orbits in orbits array |
norbits | pointer to number of orbits currently stored in orbits |
Definition at line 1336 of file presol_symbreak.c.
References FALSE, SCIP_CALL, SCIP_OKAY, SCIP_Shortbool, SCIPallocBufferArray, SCIPfreeBufferArray, and TRUE.
Referenced by propagateOrbitalFixing(), and SCIP_DECL_PRESOLEXEC().