Skip to content

Commit 9f6ddd2

Browse files
author
Christopher Hojny
committed
Merge branch 'implement-SYMcomputeSymmetryGeneratorsNode-for-sym-none' into 'master'
implemented missing method for SYM=none See merge request integer/scip!4028
2 parents a215a89 + a07ebf4 commit 9f6ddd2

File tree

2 files changed

+60
-6
lines changed

2 files changed

+60
-6
lines changed

CHANGELOG

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,29 @@
1+
@page RN11 Release notes for SCIP 11
2+
3+
@section RN1100 SCIP 11.0.0
4+
***************************
5+
6+
Features
7+
--------
8+
9+
- adds functionality to compute symmetries of entire symmetry detection graph rather than just the restriction to variable nodes
10+
11+
Interface changes
12+
-----------------
13+
14+
### Deleted and changed API methods
15+
16+
- SCIPcreateSymgraph() receives an additional argument to specify an epsilon value that is used for epsilon-comparisons
17+
18+
### New API functions
19+
20+
- added SYMcomputeSymmetryGeneratorsNode() to compute generators of the automorphism group of an entire (node set) of a symmetry detection graph
21+
22+
### Data structures
23+
24+
- struct SYM_Graph receives an additional field to specify an epsilon value that is used for epsilon-comparisons
25+
- new enum SYM_GROUPTYPE to encode which symmetry group of a symmetry detection graph is computed
26+
127
@page RN10 Release notes for SCIP 10
228

329
@section RN1000 SCIP 10.0.0
@@ -40,7 +66,6 @@ Features
4066
- added support for AND-constraints to GAMS writer
4167
- added writing support for AMPL NL writer: currently only general and specialized linear and nonlinear constraints can be written
4268
- implemented columnwise Jacobian sparsity computation in the NLP oracle
43-
- adds functionality to compute symmetries of entire symmetry detection graph rather than just the restriction to variable nodes
4469

4570
Performance improvements
4671
------------------------
@@ -145,7 +170,6 @@ Interface changes
145170
SCIPcreateConsAbspower(), SCIPcreateConsBasicAbspower(), SCIPgetNlRowAbspower(),
146171
SCIPcreateConsSOC(), SCIPcreateConsBasicSOC(), SCIPgetNlRowSOC(),
147172
- removed previously deprecated NLP termination status codes SCIP_NLPTERMSTAT_TILIM, SCIP_NLPTERMSTAT_ITLIM, SCIP_NLPTERMSTAT_LOBJLIM, SCIP_NLPTERMSTAT_NUMERR, SCIP_NLPTERMSTAT_EVALERR, SCIP_NLPTERMSTAT_MEMERR, SCIP_NLPTERMSTAT_LICERR
148-
- SCIPcreateSymgraph() receives an additional argument to specify an epsilon value that is used for epsilon-comparisons
149173

150174
### New API functions
151175

@@ -202,7 +226,6 @@ Interface changes
202226
- SCIPvarGetMinAggrCoef() and SCIPvarGetMaxAggrCoef() to get bounds on absolute aggregation coefficients for a loose variable;
203227
SCIPisVarAggrCoefAcceptable() to check whether bounds on aggregation coefficients would exceed thresholds when using a loose variable in another aggregation
204228
- SCIPgetNRootIntFixings() to retrieve the number of integer fixings at the root node
205-
- added SYMcomputeSymmetryGeneratorsNode() to compute generators of the automorphism group of an entire (node set) of a symmetry detection graph
206229

207230
### Changes in preprocessor macros
208231

@@ -288,9 +311,6 @@ Interface changes
288311

289312
- added structs SCIP_IISFINDER, SCIP_IISFINDERDATA, SCIP_IIS
290313
- added struct SCIP_DATATREE to model generic serializable data; new enum SCIP_DATATREE_VALUETYPE
291-
- struct SYM_Graph receives an additional field to specify an epsilon value that is used for epsilon-comparisons
292-
- new enum SYM_GROUPTYPE to encode which symmetry group of a symmetry detection graph is computed
293-
294314

295315
Deleted files
296316
-------------

src/symmetry/compute_symmetry_none.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,40 @@ SCIP_RETCODE SYMcomputeSymmetryGeneratorsSDG(
121121
return SCIP_OKAY;
122122
}
123123

124+
/** compute generators of symmetry group of the complete symmetry detection graph
125+
*
126+
* If the symmetry detection graph (SDG) has k nodes, the first k entries of a generator correspond to the nodes
127+
* of the SDG. The remaining entries of the generator correspond to the variables (and possibly their negation).
128+
*/
129+
SCIP_RETCODE SYMcomputeSymmetryGeneratorsNode(
130+
SCIP* scip, /**< SCIP pointer */
131+
int maxgenerators, /**< maximal number of generators constructed (= 0 if unlimited) */
132+
SYM_GRAPH* graph, /**< symmetry detection graph */
133+
int* nperms, /**< pointer to store number of permutations */
134+
int* nmaxperms, /**< pointer to store maximal number of permutations (needed for freeing storage) */
135+
int*** perms, /**< pointer to store permutation generators as (nperms x npermvars) matrix */
136+
SCIP_Real* log10groupsize, /**< pointer to store log10 of size of group */
137+
SCIP_Real* symcodetime /**< pointer to store the time for symmetry code */
138+
)
139+
{ /*lint --e{715}*/
140+
assert( scip != NULL );
141+
assert( graph != NULL );
142+
assert( nperms != NULL );
143+
assert( nmaxperms != NULL );
144+
assert( perms != NULL );
145+
assert( log10groupsize != NULL );
146+
assert( symcodetime != NULL );
147+
148+
/* init */
149+
*nperms = 0;
150+
*nmaxperms = 0;
151+
*perms = NULL;
152+
*log10groupsize = 0;
153+
*symcodetime = 0.0;
154+
155+
return SCIP_OKAY;
156+
}
157+
124158
/** returns whether two given graphs are identical */
125159
SCIP_Bool SYMcheckGraphsAreIdentical(
126160
SCIP* scip, /**< SCIP pointer */

0 commit comments

Comments
 (0)