Gecode version 3.1 released
Gecode version 3.1 is released.
The changes are:
Update: Some comments and findings
I have now converted all my Gecode models at My Gecode page to version 3.1.The only thing I has to care about was that the
Here are the changes I did, examplified with the model debruijn.cpp.
Remove
Accordingly the optimization variants should also be replaced:
Changes in Version 3.1.0 (2009-05-20)Also, version 1.6 of Gecode/FlatZinc is released to support for MiniZinc version 1.0. See MiniZinc version 1.0 released! for more about MiniZinc version 1.0.
This release introduces parallel search, features improved memory management (can double efficiency on MacOS X), and provides a reusable command line driver upon popular request. And, of course, some this and that.
- Kernel
- Performance improvements
- Cache memory blocks from deleted spaces. This hardly increases peak memory consumption. It improves performance on Windows and Linux only by up to 5%, but on MacOS by 50% in some cases (this improvement is absolutely essential for parallel execution). (major)
- Search engines
- Additions
- Added parallel search engines for DFS, BAB, and Restart (but not LDS). Please make sure to read the section "Parallel search" in "Modeling with Gecode". (major) Details
- Other changes
- The stop function of stop objects now also takes a second argument of type Search::Options. This is in particular useful for decisions that involve the number of threads used for search. (minor)
- Finite domain integers
- Additions
- Added a wait propagator: executes a function when a variable (or variables) become(s) assigned. (minor)
- Other changes
- The INT_VAL_MED value selection now consistently selects the greatest element in the domain not greater than the median. (minor)
- Finite integer sets
- Additions
- Added a wait propagator: executes a function when a variable (or variables) become(s) assigned. (minor)
- Other changes
- The set constraint sequentialUnion has been renamed to sequence. (minor)
- Script commandline driver
- Additions
- Added a new module "driver" as a commandline driver for scripts. This is due to popular request: most people have been using the support functionality for examples anyway. This function is now wrapped into a proper module (and Example is now called Script to be more general). See "Modeling with Gecode" for documentation. (major)
- Other changes
- If Gist is not available, -mode gist is the same as -mode solution. Invocation with -help also prints information about how Gecode has been configured. (minor)
- Support algorithms and datastructures
- Additions
- Added a tiny portable thread package specifically tailored to the needs for parallel search. Unfortunately, other portable thread packages have just too many issues. (minor)
- Support::quicksort and Support::insertion support using the less than operator for the sort order by leaving out the comparator object. (minor)
- Example scripts
- Gist
- Other changes
- Small user interface changes: disable search from hidden nodes, add depth information to status bar, and add statistics for subtrees (available from the node context menu and the Node menu). (minor)
- Easily add multiple inspectors to Gist. Inspectors are not exclusive any longer, you can select any combination of them to respond to clicks or solutions simultaneously. (minor)
- Bug fixes
- Fixed a dead lock that could occur when closing the Gist main window while search is still running. (minor)
- The inspectors are finalized before Gist exits. This fixes a bug where (at least on Mac OS) some memory was not freed in the correct order. (minor)
- Gist now correctly centers the current node after search has finished. (minor)
Update: Some comments and findings
I have now converted all my Gecode models at My Gecode page to version 3.1.The only thing I has to care about was that the
Example
class is incorporated properly in the distribution and is now called Script
. Also see the updated introduction document Modeling with Gecode (PDF) for more information.
Here are the changes I did, examplified with the model debruijn.cpp.
Remove
#include "examples/support.hh"and add the following (
#include <minimodel.hh> is shown here for completion
).
#include <gecode/driver.hh> #include <gecode/int.hh> #include <gecode/minimodel.hh> using namespace Gecode;The base class
Example
should also be replaced with Script
. This means that the following old code:class DeBruijn : public Example {was replaced with:
class DeBruijn : public Script {as where all the other occurrences of
Example
Accordingly the optimization variants should also be replaced:
MinimizeExample -> MinimizeScript MaximizeExample -> MaximizeScriptThe Options has been incorporated in the Driver class so I had to change
UnsignedIntOption _base_option; StringOption _int_var_option;to
Driver::UnsignedIntOption _base_option; Driver::StringOption _int_var_option;And now I will check out the other new features...