clang23 checks (LLVM 23
libc++, which no longer provides <algorithm> transitively): the vendored
Client.cpp and VehicleType.cpp use std::any_of without including it.
tools/vendor.R now adds the include, as it already did for <iterator>.SearchSpace.cpp captured a
structured binding, which older Apple clang rejects (allowed only from
C++20). tools/vendor.R now copies the binding into a plain reference before
the lambda.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.
add_shipments() adds paired
pickup/delivery visits (same vehicle, pickup first, same trip), enabling the
PDP/PDPTW family of problems. Solutions report num_shipments and
num_missing_shipments.unplanned() accessor: a tidy view of the optional clients and
shipments left out of the solution (prize collecting).routes() now also reports activity ("client", "pickup" or
"delivery"), shipment and trip columns; client rows keep the previous
columns, so pure client instances read as before.Relocate/Swap plus explicit optional-client/shipment/group operators)
replaces the old node/route operator split; the granular neighbourhood is
now computed by upstream C++ code (default num_neighbours = 50).penalty_decrease = 0.90. The init_load/init_tw/init_dist arguments
of ils_params() were removed accordingly.ils_params() lost init_load, init_tw and init_dist (see above);
num_neighbours now defaults to 50 (PyVRP's default).routes() gains columns; code that relied on the exact column set should
select explicitly.Portability fixes for CRAN builders; no user-facing changes.
std::back_inserter transitively: the vendored
search/LocalSearch.cpp and Solution.cpp now include <iterator>
explicitly.<concepts> lacks
std::convertible_to: a small compatibility shim (vrpr_compat.h) supplies
the concept where the standard library does not.Route::Iterator in the vendored sources now declares all five iterator
member typedefs, as required by pre-C++20 std::iterator_traits on the same
older libc++ (verified by compiling every translation unit against the
MacOSX11.3 SDK's libc++ headers).tools/vendor.R on top of the verbatim PyVRP
sources, so they survive re-vendoring.First release.
read_vrplib() and read_solomon() read standard VRPLIB/TSPLIB and Solomon
instances; plot() draws solutions with 'ggplot2'.tools/benchmark/.