Case study · Vehicle routing
A textile-services provider sends a fleet of trucks out from a single plant every weekday: clean laundry out, dirty laundry back, several hundred stops in between. Which truck takes which customer, in what order, has to satisfy five rules at once: how much each truck holds, how long a driver may work, when each customer can be served, and, unusually, which roads a truck pulling an 18-metre trailer can physically use at all. For years, that schedule was built by hand.
With OR-Tools (open source), the manual plan already improves by three tours. Quicopt saves four more:
Manual plan
OR-Tools
Quicopt
Fleet size
One truck fewer on the peak day
How many trucks you have to own is set by the busiest single day, not by the weekly average. On that day the manual plan and OR-Tools each need 13 trucks. Quicopt’s plan fits into 12.
One Wednesday from this week: both plans serve the same 94 locations and 105 deliveries from a single plant. Dashed lines are trailer routes, everything else runs solo trucks. Straight lines between stops, not road geometry.
Quicopt drives 27.1 hours less than the manual plan (−14.6%) and 7.7 hours less than OR-Tools (−4.6%).
| Manual plan | OR-Tools | Quicopt | |
|---|---|---|---|
| Depot departures (incl. reloads) | 76 | 67 | 64 |
−12 depot departures (−16%) versus the manual plan, fewest of all three plans, on every single day.
Capacity
Each truck holds a fixed number of roll-containers. Load must never exceed it at any point of the route, not just at the start.
Driver duty day
Maximum 9h30 per driver-day, including a mandatory 45-minute break once driving reaches 4.5 hours.
Delivery windows
Some customers may only be served inside a fixed time window.
Trailer accessibility
A truck-plus-trailer holds roughly double, but is 18 metres long instead of 10 and physically cannot reach every customer: narrow access, tight yards, alpine approaches.
Multi-trip / reload
A truck can return to the plant mid-day, refill, and drive a second loop. Capacity resets at every depot visit.
Only as good as the model behind it
The model has to match the operation, not the other way round. A result is only useful if every constraint is actually represented and every solution stays feasible in practice. Miss a rule in the model, or return a solution that cannot actually run, and the result is worthless, however good the drive time looks on paper. That is why every constraint has to be feasible and realistic before the solver even starts.
Faster, and provably at the ceiling
for the whole week (20s per weekday), against ≈150s for OR-Tools.
Compute budget checked
That much more compute we checked against (6 seeds × 120s instead of 3 seeds × 20s), on all five days. Result: 0.00% optimality gap. More compute buys nothing here. The per-day routing is at its practical ceiling, which is a strong empirical result, not a mathematical proof of optimality.