● Combinatorial optimization
Hard planning problems,
cleared to go.
optimaru is an optimization engine for the problems operations teams actually face: routes, rosters, timetables and production plans with messy, real-world constraints — answered in seconds.
24 classes · 40 teachers · 25 rooms
- Hard constraints
- 0 violated
- First feasible
- 11 ms
- Moves evaluated
- 12.3 M / s
01 — Engine
One engine. Constraints as data.
The core is a dependency-free C++17 metaheuristic engine with Python bindings. Each problem is a small domain model on top of it; each business rule or preference is a constraint plugin you add, remove, weight and tune — no solver code changes.
- Fast where it matters
- Incremental scoring re-evaluates only what a move touches, so the search explores millions of candidate changes per second on a single core.
- Honest about quality
- Every use case ships with an exact CP-SAT reference model. Results are re-scored independently and compared on public instances such as CVRPLIB, Li & Lim and Patterson.
- Built to be embedded
- Header-only C++, a pip-installable Python package, no JVM and no license server. Cold start is instant; the binary is small.
- Constraints as plugins
- Every hard rule and preference is a plugin with a name, a weight and a hard/soft level. Add or remove them per project; the solver core never changes, and the same rule means the same thing in the engine, the reference model and the UI.
import es_scheduling as es
from es_scheduling import (
RequiredSkill, MinimumRest, MaxConsecutiveDays,
MaxWeeklyMinutes, UndesiredDay, BalanceShiftAssignments,
)
constraints = [
RequiredSkill(),
MinimumRest(),
MaxConsecutiveDays(value=5), # hard
MaxConsecutiveDays(value=4, hard=False), # soft nudge
MaxWeeklyMinutes(minutes=52 * 60),
UndesiredDay(weight=2.0),
BalanceShiftAssignments(),
]
solver.solve(schedule, es.DecomposedCalculator(constraints)) 02 — Solutions
22 use cases, four families.
Each one is a working model with its own constraints, tests and benchmarks — a starting point we adapt to your rules, not a slide.
- 01 Routing & Logistics Vehicle routing (VRP) · Pickup & delivery (PDPTW) · Order picking · Facility location 4 use cases →
- 02 Scheduling Employee & nurse rostering · Flight crew scheduling · Maintenance scheduling · Project scheduling (RCPSP) · Semiconductor fab scheduling · Production line sequencing · Task assignment · Meeting scheduling 8 use cases →
- 03 Timetabling School timetabling · Conference scheduling · Sports league scheduling · Tournament scheduling 4 use cases →
- 04 Allocation & Packing Hospital bed allocation · Bin packing · Knapsack & selection · Assembly line balancing · Quadratic assignment · Max-cut & partitioning 6 use cases →
03 — Products
Built on the same engine.
Early access
optimaru Timetabling
School timetables in minutes instead of weeks. Import your teaching assignments from a spreadsheet, set the rules, generate, then inspect and fine-tune — on the web and on mobile.
Learn more →Open source · Apache 2.0
optimaru Engine
The solver itself, with Python packages for every use case. Use it directly, embed it in your product, or have us build the model with you.
Learn more →04 — Why we exist
Combinatorial optimization runs quietly behind deliveries, hospital rosters and school timetables — yet most teams still choose between expensive black-box solvers and research code that breaks on the first real constraint. We started optimaru to build an open-source engine that is easy to use and holds up in the real world.
— Seunghyun Kang, Founder · About us →
Have a routing or scheduling problem?
Send us the rules you work with today. We will tell you honestly whether optimization helps, and how much.