Timefold Solver 1.27.0
The October release of Timefold Solver is a quiet one, focusing on bug fixes, performance improvements and small tweaks.
Possible decrease in move speeds
With the improvements to value ranges in this release, we now eliminate some useless moves much earlier. This means move generation takes slightly longer, and the moves which actually get executed are more likely complex moves, as they are no longer crowded out by useless "short" moves.
As a consequence of this, you may see your move speed drop significantly, if you're using entity-based value ranges. But in this case, this is actually good news! We have seen that, even though the move speed drops, the step count increases. The solver is more likely to actually accept a move, because the generated moves are, on average, more useful now. And therefore the score is better in the same amount of time.
Changelog
🚀 Features
- 649aba4 Add SolverConfigOverride support for setting the time spend directly (#1808)
- 54bb2a9 Add ScoreAnalysis.summarize(int topLimit) method to customize constraint/matches display limit (#1807)
- 36928b6 Add random seed setting to Quarkus and Spring Boot (#1816)
🐛 Fixes
- c9a40d5 Process deep-cloned entities in a queue for GizmoSolutionCloner (#1849)
- d30e910 Don't test the filtering joiner on insert if a tuple is already retracting
- d7dc382 Don't test the filtering joiner if a tuple is already retracting (#1850)
- 4a6b2f8 Fail fast when referenced entities are not included in ConstraintVerifier.given or updateShadowVariables (#1836)
- df4a081 Enable
ListIteratorsupport onFilteringEntityByEntitySelectorandFilteringEntityByValueSelector(#1821) - fa704e9 Avoid using stale references in entity value ranges filtering nodes (#1822)
- dbb9b53 Avoid reusing configuration on move factories (#1814)
🔄️ Changes
🧰 Tasks
- 2c4508c Deprecate variable listeners (#1830)
- dc4ef40 Migrate internal variable listeners to new API (#1813)
- 17818ec Improve swap move selection (#1802)
📝 Documentation
Contributors
We'd like to thank the following people for their contributions:
- Lars Beckmann (@larsbeck)
- Christopher Chianelli (@Christopher-Chianelli)
- Tom Cools (@TomCools)
- Diallo Francis-Patrick (@PatrickDiallo23)
- Frederico Gonçalves (@zepfred)
- Lukáš Petrovický (@triceo)
Timefold Solver Community Edition is an open source project, and you are more than welcome to contribute as well!
For more, see Contributing.
Should your business need to scale to truly massive data sets or require enterprise-grade support,
check out Timefold Solver Enterprise Edition.
How to use Timefold Solver
To see Timefold Solver in action, check out the quickstarts.
With Maven or Gradle, add the ai.timefold.solver : timefold-solver-core : 1.27.0 dependency in your pom.xml to get started.
You can also import the Timefold Solver Bom (ai.timefold.solver : timefold-solver-bom : 1.27.0)
to avoid duplicating version numbers when adding other Timefold Solver dependencies later on.
Additional notes
The changelog and the list of contributors above are automatically generated.
It excludes contributions to certain areas of the repository, such as CI and build automation.
This is done for the sake of brevity and to make the user-facing changes stand out more.