←back to thread

56 points mzl | 1 comments | | HN request time: 0.248s | source
Show context
darksaints ◴[] No.45774890[source]
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.

replies(2): >>45776234 #>>45776817 #
1. irq-1 ◴[] No.45776817[source]
> For example, there isn't really IO...

Check out Picat. It has IO and you can use it for scripting.

https://picat-lang.org/