Constraint Programming
Constraint programming Links
- Kiwi - Efficient C++ implementation of the Cassowary constraint solving algorithm.
OptaPlanner - Constraint solver for optimizing planning and scheduling problems. (HN)
Modern mathematical optimization
OptaPlanner is a lightweight, embeddable planning engine. It enables everyday programmers to solve optimization problems efficiently. Constraints apply on plain domain objects and can call existing code. It is Object Oriented Programming (OOP) and Functional Programming (FP) friendly. There’s no need to input constraints as mathematical equations. OptaPlanner supports
Continuous planning to weekly publish the schedule, 3 weeks before execution Non-disruptive replanning for changes to an already published schedule Real-time planning to react on real-time disruptions in the plan within milliseconds Overconstrained planning when there are too few resources to cover all the work Pinning so the user is still in control over the schedule
Under the hood, OptaPlanner combines sophisticated Artificial Intelligence optimization algorithms (such as Tabu Search, Simulated Annealing, Late Acceptance and other metaheuristics) with efficient score calculation and other state-of-the-art constraint solving techniques for NP-complete or NP-hard problems.
What can OptaPlanner do?
OptaPlanner optimizes plans and schedules with hard constraints and soft constraints. It reduces costs substantially, improves service quality, fulfills employee wishes and lowers carbon emissions.
CPMpy - Constraint Programming and Modeling library in Python, based on numpy, with direct solver access. (Talk)
CPMpy: Constraint Programming and Modeling in Python¶
CPMpy is a Constraint Programming and Modeling library in Python, based on numpy, with direct solver access.
Constraint Programming is a methodology for solving combinatorial optimisation problems like assignment problems or covering, packing and scheduling problems. Problems that require searching over discrete decision variables.
CPMpy allows to model search problems in a high-level manner, by defining decision variables and constraints and an objective over them (similar to MiniZinc and Essence’). You can freely use numpy functions and indexing while doing so. This model is then automatically translated to state-of-the-art solver like or-tools, which then compute the optimal answer.