generic |
|
constraint | |
development | |
environment |
Gecode
Gecode is an open source C++ toolkit for developing constraint-based systems and applications. Gecode provides a constraint solver with state-of-the-art performance while being modular and extensible. Gecode is:
- open
- Gecode is radically open for programming: it can be easily interfaced to other systems. It supports the programming of new constraints, branching strategies, and search engines. New variable domains can be programmed at the same level of efficiency as the variables that come predefined with Gecode.
- comprehensive
- Gecode has a comprehensive set of features: constraints over integers, Booleans, sets, and floats (it implements more than 70 constraints from the Global Constraint Catalog and many more on top); C++ modeling layer; advanced branching heuristics (accumulated failure count, activity); many search engines (parallel, interactive graphical, restarts); automatic symmetry breaking (LDSB); no-goods from restarts; MiniZinc support; and many more.
- efficient
- Gecode offers excellent performance with respect to both runtime and memory usage. It won all gold medals in all categories at the MiniZinc Challenges from 2008 to 2012: 2012, 2011, 2010, 2009, and 2008.
- documented
- Gecode comes with both complete tutorial (more than 500 pages) and complete reference documentation that allows users to focus on different modeling and programming tasks with Gecode.
- free
- Gecode is distributed under the MIT license and is listed as free software by the FSF. All of its parts including reference documentation, implementations of global constraints, and examples are available as source code for download.
- portable
- Gecode is implemented in C++ that carefully follows the C++ standard. It can be compiled with modern C++ compilers and runs on a wide range of machines.
- parallel
- Gecode complies with reality in that it exploits the multiple cores of today's commodity hardware for parallel search, giving an already efficient base system an additional edge.