Skip to content

●  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.

school-timetabling · instance L

24 classes · 40 teachers · 25 rooms

Hard constraints
0 violated
First feasible
11 ms
Moves evaluated
12.3 M / s
Single thread. Internal benchmark, re-scored independently.

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))
Employee rostering: the cost function is just a list.

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.

Talk to us