Optaplanner has been widely known in the space for many years, funny to see it top on HN. It's awesome and scary in a Hibernate type of way. Huge, incredibly powerful, complex.
It's the only framework of its kind for constraint optimization. Nothing else comes close to the flexibility at high level Optaplanner offers. I would bet over 50% of commercial software that does optimization over NP-hard problems is using optaplanner.
Thanks for the kind words. We've working hard to reduce the complexity and will continue to do so. For example:
- ConstraintsStreams (instead of DRL) to declare incremental constraints easily in plain Java (or another JVM language). No need to learn the Drools Rule Language any more.
- Autoconfiguration (no need for solverConfig.xml unless you want to power tweak) thanks to our Quarkus extension or Spring Boot starter.
- SolverManager that manages Solver threads for you. Great to avoid HTTP REST timeouts or to solve multiple problems.
Coming soon:
- Code completion (XSD) when power tweaking the solverConfig.xml
Constraint streams will be awesome! Writing constraints was the hard part, hard enough that eventually we gave up on a solver and went back to our terrible home rolled algorithm. That's always the case with solvers though.
Another hard part was combining chain through time with entities that can be scheduled together vs ones that need gaps. This seems to be a common use case, grouping work where you need a setup/teardown gap between entities. Not sure how to improve this but maybe add some kind of built-in support for "entity coloring" on chained variables where you can configure which run together in a chain vs which ones need setup/teardown gaps between.
Overall Optaplanner is an amazing piece of software though, good work!
optaplanner simply rocks - I appreciate your work in the space tremendously.
My suggestion is to create a simple way to deploy a to containers so that a primary server can pass out parallel optimization runs to a set of secondary nodes, allowing you to parallelize really easily.
a second generation of this would include code to spin up secondary nodes on demand depending on the number of parallel scenarios you want to run.
Yes, our container integration needs to become more streamlined. One of ours first goals is make it very easy to deploy all quickstarts on OpenShift (= Kubernetes) especially the Quarkus ones, by including a docker file and a how-to-deploy in the readme.
I haven't used OptaPlanner - what makes it better than Google OR-Tools, Gecode or other MiniZinc-compatible solvers?
On the commercial NP-hard optimization front Gurobi, CPLEX and to some extent XPRESS are surely formidable as well. Of course mixed-integer solvers don't always directly compete with constraint programming solvers, since some problems are better solved with one or the other kind of solver.
It scales better (for example in VRP we had case were OptaPlanner did in 5 minutes what Google OR-Tools did in hours), it can handle fairness and load-balancing constraints (= non-lineair constraints), it supports real-time planning (= changing the problem while solving it) and continuous planning, it uses OO input and constraint written in plain java (no math equations) and it integrates with the Java ecosystem (think REST, Jackson, JPA, Quarkus, Spring, ...).
It's much, much easier to use. We were able to get it working acceptably on a team with only algebra and basic calc knowledge. Really you don't even need that.
It's more automatic and focuses on good performance out of the box, with custom solver phases and such only recommended if you have performance problems.
Its also fully object oriented. The solver works on Java POJO's
In addition, it has built in tools for unit testing and detecting score corruption.
It's very much on the practical, rather than theoretical end of solvers. You can drop it into an existing Java project with zero fuss.
Probably not your intent, but in my mind saying _anything_ is like Hibernate is equivalent to saying "run screaming in the other direction as fast as you can"
It's hard in the same way Hibernate is. If you don't fully understand it, things will end in disaster. It's still much more accessible than other constraint solvers which cater to math majors
It's the only framework of its kind for constraint optimization. Nothing else comes close to the flexibility at high level Optaplanner offers. I would bet over 50% of commercial software that does optimization over NP-hard problems is using optaplanner.