vrpr 0.2.0
Upgrades the vendored solver core to PyVRP 0.14.0 (from 0.13.4), a major upstream release that reworks the data model and the search engine.
New features
-
Pickup and delivery (shipments):
add_shipments()adds paired pickup/delivery visits (same vehicle, pickup first, same trip), enabling the PDP/PDPTW family of problems. Solutions reportnum_shipmentsandnum_missing_shipments. - New
unplanned()accessor: a tidy view of the optional clients and shipments left out of the solution (prize collecting). -
routes()now also reportsactivity("client","pickup"or"delivery"),shipmentandtripcolumns; client rows keep the previous columns, so pure client instances read as before.
Upstream changes tracked
- The search engine follows PyVRP 0.14’s design: a single operator family (
Relocate/Swapplus explicit optional-client/shipment/group operators) replaces the old node/route operator split; the granular neighbourhood is now computed by upstream C++ code (defaultnum_neighbours = 50). - The penalty manager follows PyVRP 0.14: midpoint initial penalties, violation-magnitude registration, update every 500 solutions and
penalty_decrease = 0.90. Theinit_load/init_tw/init_distarguments ofils_params()were removed accordingly. - Internally, routes are sequences of typed activities; reload depots (multi trip) appear as depot activities inside the route.
Breaking changes
-
ils_params()lostinit_load,init_twandinit_dist(see above);num_neighboursnow defaults to 50 (PyVRP’s default). -
routes()gains columns; code that relied on the exact column set should select explicitly.
vrpr 0.1.1
Portability fixes for CRAN builders; no user-facing changes.
- Fixed compilation with LLVM 23’s libc++ (CRAN’s clang23 additional checks), which no longer provides
std::back_insertertransitively: the vendoredsearch/LocalSearch.cppandSolution.cppnow include<iterator>explicitly. - Fixed compilation on the CRAN macOS builders that use Apple’s MacOSX11.3 SDK (r-release-macos-x86_64 and r-oldrel-macos), whose libc++
<concepts>lacksstd::convertible_to: a small compatibility shim (vrpr_compat.h) supplies the concept where the standard library does not. -
Route::Iteratorin the vendored sources now declares all five iterator member typedefs, as required by pre-C++20std::iterator_traitson the same older libc++ (verified by compiling every translation unit against the MacOSX11.3 SDK’s libc++ headers). - These fixups are applied by
tools/vendor.Ron top of the verbatim PyVRP sources, so they survive re-vendoring.
vrpr 0.1.0
CRAN release: 2026-07-04
First release.
- A tidy, pipe-friendly R interface to the ‘PyVRP’ vehicle routing solver. PyVRP’s high-performance C++ core is vendored and rewired through ‘cpp11’, with no ‘Python’ runtime dependency.
- Supports the capacitated VRP, time windows (VRPTW), heterogeneous fleets, multiple depots (MDVRP), prize-collecting (optional clients and mutually exclusive client groups), simultaneous pickup and delivery / backhaul, and multi-trip routes.
-
read_vrplib()andread_solomon()read standard VRPLIB/TSPLIB and Solomon instances;plot()draws solutions with ‘ggplot2’. - The solver is a faithful port of PyVRP’s iterated local search; objective and solution-quality parity with PyVRP is verified in
tools/benchmark/.