Skip to content

Timefold Solver Community Edition 1.6.0

Choose a tag to compare

@timefold-release timefold-release released this 10 Jan 15:19

New year, new release, new goodness!

Featured Update - Pinning on list variables, enhancing our support for real-time planning:

  • With a new @PlanningPinToIndex annotation, you can tell the solver that a certain portion of the list variable is pinned and shouldn't be moved.
  • For example, for a list of customers that a vehicle will visit, this allows you to model situations where certain visits have either already happened, or where the vehicle is already too far into the trip that it would not be practical for it to turn back.
  • Previously, pinning was only available for the chained variable. With this, we are ramping up our efforts to bring list variable, which is easier to both understand and implement, on par with the chain variable in terms of features. Stay tuned for more on this front!

Other Enhancements:

  • Solver termination can now be overridden without creating a new instance of Solver or SolverManager, look for the SolverConfigOverride class.
  • The usual assortment of bugfixes and performance improvements.
  • Improvements all over the documentation and quickstarts.
  • Dependency upgrades.

Changelog

🚀 Features

🐛 Fixes

  • 67d4448 Avoid exception when analysing uninitialized solution (#536), closes #536
  • a5c3960 Fail fast when @DeepPlanningClone on a record
  • 69e3e55 Make MatchAnalysis implement Comparable to fix score corruption analysis (#527), closes #527
  • 2b35c89 Updating the School Timetabling quickstarts documentation (#494), closes #98 #494
  • 10ba396 Non-existent methods referenced for score explanation
  • a8e7a8a Filter trivial 2-opt moves and make KOptListMove public (#485), closes #480 #485
  • 0357f3e Do not set shadow variables to null when calculating from scratch in TRACED_FULL_ASSERT (#484), closes #478 #484

🔄️ Changes

📝 Documentation

  • d4a5e1c Add Quickstart code examples for Kotlin (#541), closes #541
  • 490490a Rename variable names for collection types (#499), closes #499
  • aaa0ebc Use tabs where possible to have better distinction between Maven and Gradle
  • 85dd7d9 Maintenance scheduling class diagram rename tagSet to reality
  • c8c28a0 Add chapter on CS performance

Contributors

We'd like to thank the following people for their contributions:

  • Christopher Chianelli
  • Frederico Gonçalves (@zepfred)
  • Geoffrey De Smet
  • GitHub
  • Lukáš Petrovický (@triceo)
  • M.Thimm
  • Peter Laggner
  • Pieter De Schepper
  • Radovan Synek
  • dependabot[bot] (@dependabot[bot])

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.6.0 dependency in your pom.xml to get started.

You can also import the Timefold Solver Bom (ai.timefold.solver : timefold-solver-bom : 1.6.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.