All other

Formula for measuring unfairness

Blog post image

Load balancing is a common constraint for many OptaPlanner use cases. Especially when scheduling employees, the workload needs to be spread out fairly. Easier said than done. Let’s take a look at this challenging problem. For example, let’s assign 15 undesirable tasks to 5 employees. Each task takes a day, but they have different skillRead more →

Domain modeling guide

Blog post image

New OptaPlanner users sometimes struggle to create a good domain model, especially if their use case is complex. But a good domain model can go a long way. It can simplify the constraints, improve performance and increase flexibility for future needs. So how do we design a good domain model for OptaPlanner cases? The goalRead more →

A decade of OptaPlanner

Blog post image

10 years ago, I started a little project during my vacation. Nothing serious. Just a hobby, it wouldn’t be big and professional. Another contraption in my long list of side projects in an attempt to build something cool. Today, that same project is now the leading Open Source constraint satisfaction solver in Java: OptaPlanner. ItRead more →

7 ways to fail your optimization project

Blog post image

When you put your optimization project into production, your enterprise will decrease expenses, increase customer satisfaction, improve employee happiness and/or reduce its ecological footprint. But if the end-users reject your implementation, none of that will happen. Let’s take a look why they might do that. There are 7 common ways to fail your optimization project:Read more →

What is the bottleneck in my Solver?

Blog post image

Once we have a vanilla setup of an OptaPlanner project, where should we invest our time to improve it? How can I get a better solution faster? What’s preventing my solver to scale better? How can I track down my bottleneck? The scapegoat: machine performance “We need faster hardware.” It is the typical knee-jerk reactionRead more →

Time scheduling design patterns

Blog post image

Designing an efficient domain model for a scheduling problem that involves time (or dates) can seem difficult. Typical use cases are course timetabling, meeting scheduling, vehicle routing with time windows and TV advertisement scheduling. Let’s take a look at design patterns to model such problems in OptaPlanner. Is starting time a planning variable? In someRead more →

Integrating JPA Hibernate with OptaPlanner

Blog post image

We’ve been improving the integration of OptaPlanner with the rest of JEE, so it’s easier to build end user applications that just work. Let’s take a look at the improved JPA Hibernate integration. The basics Both JPA Hibernate and OptaPlanner work on POJO’s (Plain Old Java Objects), so just add some JPA annotations on yourRead more →

How good are human planners?

Blog post image

Are we smarter than machines when it comes to planning? Or can automated planning beat humans? I did an experiment with a group of innocent software engineers. These are the results. Methodology During my last 2 deep dive trainings, I asked the attendees to manually solve a simple planning problem, to introduce them to theRead more →