Timefold Solver 1.13.0
As the summer sun is slowly baking us, so have we baked something new for you. Timefold Solver 1.13.0 brings new features as well as the usual assortment of bug fixes and improvements.
Featured Update: Constraint Weight Overrides
We bring you a smaller an improved API for setting weights for your constraints. Where previously you had to write a lot of boilerplate to provide an entire ConstraintConfiguration
implementation, specifying a constraint weight is now as easy as adding a Map
to your planning solution!
Besides that, we are introducing a new type of shadow variable - one that can be updated by a simple method, as opposed to introducing an entire VariableListener
. This allows for easy updates to the tail chains of a list variable.
As always, all of these updates are available for all of our Java, Python and Kotlin users.
Changelog
🚀 Features
- 10b9258 Add CascadingUpdateShadowVariable (#954), closes #954
- 2c74a11 Constraint weight override (#946), closes #946
🐛 Fixes
- 3ffb49b Address scale equal to NaN
- ec49da1 Respect merge function in toMap() collector
- d01cd42 Avoid duplicating nearby configuration
- ecae569 Proper casts in Python load_balance collector
🔄️ Changes
Contributors
We'd like to thank the following people for their contributions:
- Christopher Chianelli
- Frederico Gonçalves (@zepfred)
- Jurriaan Persyn (@oemebamo)
- Lukáš Petrovický (@triceo)
- Marek Winkler (@winklerm)
- hizhangbo (@hizhangbo)
- lee-carlon
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
and read our documentation.
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.