Releases: chocoteam/choco-solver
Releases · chocoteam/choco-solver
4.10.7
4.10.7 - 11 Oct 2021
Major features:
- Simplify the way deltamonitors work. There is no need to
freeze
andunfreeze
them before callingforEach...
methods. But, a call toforEach...
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 (seeSearch.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
andSearch.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 + addSettings.dev()
andSettings.prod()
profiles. - Make half reification possible. Seed
c.implies(b)
orc.impliedBy(b)
wherec
is a Constraint andb
a BoolVar. - Update MiniZinc constraints definition + flatzinc files (for testing).
- Update
choco.msc
(for MiniZinc IDE) +./minizinc/README.md
- Add
Argmax
andArgmin
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:
- Dimitri Justeau-Allaire (@dimitri-justeau)
- Jean-Guillaume Fages (@jgFages)
- Charles Prud'homme (@cprudhom)
- Charles Vernerey (@ChaVer)
Full Changelog: 4.10.6...v4.10.7
4.10.6
4.10.6 - 11 Dec 2020
Major features:
- Add new resolution helper in
Solver
, namelyfindOptimalSolutionWithBounds
. 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
4.10.5 - 02 Oct 2020
Major features:
- add
IN
arithmetic int expression.
Deprecated API (to be removed in next release):
Settings.enableACOnTernarySum()
removedSettings.setEnableACOnTernarySum(boolean)
removed
Other closed issues and pull requests:
See milestone 4.10.5
Contributors to this release:
- Guillaume Le Louët (@glelouet)
- Charles Prud'homme (@cprudhom)
- João Pedro Schmitt (@schmittjoaopedro)
Full Changelog: 4.10.4...v4.10.5
4.10.4
4.10.4 - 08 Sep 2020
Major features:
- Change search strategies in ParallelPortfolio
- Make "CT+" available to binary table constraint
- Update Dockerfile, now automatically released in hub.docker.com
- Migrate to ANTLR 4.8-1
- Support nested
seq_search
in FlatZinc file - Add missing operations in
model.unpost(c)
- Add new constraint, named
conditional
, that posts constraints on condition - Merge
cutoffseq
insolver
- Merge
pf4cs
inparsers
- Remove
geost
fromparsers
Deprecated API (to be removed in next release):
Other closed issues and pull requests:
#692, #698, #700, #702, #703, #704, #705
Contributors to this release
- Dimitri Justeau-Allaire (dimitri-justeau)
- João Pedro Schmitt (schmittjoaopedro)
- Charles Prud'homme (cprudhom)
4.10.3
Multi-modules and JPMS-ready.
Major features:
- Move
cutoffseq
,choco-sat
,choco-solver
,pf4cs
,choco-parsers
andsamples
projects into a (maven) multi-modules project - JPMS-ready
Choco-solver can now be run with either JDK 8 or JDK 9+.
Additions
- Add Conflict History Search ("Conflict history based search for constraint satisfaction problem." Habetand Terrioux,SAC 19 (#676)
- Add dom/wdeg with refinement ("Refining Constraint Weighting." Wattez et al. ICTAI 2019.)
- Default AC algorithm for
AllDifferent
is now from IJCAI-18 "A Fast Algorithm for Generalized Arc Consistency of the Alldifferent Constraint", Zhang et al. (#644) - Add a pure java alternative to Ibex (#666)
- LNS can now be defined with a solution as bootstrap.
- Add simplify API for current Solver operations (#659)
- Simplify code for the nValues constraint (using a watching/witnessing reasoning) (#674)
- Replace former Bin Packing propagators by Paul Shaw propagator (#671)
- Improving PropDiffN performance (#663)
- Add nogood stealing for
ParallelPortfolio
(#669) - Adding of new constructors for Task objects (#662)
Removals
- Remove JSON writer/parser (which was actually partially supported and not maintained) (#664)
Deprecated API (to be removed in next release):
Task(IntVar s, IntVar d, IntVar e, boolean declareMonitor)
AbstractProblem.readArgs(String... args)
Other closed issues and pull requests:
#617, #633, #637, #639, #645, #646, #647, #648, #658, #665, #667, #678, #682, #686, #689, #691
4.10.2
4.10.1
Major features:
- LNS on other variables (e.g. SetVarLNS)
- Continuous integration fixed
IntDomainMiddle
now allows an external definition of what middle is, thanks toToDoubleFunction<IntVar>
- Add specific propagators for modulo
- Add views of differences between solutions (see
solver.printDistance(...)
andsolver.printDifferenceMatrix(...)
)
Deprecated API (to be removed in next release):
Closed issues and pull requests:
#538, #600, #611, #612, #613, #614, #615, #617, #619, #627, #630
4.10.0
This release comes with several major modifications.
The most important one is related to explanations.
The previous framework is replaced by a new one based on "A Proof-Producing CSP Solver", M.Vesler and O.Strichman, AAI'10.
See notebooks for an example of use.
Major features:
- Update statistic dashboard (see
solver.showDashboard()
) - Fix
Settings.load
on missing property - Fix issue in
Cumulative
simplified API - Add additional views
model.intEqView(x,c)
,model.intNeView(x,c)
,model.intLeView(x,c)
andmodel.intGeView(x,c)
- Detect when the same views is created twice on the same pair <variable, value?>
- Revamp the way LNS' neighbor is declared (simplication)
- Add
AbstractStrategy.remove()
method to remove a declared strategy and its dependencies - Add new strategies to
Search
- Add new decomposition to
IDecompositionFactory
- Improve initialization of CT+ and CT*
- Improve
IntVar#isInstantiatedTo(int)
Deprecated API (to be removed in next release):
INeighbor
interface is deprecated and replaced byNeighbor
abstract classINeighborFactory#explanationBased(IntVar...)
is deprecated, no replacement.ILearnFactory#setCBJLearning(boolean,boolean)
andILearnFactory#setDBTLearning(boolean,boolean)
are deprecated, seeILearnFactory#setLearningSignedClauses()
instead
Closed issues and pull requests:
4.0.9
Minor release
Major features:
- Offer possibility to store and load
Settings
from a property file. - Add API for
cumulative
when only starts are variable - Add decomposition of cumulative:
model.cumulativeTimeDecomp(...)
- Logical expression XOR manages more than 2 variables
- Add new API to IOutputFactory (to Gephi and to Graphviz)
- Add constraint network output (to gexf format), see
solver.constraintNetworkToGephi(file)
- add
ParallelPortfolio.streamSolutions
(#579)