Xtreme Route library version 3.0
Finally, version 3.0 is completed! It has been a long road and as always, the last 10% required 90% of the time.
Summary
- Xtreme Route is now installed with 2 additional DLL files, one for .NET Standard 2.0 and one for .NET Core 2.0. The version of the framework used for the main DLL has also been raised to .NET Framework 4.6. All DLLs are functionally equal and compiled from same source code.
- The licensing has been changed and is now based on a yearly basis. The main reason for this is that as a company its crucial to have an idea of future income to be able to focus on development. See the Store for the details. Existing customers gets 6 months added to license when upgrading.
- Lots of new functionality, including multi-commodity routing, PBF OSM importer, vehicles with compartments, expense routing, proper cargo handling with rules, priority and much more. See below for a detailed list.
- A couple of compatibility breaking changes were made, mainly renaming of properties and removal of some properties that has become redundant, see below for details. Don’t worry, its not much and will likely take less than 10 minutes to fix in your source code.
In the near future, Xtreme Route will be available from NuGet to make updating easier to handle.
Licensing
The new license model is subscription based (yearly renewals), which will give a continuity and stability for development of Xtreme Route the old model don't give. It works like this:
- A company buys a license, which will last 1 year (and an extra week for renewal). Existing customers of previous versions of Xtreme Route gets 6 months extra on the license the first year when upgrading.
- A couple of weeks before the license expires, Xtreme Route will send a reminder email about the soon-to-be-expired license.
- The buyer now has three choices:
- Renew the license and continue using a fully supported Xtreme Route.
- Don't renew license and continue using Xtreme Route but without any support or possibility for upgrades (the software license-key will work forever).
- Stop using Xtreme Route (which cannot be a good choice).
- Support is included as long as there is a valid license, and includes email support, free upgrades of new patches and new versions.
Subscription based licensing requires continuity, but no company can give any guarantees (ask Huawei about Google, which granted seems solved now). To lessen the impact of force majeure, all Xtreme Route software license-keys
are permanent so at the very least every buyer of Xtreme Route can continue to use the library no matter what happens.
New functionality and improvements in Xtreme Route 3.0
Performance improvements: too many to list, most of them for fleet routing.
Bug fixes: hundreds, too many to list here.
Remaining known bugs: none, but a few probably slipped past the around 8.000 lines of test code used.
Major new features
- Multi-capacity functionality for fleet routing, supports Weight, Volume and Quantity, all are optional and can be mixed and matched. These are set in RouteNode.Cargo and FleetRouteVehicle.CargoCapacity.
- Cargo handling with supports for priority, individual and group rules, cargo types, multi-capacity, size, allowed vehicles and optional compartments.
- A new and very efficient OSM importer that reads directly from binary PBF files, with extra control through optional callbacks. The class to use is PBFImporter.
- Fleet route timing is available in RouteFleetArgs, which can be used to set alternative ways to control the time of execution for a fleet calculation. Self-adjusting progressive timing is also available, for example increase calculation time with 10 seconds every time an improved route is found.
- Routing with expense (as in money), by setting a cost/distance and a cost/time (typically an hourly cost and cost/km) with an optional startup cost. Can be combined with an Overtime property to make it increasingly costly for routes that takes longer than a specified time. Settings are set for each vehicle, in combination with a default expense.
- New class SingleRoadModifications in RouteSettings to easily make small changes to roads without any changes to the underlying network (i.e. changes are localized to the Router instance used). Very convenient when temporary changes in speed is needed, or when one or more roads needs to be disabled for a route calculation.
- Support for dual cost, typically for when shortest route is wanted with time windows in a fleet route. Can also be used standalone with methods RouteDualCost, MultiRouteDualCostand MakeDualDistanceMatrix, which returns both time(s) and distance(s) in the DualCost struct.
Minor new features
- A RouteNode can now have an allowed or disallowed position within a fleet route, set with property AllowedPosition. Default is Everywhere.
- Convenience property Stops in NodePaths, which returns an array of RouteNode with the stops in the order they are visited.
- Methods SaveXML and FromXML (save to XML and load from XML) has been added to RouteFleetArgs and RouteSettings. Their primary purpose is for support issues.
- Pickup and delivery can now be freely mixed in fleet routes.
- New and improved route callback in RouteSettings called RouteCallback.
- When using a fleet of vehicles or an upper limit for number of vehicles used, the fleet engine will now favor fever vehicles over strictly optimized time/distance.
- Added support for PolylineM when importing from a shapefile (the actual M and Z values are not used by Xtreme Route though).
- Better progress handling for big problems.
- By setting property RemoveFromEndOnly in FleetRouteVehicles to false, and DynamicNumberOfVehicles to true, vehicles from the fleet can be removed even if they are not last in the list or FleetVehicles. The default value of RemoveFromEndOnly is true, so the old behavior is default unless changed.
- New property MinimizeNumberOfVehicles in RouteFleetArgs, which when set makes the fleet route engine focus more on minimizing the number of vehicles used.
- New method, StopAllCalculations in Router class, that gracefully stops all calculations. Use ResetStopAllCalculations to allow calculations again.
- Improved handling and error message for creating initial fleet routes, which can sometimes be problematic with big orders and few big vehicles.
- Optimized memory usage for very big fleet route problem and added RouteFleetArgs.LowMemoryMode for fleet routing
- Properties for specifying maximum allowed wait time and maximum drive time in a fleet route.
Compatibility breaking changes
- The property RouteNode.Demand is removed, use RouteNode.Cargo.Weight instead (Cargo is automatically created when a RouteNode is created).
- The property RouteFleetArgs.VehicleCapacity is removed, use RouteFleetArgs.VehicleCargoCapacity.MaxWeight instead (VehicleCargoCapacity is automatically created when RouteFleetArgs is created).
- The property RouteFleetArgs.FixedVehicles is renamed to RouteFleetArgs.VehicleFleet
- Removed QuickResults property from RouteFleetArgs, use the Timing property instead.
For questions, please contact support@xtremeroute.com.