symmetry.h
Go to the documentation of this file.
33/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
58 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
59 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
80 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
81 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
86 * Only permutations that are not inactive (as marked by @p inactiveperms) are used. Thus, one can use this array to
105 unsigned* componentblocked, /**< array to store which symmetry methods have been used on a component
114 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
115 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
126 int** permstrans, /**< transposed matrix containing in each column a permutation of the symmetry group */
129 int* componentbegins, /**< array containing in i-th position the first position of component i in components array */
139/** Compute orbit of a given variable and store it in @p orbit. The first entry of the orbit will
162/** Checks whether a permutation is a composition of 2-cycles and in this case determine the number of overall
163 * 2-cycles and binary 2-cycles. It is a composition of 2-cycles iff @p ntwocyclesperm > 0 upon termination.
172 SCIP_Bool earlytermination /**< whether we terminate early if not all affected variables are binary */
202 unsigned** componentblocked, /**< array to store which symmetry methods have been used on a component
207/** Given a matrix with nrows and \#perms + 1 columns whose first nfilledcols columns contain entries of variables, this routine
208 * checks whether the 2-cycles of perm intersect each row of column coltoextend in exactly one position. In this case,
222 int** nusedelems, /**< pointer to array storing how often an element was used in the orbitope */
224 SCIP_Shortbool* rowisbinary, /**< array encoding whether variables in an orbitope row are binary */
226 SCIP_Bool* infeasible /**< pointer to store if the number of intersecting cycles is too small */
238 int** orbitopevaridx, /**< permuted index table of variables in permvars that are contained in orbitope */
241 SCIP_Shortbool* rowisbinary, /**< array encoding whether a row contains only binary variables */
242 SCIP_Bool* infeasible, /**< pointer to store whether the potential orbitope is not an orbitope */
243 SCIP_Bool storelexorder, /**< whether the lexicographic order induced by the orbitope shall be stored */
260 SCIP_ORBITOPETYPE* type /**< pointer to store type of orbitope constraint after strengthening */
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPdetermineNVarsAffectedSym(SCIP *scip, int **perms, int nperms, SCIP_VAR **permvars, int npermvars, int *nvarsaffected)
Definition: symmetry.c:593
SCIP_RETCODE SCIPcomputeComponentsSym(SCIP *scip, SYM_SYMTYPE symtype, int **perms, int nperms, SCIP_VAR **permvars, int npermvars, SCIP_Bool transposed, int **components, int **componentbegins, int **vartocomponent, unsigned **componentblocked, int *ncomponents)
Definition: symmetry.c:775
SCIP_RETCODE SCIPcomputeOrbitVar(SCIP *scip, int npermvars, int **perms, int **permstrans, int *components, int *componentbegins, SCIP_Shortbool *ignoredvars, SCIP_Shortbool *varfound, int varidx, int component, int *orbit, int *orbitsize)
Definition: symmetry.c:320
SCIP_RETCODE SCIPisInvolutionPerm(int *perm, SCIP_VAR **vars, int nvars, int *ntwocyclesperm, int *nbincyclesperm, SCIP_Bool earlytermination)
Definition: symmetry.c:542
SCIP_RETCODE SCIPcomputeOrbitsComponentsSym(SCIP *scip, int npermvars, int **permstrans, int nperms, int *components, int *componentbegins, int *vartocomponent, int ncomponents, int *orbits, int *orbitbegins, int *norbits, int *varorbitmap)
Definition: symmetry.c:420
SCIP_RETCODE SCIPcomputeOrbitsSym(SCIP *scip, SCIP_Bool issigned, SCIP_VAR **permvars, int npermvars, int **perms, int nperms, int *orbits, int *orbitbegins, int *norbits)
Definition: symmetry.c:52
SCIP_RETCODE SCIPdetectSingleOrDoubleLexMatrices(SCIP *scip, SCIP_Bool detectsinglelex, int **perms, int nperms, int permlen, SCIP_Bool *success, SCIP_Bool *isorbitope, int ***lexmatrix, int *nrows, int *ncols, int **lexrowsbegin, int **lexcolsbegin, int *nrowmatrices, int *ncolmatrices)
Definition: symmetry.c:2051
SCIP_RETCODE SCIPgenerateOrbitopeVarsMatrix(SCIP *scip, SCIP_VAR ****vars, int nrows, int ncols, SCIP_VAR **permvars, int npermvars, int **orbitopevaridx, int *columnorder, int *nusedelems, SCIP_Shortbool *rowisbinary, SCIP_Bool *infeasible, SCIP_Bool storelexorder, int **lexorder, int *nvarsorder, int *maxnvarsorder)
Definition: symmetry.c:987
SCIP_RETCODE SCIPisPackingPartitioningOrbitope(SCIP *scip, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool **pprows, int *npprows, SCIP_ORBITOPETYPE *type)
Definition: symmetry.c:1178
SCIP_RETCODE SCIPcomputeOrbitsFilterSym(SCIP *scip, int npermvars, int **permstrans, int nperms, SCIP_Shortbool *inactiveperms, int *orbits, int *orbitbegins, int *norbits, int *components, int *componentbegins, int *vartocomponent, unsigned *componentblocked, int ncomponents, int nmovedpermvars)
Definition: symmetry.c:172
SCIP_RETCODE SCIPextendSubOrbitope(int **suborbitope, int nrows, int nfilledcols, int coltoextend, int *perm, SCIP_Bool leftextension, int **nusedelems, SCIP_VAR **permvars, SCIP_Shortbool *rowisbinary, SCIP_Bool *success, SCIP_Bool *infeasible)
Definition: symmetry.c:645
Definition: objbenders.h:44
public data structures and miscellaneous methods
Definition: struct_var.h:208
Definition: struct_scip.h:70
type definitions for return codes for SCIP methods
type definitions for SCIP's main datastructure
type definitions for symmetry computations
type definitions for problem variables