There’s a satisfying, exact answer to “how few buses cover the schedule?” But a transit agency doesn’t pay buses — it pays drivers, and the crew problem that sits on top of the fleet is where most of the cost, and most of the difficulty, actually lives.
Crew scheduling and rostering is harder than vehicle scheduling for a simple reason: buses obey physics, but drivers obey labor law, union agreements, and human limits. A plan that saves a vehicle is worthless if the only way to run it is an illegal shift.
Run-cutting: from vehicle blocks to legal duties
Once you’ve chained trips into vehicle blocks — one bus’s day — you still have to cut those blocks into driver duties. That’s run-cutting, and it’s constrained at every step: a maximum continuous driving time before a break, a minimum break length, a maximum total drive, a maximum spread from sign-on to sign-off. A driver can only change buses at a relief point, at a specific place and time.
Find the set of legal duties that covers every piece of work for the fewest paid hours and you’ve solved a set-partitioning problem — the same NP-hard structure that shows up in airline and railway crew scheduling. It does not have the clean exact shortcut the minimum-fleet problem enjoys.
Rostering: fair, legal, and balanced across the week
Duties are a single day. A roster assigns them across a week to actual drivers under a second layer of rules: minimum rest between consecutive shifts, weekly hour caps, required days off, nobody double-booked. And “legal” isn’t enough — a roster that dumps every early start on the same person is legal and terrible. Fairness and balance are part of the objective, not an afterthought.
A smaller fleet that needs illegal shifts to run isn’t a saving — it’s a compliance problem with a spreadsheet in front of it. The crew plan is where an optimization becomes operable.
The honest engineering line
Here’s the truth good vendors say out loud: the minimum fleet is solvable exactly, but optimal run-cutting and rostering are set-partitioning problems that, at real scale, run on strong heuristics and specialized solvers — column generation and the like — not a guaranteed optimum. The skill is knowing which half is which, and being honest about it on screen rather than dressing a heuristic up as proof.
You can watch the whole chain on the transit demo on this site: it finds the minimum fleet exactly, then cuts driver duties under the legality rules, then builds a weekly roster — with deadhead, overtime, and any illegal-duty warnings shown honestly.
Why this is home turf
This is the world Renan worked in directly. At Optibus, a public-transit scheduling SaaS, he led a five-developer team owning the reporting and exports that operators across North America, Latin America, and Western Europe rely on to run service — cutting new bugs 50% and doubling team velocity. Crew scheduling is not an abstraction here; it’s the exact shape of systems he has shipped.
If your operation’s cost is people on vehicles, the fleet is where you start and the crew is where you finish — and finishing well is the part that pays.
