Skip to content

Timefold Solver 1.25.0

Latest
Compare
Choose a tag to compare
@timefold-release timefold-release released this 12 Aug 11:09

No summer heat can stop us here at Timefold! Solver 1.25.0 brings some long-awaited features, as well as the usual batch of bugfixes and small improvements.
This release also no longer includes Python support; read the full announcement to find out more.

Featured update: List variable supports value ranges on entities

It is now possible to declare @ValueRangeProvider on planning entities, even if you're using list variables. This allows you to remove many uses of selector filtering, and in some of our experiments, it significantly sped up construction heuristics because of that.

Declarative shadow variables finalizing soon

We have introduced optional value alignment, to opt in to increased performance in certain cases.

We have also refactored loop handling, making the @ShadowVariableLooped marker field be updated before the variable itself. But it also doesn't matter anymore, since we can now guarantee that - if the variable is looped - the updater will never be called, and therefore referencing the marker inside of the updater makes no sense. The use of the marker is therefore exclusively limited to constraints, as it will indicate entities whose values can not be trusted.

We have also added more documentation around performance and loops. With these changes, there is only a very short list of things that we still need to do before we can finish this preview feature. Fingers crossed, declarative shadow variables will be promoted to a regular feature in the next release of Timefold Solver.

Changelog

🚀 Features

  • 081f207 Allowing to specify an alignment key to eliminate redundant calculations (#1718)

🐛 Fixes

  • 72d48c2 Centralize the ownership of ValueRangeManager to avoid subtle bugs (#1716)
  • 471ecca Correctly identify variable access as INDIRECT if accessed after a fact
  • d9cc89a Pass SolverConfig enabled preview set to ConstraintVerifier on creation

🔄️ Changes

🧰 Tasks

📝 Documentation

  • 80f2747 Add note on optimizing performance of declarative shadow variables (#1728)

Contributors

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

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

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