Geoffrey De Smet's Avatar

Geoffrey De Smet

@geoffreydesmet.bsky.social

PlanningAI expert, Timefold co-founder, OptaPlanner creator, complex scheduling and routing, Operations Research, Java, Kotlin, open source, international speaker

415 Followers  |  101 Following  |  70 Posts  |  Joined: 08.01.2024  |  1.8912

Latest posts by geoffreydesmet.bsky.social on Bluesky

Post image

Can the optimal solution for a Traveling Salesman Problem (TSP) have crossing paths?

No, it cannot.
Because of the Triangle Inequality principle.

But in reality, it can.
Because there's road infrastructure: highways, one-way streets, etc.

In the real-world, solution optimality is rarely obvious.

01.08.2025 08:27 β€” πŸ‘ 5    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
How to build trust in planning optimization: Explainable PlanningAI Optimization algorithms can spit out mathematically brilliant schedules, but if planners can’t see the rationale, those β€œperfect” plans end up in the…

A great plan is worthless if you can't explain why.

For the operators to trust your software, they need more than a button to "Schedule with AI" that generates the optimized schedule for their employees.

They need explainability. Learn how by @tomcools.be :
timefold.ai/blog/explain...

09.07.2025 12:40 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Vehicle Routing Problems in production: When research meets reality
YouTube video by Timefold Vehicle Routing Problems in production: When research meets reality

Vehicle Routing Problems in production:
When research meets reality.

Our webinar yesterday covered:
- Maps integration
- Time calculation
- Hard constraints in reality
- Multi-objective optimization
- Real-time planning

See the recording:
www.youtube.com/watch?v=l12G...

26.06.2025 07:24 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image

That moment when your backend algorithms optimize a vehicle routing dataset with thousands of visits...

... and your frontend turns into a piece of modern art.

21.06.2025 13:44 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Doh. I meant float instead of int.

15.06.2025 17:52 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

This is what happens if you use floating point numbers (int, double in #Java) for financial data.

Use decimal numbers (BigDecimal in Java) instead.

15.06.2025 10:25 β€” πŸ‘ 33    πŸ” 15    πŸ’¬ 2    πŸ“Œ 0
Post image

Where does your enterprise stand on the scheduling maturity ladder?

Are your resources scheduled manually?
With or without constraint verification?

Or automatically?
With or without optimization?

Discover the 4 Levels of Scheduling:
timefold.ai/blog/the-4-l...

06.06.2025 06:45 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Can LLMs solve scheduling or routing problems?

Can GenAI help companies save millions of dollars by optimizing Vehicle Routing, Shift Rostering or Job Scheduling to increase productivity and retention?

@tomcools.be and I tried it out:
www.youtube.com/watch?v=m12A...

#VRP #AI #PlanningAI #DevoxxFr

18.05.2025 07:49 β€” πŸ‘ 5    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Preview
Release Timefold Solver 1.22.0 Β· TimefoldAI/timefold-solver We're even more excited than usual to bring you this release. Sure, it has the usual fixes and improvements, but it also brings... drumroll please... Declarative shadow variables (Preview) We've he...

Our team has just released Declarative Shadow Variables (Preview) with our #opensource Timefold Solver 🀩 . It's easier than ever to calculate shadow variables.

As a preview feature, the API is not yet set in stone and we are actively looking for feedback. πŸ‘

github.com/TimefoldAI/t...

28.04.2025 13:27 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image

Most publications of the Vehicle Routing Problem only cover the tip of the iceberg.

Benchmarks and academic papers typically only handle vehicle capacity (CVRP) and time windows (VRPTW)

But production deployments also need to deal with many other requirements.

#OperationsResearch #PlanningAI #AI

21.04.2025 11:35 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image

Discover how AI can step up when LLMs fall short in scheduling. Join @tomcools.be and dive into Timefold, a Java-based AI solver that optimises schedules using advanced math. See live demos and enhance your problem-solving skills!

Session details @ buff.ly/TePAVmY

19.04.2025 17:02 β€” πŸ‘ 12    πŸ” 2    πŸ’¬ 0    πŸ“Œ 1

But it doesn't stop there.

We're working on two exciting, big new features for Timefold Solver. Both are game changers to tackle real-world Operations Research problems.
More on that later. Stay tuned!

10.04.2025 09:37 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Timefold Solver is still the foundation of everything we do at Timefold, so we continue to invest in it, with our dedicated solver team.

Since we forked from OptaPlanner, we've made it faster, easier to use and more flexible to deal with real-world requirements, such fairness and resource limits.

10.04.2025 09:37 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

Our Open Source solver now has a dedicated home: solver.timefold.ai

It's a place for the Timefold Solver community,
with everything you need to build a solution
for any planning, scheduling or routing optimization problem.

Is there anything missing that you would like to see on solver.timefold.ai?

10.04.2025 09:35 β€” πŸ‘ 5    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

What's the use case you're dealing with?

26.03.2025 07:10 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Driver costs for the Vehicle Routing Problem
YouTube video by Timefold Driver costs for the Vehicle Routing Problem

How to minimize driver costs for the Vehicle Routing Problem.

In this video, I cover dealing with a mixed fleet of employees and contractors. As well as overtime costs.

www.youtube.com/watch?v=2Foa...

#OperationsResearch #VRP #FieldService #AI #PlanningAI

26.03.2025 06:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

The quickstarts readme for our open source solver had a make-over!

It's now easier to find the right example and start solving your scheduling or routing problem with #PlanningAI.

Try it out:
github.com/TimefoldAI/t...

25.03.2025 15:26 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thanks :)

11.02.2025 11:25 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thank you!

11.02.2025 01:06 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
How I built an AI company to save my open source project The story of Timefold: how we turned a doomed open source project into a fast-growing PlanningAI company.

How I built an AI company to save my open source project

On this day, 3 years ago, my world fell apart. It was a Thursday. I just finished my second meeting that morning, looked at my inbox and realized it was over. My life’s work was over.

Read more:
timefold.ai/blog/how-i-b...

10.02.2025 16:46 β€” πŸ‘ 43    πŸ” 14    πŸ’¬ 3    πŸ“Œ 1
Post image

Allons-y! πŸ₯–πŸ·πŸ‡«πŸ‡·

Looking forward to speaking at DevoxxFR for the first time. It's gonna be an #llm #ai and #java presentation on creating schedules together with my co-speaker @geoffreydesmet.bsky.social 😁

Looking forward to sharing that with you all. πŸ˜‡

05.02.2025 11:04 β€” πŸ‘ 18    πŸ” 2    πŸ’¬ 3    πŸ“Œ 0

Depends on how complex their calculation is, to each maximum entropy (= lower the chance that 2 distinct objects have the same identity hash code).

But I would presume it's negligible in the grand scheme of doing a hashmap lookup. Most Object.hashcode() overrides do more.

05.02.2025 05:04 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

If only bit 1 is true, the identity hashcode is calculated from the memory address.

If bit 1 and 2 are both true, the header object is expanded to include the 25 bits with the identity hashcode of the original memory address.

03.02.2025 08:07 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

Solution:

Be lazy.

Each object header has 2 bits:
- Bit 1: Is this object ever used for identity hashcode? (Is it a key in a map?)
- Bit 2: Did it ever move to a new memory address after being used in that way?

Brilliant, isn't it?

03.02.2025 08:07 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

So how did they get the 25 bits down to 2 bits?

They could use the memory address of the object to calculate the identity hashcode, but the Garbage Collector moves objects around to solve memory fragmentation.

However, most objects are never used as a key for a Map.

They combined these 2 ideas.

03.02.2025 08:07 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Memory usage

Every object in the JVM heap has an object header. For java this traditionally takes 128bits. Per instance!

With project Liliput they're working on reducing this, saving 20-30% memory usage.

That object header includes 25 bits for the identity hashcode.

03.02.2025 08:07 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Usability

In Java (unlike in Python) you can use any object as a key for a Map. Think: map.put(myClass, ...)

This is because the Object class implements hashcode(), based on the object identity. It's called an identity hashcode.

This doesn't come for free.

03.02.2025 08:07 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

One of the most interesting feats of engineering recently was explained Saturday at #Fosdem for project Liliput for #Java OpenJDK:

How to put 25 bits into 2 bits.

How they are circumventing the trade-off between usability and memory usage. 🧡

03.02.2025 08:07 β€” πŸ‘ 11    πŸ” 4    πŸ’¬ 1    πŸ“Œ 0
Post image

The new overview of our REST API for Field Service Routing is online.

Take a look:
app.timefold.ai/models/field...

It covers almost every constraint.
From time windows, fairness and technician costs to real-time planning and many other #PlanningAI requirements.
Just pick and choose what you need.

29.01.2025 13:17 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
From the optimization community on Reddit Explore this post and more from the optimization community

A reddit user is asking about your experience with Timefold:
www.reddit.com/r/optimizati...

Reviews welcome!

22.01.2025 16:17 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@geoffreydesmet is following 20 prominent accounts