35#include <bliss/defs.hh>
36#include <bliss/graph.hh>
40#pragma GCC diagnostic ignored "-Wshadow"
41#pragma GCC diagnostic ignored "-Wunused-variable"
42#pragma GCC diagnostic ignored "-Wsign-compare"
43#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
48# pragma warning(disable: 4189)
49# pragma warning(disable: 4267)
50# pragma warning(disable: 4388)
51# pragma warning(disable: 4456)
52# pragma warning(disable: 4430)
55#include <sassy/preprocessor.h>
56#include <sassy/tools/bliss_converter.h>
59#pragma GCC diagnostic warning "-Wunused-but-set-variable"
60#pragma GCC diagnostic warning "-Wsign-compare"
61#pragma GCC diagnostic warning "-Wunused-variable"
62#pragma GCC diagnostic warning "-Wshadow"
140 if ( (
int)
aut[
j] !=
j )
191#ifdef BLISS_PATCH_PRESENT
201 return "Computing Graph Automorphisms by T. Junttila and P. Kaski (users.aalto.fi/~tjunttil/bliss)";
205#define XSTR(x) STR(x)
216 return "Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)";
224 sassy::static_graph*
G,
231 SCIP_Real* log10groupsize,
232 SCIP_Bool restricttovars,
240 assert( maxgenerators >= 0 );
268 sassy::preprocessor
sassy;
272 sconfig.CONFIG_PREP_DEACT_PROBE =
true;
293#ifdef SCIP_DISABLED_CODE
311 blissgraph.set_splitting_heuristic(bliss::Graph::shs_f);
315#if BLISS_VERSION_MAJOR >= 1 || BLISS_VERSION_MINOR >= 76
321 auto hook = [&](
unsigned int n,
const unsigned int*
aut) {
330#ifdef BLISS_PATCH_PRESENT
338 blissgraph.find_automorphisms(stats, sassy::preprocessor::bliss_hook, (
void*) &
sassy);
377 SCIP_Real* log10groupsize,
425 SCIP_Real log10groupsize;
SCIP_RETCODE SYMbuildSassyGraph(SCIP *scip, sassy::static_graph *sassygraph, SYM_GRAPH *graph, SCIP_Bool *success)
SCIP_RETCODE SYMbuildSassyGraphCheck(SCIP *scip, sassy::static_graph *sassygraph, SYM_GRAPH *G1, SYM_GRAPH *G2, int *nnodes, int *nnodesfromG1, SCIP_Bool *success)
methods to build sassy graph for symmetry detection
interface for symmetry computations
SCIP_Bool SYMcheckGraphsAreIdentical(SCIP *scip, SYM_SYMTYPE symtype, SYM_GRAPH *G1, SYM_GRAPH *G2)
const char * SYMsymmetryGetName(void)
static SCIP_RETCODE computeAutomorphisms(SCIP *scip, SYM_SYMTYPE symtype, sassy::static_graph *G, int nsymvars, int maxgenerators, int ***perms, int *nperms, int *nmaxperms, SCIP_Real *log10groupsize, SCIP_Bool restricttovars, SCIP_Real *symcodetime)
const char * SYMsymmetryGetAddName(void)
SCIP_RETCODE SYMcomputeSymmetryGenerators(SCIP *scip, int maxgenerators, SYM_GRAPH *graph, int *nperms, int *nmaxperms, int ***perms, SCIP_Real *log10groupsize, SCIP_Real *symcodetime)
SCIP_Bool SYMcanComputeSymmetry(void)
const char * SYMsymmetryGetDesc(void)
static void sassyhook(void *user_param, int n, const int *aut, int nsupp, const int *suppa)
const char * SYMsymmetryGetAddDesc(void)
Constraint handler for linear constraints in their most general form, .
constraint handler for nonlinear constraints specified by algebraic expressions
#define SCIP_CALL_ABORT(x)
private functions to work with algebraic expressions
power and signed power expression handlers
variable expression handler
const char * SCIPgetProbName(SCIP *scip)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
SYM_SYMTYPE SCIPgetSymgraphSymtype(SYM_GRAPH *graph)
int SCIPgetSymgraphNVars(SYM_GRAPH *graph)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
int SCIPsnprintf(char *t, int len, const char *s,...)
assert(minobj< SCIPgetCutoffbound(scip))
public methods for memory management
methods for dealing with symmetry detection graphs
enum SCIP_Retcode SCIP_RETCODE
enum SYM_Symtype SYM_SYMTYPE