Draft

Deploying new logistics models in a city environment

Urbike — eval I: a series of experiments on one customer flow
Contents

With the boom of e-commerce and increasing pressure from cities to limit van growth in urban centres, there has been an important focus on integrating Light Electric Vehicles and cargo bikes in urban operations, both for performance benefits and sustainability goals. Over the past couple of years we've worked in collaboration with Urbike, an urban logistics cooperative pioneering the use of cargo bikes for light freight in Brussels1,2. This work was done alongside Larry vs Harry, cargo bike manufacturer, and Applied Routing, a leading routing solver. In this post we discuss a series of innovative experiments on one of their customer flows. We show how operations, hardware (vehicles and equipment), algorithms and data, and urban infrastructure depend on one another. This highlights both the challenges of deploying innovation in the physical realm, the existing opportunities and impact potential.

A rider on an eBullitt with a Fleximodal BicyLift trailer in Brussels. Film: Larry vs Harry with Urbike.

We focus on a single day of that flow as our experiment environment, 70 deliveries to households across Brussels. We plan and measure every scenario in this post on that same day.

Figure 1
Figure 1 The 70 deliveries of the day, and the depot the vans worked them from.

Baseline: delivering vegetable boxes by van

One of Urbike's customers delivers organic vegetable boxes and recipe kits across Belgium, and until recently it delivered them exclusively by van. The difficulty and cost of delivering by van in the centre of Brussels made the customer reconsider that approach; what follows reports the transition of its Brussels operation towards cargo-bike logistics. We chose this flow deliberately, as the hardest one we could find: barely profitable, isolated from Urbike's other work, the number of boxes per address unknown until the day, and 2 delivery windows a day — 15:00–18:00 and 18:00–21:00.

A van delivering at the Urbike hub in Brussels. Photograph: Henrik Kaarsholm, Larry vs Harry.

A day of van deliveries

Below we show a day of operations in the centre as it used to be done. We didn't have access to the van GPS data for this customer, so the van's speed and service time are transferred from a parcel operator running vans across the same city from a previous study3.

15:0016:0017:0018:0019:0020:00VANv1v2v3v4--:--

The figure shows the van day as planned on the real road network: 21 hours 15 minutes of vehicle time across four vans. Filled blocks in the schedule are service time; the thin line between them is time on the road. Delivery locations are anonymised.

Breakdown of a day of operations

Rounds are prepared at the Urbike hub, and the addresses for the day are worked through on the dispatcher's screen. Film: Larry vs Harry with Urbike.

A day of operations can be broken down into different activities, each with a distinct time cost: travel between stops, service time2 at each address — finding parking, walking to the door, and the handover — and the trip out from the depot to the first delivery. In the centre, these costs compound: vans encounter congestion and legs of the same length take longer (9.0 km/h in the core against 12.7 in the inner ring on the parcel operator's Brussels fleet), parking takes longer to find, and the walk from the van to the door is longer.

1.4 minmedian van stop
10.2 minslowest tenth of stops
5.3%core stops past 10 minutes
1.7%fringe stops past 10 minutes

The slowest 10% of stops take 39% of all service time across a full day of deliveries.

fastest half19% of the time · 1.0 min eachnext 40%42% of the time · 2.8 min eachslowest 10%39% of the time · 10.2 min each

Figure 2

To locate where the slow stops fall, we map below the distribution of service times at different quantiles.

Show each area’s

048121620+minutes at the stop
quickerminutes at the stopslower slower than this across the fleet

Figure 3 Service time per stop — median 1:26, mean 2:37, longest 56 minutes — and by area of Brussels. Service times are timed as elapsed time between stops minus modelled travel.

The effect of outlier stops on a round of deliveries

So far, we have looked at service times as individual events. On a delivery round, a driver performs multiple stops, and operational delays accumulate across the sequence. We simulated 14 rounds of 18 stops across two parts of the city — the centre and the fringe — to measure how delivery rounds vary by urban environment. Each stop duration is drawn with replacement from the service times measured in that zone.

In the core

36 min37 min39 min42 min44 min46 min55 min59 min60 min62 min71 min78 min99 min125 min

In the fringe

25 min27 min27 min28 min28 min34 min36 min39 min41 min41 min45 min46 min46 min55 min

In the core, round durations range from 36 to 125 minutes, a factor of 3.5; in the fringe, from 25 to 55 minutes, a factor of 2.2. The figure above shows the range of outcomes; the table below reports how often these delays occur.

per round of 18 deliveries corefringe
service time against a fringe round +61%—
rounds overrunning by 15 min or more 19%8%
rounds finishing 30 min or more behind 8%1%

A solver's plan meets every delivery window, because the windows are hard constraints. The plan is built on estimated speeds and service times, usually speed limits or averages, so vehicles rarely run to it. With the measured variability put back into the day, for a driver the day ends 37 minutes later than planned at the median, and 104 minutes later on the worst tenth of days. This is a serious cause of stress on drivers, and it is relayed onto the operations team.

Travel time and service time are both higher in the centre: the van travels more slowly between doors there, and the slow stops that push deliveries past their window are concentrated there.


First iteration — vehicle improvement: cargo bikes with trailers

The producer launched a partnership with Urbike to tackle the issue of delivering in Brussels city centre. The first intervention was to substitute the vans with cargo bikes.

Standard two-wheeler cargo bikes, the vehicle Urbike uses, have limited capacity. The boxes shipped are fairly voluminous, and the limited capacity of the vehicle restricts the number of stops they are able to do per round. To overcome this, the operation was done with trailers attached to the bikes.

While trailers increase the load capacity of a bike, they penalise road handling and speed. Loaded trailers are heavy, and Brussels has steep hills.

The vegetable boxes on the road — a trailered round carries about 15 deliveries, roughly 240 kg. Film: Larry vs Harry with Urbike, Brussels.

We measured the performance of cargo bikes with and without a trailer in our 2024 study with Urbike2, over 6,276 stops with Urbike riders. The trailer setup is slightly slower on both counts: 13.4 km/h against 15 km/h, and 3.6 minutes at a stop against 3.3. Here a trailered bike is modelled as carrying about 15 deliveries, roughly 240 kg, rolling at 13.4 km/h. Its service time comes from a second and larger sample of 9,505 stops on Urbike riders, resolved by zone: 240 seconds in the centre, 223 outside. Loading at the hub takes 12 minutes. Informed by Urbike's historical data, we assume trailers on every round. Urbike caps a round at 12 deliveries to limit what a rider hauls up Brussels hills in a shift, and every plan in this report keeps to that ceiling.

Trailered cargo bikes against the van, both from the same hub

We compare vans and trailered cargo bikes departing from the same hub, Urbike's main hub at Vétérinaires (the VT hub hereafter), so that the vehicle is the only thing that differs between them. Both are planned by a vanilla open-source solver (ALNS algorithm)4, each at its own measured speed and service time, on the same day.

The two vehicles, vans and cargo bikes, respond differently to the centre area. The trailered bike's speed and service time barely move with the zone, a 7% spread between the centre and outside it. The van runs 30% slower in the dense centre than outside it at the same leg length. It also takes longer than the trailered bike at every stop, where it has to find a space, park and walk to the door. Over this day's mix of zones that difference is 84 seconds a stop. Inside the dense centre it is 96 seconds, against 57 to 111 seconds in the zones outside it.

The day from the VT hub — 70 deliveries VansCargo bikes + trailersBikes vs vans
Vehicles the day needs 4 vans5 bikes 1 more bike
Vehicle-hours 21.2318.23 −14%
— on the road 14.2811.71 −18%
— service timeparking, walking and the door 6.154.52 −27%
— loading4 depot loads · 10 hub loads 0.802.00 +150%
Vehicle time per delivery 18.2 min15.6 min −14%
Road distance 166.0 km156.9 km −5%
Day finishes 20:0219:56 5 min earlier

Figure 4 Vans and cargo bikes with trailers, both working the same 70 deliveries from the VT hub, planned by the ALNS solver.5 The bikes deliver the day in 14% less vehicle time, most of it saved between stops, and need five vehicles where the vans need four.

The bikes deliver the day in 18 hours 14 minutes of vehicle time against the vans' 21 hours 14 from the same hub — 14% less, on five bikes against four vans. The bikes beat the van considerably in the city centre: 4 hours 10 minutes less between stops and 1 hour 38 minutes less service time — parking, walking and the door. They lose part of that because a trailered bike cannot carry the whole day. It has to ride back to the hub and reload: 20 rides to and from the hub against the vans' 8, and 10 reloads against the vans' 4. Those rides and reloads take 2 hours 48 minutes more than the vans' depot legs and loads. Over the day the bikes ride 156.9 km against the vans' 166.

Decomposition of the difference: city legs, service time and hub legs

The figure below separates each fleet's total into three classes of time: legs between stops, service time, and hub legs with loading. Of that 2 hours 48 minutes, 1 hour 12 minutes is loading. A trailered bike holds about 15 deliveries, so the bikes load 10 times, 2 hours in all, where each van holds its whole day and the four load once each, 48 minutes. The remaining 1 hour 36 minutes is riding to and from the hub, 20 legs against the vans' 8.

The day from the VT hub: vehicle time by activity, vans and trailered cargo bikes
VétérinairesVehicle-hoursCargo bikes + trailers18h14Vans21h14
Between stopsvans 11h28 · bikes 7h18
Service timevans 6h09 · bikes 4h31
Hub legs and loadingvans 3h36 · bikes 6h24

Figure 5 The 70 deliveries from the VT hub, by van and by trailered cargo bike, every leg coloured by what the vehicle is doing on it. The bikes are quicker between stops and spend longer on hub legs because they make more of them, 20 against the vans' 8.

Missed delivery windows, by vehicle

The vehicle-hours above are sums of the mean travel and service times fed to the solver. Stops in the city do not run at the average. To find how often each of the 70 promised windows is met once the measured variability is present, we ran each solved sequence 5,000 times, drawing every stop's service time and every leg's travel time from the distributions measured for that vehicle.

Figure 6
Figure 6 When the last delivery is made, over 5,000 draws of the two plans above. The trailered fleet finishes at 19:58 at the median, 2 minutes after its plan, and never after 21:00; the vans finish at 20:47, 45 minutes after plan, and their finish spreads over two hours between the tenth and ninetieth percentile against twenty-five minutes for the trailers.
Figure 7
Figure 7 The share of the day's 70 deliveries arriving at least this long after their window closes. The van's curve is 6 times the trailer's at the window's close, 70 times at 20 minutes and 200 times at half an hour.

For a driver, the van day ends 45 minutes later than planned at the median, whereas the trailered day ends only 2 minutes later. The vans finish after 21:00, the close of the last delivery window, on 40% of simulated days; the trailered bikes on none. At the door, 16.4% of the van's deliveries arrive after their window closes, against 2.7% of the trailered bikes'. A late trailered bike arrives 5 minutes after its window at the median, whereas a late van arrives 31 minutes after. Of the van's deliveries, 8.3% arrive more than half an hour late, against one in every 2,300 of the trailered bikes'.

The two fleets need a similar amount of vehicle time for the day, the trailered bikes 14% less than the vans. The bikes lose most of their advantage on the empty rides back to the hub. The two fleets differ on reliability: the vans miss six times as many delivery windows as the trailered bikes. Neither figure counts the strain on the rider, and the riders found the loaded trailers heavy and tiring on Brussels' hills.

The day so far: 18 h 15 min of vehicle time, 14% below the van fleet048121620measured vehicle-hours to deliver the dayVans, from their own depotSection 121 h 19−3.1 h+ cargo bikes and trailersSection 218 h 15−14%Section 3Sections 4 & 5Section 6

Second iteration — infrastructure: micro-hubs closer to the deliveries

Urbike's second intervention was to open micro-hubs closer to the deliveries. A trailered bike is modelled as holding about 15 deliveries. The day is 70 households. The rider empties the trailer before the round is finished, rides back to the hub, reloads, and rides out again. The rider carries nothing on the way back. With one hub, riders delivering to the far edges of the city spent more of the day riding out and back than delivering.

What a rider loads from: parcels sorted onto pallets, and the bay door a round leaves by. Every round in these plans spends 12 minutes here. Film: Kale field footage, Brussels.
Figure 8
Figure 8 The 70 households of the day, and the three places a rider can load. The VT hub sits at the western edge of the deliveries; Linthout and Usquare are the two micro-hubs. Delivery locations are anonymised.

Trailered bikes from one hub against trailered bikes from three

A trailer triples what a two-wheeler cargo bike carries, and the previous section showed the trailered rounds losing time on rides back to the hub. We tested how much of that time micro-hubs closer to the deliveries recover. That plan is the starting point: the same day, the same trailered bikes, every rider loading at the VT hub. We simulated it with Linthout and Usquare open, reproducing how the dispatchers planned the micro-hubs by hand: each hub treated as independent of the others, a rider assigned to one of them, and deliveries on the way to another hub never considered. We measure what planning across the hubs is worth once a solver chooses the hub for each delivery, later in this report.

The day — 70 deliveries Micro-hubs opentrailered bikes, one hub each One hub, bikes with trailersOne hub vs three
Vehicles the day needs 5 bikes5 bikes the same count
Vehicle-hours 15.2318.23 +20%
— on the road 8.9111.71 +31%
— service timesame 70 addresses, same instrument 4.524.52 identical
— loading9 hub loads · 10 hub loads 1.802.00 +11%
Road distance 119.5 km156.9 km +31%

Figure 9 The day solved two ways by the ALNS solver: trailered bikes each assigned to one hub, and trailered bikes all working from the VT hub.5 From the three hubs the same deliveries take 15 hours 14 minutes of vehicle time against 18 hours 14 from the VT hub alone.

Five bikes deliver the same 70 households in 15 hours 14 minutes of vehicle time from Linthout, Usquare and the VT hub, against 18 hours 14 minutes from the VT hub alone, 20% more. From their own micro-hub the bikes ride 2 hours 48 minutes less, cover 37 km less to reach the same doors, and load 9 times against 10.

The whole 3-hour difference between the two plans comes from the hubs. The rounds also change shape. From one hub the day is five rounds of 3 hours 13 to 3 hours 37 of riding and service time, each a long spoke out and back. From three hubs it is five rounds from 1 hour 15 to 3 hours 29. The shortest of them stays close to the hub it loads at.

VétérinairesOne hub
VétérinairesLinthoutUsquareThree hubs
16:0017:0018:0019:00ONE HUBbike 1bike 2bike 3bike 4bike 5THREE HUBSbike 1bike 2bike 3bike 4bike 5--:--

Figure 10 The same 70 households, delivered from one hub and from three, planned by the ALNS solver, with each leg coloured by the hub its rider last loaded at. From one hub the day is long spokes across the whole city; from three it is three local territories, and a rider who runs out of load tops up at their own hub rather than riding back across the city.

The day so far: 15 h 14 min of vehicle time, 29% below the van fleet048121620measured vehicle-hours to deliver the dayVans, from their own depotSection 121 h 19−3.1 h+ cargo bikes and trailersSection 218 h 15−3.0 h+ three micro-hubsSection 3 · each delivery picked up at its own micro-hub15 h 14−29%Sections 4 & 5Section 6

Third iteration — fleet composition: a mixed fleet of trailered bikes and eBullitt X

With the hubs in place, the third intervention was a larger cargo bike. The standard two-wheeler Urbike uses, the eBullitt, holds about 4 of these deliveries, too few stops to work a round on this flow. Urbike trialled the purpose-built eBullitt X, built by Larry vs Harry, whose front platform is 30% larger and is built for logistics work. The X keeps the standard eBullitt's characteristics — the same speed on the flat, the same service time — and holds about 6 deliveries, enough for a round without a trailer.

The eBullitt X. Its front platform is 30% larger than the standard eBullitt's and carries 100 kg, about 6 of these deliveries. Photograph: Henrik Kaarsholm, Larry vs Harry.
Figure 11
Figure 11 What each vehicle carries, how fast it rolls and how long a service stop takes, measured on Urbike's fleet in our 2024 study. The eBullitt X carries less than half a trailered bike's load and is quicker on the road and at the stop.

Trailered bikes, eBullitt X bikes and a fleet of both on the same day

To measure what a fleet of both vehicles is worth on this flow, we simulated the same 70-delivery day from its three hubs three times on the ALNS solver: trailered bikes only; eBullitt X only; and both vehicles, with the solver choosing how many of each. The hubs, the two windows, the 12 minutes to load and the per-zone service times are the same in all three, and each hub keeps its own bikes. In the table below we compare the trailered fleet and the mixed fleet. We report on the X-only scenario in the paragraph below.

The day — 70 deliveries Trailered bikes onlythe fleet of Section 2 Mixed fleet, on time3 X · 2 trailered
Bikes the day needs 55
Vehicle-hours 15.2314.75
— on the road 8.918.03
— service timeparking, walking and the door 4.524.52
— loadinghub loads: 9 · 11 1.802.20
Road distance 119.5 km115.0 km
Heaviest load out of a hub 190 kg182 kg
Load hauled uphillkg-metres climbed per km ridden 406385

Figure 12 The same day and the same three hubs under two fleets, with the fleet the only thing that changes between them. The mixed fleet finishes 29 minutes ahead of trailers alone.

Trailered bikes alone finish the day in 15 hours 14 minutes of vehicle time; X bikes alone take 53 minutes more and ride 13 km further. At 100 kg an X carries about 6 of these deliveries where a trailered bike carries 15, so it returns to a hub 16 times against 9 and loads for 1 hour 24 minutes more. Offered both vehicles with duration as the objective, the solver returns 3 X bikes and 2 trailered bikes, and the mixed fleet finishes 29 minutes ahead of trailers alone, 3% of the day.

The climbs: the load carried uphill, by fleet

Brussels is hilly, and a rider feels it most when climbing with a loaded trailer. Urbike's dispatchers plan around that: they keep rounds short, or leave the climbing to the end of a round, once most of the load has been delivered. The deliveries are on the high ground. The VT hub sits at 19 m, Linthout at 89 and Usquare at 79, and 46 of the 70 deliveries are at or above 60 m.

With X bikes from the micro-hubs, a dispatcher can build the day with no trailer on it. For example, the weight carried uphill falls from 406 kg-metres per km ridden with trailered bikes alone to 149 with X bikes only, 63% less. Keeping that weight off the climbs was the dispatchers' own work: they read a day's routes against what they know of the hilliness of each part of Brussels, and the solver that built these plans holds no notion of it. In the next intervention we measure the weight carried uphill on every round and give it to the solver as a cost.


Fourth iteration — planning: an optimisation model of the whole operation

The fourth intervention was to plan the rounds with dedicated algorithms. Until then a dispatcher spent 30 minutes to an hour every day building the rounds by hand. The dispatchers are incredible planners, managing to hold the different constraints this report has measured in their heads: each stop inside its time window, the delay a round can absorb, which hub a rider loads at, the work shared out fairly between riders, and no round left with too much weight to take uphill. Planning by hand gets harder fast as the deliveries multiply: a day of 300 deliveries would be unimaginable with the current process. The software Urbike uses for planning cannot take the work over either: it assumes single rounds with no reloads, a single depot and one kind of vehicle, where this operation is multi-round, multi-hub and mixed-fleet.

The three interventions above each added something the plan has to hold, and the sections above measured it:

  • Rounds reload. A trailered bike holds about 15 of the day's deliveries and an X about 6, so a rider loads several times a day, and every load is a ride back to a hub with nothing aboard, as the trailers showed.
  • Several hubs. A rider can load at any of three hubs, and a delivery can be served from a hub other than its nearest, as the micro-hubs showed.
  • Two vehicles. The trailered bike and the X differ in what they carry, how fast they roll and how long a stop takes, and the day has work that suits each, as the mixed fleet showed.
  • Hills. Riders feel the load on the climbs, dispatchers plan rounds around them, and a solver that minimises duration alone sends the trailers up loaded, as the mixed fleet showed.
  • Windows and shifts. Every stop inside its window, a bound on the delay a round can absorb, the work shared fairly between riders, and no round too hard to ride, from the van baseline and the dispatchers' own rules.

Written down together, these characteristics are an optimisation model. We built one of the operation: the trailers, the micro-hubs and the two cargo bikes of the sections above, written precisely enough for a solver to plan against. Riders collect from several hubs in the course of a round and run several rounds a day, so the plan is multi-hub and multi-round, with the dependencies between rounds kept to a minimum. The cost of a leg includes the load carried times the height climbed, the quantity a rider's effort follows. Which hub a delivery is served from is settled before any rider picks it up, so the planning runs in two stages: goods out to the hubs, then rounds out of them. The dispatchers did both by hand, and kept the second tractable by treating each hub on its own. The model plans across them, so a rider can load at the main hub, deliver on the way out to a micro-hub, reload there, work a round around it, then load once more and deliver on the way back.

Figure 13
Figure 13 Planning across hubs: a stop nearest one hub can join another hub's round when it lies on the way.

The climb in the objective, on the same day

We first ran the model on the 70-delivery day of the sections above, with both vehicles from the three hubs, on the ALNS solver. The objective has two terms, the duration of the day and the weight carried uphill across every round together. Everything else matches the mixed plan of the third intervention. A trailered bike takes more weight up a climb than an X does, so the second term makes the solver choose which rider climbs with which load.

The day — 70 deliveries Trailered bikes onlythe fleet of Section 2 Mixed, on time3 X · 2 trailered Mixed, on time and climb3 X · 2 trailered
Bikes the day needs 555
Vehicle-hours 15.2314.7514.71
— on the road 8.918.037.99
— service timeparking, walking and the door 4.524.524.52
— loadinghub loads: 9 · 11 · 11 1.802.202.20
Road distance 119.5 km115.0 km114.3 km
Heaviest load out of a hub 190 kg182 kg176 kg
Load hauled uphillkg-metres climbed per km ridden 406385253

Figure 14 The same day and the same three hubs under three plans, with the fleet and the objective the only things that change between them. Two vehicles beat trailers alone on time, and beat them on the rider's load once the climb is a cost in the objective.

The solver returns the same fleet as the duration-only mix, 3 X bikes and 2 trailered ones, and assigns the rounds differently. The bikes take the same time, 14 hours 43 minutes against 14 hours 45, and ride the same distance, 114 km against 115. The weight carried uphill falls from 385 kg-metres per km ridden to 253, 34% less than the duration-only mix and 38% less than trailered bikes alone at 406. Putting the load on the climbs into the objective routes the riders a much easier day for the same time on the road and the same distance ridden.

With the climb in the objective, the two hubs on the plateau go over to X bikes and the trailers keep the flat work. One round does not move: the trailer that loads at Usquare and works the deliveries nearest the VT hub from there climbs out of the low city carrying 172 kg, and it stays the hardest round in the plan.

Every round of the day, from one hub with trailers and from three with a mixed fleet

The left column is the day on trailered bikes working from the single VT hub. The right column is the same 70 deliveries with all three interventions in place: the three hubs, a fleet of X bikes and trailered bikes, and the climb in the solver's objective. Each of the three takes weight off the climbs. The hubs shorten the loaded ride out of a hub, an X carries 100 kg where a trailered bike carries 237, and the objective moves the loaded climbing onto the X bikes.

Figure 15
Figure 15 Height against distance ridden, one panel per round, thickening where the rider is climbing and by how much is aboard, with each hub load marked by the weight it puts on the bike. The fleet, the hubs and the objective all change between the columns.

Overall, planned together with the climb in the objective, the two vehicles deliver the same day quicker than trailered bikes alone and carry less weight uphill.


Fifth iteration — search: switching the solver

On larger and more varied days, the ALNS solver barely improved on the rounds the dispatchers built by hand, when we expected a model to do much better. The fifth intervention switched the solver. The optimisation model, with its reloads across hubs, the weight carried uphill and the shift rules, states what a good plan is; the solver searches for one. We implemented the same model in PyVRP, a solver for vehicle routing problems6, holding everything else identical to measure what the search alone contributes.

PyVRP, built by our partners at Applied Routing, reads the same day and optimises the same objective. We solved the same mixed-fleet problem on both solvers with the same time to search, the hub choice free and both offered the same bikes.7

The solver switch shortens the day by 2 hours 24 minutes. The ALNS solver needs 14 hours 38 minutes of vehicle time with the hub choice free, against 14 hours 43 in the previous section with each hub keeping its own bikes, and PyVRP 12 hours 14 minutes, a saving of 16.4%; the distance falls from 114.1 km to 84.7 on five vehicles either way. We score both plans on the measured speeds and per-zone service times, as every result in this report is scored, because the claim is about the operation's day.7

Solver Vehicle time↓ Distance↓ Loads↓ Vehicles↓ Δ vs ALNS
ALNS4 runs, matched budget 14 h 38 min114.1 km125—
PyVRPsolver switchout of the box · Applied Routing 12 h 14 min84.7 km85−16.4%

Figure 16 The same mixed-fleet day solved by each solver. Best per column in bold.

VétérinairesUsquareLinthoutThe ALNS solver's plan
VétérinairesLinthoutUsquarePyVRP's plan
16:0017:0018:0019:00ROUNDSrider 1rider 2rider 3rider 4rider 5ROUNDSrider 1rider 2rider 3rider 4rider 5--:--

Figure 17 The two plans in the table above, over one map and one clock. Colour separates the solvers. A solid block on the schedule is a rider loading at a hub and a lighter one a delivery.

Each delivery from its nearest hub against the solver choosing the hub

Our optimisation problem has two levels: which hub to bring each parcel to, and then how to sequence the routes across the hubs. Under the ALNS solver we found no real gain from planning the two levels together. We found PyVRP to be efficient at it. Offered five eBullitt X bikes across the three hubs, the day needs 15 hours 17 minutes of vehicle time with every delivery served from its nearest hub, and 13 hours 4 minutes with the solver choosing the hub. Part of that gap is loading: riders confined to their nearest hub make 15 loads against the solver's 12, 36 minutes more, because they return to that hub whether or not another is on the way.

Four riders against five at the same vehicle time: load-weighted climb by round

Two plans of the same problem take the same vehicle time, 12 hours 9 minutes, with nine loads and 83 km of riding, one on four riders and one on five. Both come from the solver of the table above with its search settings adjusted, and both sit inside the run-to-run spread of the 12 hours 14 minutes it reports. Duration alone leaves the number of riders open.

The two plans differ in who does the work. On four riders the longest round runs 3 hours 46 minutes and carries 15,284 kg-metres of load-weighted climb, 65% of the day's 23,644. On five the longest round runs 3 hours 12 minutes and the heaviest carries 9,442 kg-metres of 25,746, 37%. The five riders climb 2,102 kg-metres more across the day between them and spread it more evenly. Here the load-weighted climb is summed over the day rather than divided by the distance ridden, as in the previous section, because the two plans ride the same distance.

Plan Vehicle timePer riderLongest round DistanceLoads Load-weighted climbHeaviest round
Four riders2 trailered · 2 X12 h 09 min3 h 02 min3 h 46 min83.1 km923,644 kg·m15,284 kg·m
Five riders3 trailered · 2 X12 h 09 min2 h 26 min3 h 12 min82.9 km925,746 kg·m9,442 kg·m

Figure 18 Two plans of the same problem from the same solver, one on four riders and one on five.

VétérinairesLinthoutUsquareFour riders
VétérinairesLinthoutUsquareFive riders
16:0017:0018:0019:00ROUNDSrider 1rider 2rider 3rider 4ROUNDSrider 1rider 2rider 3rider 4rider 5--:--

Figure 19 The same 70 households planned on four riders and on five, over one map and one clock. Colour separates the trailered bikes from the eBullitt X.

The day so far: 12 h 14 min of vehicle time, 43% below the van fleet048121620measured vehicle-hours to deliver the dayVans, from their own depotSection 121 h 19−3.1 h+ cargo bikes and trailersSection 218 h 15−3.0 h+ three micro-hubsSection 315 h 14−35 min+ eBullitt X and the optimisation model, hub choice freeSections 4 & 514 h 38−2.4 h+ a solver that can search the planSection 6 · PyVRP, same problem and same budget12 h 14−43%

Outcome: the cargo-bike operation against the van baseline, and what each intervention adds

We now compare the cargo-bike operation with every intervention in place with the van operation it replaced, on the same 70-delivery day. The bikes are the mixed fleet of the previous section, loading at any of the three hubs and planned by the new solver. The vans work from their own depot and are planned by the ALNS solver, so the comparison measures the whole sequence of interventions against the status quo.

Vehicle time: the same day in 12 hours by cargo bike, 21 by van

The cargo bikes deliver the day in 12 hours 13 minutes of vehicle time on five shifts, three trailered bikes and two eBullitt X, whereas the vans need 21 hours 15 minutes on four vans8, a difference of 9 hours 2 minutes. The vans need 74% more vehicle time than the bikes, and 18.2 minutes per delivery against 10.5. Of the difference, 8 hours 12 minutes are on the road, where the vans drive 171.7 km in 14 hours 18 minutes and the bikes ride 84.7 km in 6 hours 6 minutes. The bikes also need less service time, 4 hours 31 minutes against 6 hours 9 minutes for the vans.

One day — 70 deliveries Cargo bikeVanDifference, van minus bike
Vehicles 5 shifts4 vans —
Vehicle time 12 h 13 min21 h 15 min +9 h 02 min
— on the road 6 h 06 min14 h 18 min +8 h 12 min
— service time 4 h 31 min6 h 09 min +1 h 38 min
— loading8 hub loads · 4 depot loads 1 h 36 min48 min −48 min
Vehicle time per delivery 10.5 min18.2 min +8 min
Road distance 84.7 km171.7 km +87.0 km
Day finishes 19:3820:08 +30 min
Deliveries outside their window5,000 simulated days 1.5% (1.0 of 70)15.8% (11.1 of 70) +10.0 of 70
Median lateness when a window is missed 5 min32 min +27 min
Lateness on the worst tenth of days 15 min100 min +85 min
Deliveries over 30 min late, per day 0.025.7 +5.7
Day finishes on the worst tenth of days 19:5322:17 +2 h 24 min

Figure 20 The same 70-delivery day delivered by five cargo-bike shifts and by four vans, better in bold. The bikes lead on vehicle time, distance and every reliability measure.

Reliability: one missed window in seventy, against one in six

The totals above are planned times. To find how often each window is met once the measured variability is present, we simulated both solved days from the measured spread of travel and service times. The bikes deliver 1.5% of the 70 deliveries outside their window, 1 delivery a day, whereas the vans deliver 15.8%, 11 a day. When a bike misses a window it is 5 minutes late at the median, against 32 minutes for a van, and 15 minutes against 100 on the worst tenth of days. The vans deliver 5.7 deliveries a day more than half an hour late, whereas the bikes deliver one such delivery every 43 days.

Both plans above are planned to close the evening window at 19:30, the operation's own target, whereas the household is promised 21:00. When we plan both fleets to the 21:00 close, the vans deliver the day in 17 hours 24 minutes on three vans, one fewer, whereas the bikes stay on five shifts and deliver it in 12 hours. The difference falls from 74% to 45% of the bikes' vehicle time.

Assumptions behind the comparison

The van's speed and service time are transferred from our earlier study of a different parcel operator, running vans and cargo bikes in Brussels, because we had no GPS data for this customer's vans.2 We drew each leg of the simulation independently, so an afternoon that delays all four vans at once is under-represented. We expect that correlated case to be worse for the vans and about the same for the bikes. The two sides are planned by different software, and the new solver accounts for 2 hours 24 minutes of the 9 hours 2 minutes between them, as measured in the previous section. The van rounds the operation actually ran were built by hand by the dispatchers, so we presume the ALNS plan gives the vans better planning than they had. The comparison is conservative on that side.

The difference by intervention: the trailers, the micro-hubs and the solver switch

Vehicle time to deliver the same 70-delivery day, one intervention added per row048121620measured vehicle-hours to deliver the dayVans, from their own depotSection 1 · baseline21 h 19−3.1 h+ cargo bikes and trailersSection 218 h 15−3.0 h+ three micro-hubsSection 3 · each delivery picked up at its own micro-hub15 h 14−35 min+ eBullitt X and the optimisation model, hub choice freeSections 4 & 5 · the solver picks 4 X + 1 trailered14 h 38−2.4 h+ a solver that can search the planSection 6 · PyVRP, same problem and same budget12 h 14−43%

Figure 21 Vehicle time to deliver the same 70-delivery day, the interventions added row by row; the mixed fleet and the optimisation model share a row. The three largest steps are the trailers, the micro-hubs and the solver switch.

Overall, we found the three largest savings in the trailers, 3 hours 4 minutes; the micro-hubs, 3 hours 1 minute; and the solver switch, 2 hours 24 minutes.5 The mixed fleet shortens the day by a further 35 minutes, 14 hours 38 minutes with both vehicles against 15 hours 14 minutes with trailers alone. Each row is a mean over repeated runs, so the rows sit a few minutes from the single plans above: 21 hours 19 minutes against 21 hours 15 for the vans, and 12 hours 14 minutes against 12 hours 13 for the bikes.

The animation below replays both plans over one map and one clock. The vans work from one depot outside the delivery area, whereas the riders work from three hubs inside it. The first van starts loading at 14:16 and the last is back at 20:08, whereas the riders start loading at 16:00 and the last is back at 19:38. The vans load 4 times and the riders 8.

Van depotThe van operation
VétérinairesLinthoutUsquareThe cargo-bike operation
15:0016:0017:0018:0019:0020:00VANSvan 1van 2van 3van 4CARGO BIKESbike 1bike 2bike 3bike 4bike 5--:--

Figure 22 The same 70 households delivered by four vans and by five cargo-bike shifts, three trailered bikes and two eBullitt X. A solid block on the schedule is a vehicle loading and a lighter one a delivery.

Conclusion

Taken together, the five interventions changed the vehicle, the infrastructure, the fleet, the plan and the software that searches it, and we measured each on the same 70-delivery day with the ones before it in place. The trailers alone left the cargo bikes close to the vans on vehicle time. With all five in place, the bikes deliver the same day in less vehicle time than the vans and miss a tenth as many windows, and the largest single intervention accounts for about a third of the difference. The rounds are also planned by a solver in minutes where a dispatcher spent up to an hour a day, and they put less weight on the climbs. On this flow, the gain came from changing hardware, infrastructure, algorithms and data together, and from measuring each change on the same day.

Acknowledgements

This work was carried out with Urbike, the Brussels cycle-logistics cooperative whose operation and riders these experiments ran on; with Larry vs Harry, who make the eBullitt cargo bikes; and with Applied Routing, whose PyVRP team (Niels Wouda, Leon Lan) worked with us on the solver switch.

Notes

  1. Collignon, N., Schrader, M., Sørig, E., Yoon, S., & Astefanoaei, M. (2023). Data-driven Evaluation of Cargo Bike Delivery Performance in Brussels. Kale AI, for Larry vs Harry with Urbike. larryvsharry.com ↩
  2. Collignon, N., Sørig, E., Yoon, S., & Sarrazin, R. (2024). Delivering on the Promise of Cargo Bike Logistics: Strategies for Overcoming Operational and Systemic Challenges. Kale AI, for Larry vs Harry. It defines service time and measures both cargo-bike profiles. ↩a ↩b ↩c ↩d ↩e
  3. The van's speed and service time are taken from a parcel operator's van and cargo-bike fleet on the same rounds in Brussels, 32,547 deliveries across 345 routes: Collignon, N., Sarrazin, R., & Van de Casteele, P. (2025). Transforming Urban Deliveries: Data Evidence from Belgium's Cargo Bike Transition. Belgian Cycle Logistics Federation. https://doi.org/10.5281/zenodo.21535887 ↩
  4. Ropke, S., & Pisinger, D. (2006). An adaptive large neighborhood search heuristic for the pickup and delivery problem with time windows. Transportation Science, 40(4), 455–472. https://doi.org/10.1287/trsc.1050.0135 ↩
  5. Every scenario is solved four times at the same ten-second budget, and the tables and captions give one representative run. The spread across the four runs is 9 to 31 minutes of vehicle time on the ALNS rows and 8 minutes on the last row of the closing figure. ↩a ↩b ↩c
  6. Wouda, N. A., Lan, L., & Kool, W. (2024). PyVRP: A high-performance VRP solver package. INFORMS Journal on Computing, 36(4), 943–955. https://doi.org/10.1287/ijoc.2023.0055 ↩
  7. Both solvers optimise a composite objective — fleet duration plus 0.3 times the load-weighted climb — computed on the problem's own travel times. The hours reported here score the resulting plans on the measured speed bands and per-zone service times, the instrument used throughout this report, so the solver comparison and the operational sections are on one footing. Vehicle time is the mean over four runs of each solver, and the spread between runs is small against the difference between them. ↩a ↩b
  8. The result holds at the optimistic end of the measured van service-time range. Solved again with a flat 53 seconds per stop over the bike's service time, instead of the per-zone 57 to 111 seconds, three vans still cannot deliver the day and four take 20 hours 54 minutes, 1.6% below the figure in the table and 71% above the bikes. The afternoon window and the travel time set the fleet size. ↩