symmetry.h
Go to the documentation of this file.
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
48 * The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
49 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
69 * The non-trivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
70 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
75 * Only permutations that are not inactive (as marked by @p inactiveperms) are used. Thus, one can use this array to
94 unsigned* componentblocked, /**< array to store which symmetry methods have been used on a component
103 * The non-tivial orbits of the group action are stored in the array orbits of length npermvars. This array contains
104 * the indices of variables from the permvars array such that variables that are contained in the same orbit appear
115 int** permstrans, /**< transposed matrix containing in each column a permutation of the symmetry group */
118 int* componentbegins, /**< array containing in i-th position the first position of component i in components array */
128 /** Compute orbit of a given variable and store it in @p orbit. The first entry of the orbit will
151 /** Checks whether a permutation is a composition of 2-cycles and in this case determine the number of overall
152 * 2-cycles and binary 2-cycles. It is a composition of 2-cycles iff @p ntwocyclesperm > 0 upon termination.
161 SCIP_Bool earlytermination /**< whether we terminate early if not all affected variables are binary */
190 unsigned** componentblocked, /**< array to store which symmetry methods have been used on a component
195 /** Given a matrix with nrows and \#perms + 1 columns whose first nfilledcols columns contain entries of variables, this routine
196 * checks whether the 2-cycles of perm intersect each row of column coltoextend in exactly one position. In this case,
210 int** nusedelems, /**< pointer to array storing how often an element was used in the orbitope */
212 SCIP_Shortbool* rowisbinary, /**< array encoding whether variables in an orbitope row are binary */
214 SCIP_Bool* infeasible /**< pointer to store if the number of intersecting cycles is too small */
226 int** orbitopevaridx, /**< permuted index table of variables in permvars that are contained in orbitope */
229 SCIP_Shortbool* rowisbinary, /**< array encoding whether a row contains only binary variables */
230 SCIP_Bool* infeasible, /**< pointer to store whether the potential orbitope is not an orbitope */
231 SCIP_Bool storelexorder, /**< whether the lexicographic order induced by the orbitope shall be stored */
247 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:757
Definition: struct_scip.h:59
Definition: struct_var.h:198
SCIP_RETCODE SCIPcomputeOrbitsSym(SCIP *scip, SCIP_VAR **permvars, int npermvars, int **perms, int nperms, int *orbits, int *orbitbegins, int *norbits)
Definition: symmetry.c:40
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:154
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:1152
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:575
SCIP_RETCODE SCIPisInvolutionPerm(int *perm, SCIP_VAR **vars, int nvars, int *ntwocyclesperm, int *nbincyclesperm, SCIP_Bool earlytermination)
Definition: symmetry.c:524
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:961
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:627
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:302
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:402
common defines and data types used in all packages of SCIP
Definition: objbenders.h:33