Google OR-Tools
Google's open-source combinatorial optimisation suite. In plain terms: Planopti's calculation engine is a public, proven and verifiable component, not a black box.
Overview
Google OR-Tools is a combinatorial optimisation software suite developed and maintained by Google. It provides solvers for large-scale scheduling, routing, assignment, and planning problems.
OR-Tools is not a Google Cloud commercial product. It is an open-source project published under the Apache 2.0 licence, developed by the Google Research team. The full source code is available on GitHub.
The suite includes several specialised solvers. Planopti specifically uses CP-SAT, the constraint programming solver with Boolean satisfiability.
Apache 2.0 Licence
OR-Tools is distributed under the Apache 2.0 licence, a permissive open-source licence that allows:
- Commercial use without licence fees or royalties
- Modification and integration into proprietary products
- Redistribution in binary or source form
- Private use with no obligation to publish
The Apache 2.0 licence does not require disclosure of proprietary code that uses the library. Planopti's code (software, operational constraint modelling, interfaces) remains the exclusive property of Planopti. Only the OR-Tools component is open-source.
For the client, this means the optimisation engine integrated in Planopti is publicly auditable. Any developer or auditor can inspect the CP-SAT source code on Google's official repository.
Application domains
OR-Tools covers several families of optimisation problems:
- Constraint programming (CP-SAT): scheduling, assignment, planning under constraints. This is the solver used by Planopti
- Linear and integer programming (GLOP, PDLP): optimisation of linear functions with continuous or integer variables
- Vehicle routing: vehicle tours, travelling salesman problem, deliveries
- Bin packing: optimal arrangement of items in containers
- Network flows: optimisation over graphs (transportation, allocation)
Google uses OR-Tools internally for its own optimisation problems: datacentre scheduling, logistics planning, and resource allocation.
OR-Tools in Planopti
Planopti uses exclusively the CP-SAT solver from OR-Tools to generate monthly schedules. Here is how the components fit together:
- CP-SAT receives the mathematical model (variables, constraints, objective) and computes the optimal solution
- Planopti translates your operational data (staff, qualifications, shifts, needs, absences) into a CP-SAT model, then interprets the result as a readable schedule
Concretely, Planopti is responsible for:
- Modelling operational constraints (qualifications, regulatory rest, shift coverage, intra-group fairness)
- The management interface (staff, shifts, needs, and constraints entry)
- Translating data into mathematical variables and constraints
- Interpreting the CP-SAT result as a scheduling grid
- Export to Excel and PDF
CP-SAT knows nothing about your business. It is a generic solver. All operational expertise is in the Planopti code.
Languages and platforms
OR-Tools is available in 4 languages:
- Python: the most widely used language with OR-Tools. Install with one command:
pip install ortools. Planopti uses Python - C++: the solver's native language, maximum performance
- Java: via Maven
- C# (.NET): via NuGet
Supported platforms:
- Linux (Ubuntu, Debian, Fedora, Alpine, 64-bit)
- macOS (Intel and Apple Silicon)
- Windows (64-bit)
Planopti is employee scheduling software, on-premise or hosted, your choice. The CP-SAT solver (Google OR-Tools) is embedded in the application: in local mode, it runs without an internet connection.
Maturity and community
Key figures for the OR-Tools project:
- 13,200+ stars on GitHub
- 150+ contributors
- 15,800+ commits
- 52 releases (current version: v9.15, January 2026)
- CP-SAT is among the most decorated solvers at the MiniZinc Challenge, the reference international competition in constraint programming, with gold medals in several categories in most years since 2013
OR-Tools is an actively maintained project by Google with regular releases. The community includes researchers, industry developers, and academics.
Why this engine rather than in-house development
Writing a performant constraint solver takes years of research. The techniques that make the difference, propagation, clause learning, parallel search, restarts, represent decades of engineering effort and are the subject of continuous scientific publication.
Building an in-house engine would mean reinventing, less well, what a full-time research team maintains. Our value is not there. It is in translating your operation into a correct mathematical model: understanding that one collective agreement rule is a prohibition and another an objective, knowing what weight to give fairness against coverage, and checking that the result matches what your operation expects.
That modelling work is what separates a theoretically optimal roster from a roster your team accepts.
What OR-Tools does not do
OR-Tools is an engine, not an application. It knows nothing about your agents, your qualifications or your collective agreement. It does not know what an eleven-hour rest, a guaranteed weekend or a student contract is.
It also offers no interface, no file import, no absence management and no payroll export. Delivered on its own, it is of no use to a planner.
Everything that makes the tool usable day to day, translating your rules, entering requirements, reviewing the roster, re-checking manual adjustments, exporting, is the work we do and deliver to you. OR-Tools is the engine, not the product.
Long-term viability
The question is legitimate: what happens if Google stops maintaining OR-Tools?
The Apache 2.0 licence answers part of it. The source code is public, freely usable and modifiable, with no royalty and no renewal condition. A published version remains usable indefinitely, even if the project stopped. No licence to renew, no vendor server to query in order to run a calculation.
Beyond that, your application belongs to you and runs on your premises. It depends on no online service to compute a roster. If our relationship ends, your tool keeps working exactly as it did on the last day.
Official documentation
Resources to go further: