Geoffrey, thanks for sharing your story with us. OR sure is a weird niche. Good enough algorithms for solving these problems have existed for decades1, but we still see low adoption and your 95% estimate of the companies not optimizing their operations rings true.
Similarly to you, I spent a short while trying to sell VRP optimization with an API business model, and what dawned on me was that most companies do not have the necessary in-house expertise to integrate optimization into their existing tools even if the API is well-designed. There also really seems not to be any urgency to do that and most logistics companies just offload their inefficiencies onto their customers. Your routes are not effective? No problem, just bill more.
Some years ago I heard about a Swedish team of optimization experts who got so fed up with selling optimization to unwilling transportation companies that they founded their own—just to mop the floor with their ineffective competition. :D
I agree that ease of use is key here. In my PhD dissertation, I tried to address the issue by adding self-adaptivity within transportation management systems, mostly through automatic parameter tuning and algorithm selection. Such approaches remove some amount of fiddling when the optimization tool is adapted to a new optimization problem. Worth a look, perhaps, if you're interested.
Many thanks again for the interesting article and all the best with Timefold.
1) E.g., already by the '90s, we had quite capable algorithms for the VRP. I have open-sourced a library of classical VRP algorithms called VeRyPy, containing simple and not-so-simple heuristic algorithms. It has enjoyed modest success among VRP researchers and practitioners. Nowhere near the success of OptaPlanner, but also, the purpose is different—OptaPlanner is production-ready, whereas VeRyPy is more geared towards education and research purposes.
I love that GOFAI companies are also calling themselves AI, because seriously why not. If a pile of linear algebra (fittingly trained on The Pile) can be AI, then so can optimizers and solvers.
I've seen quite a number of sensor companies doing it for a couple of years. Their sensor uses a statistical algorithm, it's "AI"!
Really, it's hard to say it's not AI.
Glad to see an open source project gaining benefit from the AI hype train at least. :)
Their marketing person needs a bonus!
I'll pass along the message internally ;)
I haven’t tried Timefold but did try a ton of solvers (local and web) a few years ago when trying to optimize MRP schedule. One of the hardest parts was converting my business logic into constraints, especially date based calculations.
Instead of explicit constraints, is there a way to provide a calculation that can be minmaxed? If every order has a due date, can I say +/- 3 days = 0, 7 early = 9999 (not allowed), 7+ days late = (days late)^2?
Please email me (in profile) if you want to discuss.
Somewhat related, I looked at a bunch of solvers for vehicle routing with time windows. One thing that surprised me was that the SaaS-based distance matrix calculations were prohibitively expensive. Google charged $0.01 per matrix element.
How do folks normally get the distance matrix? I ended up just using the Mapbox Optimization API instead of using a solver.
It is always a question of accuracy / convenience. You can start with straight / geodesic distance. One step up is to use open street maps with an offline open source router [1]. But if you want the accurate driving distance with the latest closures / traffic data the big vendors are the only choice.
[1] https://wiki.openstreetmap.org/wiki/Routing/offline_routers
Take a look at OSRM. For the Timefold Field Service Routing REST APIs, we have a maps service that runs OSRM under hood by default, but supports alternative map providers too. It calculates both travel time and distance matrixes.
Our maps service does do a bunch of additional optimizations (caching, incremental requests, ...) to assist any solver model we run that request maps information.
I've had to solve this in a number of ways. The fastest I've found is to precompute a hash map at a low-granularity (well, update on batch cycle regularly). Graphhopper with OSRM + OpenStreetMap data are useful in this domain, to the point where relatively dense polygons can be mapped on 16 CPU hours in a 100km by 100km block.
The GraphHopper Matrix API has an (IMO) attractive pricing especially for large matrices. The pricing is credit based and for large matrices we do not charge for every matrix cell but instead we only charge "locations*10". E.g. for a 200x200 matrix we only charge 2000 and not 40 000 credits as our underlying algorithm is very efficient (scales nearly linear). And let's say you need this calculation 25 times a day (using the premium package) then this leads to $0.016 for 1000 matrix elements. Of course even cheaper for larger matrices.
And larger packages will furthermore include a volume discount.
Disclaimer: I'm one of the founders.
You need piecewise linear cost function and auxiliary variables. An experienced practitioner should be able to help you with either mixed integer linear programming or constraint programming
No need when using the timefold solver, the constraint streams allow for a more "human readable" approach. e.g. Penalise when the minimum is not reached, Penalise when the maximum is exceeded (2 constraints).
This feels like a basic service Timefold would offer...
I didn't use Timefold but the predecessor Optaplanner, and I remember there were hard constraints which must always be true (eg one room can only be used for one meeting at a given time) and then there were soft constraints which were minimized (eg shorter distance is better)
so an optimization problem can then be described with a set of those hard/soft contraints
Yes! These days, to handle cases with more work than resources to do it, medium constraints are used a lot too (so hard/medium/soft constaints), to penalize the amount of unassigned work. Those are harder than soft constraints, but softer than hard constraints.
It's a constraint solver. You can find the community version at https://github.com/TimefoldAI/timefold-solver
... and usage examples at https://github.com/TimefoldAI/timefold-quickstarts
Those examples are available in Java, Python and Kotlin.
We also have an overview of our open source solver here: https://timefold.ai/open-source-solver
Thank you for the hard work in this space! I think it is really important that there is a proper open source solution available.
I just found OptaPlanner and subsequently TimeFold few months ago, as I was searching for a solution for my wife's veterinary clinics employee scheduling problem. The problem is not big enough for anyone to pay for the solution, but big enough to cause stress for whom ever is dealing with manually doings the shifts.
It was interesting that there were a lot of online SaaS providers that claim to solve the problem but they just simply are not configurable for all kinds of constraints of a real workplace.
Unfortunately I also feel partially same with TimeFold, because designing those constraints really requires changing the way of thinking of many problems. While the engine is capable of doing what ever, there is a steep learning curve to do it.
So while the article mentions documentation, I would say that the documentation is far from sufficient for wide adaption.
Personally, I would have really needed documentation about a mental model of thinking about the problem, and then a ton of examples how to solve real employee scheduling problems. Problem written in a format which the business people use and then translated into an elegant constraint rule explained step by step.
I had to invest more than 40 hours to get a working MVP that solves real problems, not just those that are already coded in the example code. Most people are not willing to do that.
What I'm trying to say is that to making planner software popular, it should be also usable for trivial projects. I understand that it's hard to focus on everything, but just providing more information about real use cases and how they were solved and how to think about the design problems would make the market bigger, and bring you a lot more customers in the long run.
I just wonder how I might contribute to improve the documentation. I probably don't have deep enough understanding of the correct solution, but I will look into it.
Hi Tappio, read you loud and clear. We are actively looking into making it easier for all people to solve their planning problems. Our goal is to "free the world from wasteful scheduling" and we more than realize we can't do that alone. ;)
I scheduled large one-day events where attendees were recorded performing voiceover several times during the day. As many as 350 individual recordings throughout the day, each with an acting coach, studio engineer, studio room setup, custom sets of scripts, and a demographically optimized group of attendees that would go through the day together. Because each attendees journey through the day was (somewhat) customizable by them, each new attendee would change the schedule of some other attendees. So we would have to wait until ~80% of the tickets had been purchased to begin scheduling, each new attendee was progressively harder to schedule (making it hard to keep selling tickets), and we had to also be flexible with the support staff, engineers and coaches.
I wonder how those compare to something like this: https://developers.google.com/optimization/service/schedulin...
I just want to say that in 2024 there are _a_lot_ of hospitals doing shift planning manually and burning people out.
Also irrespective of the project itself, amazing wife!
Definitely! I'll let her know :)
Interesting story but what I don't get is this
> Founders might get a wage to avoid personal financial stress
How do you make a living as a founder if you don't get a wage? Is that really a norm?
> but then also need skin in the game, typically by investing personally
And also this. Does it assume that you will invest your savings or what exactly?
> Does it assume that you will invest your savings or what exactly?
The majority of successful founders are already wealthy. Those who aren't, have a pretty high chance of going personally bankrupt in the process
When you make the leap, you're basically living of off your savings.
Until the startup has investors that agree to pay the founders a wage (to reduce personal financial stress so they can concentrate on the company) - or the startup is profitable - it's vital that your savings don't run out...
Are there investors who wouldn't agree to pay the founders a wage?
I understand the part where you invest your time and money to build the PoC but I can't imagine running a startup with VC-backed investment without paying out myself a wage. That seems crazy to me if true.
Equity is compensation, just illiquid, risky compensation. If you're wanting to get a wage (liquid, low-risk compensation) as well, expect to trade it against equity (which will naturally happen: if you're a founder being paid a wage, you're being paid it with the VC money which you have gotten by giving them some of your equity for some small fraction of what you expect the equity to be worth if you succeed). If you believe in the company (or at least rate the chances of success as more than the VCs do), it's rational to minimise the amount you trade away in equity for short-term needs or risk-reduction.
Very few VCs would not agree to a wage if the founder needed it. It probably wouldn't be as high as market rate though.
If you've got an independently weathly founder then both parties typically prefer equity only.
Traditional seed investors may not agree anything beyond minimum wage. It depends though.
Sure, but in some cases it's also a great way to become very very wealthy.
It entirely depends on your personality and circumstances, it's certainly not for everyone.
This is not the norm in the US.
In markets where capital is more scarce, people may want to avoid giving up more equity.
Great story, and great choices made.
The lesson in this to young people: you can either sell your time by the hour, or buy other's time and use that productively. The former is very finite, the latter scales.
That is true. I think a guy wrote a book about this in the 19th century.
A friend of mine wants to know the author and the name of the book...
Why, if I didn’t know better, I’d imagine the gp might have been thinking about noted political theorist and agitator Karl Marx, writing briefly in Wage Labor and Capital (1847) [0] or later in his heftier Das Kapital (1867-1894) [1].
Offered without comment, except that better ebook examples are surely available somewhere:
[0] https://www.marxists.org/archive/marx/works/download/pdf/wag...
[1] https://archive.org/details/KarlMarxCapitalVolumeI-III/Karl%...
Ah! Yes of course, "How to Get Rich" by P.T Barnum.
Cool to see Hawkeye 360 is one of their users. Hawkeye is an Earth observation company that builds satellites to monitor RF spectrum usage on the ground, so I can see how better tasking would help.
[flagged]
Inspiring story!
My favorite business course in undergrad was production operations management. Some time later I realized that in data engineering, critical path analysis is useful for optimizing directed acyclic graphs.
For example, it doesn't make sense to optimize the longest running task when it's not on the critical path. If you are optimizing for $, sure. But for time, there are better tasks to optimize.
Whats the name of the algorithm/concept used here? I used simulated annealing, old fashioned algorithm for a college timetable prototype and I'm wondering how this company is using an AI model.
It is a constrained solver. You can argue about what is or is not AI. It varies over time, traditionally driven by in which part of the AI boom/ bust cycle we were, and lately also by which regulations would apply.
My background is in AI but I would have been hesitant calling the rule based systems I wrote to automate financial descisions AI at the time.
In this case, Geoffrey also seemed hesitant in the past to refer to his system as AI (see https://www.optaplanner.org/blog/2017/09/07/DoesAIIncludeCon... ), but somtimes you just have to ride the wave that brings in the funding.
I have prototyped using timefold in a work project for hospital bed allocation.
Using the shortcut of "It's AI, but it won't hallucinate because it follows all of your policy and rules" has been a great way to onboard both non technical folks and operators warming up to the idea.
<Looks up Geoffrey> I used Drools Planner in 2012, which is a predecessor of Timefold. There was no talk of distilled "models" back then, but this article mentions models as if its a secret sauce.
Rule based systems can fall more into the side of AI than ML.
Objectively I agree. Commercially it's a different story.
I also think AI ousting ML historically was uncalled for, and those that did should bow their heads in shame.
We support Simulated Annealing too, as well as Tabu Search and many others. By default Timefold Solver uses Late Acceptance, which behaves like Simulated Annealing but isn't parameter tuning fickle like SA.
Do note that the base algorithm (such as SA, TS or LA) is less than 5% of the work to get great results. We do a lot of additional things on top of that (incremental score calculation, smart neighborhood selection, multi threaded solving and many more).
Hey Geoffrey, I missed that you were behind this! You did help me choose Drools Planner with simulated annealing in 2012. Congrats on coming a long way since then!
https://stackoverflow.com/questions/8712955/which-drools-pro...
I did something like this for a project in a class almost two decades ago. The project was to make a system that would take a bunch of students' schedules and produce a list of teams that optimized for shared free time. I started with simulated annealing and then ended up with a genetic algorithm.
Good job ge0ffrey!
It is a tough niche market where you compete with excel people who have built their careers on their manual planning expertise.
Unfortunately you are pitching not to the end user but to their manager (who will have to force them to drop their spreadsheet mambo jumbo). But I guess this is the case with all AI products nowadays anyways.
Hmmm... Some co-founders and I are building a UK startup that needs to do skills-based task routing and optimize job assignment for workers who will drive to remote jobs.
Would love to have a quick chat with you or someone at timefold.ai to see if this is something we could potentially use.
A lot of the research on constraint solvers is to solve that problem. CSP is more approachable than boolean SAT or SMT but it's all the same sort of thing - feed it a lot of constraints and some notion of when a solution is better than another one and then leave it running for a while.
Excellent article. You certainly managed to synthesize the startup experience with Open-source (two very challenging sectors). Do you just gravitate towards mathematically wicked problems? :)
Like you experienced, a good product without a team and without revenue is simply not enough, no matter how good the idea. I have unfortunately been one of the 90% of startup failures to experience that brutal reality.
My next project with a few others is to make open source coding & development profitable. We want to keep advancing open source while also helping others to get paid for their efforts. We are still technically in stealth mode, but plan to be launching soon. Our website will be codebounty.ai (we don't yet have it fully built out yet). With that being said, if you are interested to participate as a sponsor, maintainer, or contributor we would love to hear from you about what you would like to see in this program: https://docs.google.com/forms/d/e/1FAIpQLSdmlxJHIqOlwr1Nw3q0... .
We would like to see it become a place where new coders can learn, develop skills, and get mentored by others. We would also like to have it as a way for others to have an income while looking for full time employment (rather than driving for uber). Heck, it could even become a recruiting tool for companies.
If you have ideas, I would love to hear from you so that we can help to make more amazing open source projecets like Timefold a more common reality!
What a great story and indeed you're an excellent storyteller.
I want to wish you all the luck in the world with this, it sounds like it's going well.
Have you considered offering public pricing for your API, or maybe a few trial? Even if it's only for small use cases, I'd love to know I can just give you guys $100/month to cover my small use case.
Thanks for your work and dedication on this problem domain, Geoffrey! I’ve used optaplanner in the past on several projects and will certainly use Timefold for future projects. This sort of constrain solver is an invaluable tool when you find yourself in the problem space and definitely worth the learning curve.
I need to check this out. In a past life my primary role was scheduling a call center of up to two hundred seats (at our peak). I had built out a complicated network of spreadsheets that used historical data and future projections to mostly automate the process, so much so that I was able to move us from what was monthly schedule releases to quarterly and had a full on preference survey that each agent filled out. It still was a few days work going through the responses and actually compiling the final result but what once was a headache for my manager I turned into 10% if my role and was able to focus on delivering value elsewhere by streamlining data reporting.
Honestly, I'm still not sure how I feel about Red Hat/IBM's journey. On one hand, RH killed (i.e. "gave to IBM to rot away") a lot of products I liked (recently, the whole JBoss stack they had, see [1] for more details).
On the other hand, a lot of the products that RH gave to IBM were really painful to use. Let me preface this by saying that I mean no disrespect to Geoffrey and his amazing work! And, also, I suspected I was too dumb to understand OptaPlanner in particular.
But OptaPlanner was definitely amazingly painful to use. The docs seemed horrible to me at the time, and the UX of the product was on the level of "the source code is there, to solve your problem, just understand the code base..." To model your problems meant that ideally, you'd pay for Red Hat's consulting, which would give you indirect access to the dev team, which would help you put your problem model into OptaPlanner.
A lot of the JBoss products I really liked were like that. Now, they'll die by slow death over at IBM with nobody giving a damn. I guess such is life.
I wish Geoffrey all the best with Timefold! I truly hope you'll turn it into whatever you desire, and that you'll always have more customers knocking at your door than you can handle!
[1] https://www.redhat.com/en/blog/evolving-our-middleware-strat...
Our goal is to make planning optimization easy. But planning optimization can be extremely complex. So it took us quite some time to make it easy. Timefold Solver is already a lot easier than OptaPlanner to use. And the Timefold REST APIs are even easier: if you have a vehicle routing or shift scheduling case on your hands, just send in your data and get the solution. But not all cases are easy...
What kind of use case where you trying to solve with OptaPlanner? In the past, I've seen a strong correlation between the ease of solving the problem and the availability of of a quickstart example.
For example, our tech is even used for court scheduling (in different countries), but every single one of those cases was difficult. Other cases are far more simple.
It all depends on the planning problem.
Do you remember any particular pain in your OptaPlanner experience that we can improve going forward? Around which year was this?
Not OP, but in the past we experimented with OptaPlanner for manufacturing scheduling. I think the closest available example was project job scheduling, but we struggled to make it work with finer granularity time placement, it seemed to uselessy move jobs back and forth (IIRC because finishing one stage earlier didn't necessarily improve entire job time, but you didn't want it as constraint because sometimes it is useful to have gaps).
The Project Job Scheduling example was terrible. We deleted it, and replaced it with the much cleaner Food Packaging quickstart.
Out of all our quickstarts, Project Job Scheduling is - by far - the one I am least proud of. It was overfitted for a particular problem and - in hindsight - it didn't align well to real-world variants of Job Shop Scheduling that many people face. But before Food Packaging, it was all we had.
Sorry for the pain. Thanks for sharing these insights.
I read the entire article once I recognized the name.
Geoffrey is synonymous with OR/Constraints solvers in my mind. I once had to tackle an issue in this domain and wound up using OptaPlanner after weeks of research.
It had the most intuitive API and the best community support by far.
It's a bummer to hear that OptaPlanner was killed, but it sounds like ultimately it led to something greater, so there's a silver lining.
Wishing you the best in your future endeavors, Geoffrey!
Thank you!
Nice project!
I am wondering if there is a risk, as it is open source, that a company with bigger marketing spend starts offering timefold in the cloud, kind like AWS with Elasticsearch? Or is there a big enough moat with the models on your cloud platform to prevent this situation?
Hi, I loved your story! I also checked out the app, but it's giving me an error:
An error occurred in the Server Components render. The specific message is omitted in production builds to avoid leaking sensitive details. A digest property is included on this error instance which may provide additional details about the nature of the error.
I didn't have much appreciation for shift planning until an engineering genius showed me the beautifully crafted schedule for their company (after I helped mess it up with some 12 hour days). They later went independent, with shift-planning software being one of their products.
I remember you talking about the project in the early drools IRC days. Your positivity and enthusiasm were what really made this project happen, and I have no doubts about your success with this new venture.
I’m glad things went well for you and that you managed to regain control of your life’s work.
Geoffrey is one of the best open source citizens.
Congrats on all this great progress! Please take care :-)
Thanks for sharing your company story!
I have kind of an off-topic question — how did y'all get a license for using SF Pro as a Web Font on your website? Afaik Apple on licenses the SF Pro as a font to only be used on Apple devices and apps?
> Especially if there are almost no bugs, support is worthless.
This is why I don't buy support from companies.
Tried their SaaS the day they launched and it was definitely very interesting
I've looked into optaplanner/timefold but never ended up using or experimenting with it. Can anyone compare the experience to OR tools?
(Disclosure: I work for Timefold) OR Tools is a MIPS/SAT solver, while Timefold is a meta-heuristic solver. As a result, the developer experience is quite different:
- In OR Tools, you need to write your constraints as mathematical equations. You can only provide your own function in a few scenarios, such as calculating the distance between two points. This allows OR Tools to eliminate symmetries and calculate gradients to improve its solution search. In Timefold, your constraints are treated like a black box, so your constraints can use any function and call any library you like (although you shouldn't do things like IO in them). However, since said constraints are a black box, Timefold is unable to eliminate symmetries or calculate gradients.
- In OR Tools, you have very little control in how it does its search. At most, you can select what algorithm/strategy it uses. In Timefold, you have a ton of control in how it does its search: from what moves its tries to adding your own custom phases. If none are configured, it will use sensible defaults. That being said, certain problems strongly benefit from custom moves.
- In OR Tools, you do not need to create custom classes; you create variables using methods on their domain model classes. In Timefold, you need to define your domain model by creating your own classes. This adds initial complexity, but it makes the code more readable: instead of your variable being an int, it is an Employee or a Visit. That being said, it can be difficult for someone to design an initial model, since it requires an understanding of the problem they are solving.
All in all, when using Timefold, you need to think in a more declarative approach (think Prolog, SQL, etc). For example, let say you have a room assignment problem where a teacher can only teach at a single room at once, and minimize room changes. In Timefold, it may look like this:
# Typically would be stored in a parameterization object, but a global var
# is used for brevity
teacher_count = 3
@planning_entity
@dataclass
class Room:
id: Annotated[int, PlanningId]
date: int
name: str
# This can also be a Teacher object, but str is used for brevity here
teacher: Annotated[str, PlanningVariable] = field(default=None)
@planning_solution
@dataclass
class Timetable:
rooms: Annotated[list[Room], PlanningEntityCollectionProperty]
teachers: Annotated[list[str], ValueRangeProvider]
score: Annotated[HardSoftScore, PlanningScore] = field(default=None)
@constraint_provider
def timetable_constraints(cf: ConstraintFactory):
return [
cf.for_each_unique_pair(Room, Joiners.equal(lambda room: room.date), Joiners.equal(lambda room: room.teacher))
.penalize(HardSoftScore.ONE_HARD)
.as_constraint('Teacher time conflict'),
cf.for_each_unique_pair(Room, Joiners.equal(lambda room: room.teacher))
.filter(lambda a, b: a.name != b.name)
.penalize(HardSoftScore.ONE_SOFT)
.as_constraint('Minimize room change')
]
solver_config = SolverConfig(
solution_class=Timetable,
entity_class_list=[Room],
score_director_factory_config=ScoreDirectorFactoryConfig(
constraint_provider_function=timetable_constraints
),
termination_config=TerminationConfig(
spent_limit=Duration(seconds=5)
)
)
solver_factory = SolverFactory.create(solver_config)
solver = solver_factory.build_solver()
problem: Timetable = build_problem()
solver.solve(problem)
Compared to OR Tools: teacher_count = 3
problem: Timetable = build_problem()
model = cp_model.CpModel()
objective = []
room_vars = [cp_model.model.new_int_var(0, teacher_count - 1, f'room_assignment_{i}' for i in range(len(problem.rooms)))]
room_vars_by_date = {date: [room_vars[i] for i in range(len(problem.rooms)) if problem.rooms[i].date == date] for date in {room.date for room in problem.rooms}}
room_vars_by_name = {name: [room_vars[i] for i in range(len(problem.rooms)) if problem.rooms[i].name == name] for name in {room.name for room in problem.rooms}}
for date, date_vars in room_vars_by_date.items():
model.AddAllDifferent(date_vars)
for name, name_vars in room_vars_by_name.items():
for assignment_1 in names_vars:
for assignment_2 in names_vars:
if assignment_1 is not assignment_2:
objective.add(assignment_1 != assignment_2)
model.minimize(sum(objective))
solver = cp_model.CpSolver()
status = solver.solve(model)
Congratulations and thanks to share your history, is inspiration for all of us who had an old project struggling to keep going
Awesome story, congrats on pursuing your passion
Eloquently explained, writing have have loads of wisdom earned and clubbed with benefit of hindsight.
Nice play with the name (Timefold).
Very enjoyable read. Hope you do post that follow-up in the future. Congratulations!
It is interesting how the combination of AI and open-source can provide new opportunities for project development. It is impressive to see it in action
All the best in your start-up
Great story, congrats!
Love to see a story with AI solving a real problem without generating a bunch of bullshit along the way
really interesting read!
awesome story!
wow
[dead]
Great story and interesting product!
Reminds me of NextMv [1] loved their episode on SWE daily. Can anyone compare them to this and how they’re doing?
If nobody does something in a whole industry perhaps it's because it's not a differentiating factor. Do you have a link to the Swedish company? It just sounds like typical "software engineers know better" story where they go bankrupt after a few years because turns out the important bits are in other parts of the business.
I am interested in that company as well.
A recent example of "knowing better optimisation experts" I know of in my local area are with garbage trucks. A expensive company was hired to optimize - yet they apparently forgot some real world factors, like with snow and ice not all the trucks can go everywhere, some roads too narrow, etc. with the result of chaos and the workers fighting succesfully to be allowed to continue influence their working schedule, they sucesfully managed without the external experts.
People do inefficient things. And they also do it for years, thinking it is a universal law. But usually an expert from the outside will still not know better how to do things.
The company would probably be Airmee, they have a scheduled delivery at my door in an hour.
https://www.kth.se/en/om/innovation/alumner/airmee-levererar...
https://www.airmee.com/en/
Yes, this story is far too soothing to the software engineering ego to be actually true! Generally real world problems are messy, hard, and full of human problems. It's a little aggravating when 'software engineers know everything' stories like this are taken at face value and reinforce that mistaken idea.
True stories like this happen, but generally only when a domain expert on the business side was incorporated from the beginning—and that may not be mentioned by the software side.
There is truth in this.
Without involving the human planners, the project won't succeed. We're empowering them, with PlanningAI assistance, so they can focus on what they planning must do, for who, instead of how it gets there. So when the plan goes off the rails - 5 people call in sick - they can get it back on the rails in seconds with Real-Time Planning.
The engineering work is only half the work, or less. Fitting the technology into the human processes is another big chunk. Half of my videos on youtube deal with such cases: Continuous Planning, Real-Time Planning, Non-distruptive Replanning, Pinning, ... Not code, not technology, but design patterns.
And even then, this is far from 100% of the solution. Technology and education is still not enough.
That human planner with 30 years of business knowledge in his/her head is still a critical: he/she will always need to tweak, oversee and sometimes overrule the planning solution in production.
Sorry to dissapoint you and the few other curious ones, this was some 10 years ago and such details such as name of the company have fell of from my overfilled brain long ago. While the person who told me the story is a reputable fellow I must admit they still are a secondhand source. Being a finn I tend to trust people and take their word on it and, hence, do not recall doing my research to factcheck.
Still, it _is_ a good story, and plausible based on what I saw to be the state of the industry back then. Your run of the mill last-mile courier services were really badly organized, from the mathematics and optimization side as simple as they get, and ability to build a robust optimization transportation management system would've given serious competitive edge.
(edit: removed repeated words)
I, too, would like the reference.
However I can tell you that this kind of thing really does happen. One of the injection molding conferences I attended had several presentations where companies were contemplating building more injection molding lines, but instead hired consultants (of course rolls eyes) to re-optimize their injection mold programs. After tweaking all the parameters in to speed up injection rates, it turned out the company had about 50% more capacity than they thought.
Now, I suspect this was shit management more than anything. I strongly suspect that the people on the line told their superiors that they needed to fix the programs and got ignored.
However, you couldn't sell anything to the management chain until they were staring at having to spend cash. Selling people on "saving money" is always super difficult as it requires them to change something that is nominally "working". Selling people on "not having to spend money they are staring at imminently" is always way easier. Obviously the easiest sell is "spend money to make a lot more money", but that doesn't happen all that often.
I always assumed it was due to (a lack of) scale for most companies? 1% improvement in container planning for Maersk is hundreds of millions of dollars per year, so they can have an entire team dedicated to that. Meanwhile at the other end of the scale, 1% improvement of job scheduling at $DAYJOB probably wouldn't even pay for its own ongoing costs, let alone the costs of setting it up.
A 10% productivity gain is a lot for any company, regardless if they are operating a fleet of 50 or 50 000 vehicles.
However, the cost and risk to achieve that productivity gain is typically huge. Many Operations Research projects fail. And when they do, they are very expensive failures. "Managers getting fired" expensive.
With our technology, we're making OR projects easy and quick to put into production.
I did OR in my Bachelor thesis, and then at my first project at my first job. It worked like magic, and business was sure it wouldn't work. Still one of the projects I always talk about. It was for organizing screens unto pallets unto trucks. Then I never anything with OR ever since. Even for a few early AI products 8 years ago, in the end they didn't go for it. I think you are spot on with the expertise. Even though quite a lot of businesspeople heard about it in university.
Thanks for sharing your story too, Yorak.
Yes, having in-house expertise to integration optimization into their existing tools is hard. Especially if they use low level solver APIs (especially if it's math equations).
We're working making that easier with high-level REST APIs (Timefold Field Service Routing, etc). And with education (Timefold Academy) by creating videos and articles on how to integrate real-time planning, continuous planning, labor law constraints, fairness, cost reduction, etc
See https://www.youtube.com/@timefold/videos
Symbolic math equations isn't a low level solver API. That's the high level interface. A low level interface expects you to provide the optimization problems as raw matrices.
What you're talking about is known as a problem reduction.
I would argue that inputting a loadBalance(sum(shift.duration)) function per employee is a higher level abstraction than inputting a quadratic math equation to accomplish the same thing.
Think Java/C++/Python vs Assembly.
Ironically, talking about problem reduction... most math equation based solver can't scale quadratic equations, so users "relax" the business constraints (to the point that projects fail in production).
I like anecdote about the Swedish team of optimization experts! Did they succeed with their transportation company?
Edit: vasco was faster with their question haha