symmetry.h
Go to the documentation of this file.
33/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
63 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
64 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
85 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
86 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
91 * Only permutations that are not inactive (as marked by @p inactiveperms) are used. Thus, one can use this array to
110 unsigned* componentblocked, /**< array to store which symmetry methods have been used on a component
119 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
120 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
131 int** permstrans, /**< transposed matrix containing in each column a permutation of the symmetry group */
134 int* componentbegins, /**< array containing in i-th position the first position of component i in components array */
144/** Compute orbit of a given variable and store it in @p orbit. The first entry of the orbit will
167/** Checks whether a permutation is a composition of 2-cycles and in this case determine the number of overall
168 * 2-cycles and binary 2-cycles. It is a composition of 2-cycles iff @p ntwocyclesperm > 0 upon termination.
177 SCIP_Bool earlytermination /**< whether we terminate early if not all affected variables are binary */
207 unsigned** componentblocked, /**< array to store which symmetry methods have been used on a component
212/** Given a matrix with nrows and \#perms + 1 columns whose first nfilledcols columns contain entries of variables, this routine
213 * checks whether the 2-cycles of perm intersect each row of column coltoextend in exactly one position. In this case,
227 int** nusedelems, /**< pointer to array storing how often an element was used in the orbitope */
229 SCIP_Shortbool* rowisbinary, /**< array encoding whether variables in an orbitope row are binary */
231 SCIP_Bool* infeasible /**< pointer to store if the number of intersecting cycles is too small */
243 int** orbitopevaridx, /**< permuted index table of variables in permvars that are contained in orbitope */
246 SCIP_Shortbool* rowisbinary, /**< array encoding whether a row contains only binary variables */
247 SCIP_Bool* infeasible, /**< pointer to store whether the potential orbitope is not an orbitope */
248 SCIP_Bool storelexorder, /**< whether the lexicographic order induced by the orbitope shall be stored */
265 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:608
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:790
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:335
SCIP_RETCODE SCIPisInvolutionPerm(int *perm, SCIP_VAR **vars, int nvars, int *ntwocyclesperm, int *nbincyclesperm, SCIP_Bool earlytermination)
Definition: symmetry.c:557
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:435
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:67
SCIP_VARTYPE SCIPgetSymInferredVarType(SCIP_VAR *var)
Definition: symmetry.c:45
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:2118
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:1002
SCIP_RETCODE SCIPisPackingPartitioningOrbitope(SCIP *scip, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool **pprows, int *npprows, SCIP_ORBITOPETYPE *type)
Definition: symmetry.c:1193
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:187
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:660
Definition: multiprecision.hpp:66
public data structures and miscellaneous methods
Definition: struct_var.h:262
Definition: struct_scip.h:72
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