Skip to content

Releases: chocoteam/choco-solver

v4.10.14

02 Nov 16:32
Compare
Choose a tag to compare

4.10.14 - 02 Nov 2023

Major features:

  • NEW: solver..showRestarts(); to display the number of restarts during the search.
  • NEW: hybrid table constraints (see model.table(...))
  • NEW: partial assignement generator for COP (see Search.generatePartialAssignment())
  • NEW: Add Blackbox configuration (#1058)
  • Revamp views (#564)
  • Improve pow(base, exponent, result)
  • Remove BitsetArrayIntVarImpl now managed in BitSetIntVarImpl

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 4.10.14

Contributors to this release:

Full Changelog: v4.10.13...v4.10.14

v4.10.13

05 Jun 12:23
Compare
Choose a tag to compare

4.10.13 - 05 Jun 2023

Major features:

Mainly bug fixes and improvements of Pareto front performances.

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 4.10.13

Contributors to this release:

Full Changelog: v4.10.12...v4.10.13

v4.10.12

06 Mar 14:52
Compare
Choose a tag to compare

4.10.12 - 06 Mar 2023

Major features:

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 4.10.12

Contributors to this release:

Full Changelog: v4.10.11...v4.10.12

v4.10.11

07 Feb 13:37
Compare
Choose a tag to compare

4.10.11 - 07 Feb 2023

From this version on, only one library will be available for direct download, namely choco-solver-4.10.11.
This library contains both the core (a.k.a, choco-solver module) and the extension for parsing model files (a.k.a, choco-parsers).
However, it is still possible (and recommended) to use Maven.

Major features:

  • Correcting the lack of filtering in PropIncreasing
  • Change the SetType for the undirected graph stored in DiffN for efficiency reason
  • SparseBitSet for a backtrackable bitset with mostly 0s (#935)
  • Change the way restarting works: not a Move anymore, directly included in Solver (#950)
  • Simplification of objective manager (#949)
  • Calling getValue() on an uninstantiated variable throws an IllegalStateException (#957)
  • Change the MiniZinc complementary search to a FirstFail (instead of DomOverWDeg) (#958)
  • Reduce object creation during solving (#985)
  • Reduce object creation during propagation (#969)
  • Reduce memory footprint of Model (#964)
  • Add model.getEstimatedMemory() method
  • Add Model analysis (#939)
  • Add log file as RegParser option (for parsers)
  • creation of PropPower propagators with exponent as int

Deprecated API (to be removed in next release):

From Solver:

  • Propagate getPropagate()
  • void setPropagate(Propagate p)
  • Closeable outputSearchTreeToCPProfiler(boolean domain)

Others:

  • Propagate class
  • IntEventType: int combine(IntEventType... evts)

Other closed issues and pull requests:

See milestone 4.10.11

Contributors to this release:

Full Changelog: 4.10.10...v4.10.11

v4.10.10

11 Oct 14:31
Compare
Choose a tag to compare

4.10.10 - 11 Oct 2022

Major features:

  • Fix performance issue of ViewDeltaMonitor
  • Fix lack of filtering in STR2+ when domain is bounded
  • Fix issue relative to OR and AND in LogOp
  • Add missing checks in OneWordS32BitSet and OneWordS64BitSet + update constructors
  • Add new API to VariableUtils
  • Add CITATION.cff
  • Update paper.md

Other closed issues and pull requests:

See milestone 4.10.10

Contributors to this release:

Full Changelog: 4.10.9...v4.10.10

4.10.9

22 Aug 11:13
Compare
Choose a tag to compare

4.10.9 - 22 Aug 2022

Major features:

  • It is now possible to declare hints to help the search finding a first solution. See solver.addHint(var, val).
  • Add Solver.tableSampling resolution policy which returns a stream of Solution randomly sampled.
  • Add increasing and decreasing constraints
  • Add costFlow constraint, which is composed of scalar products and a MinCostMaxFlow propagator
  • Revamp pow constraint
  • Add threshold for element with array of variables signature
  • Add a propagator for 0/1-knapsack (thanks to @PoltyPoltou)
  • Remove CPProfiler since the project is not active anymore.
  • Make possible to deal with large domains for some constraints (#894)
  • Add a LinearProgram class to deal with linear program (!) and a two-phase Simplex (not connected yet)
  • Fix bug related to delta in boolean views
  • Improvements relative to reified propagators
  • Change signature of AtLeastNValues
  • Record time to best in Measures(IMeasures measures) constructor

Change the way propagators are stored in variables to ease swapping (#889)

Each variable is in charge of scheduling its propagators.
This impacts the way propagators are stored in a variable.
Consequently, the getPropagators() and getPropagator(int) methods are deprecated, streamPropagators() replaces them.
Unless otherwise stated, a propagator that can be entailed is automatically swapped in its variables' internal structure.

SetVar

  • Extend some black-box strategies to SetVar
  • Add union(SetVar unionSet, SetVar indices, SetVar[] sets) constraint
  • Add free strategy for SetVar (RegParser and ParallelPortfolio)
  • Fix SetVar#getDomainSize
  • Add SetDomainMax
  • Add 'setLe' and 'setLt' constraint (as a decomposition) in ISetConstraintFactory

Flatzinc, XCSP3 and MPS

  • Change default search of Flatzinc
  • Increase interval for Flatzinc unbounded intvar
  • Remove default ANSI in parsers
  • Update FZN grammar to deal with 'set of int'
  • Flatzinc: deal with warm_start
  • Add ignored search annotation warning in FGoal
  • Update XCSPParser + add model.amongDec

JAR Files

Since 4.10.9, a new jar file is available for download.
This is a lighter version of the one with dependencies,
namely choco-parsers-light-VERSION.jar.
The following dependencies have been excluded from this archive:

  • org.apache.pdfbox:pdfbox
  • org.apache.fontbox:fontbox
  • com.ibm.icu:icu4j

This results in 82% smaller archive.
Note that the non-alleged versions are still available for download.

Deprecated API (to be removed in next release):

  • IOutputFactory.outputSearchTreeToCPProfiler(boolean domain)

Other closed issues and pull requests:

See milestone 4.10.9

Contributors to this release:

Full Changelog: 4.10.8...v4.10.9

4.10.8

10 Jan 09:45
Compare
Choose a tag to compare

4.10.8 - 07 Jan 2022

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

Other closed issues and pull requests:

See milestone 4.10.8

Contributors to this release:

Full Changelog: 4.10.7...v4.10.8

4.10.7

11 Oct 15:16
Compare
Choose a tag to compare

4.10.7 - 11 Oct 2021

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:

Full Changelog: 4.10.6...v4.10.7

4.10.6

11 Dec 16:13
Compare
Choose a tag to compare

4.10.6 - 11 Dec 2020

Major features:

  • Add new resolution helper in Solver, namely findOptimalSolutionWithBounds. See Javadoc for details and usages.
  • ParallelPortfolio now allows to add unreliable models, that is models whose resolution is deliberately made incomplete.
    These models should not stop the parallel resolution process when they no longer find a solution.
    Only complete models can inform the portfolio that they have proven the full exploration of the search space.
  • Add org.chocosolver.util.tools.PreProcessing class, and a first preprocessing rule: equalities detection
  • Upgrade ibex integration to support ibex-java v1.2.0.
    Fixes for issues #653 and #740.
  • Add QuickXPlain algorithm to find the Minimum Conflicting Set (see issue #509)
  • Update XCSP3 parser.
  • Fix InDomainMedian when domain size is even
  • Add new way to watch solving: solver.verboseSolving()
  • Deal with annotations for some Flatzinc constraints (allDifferent and inverse)
  • Add MultiArmedBandit strategy sequencer

Deprecated API (to be removed in next release):

Other closed issues and pull requests:

See milestone 4.10.6

Contributors to this release:

Full Changelog: 4.10.5...v4.10.6

4.10.5

02 Oct 11:49
Compare
Choose a tag to compare

4.10.5 - 02 Oct 2020

Major features:

  • add IN arithmetic int expression.

Deprecated API (to be removed in next release):

  • Settings.enableACOnTernarySum() removed
  • Settings.setEnableACOnTernarySum(boolean) removed

Other closed issues and pull requests:

See milestone 4.10.5

Contributors to this release:

Full Changelog: 4.10.4...v4.10.5