[HN Gopher] I built an AI company to save my open source project
       ___________________________________________________________________
        
       I built an AI company to save my open source project
        
       Author : ge0ffrey
       Score  : 418 points
       Date   : 2025-02-10 12:22 UTC (4 days ago)
        
 (HTM) web link (timefold.ai)
 (TXT) w3m dump (timefold.ai)
        
       | ripped_britches wrote:
       | Awesome story, congrats on pursuing your passion
        
       | jarbus wrote:
       | Great story, congrats!
        
       | jnsie wrote:
       | Very enjoyable read. Hope you do post that follow-up in the
       | future. Congratulations!
        
       | OutOfHere wrote:
       | It's a constraint solver. You can find the community version at
       | https://github.com/TimefoldAI/timefold-solver
        
         | semi-extrinsic wrote:
         | ... and usage examples at
         | https://github.com/TimefoldAI/timefold-quickstarts
        
           | ge0ffrey wrote:
           | 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
        
       | chime wrote:
       | 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.
        
         | whatever1 wrote:
         | 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
        
           | rosstex wrote:
           | This feels like a basic service Timefold would offer...
        
           | LDWNS wrote:
           | 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).
        
         | sa46 wrote:
         | 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.
        
           | whatever1 wrote:
           | 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
        
           | ge0ffrey wrote:
           | 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.
        
           | tomrod wrote:
           | 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.
        
           | karussell wrote:
           | 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.
        
         | uwemaurer wrote:
         | 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
        
           | ge0ffrey wrote:
           | 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.
        
       | owenthejumper wrote:
       | Tried their SaaS the day they launched and it was definitely very
       | interesting
        
       | patrickwalton wrote:
       | 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.
        
       | randomcatuser wrote:
       | really interesting read!
        
       | data_ders wrote:
       | 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?
       | 
       | [1]: https://www.nextmv.io/
        
       | whatever1 wrote:
       | 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.
        
       | aitchnyu wrote:
       | 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.
        
         | PeterStuer wrote:
         | 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.
        
           | wisty wrote:
           | Rule based systems can fall more into the side of AI than ML.
        
             | PeterStuer wrote:
             | 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.
        
           | throwaway346434 wrote:
           | 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.
        
           | aitchnyu wrote:
           | <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.
        
         | viccis wrote:
         | 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.
        
         | ge0ffrey wrote:
         | 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).
        
           | aitchnyu wrote:
           | 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...
        
       | PeterStuer wrote:
       | 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.
        
         | viccis wrote:
         | That is true. I think a guy wrote a book about this in the 19th
         | century.
        
           | ahofmann wrote:
           | A friend of mine wants to know the author and the name of the
           | book...
        
             | alwa wrote:
             | 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/pd
             | f/wag...
             | 
             | [1] https://archive.org/details/KarlMarxCapitalVolumeI-
             | III/Karl%...
        
           | fragmede wrote:
           | Ah! Yes of course, "How to Get Rich" by P.T Barnum.
        
       | wedocharlie wrote:
       | 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.
        
         | JonChesterfield wrote:
         | 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.
        
       | menaerus wrote:
       | 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?
        
         | ge0ffrey wrote:
         | 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...
        
           | menaerus wrote:
           | 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.
        
             | matt-p wrote:
             | 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.
        
               | menaerus wrote:
               | Sounds like a nightmare and a good way to go into
               | personal bankruptcy. Unless, I guess, you had a job where
               | you accumulated ~M of savings, which is very very few
               | people.
        
               | matt-p wrote:
               | 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.
        
               | menaerus wrote:
               | > Sure, but in some cases it's also a great way to become
               | very very wealthy.
               | 
               | In very very very few cases, sure. Also, the wealth isn't
               | the only or at least not the biggest motivator for many
               | people trying to build their startups. But I get it - my
               | money my rules disguised under show me how motivated you
               | are to carry this through.
        
               | matt-p wrote:
               | Sure, agreed though a larger percentage of VC funded
               | startups exit than you probably think. Those "90% fail"
               | stats are made up mostly by people who got traditional
               | angel investment or no investment at all.
               | 
               | I'm just saying there's two sides to the coin, that's
               | all.
               | 
               | I think there's a very genuine element of 'show me how
               | motivated you are' you also cannot expect to get a normal
               | standard rate company salary when you own most of the
               | equity and aren't profitable. I think it's reasonable on
               | balance.
        
               | menaerus wrote:
               | No, that's only about the leverage - a perfect instrument
               | to create even more pressure. Everything else I call a
               | BS, sorry. Aren't founders already taking a huge leap by
               | admitting themselves to work probably as much as ~10x
               | more, with of course reciprocal amount of stress, and
               | then you say it's reasonable that founders wouldn't be
               | motivated enough unless they did all of that but for
               | under the market rate? They left their job, they have the
               | idea, they have the people, they have the drive ... and
               | they want to execute it. I just hope not all investments
               | work this way - this would be really sad.
        
               | matt-p wrote:
               | Pretty much all investments work this way. I'm not saying
               | they are on the poverty line - let's say in the UK,
               | standard rate for a great full time programmer or average
               | tech lead is 100k, as a co-founder you'd be earning say
               | 50k (pre profit). You can pay your bills, even go on
               | vacation but yes, not market rate.
        
               | menaerus wrote:
               | I appreciate the details, I am not familiar with this at
               | all. This is pretty shitty considering that as a
               | contractor you would need to work ~3.5 months to earn 50k
               | for much much less work and stress.
               | 
               | That makes me wonder what is the profile of a startup
               | founder who agrees to an infinitely larger amount of
               | complexity and stress for ~4x less income? The ones that
               | got lucky so they don't care or don't have much loose or
               | what. Crazy.
        
             | rcxdude wrote:
             | 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.
        
         | swiftcoder wrote:
         | > 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
        
         | Eridrus wrote:
         | This is not the norm in the US.
         | 
         | In markets where capital is more scarce, people may want to
         | avoid giving up more equity.
        
       | yorak wrote:
       | 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.
        
         | vasco wrote:
         | 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.
        
           | lukan wrote:
           | 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.
        
           | idiotsecant wrote:
           | 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.
        
             | QuantumGood wrote:
             | 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.
        
           | bsder wrote:
           | 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.
        
           | nialse wrote:
           | 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/
        
         | jaypii172 wrote:
         | 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
        
         | ge0ffrey wrote:
         | 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
        
           | imtringued wrote:
           | 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.
        
         | _glass wrote:
         | 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.
        
         | WJW wrote:
         | 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.
        
       | internet_points wrote:
       | 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.
        
         | fragmede wrote:
         | Their marketing person needs a bonus!
        
           | TomCoolsTF wrote:
           | I'll pass along the message internally ;)
        
       | matt-p wrote:
       | 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.
        
       | chandumachineni wrote:
       | wow
        
       | gavinray wrote:
       | 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!
        
         | ge0ffrey wrote:
         | Thank you!
        
       | fmeyer wrote:
       | 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.
        
       | DoingIsLearning wrote:
       | 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!
        
         | ge0ffrey wrote:
         | Definitely! I'll let her know :)
        
       | MaxPock wrote:
       | All the best in your start-up
        
       | Blau123 wrote:
       | awesome story!
        
       | kashyapc wrote:
       | Geoffrey is one of the best open source citizens.
       | 
       | Congrats on all this great progress! Please take care :-)
        
       | Cappor wrote:
       | 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
        
       | BossingAround wrote:
       | 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...
        
         | ge0ffrey wrote:
         | 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?
        
           | garaetjjte wrote:
           | 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).
        
             | ge0ffrey wrote:
             | 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.
        
       | gala8y wrote:
       | Nice play with the name (Timefold).
        
       | axus wrote:
       | 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.
        
       | freethejazz wrote:
       | 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.
        
       | myko wrote:
       | Love to see a story with AI solving a real problem without
       | generating a bunch of bullshit along the way
        
       | tappio wrote:
       | 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.
        
         | TomCoolsTF wrote:
         | 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. ;)
        
           | QuantumGood wrote:
           | 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.
        
         | SomaticPirate wrote:
         | I wonder how those compare to something like this:
         | https://developers.google.com/optimization/service/schedulin...
        
       | pandatigox wrote:
       | 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.
        
       | igtztorrero wrote:
       | Congratulations and thanks to share your history, is inspiration
       | for all of us who had an old project struggling to keep going
        
       | abcanthur wrote:
       | I've looked into optaplanner/timefold but never ended up using or
       | experimenting with it. Can anyone compare the experience to OR
       | tools?
        
         | cchianel wrote:
         | (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)
        
       | yawnxyz wrote:
       | 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?
        
       | fjjjrjj wrote:
       | 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.
        
       | valiant55 wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2025-02-14 23:02 UTC)