Optimization
How services are chained into rotations.
Maintenance
When a bus has to be in a shop, and for how long.
Shop hours
A layover counts as a shop visit only where the bus sits parked inside this window.
Shop cities
From the city catalogue in Network. A rotation has to reach one of these for its minor service.
Scope
Which services enter the plan, and what the optimizer may do with them. active always counts.
Services marked as new
Not confirmed yet
To see what reactivating them would cost
Move a bus empty to reposition it. Mileage comes from Network.
Drivers
The rules a driver's week has to respect.
Hours
How long somebody may work before the law, or the company, says stop.
Who counts as available
Which driver statuses the plan compares its duties against.
Only active is a real plan. Ticking the others answers a different question — whether the week would close if those people came back.
Relief
Whether a bus may change driver part-way through its rotation.
Somebody else finishes what this bus started
Nights away
Whether a duty may end somewhere other than where it started.
The timetable already has overnight services, so turning this off narrows what can be covered
The run
How long the optimizer thinks about the general plan, and the ceiling its crew works to.
Retiming
The optimizer may suggest moving a departure when that saves a bus. It proposes only — nothing reaches Turnit.
The same shift on every day of that service
In steps of 5 minutes. It shifts as little as it can.
The run
Its own, because a fortnight is a much larger problem than a week and it decides for itself whether schedules may move.
Off by default here: two weeks out, moving a departure is an operating decision rather than a structural proposal
In steps of 5 minutes. It shifts as little as it can.
The period
Monday to Sunday, twice. These are the starting point for everybody; Rules per driver is where one person differs.
Priority when drivers are short
The order the work gets covered in when the roster does not reach. Without it the clock decides: whoever is left over is whoever opened last. It moves people, it never makes them — as many lines go uncovered either way, and what changes is which. Only the fortnight reads it: in the general plan the clock always decides.
Empty means no preference. A shift that is not on the list is covered after every one that is.
Rules per driver
In grey, the value everybody gets. In black, what you set for that person. SGI's status still decides who is in the plan at all. Only the fortnight reads these rules; the general plan ignores them.
A city that can be a base may hold buses, and appears in the base dropdown in Buses. Its region is the crew that the duties starting there count against in Drivers. Nothing else here affects the optimizer. A city New from Turnit was created by the timetable sync: Confirm keeps it as a city of its own, and Same as… moves its services, buses and distances to a city already here.
Optimizer priorities
What the optimizer may spend to avoid one more bus. Asked as ratios because the underlying weights only mean anything against each other.
Leaving one of our own services uncovered is never traded away, so it is not listed. Saving checks the order still holds: a value that would make the optimizer add fifty buses to save a mile is refused rather than quietly producing a nonsense plan.
These priorities are yours, like the rest of your settings: your Optimize uses them, and changing them does not change anyone else's.
The optimizer (Google OR-Tools, CP-SAT) finds the cheapest fleet plan that covers every trip in the weekly schedule. It does not change times or invent trips: it decides which bus runs which trip.
Objectives, in priority order (highest first):
- Cover every own trip. Leaving an own trip without a bus (a structural gap) is penalized far more than anything else — this is the top priority. If fewer buses arrive at a city than depart from it (imbalance), a trip cannot be chained and becomes a gap or stays farmout (outsourced).
- Insource farmout trips — only in insource mode: bring outsourced trips into the own fleet when feasible.
- Fewest physical buses. It chains trips into rotations: the same bus runs one trip after another if it arrives at the city where the next one departs with at least the configured turnaround (set in Settings). Since the schedule repeats weekly, rotations are cyclic: an N-week rotation is operated by N buses one week apart.
- Fewest farmout trips — in keep/flexible mode.
- Smallest schedule shifts (retiming), when enabled in Settings.
- Fewest deadhead miles, when deadheads are enabled.
- Most maintenance slack. Among otherwise-equivalent plans, it prefers rotations that accumulate fewer miles away from the shop.
Hard constraints (always enforced):
- Service category: 7xxx First, 8xxx Economy, 9xxx Business vehicles (the per-route Vehicle column can override this for vehicle substitutions, and impossible assignments are flagged).
- A bus is never on two trips at once and never teleports: it only chains in the same city.
- Every rotation visits a shop city (parked overlapping the shop hours ≥ the minor-service hours) before accumulating 17,500 mi (minor service). The 35,000-mi major service is projected and covered with spares.
- No empty repositioning (deadheads) unless enabled in Settings; when allowed, deadheads are shown with ⇢.
Output: how many buses you need per category, each named bus's day-by-day rotation, when each bus is due for the shop, and which trips cannot run with your own fleet.
Every Optimize leaves a row here, and they are the whole team’s. Open one to see its plan and give it a name.