JaCoP v4.3 Release Notes
-
Implementation of constraints ArgMin and ArgMax as well connection to flatzinc constraints arg_min_int and arg_max_int.
Correcting implementation of Diff2 and Disjoint. Currently Diff2 implements non-strict version of diffn constraint (minizinc constraint diffn_nonstrict) that makes it possible to pack zero-width rectangles anywhere. Disjoint implements a strict version of diffn constraint (minizinc diffn constraint). It requires that zero-width rectangles does not overlap with any other rectangle.
Implementation of primitive constraint BoolClause implementing flatzinc constraint bool_clause.
๐ 4. Sets of integer with bounds 1..0 are treated by flatzinc parser as empty sets. This implements a way minizinc 2.0 represents empty sets.
๐ 5. Adding int_pow build-in predicate to flatzinc interpreter.
- LexOrder global constraints accepts vectors of different sizes.
๐ 7. Performance improvement for SumWeightDom.
๐ 8. Performance improvement for ElementInteger and two new constraints ElementIntegerFast and ElementVariableFast that implement a straightforward pruning method.
- New primitive constraints LinearInt and SumInt that implement pruning methods from paper "Bounds Consistency Techniques for Long Linear Constraints" by Warwick Harvey and Joachim Schimpf.
๐ 10. Fixing performance bug in IntervalBasedBacktrackableManager. Unnecessary call to checkRemoveInvariant outside assert statement.
๐ 11. Adding option --bound (-b) to flatzinc parser that enforces use of bounds consistency for constraints (instead of domain, even for constraints annotated with "::domain").
- Adding SAT solver to JaCoP and connecting it to flatzinc interpreter. The use of SAT solver in flatzinc is controlled by option -sat. If the option is specified the SAT solver is used for all bool_* constraints, otherwise CP constraints are used.
๐ 13. Improving performance of Max and Min constraints. Specially for large lists of varibales.
๐ 14. Bug fixes.