« MiniZinc version 1.1.3 released | Main | Helmut Simonis' blog: Constraint Applications Blog »

Lightweight Dynamic Symmetry Breaking (LDSB) for Gecode

Christopher Mears just announced on the Gecode mailing list that he has released (a somewhat experimental version of) Lightweight Dynamic Symmetry Breaking (LDSB) library for Gecode (version 3.3.1).

In the announce mail, Mears writes:
The main strength of LDSB is that it allows symmetry breaking to 
be added very simply to a model.  Here is an example:
// ...
IntVarArray xs;
ExampleModel() : xs(*this, 4, 0, 3)
{
    distinct(*this, xs);

    // Symmetry breaking starts here...
    Symmetries s(1);
    s[0] = values_interchange(*this, xs);
    // ... and ends here.

    branch(*this, xs, INT_VAR_NONE, INT_VAL_MIN, s);
}
// ...
There are also a lot of examples how to use LDSB in the package.

The reference for LDSB is C. Mears, M. Garcia de la Banda, B. Demoen, M. Wallace. Lightweight Dynamic Symmetry Breaking. Faculty of Information Technology, Monash University, No. 2010/254, 2010. However, I have not found the paper online.

LDSB was first written for ECLiPSe (and is included in recent releases); see the ECLiPSe documentation for more details about the ECLiPSe LDSB package.