1 · The input
Depot, coordinates, demands
The number in each point is that customer’s demand. Total demand is 30, so at least three vehicles are required. Any pair of points is a legal drive.
Million-scale approximate CVRP in minutes —
parallel divide-and-conquer.
Angular buckets around the depot. MST and randomized DFS on each core. Five million customers in eight minutes.
The problem
Identical vehicles leave a depot, serve every customer once, and return. Each vehicle holds at most Q. A drive costs the straight-line distance, and the objective is the total length.
Depot, coordinates, demands
The number in each point is that customer’s demand. Total demand is 30, so at least three vehicles are required. Any pair of points is a legal drive.
Visited everyone, broke capacity
Gray routes are fine (loads 7 and 10). The red route carries 6 + 4 + 3 = 13. One overfilled vehicle makes the whole solution illegal.
Same customers, loads fit
Move the demand-3 customer onto the left route. Each route now sums to 10, starts at the depot, and returns. Among such routings, CVRP wants the shortest.
Motivation
A local warehouse is a few thousand customers. Planning across cities is millions. The best city routes radiate from the depot, and a full distance matrix is far larger than the machine.
Best-known routes for Brussels put the depot at the center and each route on a petal. A cone of width α follows one petal. Cones share the depot, so each cone is a smaller CVRP that can run on its own cores.
n = 5×10⁶ · edges ≈ n²/2 ≈ 1.25×10¹³
BP-MDS keeps an MST inside each cone: n − 1 edges. Prim computes a Euclidean weight only for the edge it is testing. A custom min-heap and on-demand allocation make that tree cheap across cores.
What stays from ParMDS is the route engine: MST, randomized DFS, then 2-opt. What changes is the split, the implicit graph, and the parallel schedule.
310 capacity-only Euclidean instances
| Set | # | What it stresses |
|---|---|---|
| CVRPLIB | 130 | Known best solutions: X (100), Golden 9–20, AGS cities, CMT5, E, F, P, tai. Gap against BKS. |
| FILO2 | 20 | Real Italian regions, about 20 thousand to 1 million customers. The city-scale check. |
| Synthetic XML | 160 | Uchoa generator, from 10 customers up to 5×10⁶. The scaling check. |
How it solves
310 instances · Xeon Gold 6248 · 40 threads · 192 GB