[HN Gopher] Rotating Workforce Scheduling in MiniZinc
___________________________________________________________________
Rotating Workforce Scheduling in MiniZinc
Author : mzl
Score : 49 points
Date : 2025-10-31 14:09 UTC (8 hours ago)
(HTM) web link (zayenz.se)
(TXT) w3m dump (zayenz.se)
| clickety_clack wrote:
| I know a couple of people who work these kinds of shifts, and a
| major headache is trading shifts so that people can attend life
| events. If you could program that into this you could have a
| pretty interesting product.
| qsort wrote:
| Younger me would jump on that problem. The issue, of course, is
| that by the time you're making allowances for life events,
| trading favors, etc. the problem isn't technical anymore.
| mzl wrote:
| That is more the area of workforce management systems, and they
| are really big business.
|
| I've previously tried starting a scheduling company, and even
| when one has a product that in testing shows that it would save
| the potential customers lots of money, it is really hard to
| gain traction.
| whatever1 wrote:
| Scheduling optimization is everywhere. From project management
| and shift scheduling to even NFL game programming.
|
| There are a ton of players in the market that they cater to
| specific use case.
|
| The issue is that there are always domain-specific nuances that
| a generic solver does not capture. Someone needs to encode
| them.
| darksaints wrote:
| I absolutely love minizinc and constraint programming in general,
| but I have to say that the whole concept of a specialized
| language for constraint programming really breaks down once you
| get past the toy problem stage. For example, there isn't really
| IO...the closest you can get is a specialized file format to
| input data into your model, and printing output to stderr. If you
| want specialized constraints, you're gonna need to implement them
| yourself at the language level. There aren't really libraries.
| It's really fun to play with, but not for serious problems that
| would underpin a production system.
|
| Although it sometimes feels like it was created by an unholy
| union of mathematicians and 1990's C++ dweebs that never learned
| a new thing since Y2K, I'd really recommend Google's or-tools for
| something similar that requires a better solver and a language
| with actual capabilities outside of solving toy problems.
|
| And although it's not a traditional constraint solver, I would
| also recommend Timefold. It's incredibly good for the types of
| problems that have elements of linear programming, quadratic
| programming, constraint programming, but also with odd domains
| that are hard to express as models using typical constraint
| programming idioms. I actually have had a bunch of incredibly
| valuable wins with this (and its predecessor Optiplanner)...for
| example, I've used it to optimize operations planning with $10+B
| budgets that could save 10+% over previous methodologies. And
| I've used it to dynamically reoptimized auction bidding
| strategies for FCC spectrum auctions, which saved us from
| overbidding on hot bid licenses by adjusting our bidding targets
| for subsequent rounds to capture better value for our auction
| money compared to what we could get in the secondary market.
| mzl wrote:
| My process is generally that I want to prototype the model in
| MiniZinc and use that to run benchmarks. If the problem to
| solve is large or batch-oriented, I might also use MiniZinc in
| production (probably via the python wrapper for the toolchain).
|
| If on the other hand the problem is smaller, is more meant as
| an interactive system, or there is a need for deep integration,
| then I would re-implement the model in the API for a solver, or
| I might even write a dedicated solver. As a Gecode developer, I
| naturally think that Gecode is very useful for the cases where
| the problem is not a traditional model / instance / solve /
| done process, but I've used many other solvers as well
| depending on circumstances and need.
|
| I've never really felt that Optaplanner / Timefold has been
| that useful of effective. In the cases I might have used it,
| I've instead written a custom local search system or constraint
| programming like system, and I think that has been a more
| effective approach. Do you have an example of what kind of
| problem you used it for?
| irq-1 wrote:
| > For example, there isn't really IO...
|
| Check out Picat. It has IO and you can use it for scripting.
|
| https://picat-lang.org/
___________________________________________________________________
(page generated 2025-10-31 23:01 UTC)