🤖 AI Summary
This work addresses the resource-constrained shortest path problem (SPPRC), a core subproblem in branch-cut-and-price algorithms for combinatorial optimization problems such as vehicle routing. We propose an efficient solution method based on bucket-based labeling, integrating bidirectional dynamic programming, arc-joining, bucket fixing, and arc elimination techniques. To accelerate dominance checks, we employ a structure-of-arrays memory layout combined with SIMD vectorization. A novel compile-time resource mechanism is introduced, enabling zero-runtime-overhead extension to arbitrary resource types through a fixed set of seven function interfaces, with state layouts resolved entirely at compile time. Experimental results on public benchmark instances demonstrate that our approach achieves 1.3–2.35× speedup over PathWyse in single-threaded performance (geometric mean) and reaches 1.9–2.4× the performance of parallel pull-based labeling algorithms.
📝 Abstract
We present $\texttt{bucket-graph-spprc}$ ($\texttt{bgspprc}$ for short), an open-source, header-only C++23 library for the shortest path problem with resource constraints (SPPRC), the pricing subproblem at the heart of branch-cut-and-price for vehicle routing and related problems. The library implements the bucket-graph labelling algorithm of Sadykov, Uchoa and Pessoa (2021), with bidirectional labelling, across-arc concatenation, bucket fixing and arc elimination, and a structure-of-arrays label store with SIMD-accelerated dominance. Its central design feature is a compile-time resource concept: a new SPPRC variant is added by implementing a fixed seven-function interface, and resources compose into a label state with no runtime dispatch, the state layout fixed at compile time. Five resources ship built in: time/capacity, ng-path elementarity relaxation, rank-1 cuts, cumulative cost, and pickup-and-delivery. In a reproducible, head-to-head comparison on shared public instances at an identical bound, $\texttt{bgspprc}$ outperforms PathWyse (Salani, Basso and Giuffrida, 2024), the main open-source comparator, by $1.3\times$--$2.35\times$ in shifted geometric mean (and by $1.3\times$--$2.3\times$ even when itself run single-threaded), and runs within $1.9\times$--$2.4\times$ of parallel pull labelling (Petersen and Spoorendonk, 2025), a different labelling technique for the same problem. The library, benchmark scripts, and pinned instances are publicly available.