Choco v4.10.8 Release Notes

Release Date: 2022-01-07 // 6 months ago
  • Major features:

    • Propagation is now observable, solver.observePropagation(PropagationObserver). Consequently, it is now possible to profil the propagation by calling solver.profilePropagation(). 👀 See Javadoc for details and usages (#832).
    • 🚀 Release 4.10.7 introduces a bug related to delta monitors, which is now fixed (#837).
    • ➕ Add new black-box strategy: failure based variable ordering heuristics (@lihb905)
    • ➕ Add model.streamVars() and model.streamCstrs()
    • Bounded domains checking for table constraints
    • 🔄 Change complementary search in FlatZincParser
    • ⬆️ Bump XCSP3 ### 🚀 Deprecated API (to be removed in next release):

    Other closed issues and pull requests:

    👀 See milestone 4.10.8

    🚀 Contributors to this release:


Previous changes from v4.10.7

  • Major features:

    • Simplify the way deltamonitors work. There is no need to freeze and unfreeze them before calling forEach... methods. But, a call to forEach... consumes all values stored.
    • 🛠 Fix a bug related to incremental propagators, views and missing events.
    • STR2+ now deals with STAR tuples. Can be used when CT+ is not efficient (mainly due to very large domain size)
    • Resetting cutoff strategies now possible
    • 🔄 Change restart behavior to reset cutoff on solutions (can be disabled though, calling solver.setRestarts(..) API).
    • Display occurrences of variable types and occurrences of propagator types
    • 👀 Now IntDomainBest offers API to break ties (see Search.ValH.BLAST for an example).
    • ➕ Add solver.defaultSolution() which creates lazily a solution recording everything, plugs it and returns it. This is helpful when a Solution object is required in many places.
    • 🚧 Modification of the management of expressions in order to reduce the number of created variables (WIP).
    • ➕ Add IntVar.stream() that streams a variable's values (in increasing order)
    • ➕ Add Search.ValH.BMIN and Search.ValH.BLAST
    • ➕ Add DIMACS CNF parser (org.chocosolver.parser.mps.ChocoDIMACS)
    • ➕ Add Logger (solver.log()) to trace from Model/Solver.
    • 🔄 Change some default settings
    • Revamp Settings, now is defined as a factory pattern + add Settings.dev() and Settings.prod() profiles.
    • Make half reification possible. Seed c.implies(b) or c.impliedBy(b) where c is a Constraint and b a BoolVar.
    • ⚡️ Update MiniZinc constraints definition + flatzinc files (for testing).
    • ⚡️ Update choco.msc (for MiniZinc IDE) + ./minizinc/README.md
    • ➕ Add Argmax and Argmin constraints
    • ➕ Add IfThenElse as a decomposed constraint
    • 👌 Improvement of solver.findParetoFront()

    🚀 Deprecated API (to be removed in next release):

    Other closed issues and pull requests:

    👀 See milestone 4.10.7

    🚀 Contributors to this release: