As stated in Choco’s User Guide, “Constraint programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming: the user states the problem, the computer solves it. (E. Freuder)” Constraints are limits on something: you must be at least 48 inches tall to ride the roller coaster; you have to deposit the check before the bank closes at 5:00; only five adults will fit in the car; and so on. The most that people are consciously aware of solving constraint problems are when budgeting money or planning errands. Or doing laundry: after doing a load of socks, do towels, because they’re quicker to fold, and matching socks takes a long time.
Choco is a Java implementation of constraint satisfaction programming. In my opinion, it’s one of the world’s most underrated software packages. I’m surprised it doesn’t get more attention, and I’m surprised that there isn’t at least a C# port. It’s BSD-licensed, so it’s business-friendly.
If you’re charged with time, materials, and resource planning, give Choco a look.
See: Roman Bart