I’ve been flying a bit more recently for speaking engagements. Dublin. CERN. A few other places in between. As fun as that sounds, it also means something else: A lot of time in airports.
Right now, as I’m writing this, I’m sitting at a gate waiting for my flight. My flight is delayed. The gate next to mine just changed. A crowd of people is collectively refreshing the airport app, hoping their boarding time magically moves forward so they don’t miss their connection.
I couldn’t help but smile and think: yep, this is a planning problem!
Over the past year, I’ve noticed something interesting about how I look at the world. I’ve written about it before, but the idea keeps coming back: Planning problems are everywhere.
I’ve joked it is sort of a curse, once you start seeing them, you can’t really unsee them. And yet people underestimate just how common they are. When you start modelling these problems, you begin to notice something interesting: they all share the same structure.
When you think about everything that has to come together, it’s really a lot! Airports are actually running several optimization problems at the same time: gate assignment, crew scheduling, aircraft turnaround planning, runway slot allocation**,** and passenger connection protection. It’s almost a wonder airports work at all.
Yet people often remember just the negative and chaotic parts: the boarding delay, the last minute gate changes or the long lines at security.
Working with planning problems on a daily basis, I see things a little differently. Just understanding the immense complexity behind creating an initial plan already makes me feel calmer about the chaos.
Think about the decisions involved:
Which gate should each flight use?
Which crew can legally operate a flight after delays?
How do we minimize missed connections?
Where should incoming aircraft be parked?
How do we re-route passengers when things go wrong?
Every delay or mishap ripples through that system of decisions, forcing the plan to be re-evaluated.
When the chaos hits, like it has around me writing this, I realize that this is just the result of a complex system constantly trying to adapt its plan as the situation changes.
And honestly, I can’t help but admire the attempt 🙂.
Apparently I don’t even need to be fully awake to get bitten by the optimization bug.
After a busy evening speaking at a user group in Dublin and a shorter night than I hoped for, I dragged myself to a nearby breakfast restaurant to grab a proper Irish breakfast with a fellow optimization enthusiast.
As we were talking about the different projects we’d worked on, I became fascinated with the restaurant’s open kitchen layout. And once again, my mind drifted toward optimization.
A restaurant kitchen is basically a job scheduling system. Orders arrive dynamically. Each dish requires different preparation steps. The kitchen has limited resources: burners, ovens, chefs, and time.
The staff constantly make small scheduling decisions:
Which order should be cooked first?
Which dishes can run in parallel?
How do we avoid one table waiting forever?
Experienced kitchens develop an intuition for it, but under the hood it resembles a classic job-shop scheduling problem.
And I couldn’t help but think how I’d model this problem as an optimization problem.
Sure, this kitchen is at a small scale. But structurally, it’s not that different from much larger systems.
I was lucky enough to be invited to speak at Voxxed Days CERN, which came with some awesome perks, including a guided tour through the facilities. You probably guessed it by now, but even here it made me wonder about the planning challenges behind the scenes.
Scheduling maintenance for all different facilities
Allocating compute resources for analysis jobs
Coordinating experiments and detector usage
Even at one of the world’s most advanced research labs, the same fundamental problem appears again and again: “How do we allocate limited resources in the best possible way?”.
And of course, my brain was already buzzing with ways to optimize it.
If you are involved with planning optimization solutions, a pattern starts to emerge that you can’t unsee. Many everyday systems share the same underlying structure:
Resources (gates, buses, chefs, CPUs)
Tasks (flights, routes, orders, jobs)
Constraints (time limits, capacity, regulations)
Objectives (speed, cost, fairness, efficiency)
…and the challenge becomes finding the best possible plan.
Optimization problems are just amazing puzzles… and quite addictive 🙂 The only downside is that once you start thinking this way, it becomes hard to stop.
You start seeing optimization problems everywhere:
In airports. In supermarkets. In conference schedules. In traffic lights. In restaurant kitchens.
Sometimes you’re just standing in line somewhere and suddenly catch yourself thinking:
This could be optimized!
Much to the dismay of my partner and friends, who occasionally see me drift off mid-conversation.
But when things go sideways, like delays at an airport, it also brings a strange kind of calm.
Because the chaos we see in the real world often isn’t chaos at all.
It’s a plan being repaired in real time.
And if you know how to look at it…
You start seeing optimization problems everywhere.
Continue reading
Blog
Mixed Models in Timefold Solver: Combining Planning Variable Types in One Solution
Timefold Solver supports both basic and list planning variables… and you can mix them! Learn all three patterns and when each one makes sense.
Blog
Solver 2.x: Java Platform Module System (JPMS) support.
We are introducing JPMS support in Timefold Solver 2.x. In this blog post, we explain what that means to our current users and to the long term maintainability of the project.
Blog
Am I ready for optimization? The data foundations of efficient field service
Before you can optimize field service operations, you need to organize the data that feeds the engine. This post walks through the three data pillars behind scheduling optimization, and how to get them API-ready.