Welcome to CaSPER
the friendly constraint solver :)
- A clean implementation of the set of idioms proved useful for
constraint solving such as event-driven execution, callback scheduling,
garbage collection, trail-aware generic data structures, etc.
- Full control over many aspects of the solving process such as propagator scheduling, search strategies, low-level domain implementation selection, and more.
- Powerful interface for adding new constraints due to efficient domain delta information availability (information about what has changed in the variable's domains).
- Powerful interface for adding new reasoning domains.
- Constructs for modeling search available directly
in C++ (a la OPL).
- Builtin modules for finite domain variables, finite set domain variables, graph domain variables, generic (possibly real-valued) interval-based reasoning and for 3d space reasoning.
- A black-box solver for problems expressed in CSPXML.
- Competitive performance compared with other state-of-the-art solvers.
After a long development period, the project is finally becoming stable enough for general use. This said, there is still a lot of work to do, namely on improving robustness and documentation. You might consider using more mature and complete alternatives such as Gecode or ILOG Solver (comercial).
CaSPER comes either packaged, or through the subversion version control system. The packaged distribution contains the subset of features which have been more exposed to testing, so it should be more stable. You can get it from here.
svn checkout http://proteina.di.fct.unl.pt/svn/casper/branches/0.1.x
or the main development branch which contains all the features (plus all the bugs):
svn checkout http://proteina.di.fct.unl.pt/svn/casper/trunk
If you are using the eclipse IDE, then this can be done using the menu command "File->New->Other->Project from SVN".
See Building and/or installing CaSPER for the next step.
CaSPER is open source (Apache v2.0 license).
The design and concepts that make this library are the product of the latest developments in the research field of Constraint Programming [mackworth85]. More specifically, we integrate original work [correia05,azevedo07,viegas07,krippahl02,perriquet07] with work from others on similar libraries such as ILOG Solver [puget94,puget95] or Gecode [gecode,shulte04,shulte06], and on related modeling languages such as OPL [hentenryck00].
All code is original except in the following cases:
- The code for the generalized arc consistent version of the distinct filter was taken from the Gecode library.
- The code for the bounds consistent version of the distinct filter was taken from an implementation of [ortiz03] available in http://ai.uwaterloo.ca/~vanbeek/software/.