Releases: VROOM-Project/vroom
Releases · VROOM-Project/vroom
v1.14.0
Added
Features
- Support for cost per km for vehicles (#908)
- Support for
max_distanceat vehicle level (#354) MAX_DISTANCEviolation 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_choicecomplexity (#962) Eval::operator<sorts on cost, then duration (#914)- Improved
vrptw::PDShiftimplementation (#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
RouteSplitoperator (#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
vectorcapacity whenever possible (#915) - Distances in output are from internal matrices, not routing requests (#957)
- Remove unused
tw_lengthmember fromJoband associated code - Scale
TimeWindow::lengthfromUserDurationtoDuration(#1015)
Routing
- ORS: (previously) hard-coded
/ors/v2slug 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-tidyworkflow (#789) - Add running
apt-get updatein CI jobs (#863) - Update formatting script to use
clang-format14 (#894) - Update gcc to version 12 in CI (#1002)
- Update clang to version 15 in CI (#1022)
Fixed
Core solving
max_travel_timeparameter not taken into account in edge case (#884)max_travel_timenot accounted for with vehicle steps in solving mode (#954)max_travel_timenot 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_indexandlocationvalues (#909) - Silent fail on invalid output file (#553)
- Comparison of index-based and coordinates-based locations (#935)
- Meaningless
location_indexprovided in output for break steps (#877)
CI
v1.13.0
Added
- Support for
max_travel_timeat vehicle level (#273) - Support for vehicle fixed costs (#528)
- Support for cost per hour for vehicles (#732)
- Support for
max_loadconstraint at break level (#786) RouteSplitlocal search operator (#788)- Advertise
libvroomin README and wiki (#42)
Changed
- Use new struct to evaluate edges internally (#738)
- Use
std::chrono::millisecondsforTimeoutvalue (#728) - Use
structfor storingCoordinatesinstead of anstd::array(#730) - Refactor
SolutionIndicatorsstruct (#750) - Do not duplicate local search for identical heuristic solutions (#750)
- Add message on invalid routing response (#764)
- Consistent exception type on invalid profile (#771)
- Pass zero amount directly instead of its size (#776)
- Add named constants for default threads number and exploration level (#805)
- Refactor
TSPcost functions (#812) - CI builds now use clang++ 14 and g++ 11 on Ubuntu 22.04 (#816)
- Refactor
CVRP::solveandVRPTW::solvefunctions (#818) - Refactor
CostWrapper(#828)
Fixed
- Missing break validity check (#754)
- Unecessary waiting with multiple breaks and shipments (#840)
- Mark
JobAmountandJobTimecomparison operators asconst(#724) - Update
ssl_send_and_receiveto throw RoutingExceptions (#770) - Timeout not observed with multiple long heuristics per thread (#792)
- Wrong validity check range in
vrptw::MixedExchange(#821) - Underflow in insertion regrets (#831)
- Crash with missing location coordinates and only
costscustom matrix (#826)
v1.12.0
Added
IntraTwoOptlocal search operator (#706)descriptionkey for unassigned tasks in output, if provided (#403)location_indexkey for unassigned tasks and each step, if provided (#625)- Shared target to makefile, for creating Position Independent Code (#617)
- Exposing some internals for Python through compile flags (#640)
- Stats on local search operators use for dev/debug purposes (#658)
- Project can be compiled without routing support to limit dependencies (#676)
- Internal
max_tasksconstraints derived from input to speed up local-search (#648)
Changed
- Prune local search moves based on TW constraints (#583)
- Prune local search moves based on capacity constraints (#709)
- Refactor exception class (#639)
- CI builds now run against
libosrmv5.26.0 (#651) - Reduce computing time on PDPTW benchmarks by around 20% (#559)
- Change Input and parser signature to simplify downstream usage (#665)
- Consider move options in SWAP* that were previously wrongly discarded (#682)
- Use cxxopts as command line parser instead of getopt (#602)
- Change polylineencoder usage to submodule instead of plain header (#686)
Fixed
v1.11.0
Added
setupkey for tasks to refine service time modeling (#358)max_taskskey limiting route size at vehicle level (#421, #566)- Support for custom cost matrices (#415)
- Number of routes in solution summary (#524)
- Implementation for extended SWAP* local search operator (#507)
-lcommand-line flag for user-provided timeout (#594)- Ability to start the search from user-defined solution (#376)
- Github Actions CI (#436)
- Check for libvroom example build in CI (#514)
Changed
vehicle.stepsare now used in solving mode (#606)- CI builds now run on Ubuntu 20.04 (#455)
- Simplified time window handling logic in TWRoute (#557)
Removed
Fixed
- "Infeasible route" error while an existing route plan exists (#506)
- Break omitted with no other time window (#497)
- Biased evaluation in
try_job_additions(#572) - Routing error with custom matrix and
-g(#561) - Crash on empty custom matrix (#570)
- Properly allow empty skills arrays (#586)
- Restrict
speed_factorin the range(0, 5](#591)
v1.10.0
Added
- Support for heterogeneous vehicle routing profiles (#394) (#490)
- Optional
speed_factorkey for vehicle-level tuning (#450) - Support Valhalla as routing engine (#306)
- Report
typefor unassigned tasks in output (#469)
Changed
- A mix of empty and non-empty
skillsarrays is allowed in input (#460) - Formatting script updated to use version 10 of clang-format (#452)
- vroom will now read json input from stdin if no other input is specified (#457)
- Clearer error message with invalid json response from http routing request (#471)
Deprecated
- Top-level
matrixkey should be replaced using the newmatricessyntax (#450)
Fixed
v1.9.0
Added
- Ability to choose ETA and report violations for custom routes using
-c(#430) - Custom route description using new
stepskey for avehiclein input (#430) - A
violationsobject is reported in output atstep,routeandsummarylevel (#430) libglpkused as an optional dependency, required for-c(#430)
Changed
- Reduce computing time by refactoring
LocalSearch::try_job_additions(#392) - Reduce build time by refactoring includes (#425)
- Improve error message with wrong profile using libosrm (#397)
- Check for duplicate ids across tasks of the same type:
job,pickup,delivery(#430) - Check for duplicate ids across
breaktasks for the same vehicle (#430) - Report
serviceandwaiting_timefor allstepobjects in output (#430) - Always report a
startandendstep for the route, regardless of vehicle description (#430)
Fixed
- Rapidjson assert on invalid syntax for first vehicle (#418)
v1.8.0
v1.7.0
Added
- Support for (multiple) driver breaks at vehicle level (#186)
- Dependency to
libasio, replacing boost/asio (#325) - More details on features and workflow in README (#335)
Changed
- Switch to C++17 (#311)
- Use
std::optionaland drop dependency to boost/optional (#312) - Refactor routing wrapper classes (#320)
Deprecated
- Steps
jobkey is replaced byidfor consistency with breaks
Removed
- Drop boost dependency (#325)
Fixed
v1.6.0
Added
- Support for pickup and delivery tasks (#274)
shipmentsarray in input (#274)- Use https for routing requests over port 443 (#289)
- New local search operator for route exchange (#288)
Changed
- Steps
typein json output can also have valuepickupanddelivery(#274) - Extended range for valid priority values (#287)
- Use
operator&&for short-circuit evaluation (#293) - Earlier local search aborts based on incompatibilities (#281)
- Travis script update (#301)
Fixed
v1.5.0
Added
- Support for mixing independent pickups and deliveries (#241)
pickupanddeliverykeys forjobin input and forrouteandsummaryin output (#262)loadkey atsteplevel in output (#262)prioritykey for jobs to gain some control on which jobs are unassigned (#246)HttpWrapperclass to factor code previously duplicated across routing wrappers (#224)
Changed
- Speed up solving by 25% for CVRP and up to 30% for VRPTW benchmark instances (#255)
- Update Travis configuration to use Ubuntu Bionic (#260)
- Cut down validity checks time (#266)
Deprecated
amountkey atjoblevel in input and atsummaryandroutelevel in output (#262)
Removed
- Clustering heuristics for CVRP (#267)