38 #ifndef __GECODE_INT_LDSB_HH__ 39 #define __GECODE_INT_LDSB_HH__ 47 namespace Gecode {
namespace Int {
namespace LDSB {
83 findVar(
int *indices,
unsigned int n_values,
unsigned int seq_size,
int index);
108 namespace Gecode {
namespace Int {
namespace LDSB {
171 virtual void update(
Literal) = 0;
175 virtual size_t dispose(
Space& home) = 0;
177 static void*
operator new(
size_t s,
Space& home);
179 static void operator delete(
void*,
Space&);
181 static void operator delete(
void*);
184 template <
class View>
195 virtual size_t dispose(
Space& home);
204 template <
class View>
215 virtual size_t dispose(
Space& home);
224 template <
class View>
257 virtual size_t dispose(
Space& home);
266 template <
class View>
291 virtual size_t dispose(
Space& home);
306 const Literal *
const _literals;
308 const int _nliterals;
313 const Literal* literals,
int nliterals);
317 const Literal* literals(
void)
const;
319 int nliterals(
void)
const;
321 virtual size_t size(
void)
const;
323 virtual void archive(
Archive& e)
const;
334 template<
class View,
int n,
class Val,
unsigned int a>
348 typename View::VarType
x,
int i,
371 virtual size_t dispose(
Space& home);
Int::LDSB::Literal ValueType
int _nsyms
Number of symmetry implementations.
VarImpBase ** xs
Array of variables in symmetry.
unsigned int n_indices
Total number of indices (n_seqs * seq_size)
void post(Home home, Term *t, int n, FloatRelType frt, FloatVal c)
Post propagator for linear constraint over floats.
IntSet values
Set of symmetric values.
A Literal is a pair of variable index and value.
unsigned int lookup_size
Size of lookup.
IntArgs values
Array of values in symmetry.
std::pair< int, int > findVar(int *indices, unsigned int n_values, unsigned int seq_size, int index)
Find the location of an integer in a collection of sequences.
Implementation of a value symmetry at the modelling level.
Implementation of a value sequence symmetry at the modelling level.
BranchTraits< typename View::VarType >::Filter BranchFilter
The branch filter that corresponds to the var type.
int ModEvent
Type for modification events.
Implementation of a symmetry at the modelling level.
Implementation of a variable sequence symmetry.
Support::BitSetOffset< Space > values
Symmetric values.
int * lookup
Map from variable's index to its sequence and position.
int _value
The value of the literal. For int and bool variables, this is the value itself; for set variables...
Base-class for variable implementations.
int _variable
Variable index. The ViewArray that the index is meant for is assumed to be known by context...
SymmetryImp< View > ** _syms
Array of symmetry implementations.
Base-class for both propagators and branchers.
int nxs
Number of variables in symmetry.
ArgArray< Int::LDSB::Literal > LiteralArgs
An array of literals.
void sequence(Home home, const IntVarArgs &x, const IntSet &s, int q, int l, int u, IntConLevel)
Post propagator for .
bool operator<(const Literal &rhs) const
Less than. The ordering is the lexicographical order on the (variable,value) pair.
Gecode::FloatVal c(-8, 8)
int p
Number of positive literals for node type.
Choice storing position and value, and symmetric literals to be excluded on the right branch...
Gecode::IntArgs i(4, 1, 2, 3, 4)
Base-class for branchers.
int n
Number of negative literals for node type.
unsigned int n_seqs
Number of sequences in symmetry.
Argument array for non-primitive types.
unsigned int * indices
Array of variable indices.
Generic brancher by view and value selection.
Literal(void)
Constructor for an empty literal.
ModEvent prune(Space &home, View x, int v)
Exclude value from variable view .
Implementation of a variable symmetry at the modelling level.
Implementation of a value symmetry.
unsigned int size(I &i)
Size of all ranges of range iterator i.
unsigned int seq_size
Size of each sequence in symmetry.
ArgArray< VarImpBase * > ArgsType
int nxs
Number of variables in symmetry.
Support::BitSet< Space > dead_sequences
Which sequences are dead.
int seq_size
Size of each sequence in symmetry.
Symmetry-breaking brancher with generic view and value selection.
struct Gecode::@519::NNF::@60::@62 a
For atomic nodes.
Implementation of a variable sequence symmetry at the modelling level.
Support::BitSetOffset< Space > indices
Symmetric variable indices.
VarImpBase ** xs
Array of variables in symmetry.
int seq_size
Size of each sequence in symmetry.
Passing integer arguments.
unsigned int seq_size
Size of each sequence in symmetry.
double position(const Space &home, IntVar x, int i)
unsigned int n_values
Total number of values (n_seqs * seq_size)
struct Gecode::@519::NNF::@60::@61 b
For binary nodes (and, or, eqv)
Implementation of a single symmetry.
Node * x
Pointer to corresponding Boolean expression node.
Choice for performing commit
Implementation of a variable symmetry.
Implementation of a value sequence symmetry.
Traits of arrays in Gecode.
unsigned int n_seqs
Number of sequences in symmetry.
Gecode toplevel namespace
#define GECODE_VTABLE_EXPORT
#define GECODE_INT_EXPORT
ArgArray< VarImpBase * > StorageType
Home class for posting propagators
Choice storing position and value
int nrefs
Number of references that point to this symmetry object.
Bitsets with index offset.
int * values
Set of sequences.