|
How does this compare with open-source software like Optaplanner [0] from RedHat or ChocoSolver? [1] I think this is really cool, and I've recently been looking into using constraints solvers for automating some of the manual scheduling processes at our startup and optimizing them (we do a variant of events booking, so essentially booking events at the times most likely to fill up and maximizing for profit) [0] https://www.optaplanner.org/ OptaPlanner is an AI constraint solver. It optimizes planning and scheduling problems, such as the Vehicle Routing Problem, Employee Rostering, Maintenance Scheduling, Task Assignment, School Timetabling, Cloud Optimization, Conference Scheduling, Job Shop Scheduling, Bin Packing and many more. Every organization faces such challenges: assign a limited set of constrained resources (employees, assets, time and/or money) to provide products or services. OptaPlanner delivers more efficient plans, which reduce costs and improve service quality. OptaPlanner is a lightweight, embeddable planning engine. It enables everyday Java™ programmers to solve optimization problems efficiently. It is also compatible with other JVM languages (such as Kotlin and Scala). Constraints apply on plain domain objects and can call existing code. There’s no need to input constraints as mathematical equations. Under the hood, OptaPlanner combines sophisticated AI optimization algorithms (such as Tabu Search, Simulated Annealing, Late Acceptance and other metaheuristics) with very efficient score calculation and other state-of-the-art constraint solving techniques. [1] https://choco-solver.org/ |
There are a few important differences between what we're building and those tools:
A large focus of our tools is on integration with software stacks and data warehouses. They are opinionated about how decision models should read and write data, how they should be deployed and interacted with, and they make those patterns clear and consistent. We refer to this as the "decision engineering" part of the field, which is not often addressed by existing tools.
Decision Diagrams (and thus, Hop) rely on many of the same techniques as MIP or CP (search, inference, and relaxation), but they represent problems in different ways and have their own interesting characteristics. For instance, diagram restriction and reduction are both powerful techniques specific to DDs.
In our systems, we represent models as states and transitions. I believe this makes models easier to unit test and reason about. It also has the interesting side effect of making optimization and simulation look a lot closer to each other than they traditionally have, which is something we'll be exploring more in the coming months.
Take a look at the DD book if you're looking for a thorough treatment: https://www.springer.com/gp/book/9783319428475. It's really interesting stuff! We'll also be updating our blog fairly regularly now that we're launched.