Gecode version 3.3.1 released
Gecode version 3.3.1 has been released.
From the Changelog:
This release adds many new features to Gist, fixes two major bugs in extensional constraints, and has some more cleanups to comply with the first release of the "Modeling and Programming with Gecode" document. And, as always some small fixes and cleanups.Don't miss the new documentation Modeling and Programming with Gecode. Compared to the earlier version ("Modeling with Gecode"), many chapters has been added on programming propagators and branchers. I recommend reading these chapters even if you are not going to write such a thing, since it is a very good description how Gecode works at lower levels. Also there are now some very good case studies.
- Kernel
- Other changes
- The (unused and unusable) CopiedHandle have been removed. (minor)
- Bug fixes
- Fixed bug in VarArray::resize function that occurred when shrinking variable arrays. (minor)
- Finite domain integers
- Bug fixes
- Fixed extensional constraint with finite automata for very unlikely (but apparantely possible) border case. (major)
- The extensional constraints with tuple sets could cause crashes when used with parallel search. (major)
- Finite integer sets
- Removals
- Removed Set::IntSetPropagator and Set::IntSetRePropagator because they are subsumed by the MixBinaryPropagator patterns. (minor)
- Bug fixes
- Fixed channeling between set and integer variables which did not propagate enough. (minor)
- Scheduling constraints
- Other changes
- Tasks in unary scheduling constraints may now have processing times of 0. (minor)
- Bug fixes
- The unary scheduling propagator with optional tasks missed some propagation sometimes. (minor)
- Script commandline driver
- Additions
- You can now register Gist inspectors in the driver options. (minor)
- Example scripts
- Additions
- Added Gist inspectors for the Knights and Queens examples. (minor)
- Gist
- Additions
- In addition to inspectors, you can now also register comparators, which can be used to compare two nodes in the tree. In combination with the option to compare before computing a fixpoint of the second node, this lets you see what exactly was modified by a branching. (major)
- Gist can now stop exploration after all alternatives of a certain branching are exhausted. This feature can be turned on by posting a special branching using the Gist::stopBranch post function. Gist will then stop whenever that special branching becomes active. (major)
- Added inspection of nodes before fixpoint computation. (minor)
- Nodes can now be bookmarked. (minor)
- Added inspectors that react whenever a node is selected. (minor)
- Bug fixes
- Missing export declarations prevented embedding Gist as a widget. There is now example code for embedding Gist in the directory gecode/gist/standalone-example. (minor)
- Fixed a bug where sometimes clicking on a node would select a different node. (minor)
- Performance improvements
- Scrolling and zooming have been reimplemented. The new implementation is more efficient and works around problems that occurred with large trees on some platforms. Zooming is now more intuitive, keeping the current center centered. You can now also zoom by pressing shift while using the mouse wheel. (major)
- Gecode/FlatZinc
- Other changes
- Comply with MiniZinc 1.1. String literals are not allowed any longer except in annotations, the solver outputs UNKNOWN and UNSATISFIABLE instead of just ==========, and the global constraints all_equal, decreasing_int, and decreasing_bool are supported. (minor)
- Performance improvements
- Variables that do not have output annotations are now garbage collected during copying. (minor)
- When using sums of Boolean variables using bool2int in MiniZinc, the FlatZinc interpreter now posts the more efficient propagators that work directly on the Boolean variables. (minor)
- General
- Documentation fixes
- Removed many small documentation quirks. (minor)