Scippy

SCIP

Solving Constraint Integer Programs

type_symmetry.h File Reference

Detailed Description

type definitions for symmetry computations

Author
Marc Pfetsch

Definition in file type_symmetry.h.

#include "scip/scip.h"

Go to the source code of this file.

Macros

#define SYM_SPEC_INTEGER   UINT32_C(0x00000001)
 
#define SYM_SPEC_BINARY   UINT32_C(0x00000002)
 
#define SYM_SPEC_REAL   UINT32_C(0x00000004)
 
#define SYM_COMPUTETIMING_BEFOREPRESOL   0
 
#define SYM_COMPUTETIMING_DURINGPRESOL   1
 
#define SYM_COMPUTETIMING_AFTERPRESOL   2
 
#define SYM_HANDLETYPE_NONE   UINT32_C(0x00000000)
 
#define SYM_HANDLETYPE_SYMBREAK   UINT32_C(0x00000001)
 
#define SYM_HANDLETYPE_ORBITALFIXING   UINT32_C(0x00000002)
 
#define SYM_HANDLETYPE_SST   UINT32_C(0x00000004)
 
#define SYM_HANDLETYPE_SYMCONS   (SYM_HANDLETYPE_SYMBREAK | SYM_HANDLETYPE_SST)
 

Typedefs

typedef uint32_t SYM_SPEC
 
typedef enum SYM_Rhssense SYM_RHSSENSE
 
typedef uint32_t SYM_HANDLETYPE
 
typedef struct SYM_Vartype SYM_VARTYPE
 
typedef struct SYM_Optype SYM_OPTYPE
 
typedef struct SYM_Consttype SYM_CONSTTYPE
 
typedef struct SYM_Rhstype SYM_RHSTYPE
 
typedef struct SYM_Matrixdata SYM_MATRIXDATA
 
typedef struct SYM_Exprdata SYM_EXPRDATA
 
typedef enum SCIP_LeaderRule SCIP_LEADERRULE
 
typedef enum SCIP_SSTType SCIP_SSTTYPE
 
typedef enum SCIP_OrbitopeType SCIP_ORBITOPETYPE
 
typedef enum SCIP_RecomputesymType SCIP_RECOMPUTESYMTYPE
 

Enumerations

enum  SYM_Rhssense {
  SYM_SENSE_UNKOWN = 0,
  SYM_SENSE_INEQUALITY = 1,
  SYM_SENSE_EQUATION = 2,
  SYM_SENSE_XOR = 3,
  SYM_SENSE_AND = 4,
  SYM_SENSE_OR = 5,
  SYM_SENSE_BOUNDIS_TYPE_1 = 6,
  SYM_SENSE_BOUNDIS_TYPE_2 = 7
}
 
enum  SCIP_LeaderRule {
  SCIP_LEADERRULE_FIRSTINORBIT = 0,
  SCIP_LEADERRULE_LASTINORBIT = 1,
  SCIP_LEADERRULE_MAXCONFLICTSINORBIT = 2,
  SCIP_LEADERRULE_MAXCONFLICTS = 3
}
 
enum  SCIP_LeaderTiebreakRule {
  SCIP_LEADERTIEBREAKRULE_MINORBIT = 0,
  SCIP_LEADERTIEBREAKRULE_MAXORBIT = 1,
  SCIP_LEADERTIEBREAKRULE_MAXCONFLICTSINORBIT = 2
}
 
enum  SCIP_SSTType {
  SCIP_SSTTYPE_BINARY = 1,
  SCIP_SSTTYPE_INTEGER = 2,
  SCIP_SSTTYPE_IMPLINT = 4,
  SCIP_SSTTYPE_CONTINUOUS = 8
}
 
enum  SCIP_OrbitopeType {
  SCIP_ORBITOPETYPE_FULL = 0,
  SCIP_ORBITOPETYPE_PARTITIONING = 1,
  SCIP_ORBITOPETYPE_PACKING = 2
}
 
enum  SCIP_RecomputesymType {
  SCIP_RECOMPUTESYM_NEVER = 0,
  SCIP_RECOMPUTESYM_ALWAYS = 1,
  SCIP_RECOMPUTESYM_OFFOUNDRED = 2
}
 

Macro Definition Documentation

◆ SYM_SPEC_INTEGER

#define SYM_SPEC_INTEGER   UINT32_C(0x00000001)

symmetry type specification need symmetries for integer variables only

Definition at line 33 of file type_symmetry.h.

Referenced by determineSymmetry(), propagateOrbitalFixing(), SCIP_DECL_PROPEXITPRE(), SCIP_DECL_PROPINITPRE(), SCIP_DECL_PROPPRESOL(), SymmetryFixVar(), and tryAddSymmetryHandlingConss().

◆ SYM_SPEC_BINARY

#define SYM_SPEC_BINARY   UINT32_C(0x00000002)

◆ SYM_SPEC_REAL

#define SYM_SPEC_REAL   UINT32_C(0x00000004)

◆ SYM_COMPUTETIMING_BEFOREPRESOL

#define SYM_COMPUTETIMING_BEFOREPRESOL   0

symmetry timings compute symmetries before presolving

Definition at line 40 of file type_symmetry.h.

◆ SYM_COMPUTETIMING_DURINGPRESOL

#define SYM_COMPUTETIMING_DURINGPRESOL   1

compute symmetries during presolving

Definition at line 41 of file type_symmetry.h.

Referenced by SCIP_DECL_PROPPRESOL().

◆ SYM_COMPUTETIMING_AFTERPRESOL

#define SYM_COMPUTETIMING_AFTERPRESOL   2

compute symmetries after presolving

Definition at line 42 of file type_symmetry.h.

Referenced by SCIP_DECL_DIALOGEXEC(), and SCIP_DECL_PROPPRESOL().

◆ SYM_HANDLETYPE_NONE

#define SYM_HANDLETYPE_NONE   UINT32_C(0x00000000)

no symmetry handling

Definition at line 59 of file type_symmetry.h.

◆ SYM_HANDLETYPE_SYMBREAK

#define SYM_HANDLETYPE_SYMBREAK   UINT32_C(0x00000001)

symmetry breaking inequalities

Definition at line 60 of file type_symmetry.h.

Referenced by addSymresackConss(), detectAndHandleSubgroups(), and detectOrbitopes().

◆ SYM_HANDLETYPE_ORBITALFIXING

#define SYM_HANDLETYPE_ORBITALFIXING   UINT32_C(0x00000002)

orbital fixing

Definition at line 61 of file type_symmetry.h.

Referenced by addSymresackConss().

◆ SYM_HANDLETYPE_SST

#define SYM_HANDLETYPE_SST   UINT32_C(0x00000004)

Schreier Sims cuts

Definition at line 62 of file type_symmetry.h.

Referenced by addSSTConss(), and addSymresackConss().

◆ SYM_HANDLETYPE_SYMCONS

#define SYM_HANDLETYPE_SYMCONS   (SYM_HANDLETYPE_SYMBREAK | SYM_HANDLETYPE_SST)

Definition at line 63 of file type_symmetry.h.

Referenced by SCIP_DECL_DIALOGEXEC().

Typedef Documentation

◆ SYM_SPEC

typedef uint32_t SYM_SPEC

types of variables handled by symmetry

Definition at line 37 of file type_symmetry.h.

◆ SYM_RHSSENSE

typedef enum SYM_Rhssense SYM_RHSSENSE

Definition at line 56 of file type_symmetry.h.

◆ SYM_HANDLETYPE

typedef uint32_t SYM_HANDLETYPE

type of symmetry handling

Definition at line 65 of file type_symmetry.h.

◆ SYM_VARTYPE

typedef struct SYM_Vartype SYM_VARTYPE

data of variables that are considered to be equivalent

Definition at line 67 of file type_symmetry.h.

◆ SYM_OPTYPE

typedef struct SYM_Optype SYM_OPTYPE

data of operators that are considered to be equivalent

Definition at line 68 of file type_symmetry.h.

◆ SYM_CONSTTYPE

typedef struct SYM_Consttype SYM_CONSTTYPE

data of constants that are considered to be equivalent

Definition at line 69 of file type_symmetry.h.

◆ SYM_RHSTYPE

typedef struct SYM_Rhstype SYM_RHSTYPE

data of constraint sides that are considered to be equivalent

Definition at line 70 of file type_symmetry.h.

◆ SYM_MATRIXDATA

data for symmetry group computation on linear constraints

Definition at line 71 of file type_symmetry.h.

◆ SYM_EXPRDATA

typedef struct SYM_Exprdata SYM_EXPRDATA

data for symmetry group computation on nonlinear constraints

Definition at line 72 of file type_symmetry.h.

◆ SCIP_LEADERRULE

Definition at line 82 of file type_symmetry.h.

◆ SCIP_SSTTYPE

typedef enum SCIP_SSTType SCIP_SSTTYPE

Definition at line 101 of file type_symmetry.h.

◆ SCIP_ORBITOPETYPE

Definition at line 110 of file type_symmetry.h.

◆ SCIP_RECOMPUTESYMTYPE

Definition at line 119 of file type_symmetry.h.

Enumeration Type Documentation

◆ SYM_Rhssense

define sense of rhs

Enumerator
SYM_SENSE_UNKOWN 

unknown sense

SYM_SENSE_INEQUALITY 

linear inequality

SYM_SENSE_EQUATION 

linear equation

SYM_SENSE_XOR 

XOR constraint

SYM_SENSE_AND 

AND constraint

SYM_SENSE_OR 

OR constrant

SYM_SENSE_BOUNDIS_TYPE_1 

bounddisjunction type 1

SYM_SENSE_BOUNDIS_TYPE_2 

bounddisjunction type 2

Definition at line 45 of file type_symmetry.h.

◆ SCIP_LeaderRule

selection rules for leaders in SST cuts

Enumerator
SCIP_LEADERRULE_FIRSTINORBIT 

first var in orbit

SCIP_LEADERRULE_LASTINORBIT 

last var in orbit

SCIP_LEADERRULE_MAXCONFLICTSINORBIT 

var with most conflicting vars in its orbit

SCIP_LEADERRULE_MAXCONFLICTS 

var with most conflicting vars in problem

Definition at line 75 of file type_symmetry.h.

◆ SCIP_LeaderTiebreakRule

tie breaks for leader rule based on the leader's orbit

Enumerator
SCIP_LEADERTIEBREAKRULE_MINORBIT 

orbit of minimum size

SCIP_LEADERTIEBREAKRULE_MAXORBIT 

orbit of maximum size

SCIP_LEADERTIEBREAKRULE_MAXCONFLICTSINORBIT 

orbit with maximum number of vars in conflict with leader

Definition at line 85 of file type_symmetry.h.

◆ SCIP_SSTType

variable types for leader in Schreier Sims cuts

Enumerator
SCIP_SSTTYPE_BINARY 

binary variables

SCIP_SSTTYPE_INTEGER 

integer variables

SCIP_SSTTYPE_IMPLINT 

implicitly integer variables

SCIP_SSTTYPE_CONTINUOUS 

continuous variables

Definition at line 93 of file type_symmetry.h.

◆ SCIP_OrbitopeType

type of orbitope constraint: full, packing, or partitioning orbitope

Enumerator
SCIP_ORBITOPETYPE_FULL 

constraint is a full orbitope constraint: rowsum(x) unrestricted

SCIP_ORBITOPETYPE_PARTITIONING 

constraint is a partitioning orbitope constraint: rowsum(x) == 1

SCIP_ORBITOPETYPE_PACKING 

constraint is a packing orbitope constraint: rowsum(x) <= 1

Definition at line 104 of file type_symmetry.h.

◆ SCIP_RecomputesymType

conditions to recompute symmetries after a restart

Enumerator
SCIP_RECOMPUTESYM_NEVER 

never recompute symmetries

SCIP_RECOMPUTESYM_ALWAYS 

always recompute symmetries

SCIP_RECOMPUTESYM_OFFOUNDRED 

only if orbital fixing found a reduction in previous run

Definition at line 113 of file type_symmetry.h.