Generated on Mon Aug 25 11:35:46 2008 for Gecode by doxygen 1.5.6

Changes in Version 1.2.1 (2006-07-19)

In addition to the usual fixes and improvements, the biggest change is that all branchings now must support branching descriptions. This also entails straightforward changes (simplifications) to search-related space operations and to the implementation of search engines.

  • Kernel
    • Additions
      • Added a macro GECODE_NEVER that assert that this command is never executed. This is preferred over assert(false) as it is used for optimization, if supported by a compiler (for example, Microsoft Visual C++). (minor)
    • Other changes
      • The ViewValBranching class now passes the home space to all member functions used in selecting the view and the value. (minor, thanks to Martin Mann)
      • The interface for branchings has changed considerably, reflecting the fact now that all branchings must support branching descriptions. This is also reflected in the Space::status operation which has its arguments reversed and corrected const qualifiers on its arguments. But the good news is that it is considerably simpler than before. (major)
      • The status operation does not any longer accept an argument for the number of alternatives. The number of alternatives is now available from a branching description (where it is passed upon creation of the description). This reflects the fact that branching descriptions are mandatory now. (major)
      • Change exceptions thrown by Gecode to be compliant with C++ exceptions. (minor, bugzilla entry)
    • Bug fixes
      • As Boolean variables can be derived from integer variables, the assumption that a not yet assigned Boolean variable can not be modified is wrong. (minor)
  • Search engines
    • Other changes
      • Branchings now must return branching descriptions and commit operations also insist on being provided with branching descriptions. This change reflects that batch recomputation is of vital importance for efficiency in Gecode. (major)
    • Bug fixes
      • Fixed a serious bug where during recomputation the search stack was always inspected behind the last element: the reason why recomputation never crashed has been that stacks always keep one element extra for optimization. So, serious bug but looks as if no one stumbled over this... (major)
      • Search engines now correctly count the number of propagation steps including propagation that occurs when adaptive recomputation creates additional clones. (minor)
  • Finite domain integers
    • Removals
      • Removed bounds-consistent propagation for count constraint (not worth the trouble, just use domain-consistent). (minor)
    • Bug fixes
      • Fixed fixpoint detection bug in n-ary min and max propagators. (minor)
      • Min and max propagators now correctly handle cases such as min(x,y)=x. (minor)
      • Assignment branchings (that is, branchings with a single alternative) could possibly take the wrong values for assignment during recomputation. (minor)
    • Performance improvements
      • Make Boolean linear constraints with constant right hand sides more incremental using dynamic subscriptions (gives a 20-30% speedup). (major)
      • Made n-ary Boolean conjunction and disjunction more incremental by using dynamic subscriptions. (minor)
      • Provide special versions of Boolean propagators optimizing cases where n-ary disjunctions are true. (minor)
      • Change implementation of Boolean propagators from conjunction to disjunction so that disjunction can be used as special case for Boolean sum with inequalities. (minor)
  • Finite integer sets
    • Additions
      • Added finite set projection propagators. They allow to propagate all finite set constraints expressible as finite set projectors, including negated and reified constraints. (major)
    • Bug fixes
      • Fixed fixpoint detection for n-ary partition propagator. (minor)
  • Minimal modelling support
    • Performance improvements
      • Take advantage of specialized Boolean propagators in Boolean expressions and relations. (minor)
  • Support algorithms and datastructures
    • Additions
      • Added simple class encapsulating a linear congruential pseudo-random number generator. (minor)
  • General
    • Bug fixes
      • Renamed macros so as to avoid nameclashes (all macros start with GECODE_). (minor, bugzilla entry)
    • Documentation fixes
      • Generate one page per version released in changelog. (minor)