symmetry.h
Go to the documentation of this file.
32 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
57 * The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
58 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
78 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
79 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
84 * Only permutations that are not inactive (as marked by @p inactiveperms) are used. Thus, one can use this array to
103 unsigned* componentblocked, /**< array to store which symmetry methods have been used on a component
112 * The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
113 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
124 int** permstrans, /**< transposed matrix containing in each column a permutation of the symmetry group */
127 int* componentbegins, /**< array containing in i-th position the first position of component i in components array */
137 /** Compute orbit of a given variable and store it in @p orbit. The first entry of the orbit will
160 /** Checks whether a permutation is a composition of 2-cycles and in this case determine the number of overall
161 * 2-cycles and binary 2-cycles. It is a composition of 2-cycles iff @p ntwocyclesperm > 0 upon termination.
170 SCIP_Bool earlytermination /**< whether we terminate early if not all affected variables are binary */
199 unsigned** componentblocked, /**< array to store which symmetry methods have been used on a component
204 /** Given a matrix with nrows and \#perms + 1 columns whose first nfilledcols columns contain entries of variables, this routine
205 * checks whether the 2-cycles of perm intersect each row of column coltoextend in exactly one position. In this case,
219 int** nusedelems, /**< pointer to array storing how often an element was used in the orbitope */
221 SCIP_Shortbool* rowisbinary, /**< array encoding whether variables in an orbitope row are binary */
223 SCIP_Bool* infeasible /**< pointer to store if the number of intersecting cycles is too small */
235 int** orbitopevaridx, /**< permuted index table of variables in permvars that are contained in orbitope */
238 SCIP_Shortbool* rowisbinary, /**< array encoding whether a row contains only binary variables */
239 SCIP_Bool* infeasible, /**< pointer to store whether the potential orbitope is not an orbitope */
240 SCIP_Bool storelexorder, /**< whether the lexicographic order induced by the orbitope shall be stored */
256 SCIP_ORBITOPETYPE* type /**< pointer to store type of orbitope constraint after strengthening */
SCIP_RETCODE SCIPcomputeComponentsSym(SCIP *scip, 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:766
Definition: struct_scip.h:68
Definition: struct_var.h:207
SCIP_RETCODE SCIPcomputeOrbitsSym(SCIP *scip, SCIP_VAR **permvars, int npermvars, int **perms, int nperms, int *orbits, int *orbitbegins, int *norbits)
Definition: symmetry.c:49
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:163
type definitions for return codes for SCIP methods
type definitions for SCIP's main datastructure
SCIP_RETCODE SCIPisPackingPartitioningOrbitope(SCIP *scip, SCIP_VAR ***vars, int nrows, int ncols, SCIP_Bool **pprows, int *npprows, SCIP_ORBITOPETYPE *type)
Definition: symmetry.c:1161
type definitions for problem variables
public data structures and miscellaneous methods
SCIP_RETCODE SCIPdetermineNVarsAffectedSym(SCIP *scip, int **perms, int nperms, SCIP_VAR **permvars, int npermvars, int *nvarsaffected)
Definition: symmetry.c:584
SCIP_RETCODE SCIPisInvolutionPerm(int *perm, SCIP_VAR **vars, int nvars, int *ntwocyclesperm, int *nbincyclesperm, SCIP_Bool earlytermination)
Definition: symmetry.c:533
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:970
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:636
type definitions for symmetry computations
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:311
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:411
common defines and data types used in all packages of SCIP
Definition: objbenders.h:43