[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)