Skip to main content

How optimization works

When you click Optimize, Bodha Route Planner sends your stops, depot, driver details, and constraints to its optimization engine. The engine solves a Vehicle Routing Problem (VRP) to find the fastest sequence that respects all your constraints — drive time, time windows, shift hours, capacity, and more. The result is an optimized stop order for each driver, with estimated arrival times (ETAs) at every stop and a total route distance and duration.

Step-by-step: Optimizing a route

  1. Add stops to your route (paste, import, or manually).
  2. Assign drivers — select one or more drivers for the route.
  3. Review settings — check your optimization preferences (see below).
  4. Click Optimize.
  5. Review the result — stops are reordered on the map and in the list. ETAs appear next to each stop.
  6. If satisfied, click Dispatch to send the route to drivers.
You can re-optimize at any time — even after dispatching. Add or remove stops, then click Optimize again. Bodha Route Planner recalculates the best sequence with the updated stop list.

Optimization settings

Go to Settings → Route Planning to configure your defaults. These settings apply to every new route unless overridden per route. Settings are organized into sections:

How each route is built

These settings control how the optimizer plans individual routes — what it prioritizes, how stops are ordered, and what roads to use.

Optimize by

Choose what the optimizer prioritizes when calculating routes:
Fastest time is the default and works best for most teams. It usually produces routes that finish earlier in the day, even if the total distance is slightly longer. Switch to Shortest distance only if you have a specific reason to minimize mileage.

Arrange deliveries & pickups

If your stops include both deliveries and pickups, this setting controls the order:

Default service time

The number of minutes a driver spends at each stop — parking, walking to the door, handing over packages, collecting signatures, taking photos, etc.
  • Set a default for all stops (for example, 5 minutes)
  • You can override per individual stop when adding or editing it
  • Accurate service times lead to more realistic ETAs and better route plans
Start with your average service time and adjust based on experience. If drivers consistently finish routes later than estimated, increase the service time. If they finish early, decrease it. Even a 1-minute difference per stop adds up significantly over 50+ stops.

Working days

Choose which days of the week your operation runs. By default, Monday through Friday are selected.
  • Click any day to toggle it on or off
  • This affects Multi-Day Planning — the planner only schedules stops on working days
  • If your operation runs 7 days a week, enable all days
  • If you’re closed on specific days (e.g. Sunday), keep those toggled off
Working days are a tenant-wide default. Individual routes can still be created on any day — this setting mainly affects how the multi-day planner distributes work across the week.

Avoid road types (advanced routing)

Tell the optimizer to avoid certain road types when calculating routes. You can enable multiple options at the same time.
Enabling road avoidances can significantly increase route times and distances — especially “Avoid highways” in areas where the highway is the only practical connection between locations. Test with a sample route before applying to your full fleet.

Curbside routing

Controls which side of the street the driver approaches each stop from. This prevents drivers from having to cross traffic to reach a delivery address.
Curbside routing is available on the Pro plan.

How work is split across drivers

When a route has multiple drivers, the optimizer needs to decide how to distribute stops among them. This is one of the most impactful settings for fleet operations.

Workload preference

Balance workload & efficiency works well for 90% of operations. Switch to another strategy only when you have a specific reason — and remember, you can change this per route without affecting your global default.

Vehicle capacity (Pro plan)

Set limits on what each vehicle can carry. The optimizer ensures no vehicle is overloaded during planning.

Capacity mode

Capacity dimensions

You can set limits on up to three dimensions at the same time: How it works:
  1. Set a fleet default — Under vehicle capacity, enter the default capacity for your fleet (e.g. 100 parcels). This applies to all drivers unless overridden.
  2. Override per driver — If some vehicles have different capacities, set individual limits on each driver’s profile.
  3. Set demand per stop — Each stop can specify its demand (weight, volume, parcel count) during import or on the stop detail page.
  4. The optimizer adds up the demand of all stops assigned to a vehicle and ensures it stays within limits.
90% fill factor: The optimizer uses a 90% fill factor internally. A vehicle with a max capacity of 100 parcels will effectively hold 90 parcels. This accounts for real-world loading inefficiencies (odd-shaped packages, wasted space, etc.). If stops are being left unassigned unexpectedly, check that your capacity isn’t set too tight.
Start with Show load mode to see how your vehicles are being utilized. Once you’re confident in your capacity numbers, switch to Fit to capacity for automatic enforcement.

Overnight haul planning (Pro plan)

For multi-day trips where a driver stays out on the road — long-haul trucking, multi-day service routes, regional delivery circuits. See the dedicated Multi-Day & Haul Planning article for full details. In Settings → Route Planning, you can enable haul planning globally and configure:

Shift hours (driver working hours)

Set the start and end time for your drivers’ working day:
  • Shift start — When drivers begin (e.g. 8:00 AM)
  • Shift end — When drivers must finish (e.g. 5:00 PM)
The optimizer will not schedule stops outside shift hours. If all stops can’t fit within the shift, some stops will be marked as unassigned. You can set default shift hours at the depot level, then override per individual driver in their profile.

Return to depot

Driver breaks

Schedule a mandatory break during each driver’s day. Breaks are configured with a tri-state system: The optimizer fits the break into the route at the best time within the break window, without violating time windows or causing late arrivals at subsequent stops.
Driver breaks are available on all plans. You can set breaks at the depot level, per driver, or per route.

Time windows (Pro plan)

Time windows specify when a customer expects their delivery:
  • Set per stop: Earliest arrival and Latest arrival (e.g. 9:00 AM – 12:00 PM)
  • The optimizer ensures the driver arrives within the window
  • If a time window can’t be met, the stop may be marked as unassigned with the reason “Time window conflict”

Tips for time windows

  • Use wide windows (4-hour ranges or more) for better optimization. Narrow windows severely constrain the optimizer and may cause more stops to be unassigned.
  • Only set windows on stops that need them. Leave them blank for flexible deliveries. Fewer constrained stops = better optimization results.
  • Format carefully: Use the format “09:00” (with leading zero), not “9:00”. The optimizer may drop incorrectly formatted time windows.

Understanding optimization results

After optimization completes, review the results:

Route map

  • Each driver’s route is shown in a different color
  • Stops are numbered in their optimized sequence
  • The depot is marked as the start (and end, if return-to-depot is enabled)

Stats bar

Unassigned stops

If some stops couldn’t be assigned, they appear in the Unassigned list with a reason code. Here’s what each reason means and how to fix it:
If many stops are unassigned, the most common fixes are: add another driver, extend shift hours, or widen time windows. Start with whichever constraint is most restrictive.

Re-optimization

You can re-optimize a route at any time:
  • Before dispatch — Add, remove, or edit stops, then click Optimize again.
  • After dispatch — Add a late-breaking stop, click Optimize, and re-dispatch. Drivers receive the updated route on their app.
Re-optimization recalculates the entire route from scratch with the current stop list. It does not preserve the previous sequence — every stop is repositioned for the best result.

Optimization FAQ

Typically 5–30 seconds depending on the number of stops and drivers. Large routes (200+ stops, 10+ drivers) may take up to a minute. The progress indicator shows when the engine is working.
Yes. After optimization, you can drag stops to reorder them manually. This overrides the optimized sequence for those stops. If you re-optimize, manual changes are recalculated.
The optimization engine uses historical and typical drive time data for road segments, not live traffic. This means routes are planned based on average conditions for the time of day. During active routes, live GPS data from drivers improves ETA accuracy for remaining stops.
Stops are left unassigned when they can’t fit within the given constraints — time windows, shift hours, capacity, or road network limitations. See the unassigned reasons table above for specific causes and fixes.
You can set a stop as the first or last stop in the sequence. For full control over stop order, use manual reordering after optimization or the “keep order” option.
Fastest time may route a driver onto a highway even if it’s a longer distance, because it’s faster. Shortest distance may route a driver through city streets because the path is shorter, even if it takes longer due to traffic lights and slower speeds. For most delivery operations, time optimization produces better results because it gets drivers done sooner.
Each stop specifies its demand (weight, volume, parcels). The optimizer adds up demand as it assigns stops to a vehicle. When a stop would push any dimension past the vehicle’s limit (accounting for the 90% fill factor), that stop is left unassigned. The optimizer tries different combinations to fit as many stops as possible.
Yes. While optimization settings are set globally in Settings → Route Planning, several settings can be overridden per driver: shift hours, break schedule, vehicle capacity, and vehicle type. Per-driver overrides take effect whenever that driver is included in a route.