- Optional
profile
key for vehicles to allow picking routing profile at query-time (#196) -r
command-line flag for explicit routing engine choice (#196)- Support for multiple named datasets when using
libosrm
(#181) - Generic
vroom
namespace and several other specializations (#135) - Support for OpenRouteService as routing engine (#204)
- Spot more job/vehicle incompatibilities derived from constraints (#201)
- Filter out irrelevant local search neighbourhoods for vehicles with disjoint job candidates (#202)
- Specific status codes by error type (#182)
- Avoid locations duplicates for matrix requests (#200)
- Nearest job route seeding option for VRPTW heuristic (#210)
- Refactor to remove duplicate code for heuristic and local search (#176)
- Refactor to enforce naming conventions that are now explicitly stated in
CONTRIBUTING.md
(#135) - Options
-a
and-p
can be used to define profile-dependant servers (#196)
-l
and-m
command-line flags (#196)
- Missing capacity check for initialization in parallel clustering heuristic (#198)
- Segfault on job empty
time_windows
array (#221)
- Support for VRPTW (#113)
- CI builds using Travis (#134)
- Adjust solving depending on whether vehicles locations are all identical (#152)
- New local search operator (#164)
- Specific intra-route local search operators (#170)
- Update
clang-format
to 6.0 for automatic code formatting (#143) - Keys
duration
andarrival
are no longer optional in output and based on matrix values. - Speed up TSP solving by over 35% on all TSPLIB instances (#142)
- Speed up CVRP solving by over 65%, then another ~8% on all CVRPLIB instances (#146, #147)
- New heuristic for CVRP (#153)
- Take advantage of CVRP speed-up and new heuristic to adjust quality/computing time trade-offs (#167)
- Default exploration level set to 5 (max value)
- Wrong ETA with service time and no start (#148)
- Support for multiple vehicles
- Support for multi-dimensional capacity constraints (#74)
- Support for skills to model jobs/vehicles compatibility (#90)
- Support for user-defined matrices (#47)
- New flag
-x
to set the trade-off between computing time and exploration depth (#131) - Provide ETA at step level in the routes, using optional service time for each job (#101, #103)
- Experimental* support to use
vroom
directly from C++ as a library (#42) - Automatic code formatting script based on
clang-format
(#66) - PR template
*: read "functional with no C++ API stability guarantee"
- Update
rapidjson
to a patchedv1.1.0
(#128) - Improve dependency handling (#78)
- Improve compilation time and switch from relative to absolute paths for includes (#108)
- Various refactors (#64, #72, #88, #106)
- Drop Boost.Log dependency (#130)
- Memory leak upon
vrp
destruction (#69) - Prevent overflows with huge costs (#50)
- Infinite loop on TSP edge case (#122)
- Various build warnings and errors with both
gcc
andclang
(#94, #114)
- Support
libosrm
as of v5.4 for fastertable
androute
queries (#34) - Add contributing guidelines (#56)
- Compile also with
-std=c++11
, useful in some environments (#55)
- Internals refactor setting up a scalable data model for future features (#44)
- Renamed solution indicators key in json output
solution
->summary
- Global cleanup with regard to coding standard (#56)
- Drop support for TSPLIB files (#48)
- Clean unused code and heuristics
- Support for OSRM v5.*
- Dedicated folder for API documentation
- New input and output json API (#30)
- Switch to [lon, lat] for all coordinates (#33)
- Drop support for OSRM v4.*
- Flags
-s
and-e
(see new API)
- Compilation trouble with rapidjson and some types (#31)
- Correct usage display obtained with
-h
(#39)
- Switch to BSD 2-clause license.
- Solving TSPLIB instances does not require the
-t
flag anymore. - Several components of the local search code can now use multi-threading (#26).
- Improve 2-opt operator for symmetric cases (#27).
- Compute optimized "open" trips with user-defined start and/or end.
- Special extra handling for asymmetric problems in the local search phase.
- New local search operator to improve results in specific asymmetric context (e.g. many locations in a dense urban area with lots of one-way streets).
- OSRM v4.9.* compatibility.
- Use rapidjson for json i/o (#19)
- Append the
tour
key to the solution in any case.
- U-turns enabled when retrieving detailed route geometry from OSRM (#10).
- Evolution of the local-search strategy providing lower dispersion in solution quality and improving on worst-case solutions (overall worst-case on TSPLIB went from +9.56% over the optimal in v0.2 to +6.57% in this release).
- Core refactor for undirected graph (#13), tsp structure and tsplib loader (#24), heuristics, local search and 2-opt implementation. Results in a less intensive memory usage and faster computing times (on TSPLIB files, the computing times dropped by more than a factor of 2 on average).
- Cleanup verbose output, using Boost.Log for better display (#18).
- Switch to boost::regex for input parsing.
- Wrong output tour size for problems with 2 locations (#16).
- Segfault with explicit matrix in TSPLIB format (#14).
- Invalid syntax for newline at the end of input file (#17).
- Trouble with the regexes used for TSPLIB parsing (#7).
- Incorrect DIMENSION key in TSPLIB format raising stoul exception.
- Segfault for DIMENSION: 1 problem in TSPLIB format (#25).
- New loader to handle TSPLIB format, providing support for user-defined matrices (#2).
- Dependency on boost.
- Switch to boost.asio for http queries handling.
- Simplified matrix implementation.
- Use of -std=c++14 flag.
- Socket reading issues (#1).
- Potentially incorrect request for route summary (#5).
- Solving problems with one vehicle visiting several places a.k.a travelling salesman problem.
- Support matrix computation using OSRM.
- Solution output to
json
with location ordering, cost of the solution and execution details. - Optional ready-to-use detailed route.
- Optional use of euclidean distance for matrix computation.