Subscribe to Planned, planning education for real-world stuff.
By Geoffrey De Smet
May 2, 2023
Upgrade from OptaPlanner to Timefold Solver Community Edition today. It only takes 2 minutes.
Run the command below to upgrade your code automatically. Do a test run of the solver and commit the changes. If it doesn’t work, just revert it instead and submit an issue. We’ll fix it with the highest priority.
Timefold Solver 1.x does not support scoreDRL, nor is it upgraded automatically. If you’re still using scoreDRL from OptaPlanner 7.x, please upgrade to Constraint Streams first.
Continuity, responsiveness, know-how and stability: The entire Timefold company is focused on building the best possible planning optimization software and helping you succeed with it. Timefold Solver has many bugfixes and security fixes since it forked from OptaPlanner. We also added powerful new features and enhancements.
Performance: Timefold is twice as fast as OptaPlanner out-of-the-box.
Distribution size: Cloud deployments love lightweight components. Timefold has all the features of OptaPlanner, but a jar-with-dependencies assembly of the same Hello World program is 41% smaller:
Documentation: We are constantly improving the documentation and fine-tuning the quickstarts. It’s easier to get started with Timefold than with OptaPlanner.
# How do the OptaPlanner and Timefold versions relate?
Timefold 0.8.x is a replacement for OptaPlanner 8. It supports Java 11, Java 17, Spring Boot 2, Quarkus 2 and Java EE 8. It has reached its End of Life and is no longer supported.
Timefold 1.x is a replacement for OptaPlanner 9. It supports Java 17+, Spring Boot 3, Quarkus 3 and Jakarta EE 10.
#Is Timefold Backward Compatible with OptaPlanner?
Yes, except for the branding changes.
Run timefold-migration to automatically change all your code locally. It’s a quick, single command for Maven or Gradle. Then test those changes and commit them. Alternatively, apply the following changes manually.
Timefold Solver 1.x is backward compatible with OptaPlanner 8.x, except that:
Minimum Java 17 (LTS). Java 21 (LTS) and the latest Java version are also supported.
The Maven/Gradle GAVs changed:
The groupId changed from org.optaplanner to ai.timefold.solver.
The artifactIds changed from optaplanner-* to timefold-solver-*.
ArtifactIds containing persistence- changed from optaplanner-persistence-* to timefold-solver-*.
For example, optaplanner-persistence-jackson changed to timefold-solver-jackson.
The import statements changed accordingly:
import org.optaplanner…; changed to import ai.timefold.solver…;.
import org.optaplanner.persistence…; changed to import ai.timefold.solver…; too.
The JEE dependencies changed from javax to jakarta to accommodate Spring 3 and Quarkus 3.
This is the same difference as between OptaPlanner 8.x and OptaPlanner 9.x.
The OptaPlannerJacksonModule class is now called TimefoldJacksonModule.
The deprecated scoreDRL support is removed, because Drools with its transitive dependencies have been removed entirely.
The unsecure module persistence-xstream is removed, because of old, unresolved CVEs in XStream.
The deprecated, undocumented ScoreHibernateType has been removed because of Jakarta. Use JPA’s ScoreConverter instead.
All other deprecated code remains, to make upgrading easy.
Planned, planning education for real world stuff
Sign up for my monthly newsletter.
Continue reading
Blog
The only constant is change: How PlanningAI keeps schedules alive in real-time
Plans rarely survive reality, no matter how perfect they are. Employee sick calls, broken trucks, or no-show customers can wreck your carefully built schedule before lunchtime. That’s why our PlanningAI optimization algorithms replan in real-time. In this post, Tom Cools will enlighten you on how this works.
Blog
Is PlanningAI a blessing for Operations Research?
Operations Research is, and has always been, about solving one of the world’s toughest challenges: planning problems. Finding the best way to allocate resources, schedule shifts, or route deliveries under an abundance of real-world constraints. It is widely accepted that optimizing those problems will make the world a better place. The value has never been in question. But the road to real-world adoption? That’s been another story. With PlanningAI, we can alter the narrative.
Blog
Why PlanningAI encompasses scheduling, routing, and strategic decision-making
PlanningAI intentionally captures scheduling, routing, and strategy because businesses naturally function across multiple timeframes and complexities. Find out more about the etymology of PlanningAI in this blog post.