Gecode version 3.4.1 released
Gecode version 3.4.1 has been released and can be downloaded here.
From Changes:
From Changes:
This release adds a new global constraint for bin-packing (with extended example) and filter functions for branchers. The reference documentation has been cleaned up. In particular, information on how to obtain, install, and link Gecode has been expanded and moved to "Modeling and Programming with Gecode" (Section 2.6). Additionally, the release fixes some bugs and contains some performance improvements.
- Kernel
- Other changes
- Branching now honors filter functions, where variables are considered for branching only if the filter functions returns true (see "Modeling and Programming with Gecode" for details). (major, thanks to Felix Brandt)
- Variable implementation views are now parametric with respect to variables but not variable implementations (see "Modeling and Programming with Gecode" for details). (minor)
- Renamed the template class for variables defined by a variable implementation from Var to VarImpVar and re-added a class Var as base class for any variable type. (minor)
- Finite domain integers
- Additions
- Added a binpacking constraint and propagator. (major)
- Bug fixes
- Do not inline functions with variable arguments. (minor, thanks to Gustavo A. Gómez Farhat)
- The reified dom constraint failed instead of setting the BoolVar to 0 when the minimum argument given was greater than the maximum. (minor, thanks to Kish Shen)
- Performance improvements
- Fixed sortedness constraint by replacing an algorithm that is linear in the width of the union of all domains with an algorithm that is quadratic in the number of variables. The previous algorithm crashed for domains with large values due to excessive memory use. (minor, thanks to Kish Shen)
- Using ICL_DOM for binary linear equations with unit coefficients (such as x = y+3) is now implemented using the much more efficient binary equality propagator instead of the linear equation propagator (which has worst case exponential runtime). (minor)
- Scheduling constraints
- Bug fixes
- Fixed initialization for unary and cumulative edge-finding (just worked accidentally). (major, thanks to Roberto Castañeda Lozano)
- Minimal modeling support
- Other changes
- Added element expression for BoolVarArgs. (minor)
- Bug fixes
- Fixed memory allocation for non-linear expressions and made the LinExpr constructor explicit for non-linear expressions (previously the automatic cast from integers to LinExpr was sometimes ambiguous). (minor)
- Script commandline driver
- Additions
- Added a class InstanceOptions that takes one additional string argument. (minor)
- Range and value iterators
- Performance improvements
- Reimplemented n-ary union, minus, and cache iterators for much better efficiency. (minor)
- Example scripts
- Additions
- Added a binpacking model using the binpacking constraint and CDBF (complete decreasing best fit) search. (major)
- Gist
- Other changes
- Only center node on double-click if it was undetermined (otherwise inspecting several nodes becomes slightly annoying). (minor)
- Performance improvements
- Saved some memory for each node in Gist (one pointer per node, two integers per inner node, and some additional memory on 64 bit platforms due to optimizing alignment), and speeded up deallocation of the tree (e.g. when resetting or closing Gist). (minor)
- Gecode/FlatZinc
- Additions
- Added support for global_cardinality_low_up. (minor)
- Performance improvements
- The FlatZinc parser now uses hash maps instead of STL maps, which significantly increases parsing performance for larger files. Furthermore, a single symbol table is used, also increasing performance and allowing to report duplicate symbol errors, which were previously ignored. (minor)
- General
- Documentation fixes
- Removed obsolete Glossary in reference documentation. (minor)