Releases: chocoteam/choco-solver
v4.10.15
4.10.15 - 09 Sep 2024
Major features:
- Add
PickOnDom
and variants (seeSearch.pickOnDom
) - Enhance MiniZinc output
- Revamp scripts to solver flatzinc files
- Fix bugs (see closed issues)
Other closed issues and pull requests:
Contributors to this release:
- Arthur Godet (@ArthurGodet)
- Paul King (@paulk-asert)
- Zhang Yang (@zy-nesime)
- Charles Prud'homme (@cprudhom)
Full Changelog: v4.10.14...v4.10.15
v4.10.14
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 inBitSetIntVarImpl
Deprecated API (to be removed in next release):
Other closed issues and pull requests:
Contributors to this release:
- Jean-Guillaume Fages (@jgFages)
- Arthur Godet (@ArthurGodet)
- Fabien Hermenier (@fhermeni)
- Charles Prud'homme (@cprudhom)
Full Changelog: v4.10.13...v4.10.14
v4.10.13
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:
Contributors to this release:
Full Changelog: v4.10.12...v4.10.13
v4.10.12
4.10.12 - 06 Mar 2023
Major features:
Deprecated API (to be removed in next release):
Other closed issues and pull requests:
Contributors to this release:
Full Changelog: v4.10.11...v4.10.12
v4.10.11
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 inSolver
(#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
classIntEventType
:int combine(IntEventType... evts)
Other closed issues and pull requests:
Contributors to this release:
- Jean-Guillaume Fages (@jgFages)
- Arthur Godet (@ArthurGodet)
- Fabien Hermenier (@fhermeni)
- Charles Prud'homme (@cprudhom)
Full Changelog: 4.10.10...v4.10.11
v4.10.10
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
andAND
inLogOp
- 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:
Contributors to this release:
Full Changelog: 4.10.9...v4.10.10
4.10.9
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 ofSolution
randomly sampled. - Add
increasing
anddecreasing
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:
- Mathieu Vavrille (@MathieuVavrille)
- Nicolas Pierre (@PoltyPoltou)
- Charles Prud'homme (@cprudhom)
- Jean-Guillaume Fages (@jgFages)
- Arthur Godet (@ArthurGodet)
Full Changelog: 4.10.8...v4.10.9
4.10.8
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 callingsolver.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()
andmodel.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:
- Jean-Guillaume Fages (@jgFages)
- Fabien Hermenier (@fhermeni)
- Hongbo Li (@lihb905)
- Charles Prud'homme (@cprudhom)
Full Changelog: 4.10.7...v4.10.8
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