Gecode version 3.2 released
Gecode version 3.2 is released. It can be downloaded here.
From the Changelog:
Note: I have yet to change my models at My Gecode page to version 3.2.
Update some hours later: The following three models was the only that has to be changed, all with the simple addition of
From the Changelog:
Changes in Version 3.2.0 (2009-10-05)Also, don't forget to read the new version of Modeling with Gecode.This release has some important bug fixes (in particular for global cardinality aka count), the documentation has been improved (worked around some issues with generation by doxygen), integrates the FlatZinc interpreter into the Gecode source tree, provides propagators for disjunctive scheduling (experimental), and lots of small changes and fixes. For more consistent names, branchings are branchers now and branching descriptions are choices (this you might have to adapt to).
- Kernel
- Other changes
- A branching is now a brancher and a branching description is now a choice. (major).
Details: Classes and member functions have been renamed accordingly. The change is necessary due to proper explanation in the forthcoming "Programming with Gecode".- Search engines
- Other changes
- Optimized thread creation by thread pools, now the creation and deletion of arbitrarily many parallel search engines also works for platforms using pthreads (Linux and MacOS). (minor)
- Path for search provides top and empty methods. (minor, thanks to Vincent Barichard)
- Bug fixes
- The memory reported could be sometimes too low (that could only happen when an advisor allocates memory which they do only now). (minor)
- Compiles again if no threads available. (minor)
- Finite domain integers
- Additions
- Added regret_min and regret_max for IntVar and BoolVar (they were only available for IntView). (minor, thanks to Kish Shen)
- Added branch and assign for single integer and Boolean variable. (minor)
- Added element constraints for Matrix arrays. (minor, thanks to Håkan Kjellerstrand)
- Other changes
- The element constraint now computes more accurate variable bounds when being posted (to avoid arithmetic overflow in naive models). (minor)
- The element constraint now throws an exception if used with an empty array. (minor)
- Moved cumulatives to the new scheduling library. (minor)
- Moved circuit to the new graph library. (minor)
- Bug fixes
- Slightly improved strength of the division propagator. (minor, thanks to Jan Kelbel)
- Fixed serious bug in the bounds propagator for global cardinality. (major)
- Performance improvements
- Extensional propagators using DFAs or REGs (aka regular) use a more compact state representation but create their state more eagerly. That can improve performance considerably (twice as fast) at a slight increase in memory. (minor, thanks to George Katsirelos, Nina Narodytska)
- Optimized n-ary disjunction and conjunction and the clause constraint. (minor)
- Linear constraints over Boolean variables with unit coefficients (aka Boolean cardinality constraints) have been reimplemented. Less memory (minus 30%) and more speed. For example, BIBD runs 10% faster now. (minor)
- Finite integer sets
- Additions
- Added branch and assign for single set variable. (minor)
- Added element constraints for Matrix arrays. (minor, thanks to Håkan Kjellerstrand)
- Other changes
- The element constraint with an integer index variable now throws an exception if used with an empty array. (minor)
- Scheduling constraints
- Additions
- Added propagators for disjunctive scheduling (unary resource scheduling). This is still experimental as the propagators are not yet optimized and branching and modelling support is not yet available. (major)
- Added a new module for scheduling. To use scheduling constraints, you have to include <gecode/scheduling.hh> and link against the scheduling library. (minor)
- Graph constraints
- Additions
- Cost-based variants for circuit added. (minor)
- Added a new module for graph constraints. To use graph constraints, you have to include <gecode/graph.hh> and link against the graph library. (minor)
- Minimal modeling support
- Additions
- Added element constraints for Matrix interface to arrays. (minor, thanks to Håkan Kjellerstrand)
- Script commandline driver
- Additions
- Added new standard option for options called symmetry. (minor)
- Other changes
- The driver takes copies of all string values passed top it. (minor, thanks to Luca Di Gaspero)
- Support algorithms and datastructures
- Other changes
- No longer depend on availability of timersub. (minor, thanks to Alexandre Fayolle)
- Example scripts
- Additions
- Added branching following Warnsdorff's heuristic for Knights. (minor)
- Other changes
- Examples now use the symmetry-option for symmetry-breaking. (minor).
Details:The affected examples are:- Bug fixes
- Gist
- Other changes
- The Gist console now has a toolbar that provides buttons to clear the text as well as to configure the console window to stay on top of Gist. Furthermore, after adding output, the console now automatically scrolls to the bottom. (minor)
- Bug fixes
- Gist now places clones also on the leftmost branch during search. (minor)
- Gecode/FlatZinc
- General
- Other changes
- Compiles with MSVC 2005 again. (minor, thanks to David Rijsman)
- Bug fixes
- The configure script checked for Qt 4.2, although Gist requires at least Qt 4.3. (minor)
- Documentation fixes
- Cleaned up the generated reference documentation, and introduced a number of workarounds for issues in doxygen. In particular, the documentation for linear constraints over Boolean variables and for the thread abstractions is now generated properly. (major)
- Mention that also grep is needed for building Gecode. (minor, thanks to Vivian De Smedt)
Note: I have yet to change my models at My Gecode page to version 3.2.
Update some hours later: The following three models was the only that has to be changed, all with the simple addition of
#include <gecode/scheduling.hh>
: