This file is dedicated to sum up the new features added and bugs fixed in Choco-solver since the version, 4.0.0. Note: double-space is replaced by "\t" character on release process. Make sure the format is ok.
Move to Ibex-2.5.
- Ibex instance is no longer static, that offers better stability and reduce memory consumption when adding/removing functions. Reification no longer managed by Choco but delegated to Ibex.
Search.realVarSearch(...)
offers possibility to define minimal range size, known asepsilon
Search.ibexSolving(model)
let Ibex iterates over solutions once all integer variables are instantiated- add detection of min/max sub-cases
IntEqRealConstraint
will be removed in next release, Ibex managed this concept (int to real)Model.getIbex()
should not be used. AIbexHandler
manages Ibex instances (one per model).
#561
The current release was submitted to MiniZinc Challenge 2017 and at XCSP3 Competition 2017 and won medals.
choco-parsers provides utility to export a Model
to JSON format
and or import JSON data into a Model
.
- Compact-Table now deals with short tuples (#531)
- Checking if a created constraint is free (neither posted or reified) is now possible with
Settings.checkDeclaredConstraints()
- Improvements on BoolVarImpl and BoolNotView.
- Remove code deprecated in last release.
- Fix error in Views.
- Add scalar detection in
BiReExpression
- fix errors in Impact-based Search
- update Search.intVarSearch() + Search.defaultSearch(Model)
- update ParallelPortfolio default strategies
- fix bug in
PropNogoods
when dealing with negative values (impactsolver..setNoGoodRecordingFromRestarts()
andsolver..setNoGoodRecordingFromSolutions(...)
) - fix bug in
model.sum(...)
andmodel.scalar(...)
when dealing with arity greater than 100 and all operators except=
- fix bug in
model.table(...)
with binary scope and universal value - fix bug related to Ibex and GC.
#531 ,#545, #546.
- add logical operator to expression (#520). Now it is possible, f-ex., to declare expression like:
x.eq(y.add(1)).or(x.eq(y).and(x.eq(1)))
- add new API to
Solver
to print features in a single line - enable ignoring passivate propagators when iterating over propagators of a modified variable (false by default; see Settings)
IPropagationEngine.fails(c,v,m)
is replaced bySolver.throwsException(c,v,m)
(#524)IPropagationEngine.getContradictionException()
is replaced bySolver.getContradictionException()
(#524)MathUtils.bounds(values)
is replaced by a call toMathUtils.min(values)
andMathUtils.max(values)
- SparseSet
- IFeatures, Features, IAttribute and Attribute
#516, #517, #518, #519, #520, #521, #524.
arithm(IntVar,String,IntVar,String,int)
andarithm(IntVar,String,IntVar,String,IntVar)
manage '*' and '/'- add new APIs to
ArrayUtils
- fix error in
PropBoolMin
andPropBoolMax
#500, #502, #507, #510, #512, #514, #515.
- restrict calls to
Solver.setEngine(...)
when propagation started. See javadoc for details. - remove global constructive disjunction, only local constructive disjunction is allowed.
- add
Solution.restore()
to restore a solution (#354). - deep reset of
Solver
(#490, #491)
Solver.getState()
(#485)Measures.IN_SEC
(related to #486)Settings.outputWithANSIColors
,IOutputFactory.ANSI_*
IMoveFactory.setLubyRestart(int, int, ICounter, int)
#468, #479, #480, #481, #484, #487, #488, #489, #492, #493, #494, #495, #496, #497, #499.