Added
Features
- Support for cost per km for vehicles (#908)
- Support for
max_distance
at vehicle level (#354) MAX_DISTANCE
violation cause in plan mode (#995)- Recommendation on how to cite in publications (#943)
- Changelog sub-categories (#1018)
Core solving
Internals
- Store distance matrices (#956)
- Default radius of 35km for OSRM snapping (#922)
- Support for URL path in host (#966)
Changed
Core solving
- Significant speedup by pruning local search moves (#509)
- Reduce
compute_best_route_split_choice
complexity (#962) Eval::operator<
sorts on cost, then duration (#914)- Improved
vrptw::PDShift
implementation (#852) - Refactor heuristics to be able to operate on a subset of jobs and vehicles (#837)
- Account for vehicle/job compatibility in heuristic regrets values (#982)
- Slightly reduce computing times for SWAP* operator (#987)
- Refactor
RouteSplit
operator (#996)
Internals
- Switch to C++20 (#851)
- Exposed internal variables to get feature parity for pyvroom (#901)
- Improve some error messages (#848)
- Improved error messages for file-related IO errors (#553)
- Add job id to error message for unreachable step (#946)
- Reserve
vector
capacity whenever possible (#915) - Distances in output are from internal matrices, not routing requests (#957)
- Remove unused
tw_length
member fromJob
and associated code - Scale
TimeWindow::length
fromUserDuration
toDuration
(#1015)
Routing
- ORS: (previously) hard-coded
/ors/v2
slug now has to be added to the path using-a
(#1036)
Dependencies
- Submodule and update Rapidjson (#929)
- Update polylineencoder to v2.0.1 (#931)
- Update polylineencoder to v2.0.2 (#1006)
- Update cxxopts to 3.1.1 (#997)
CI
- Update GitHub Actions (#857)
- Setup a
clang-tidy
workflow (#789) - Add running
apt-get update
in CI jobs (#863) - Update formatting script to use
clang-format
14 (#894) - Update gcc to version 12 in CI (#1002)
- Update clang to version 15 in CI (#1022)
Fixed
Core solving
max_travel_time
parameter not taken into account in edge case (#884)max_travel_time
not accounted for with vehicle steps in solving mode (#954)max_travel_time
not accounted for inRouteSplit
(#941)- Wrong capacity checks in
RouteSplit
(#981) - Overflow related to scaling default time windows (#1020)
Internals
- Internal matrix problem with inconsistent
location_index
andlocation
values (#909) - Silent fail on invalid output file (#553)
- Comparison of index-based and coordinates-based locations (#935)
- Meaningless
location_index
provided in output for break steps (#877)