This release includes new features, options, filters, and bug fixes. Version 0.13.0 includes breaking changes for fleet engine users only that will need to be addressed prior to upgrading. While there are no breaking changes for router engine users, all SDK users are encouraged to upgrade to the latest version. Learn more in the upgrade guide.
This SDK release adds two new features to the OSRM measure:
SnapRadius to ensure points are on a road network and within the hosted area and
ScaleFactor to multiply durations by a factor when using a
DurationMatrix, and missing error return values. Learn more.
Use the initialization costs feature to configure per-vehicle costs that will be added to the value function when you want to add a vehicle that isn't permanently in your fleet, like a rental car. Learn more.
Use the sorter option to set up a custom order in which the vehicles in your fleet are to be used, based on a customer-defined score. When overriding the value function, you must use different vehicle initialization costs or the new sorter option to help guide the solver. The sorter option provides a preferred order in which the vehicles are to be used when feasible. Learn more.
Use the service groups option to account for the extra time needed to enter a building or fenced area. This allows you to create a more realistic VRP model. Learn more.
FilterWithRoute feature to check for general compatibility and access the current solution's route. This feature allows for more flexibility in your filtering. For example, you can use
FilterWithRoute to filter out vehicles that may not be assigned additional stops based on stops already in the vehicle's route. Learn more.
POOL_SIZE variable has been added to configure the number of parallel ALNS instances to be used with the fleet engine. If
POOL_SIZE is not set by the user, it will default to
runtime.GOMAXPROCS(0)/2 (half of the available threads). Use this to control your environment for the fleet engine for more performant results. Learn more.
TimeTracker has been added to the vehicle, fleet, and router engines. It tracks the amount of time passed overall and considers the time it takes for windows to open. Before, tracking time had to be done manually by the user. Now, you can simply query the
DepartureTimes of a route via the
- Fixes a rare bug where the recomputation of
indexToCostwas not executed correctly in combination with alternate stops.
- Fixes incorrect behavior when swapping alternate locations.
- On different architectures the results of mathematical operations used to calculate Haversine were different. This was fixed.
- Fixes a bug where the
routerengine led to an out-of-range error.
- Fixes a bug where the default
routerAPI ignored the random seed option.
- Fixes a bug where the
Attributeoption unassigned all stops that had an empty attribute list, because those stops were considered incompatible with any vehicle.
- Changed the
DefaultModelto group together locations that are part of a vehicle's backlog and verify they can be assigned to that vehicle.
MaxRouteLengthFilternow predicts the minimal costs for locations under assignment consideration.
routeroutput when using duration groups.
- Fixes the
fleetwhich was not always returning -1 when no location was assigned.
Inserted()method now returns correct index. In rare cases it previously returned
0where that should have been
WithAsyncPollingIntervalhave been removed and replaced by a cancellation context that is applied to the matrix functions.
location measure- which handles service times - now also takes a new parameter
routernow has 2 parameters.
CustomAssignernow takes a new function
VehicleSorteras a parameter to improve predicting the costs when a location group is assigned to a vehicle and thus, improving the solver's navigation through the search space.