Results, in full, including where we lose.

Every row is a seeded instance solved two ways: a quick solve and a thorough solve on the same instance. The gap is the honest price of stopping early. Reproduce any row with one command.

instancestopsvehicles best foundresultgap % wall msunassignedseed
Loading results…

best found is the strongest plan the thorough solve reaches on that instance; result is a single timed quick solve. Positive gap means the quick solve left distance on the table, we publish it rather than hide it.

The same numbers, as bars.

Shorter is better. Hover any bar for stops, vehicles, distance, and wall-clock.

Loading chart…

Methodology

  • Instances are generated deterministically from a seed, clustered stops, two depots, a mixed fleet, and time windows across a working morning.
  • The solver is nearest-neighbour construction followed by first-improvement local search (2-opt, or-opt, swap) with a ruin-and-recreate kick. It is a metaheuristic, not an exact method.
  • Quick solve stops after 40 non-improving kicks; thorough solve after 400. Both are deterministic for a given seed.
  • Wall-clock is a single-threaded run, release build, on the hardware below.
CPU
Apple M-series, single core
Build
cargo --profile perf, opt-level 3
Threads
1
Allocator
system

Reproduce every row

cargo run --profile perf \
  -p arclane-cli -- bench

Same seeds, same results. Add --json for machine-readable output.

These are our instances. Bring yours.

Upload a real run sheet and see the numbers on your own routes.

Benchmark your routes