NGC | Catalog
CatalogCollectionsRoute Optimization

Route Optimization

Logo for Route Optimization
Features
Description
A collections of resources related to route optimization with NVIDIA cuOpt
Curator
NVIDIA
Modified
April 4, 2023
Containers
Sorry, your browser does not support inline SVG.
Helm Charts
Sorry, your browser does not support inline SVG.
Models
Sorry, your browser does not support inline SVG.
Resources
Sorry, your browser does not support inline SVG.

NVIDIA cuOptβ„’ is an Operations Research optimization API using AI to help developers create complex, real-time fleet routing solutions.



Key features of NVIDIA cuOpt:

  • Dynamic Rerouting : Rerun models and adjust for changes like down drivers, inoperable vehicles, traffic/weather disruptions, and the addition of new ordersβ€”all within SLA time constraints. Route 1,000 packages in 10 seconds instead of 20 minutes (that’s 120X faster), with the same level of accuracy.

  • World-Record Accuracy : Achieve world-record accuracy with a 2.98% error gap on the Gehring & Homberger benchmark.

  • Scale Seamlessly : Scale out to 1000s of nodes to facilitate computationally heavy use cases. NVIDIA cuOpt performs better than SOTA solutions to address innovative use cases not otherwise possible today.

This NGC collection contains a containerized version of the cuOpt library that can be run as a Python SDK or RESTful microservice. In addition, a helm chart is made available for Kubernetes based deployments.

Example notebooks and deployment scripts can be found on GitHub : NVIDIA/cuOpt-Resources

Latest Release

Change Log for 22.12
cuOpt 22.12 (15 Dec 2022)

🚨 Breaking Changes

  • The add_cost_matrix endpoint in the microserver is changed to set_cost_matrix.

πŸ› Bug Fixes

  • The cloud scripts are reverted to use Ansible 6.0.0 in the cloud-native-stack installation to work-around the CNS install failure in Ansible 7.0.0.
  • A bug is fixed in the update_task_location endpoint’s validation on the microserver side.

πŸ“– Documentation

πŸš€ New Features

  • Vehicle-dependent service times.
  • Provision for limiting the amount of time a vehicle can work, including its travel time. This is analogous to maximum cost per vehicle.
  • Enhanced objective functions minimize variance of route sizes and route service times.
  • Task IDs for identifying tasks on the microserver.

πŸ› οΈ Improvements

  • Allow infeasible solutions in local search and make them feasible through enhanced heuristics.
  • Cycle finder ported to the GPU.
  • Enhance validation for checking conflicts between break time windows and vehicle time windows.
  • Improved heuristics for PDP use cases.
  • New version check applied to cuOpt microserver.
  • New tests for validating the cloud scripts.
  • New microserver performance tests.
Change Log for 22.10.01
cuOpt 22.10.01 (1 Nov 2022)

🚨 Breaking Changes

πŸ› Bug Fixes

  • Hot fixes on handling break time and order time windows

πŸ“– Documentation

πŸš€ New Features

πŸ› οΈ Improvements

Change Log for 22.10
cuOpt 22.10.00 (21 Oct 2022)

🚨 Breaking Changes

  • Support drop infeasible orders feature in the cuOpt microservice and Python library
  • Remove the limitation that the first order location should be corresponding to depot
  • Multi cost matrix support in the cuOpt microserver
  • Solver API code refactoring for consistent naming and modularization

πŸ› Bug Fixes

  • Fix a bug in finding the farthest node as a seed for insertion
  • Initialize per thread objective values when objective functions are used
  • Use 32 bit integers to represent demand and capacity to avoid overflowing
  • Do not insert order nodes that have conflicting time windows with breaks to avoid infeasible solutions

πŸ“– Documentation

  • Update docs with Nvidia docs review and API changes

πŸš€ New Features

  • Support drop infeasible orders feature in the cuOpt microservice and Python library
  • Added support for mixed fleet max cost per vehicle
  • Implement order priorities in the context of drop infeasible orders feature
  • cuOpt dashboard for routing results visualization

πŸ› οΈ Improvements

  • Breaks issue with vehicle time windows
  • Solver API code refactoring for consistent naming and modularization
  • Add arrival stamp, Task definition, update server display
  • Add job priority support to the cuOpt microserver
  • Adds vehicle order match and order vehicle match support to server
  • Improvements in Quality-of-Results (QoR) for pickup-and-delivery
  • Add type casting warning
  • Updating for upcoming raft changes to mdspan/mdarray/span includes
  • Remove the limitation that the first order location should be corresponding to depot
  • Multi cost matrix support in the cuOpt microserver
Change Log for 22.08
cuOpt 22.08.00 (15 Aug 2022)

🚨 Breaking Changes

  • Fix server on handling pick-up and delivery (#612)
  • Run only relevant tests based on the ChangeList (#592)

πŸ› Bug Fixes

  • Fix python tests for max lateness and max distance (#648)
  • Reverting to kmeans_deprecated (#622)
  • Fix server on handling pick-up and delivery (#612)
  • Update dependencies to 22.08 and add version update script (#604)
  • Fix drop infeasible orders option (#599)
  • Fix race condition in insertion heuristic (#593)
  • Use order locations when break locations are set (#590)
  • Fix notebook cost matrix image (#589)
  • Fix file extensions in handling PDP test cases (#575)

πŸ“– Documentation

  • Adding examples to docs and updating docs (#563)

πŸš€ New Features

  • Add a notebook to demonstrate the usage of multi cost matrix for mixed fleet modeling (#627)
  • Implement vehicle to order matching constraints (#609)
  • Configfile save (#607)
  • Adds multi depot, vehicle break and precedence constraint support to server (#588)
  • Add support for vehicle types and multiple cost/constraint matrices (#569)
  • Implement a script to model dynamic optimization in the context of pickup and delivery problem (#561)
  • cuOpt available in launchpad

πŸ› οΈ Improvements

  • New Pick-up and Delivery algorithm with improved accuracy (#524)
  • Make vehicle order matching API consistent with other APIs (#635)
  • Adding container environment set-up scripts and utilities for running container (#620)
  • Feature and API testing in python (#616)
  • Enable codecoverage for cuOpt Python (#611)
  • Add an option to disable tabu search in SAT solver (#610)
  • Update style checks and add pre-commit support (#606)
  • Adds sync endpoint to server and supports order locations (#603)
  • Pin max version of cuda-python to 11.7.0 (#595)
  • Run only relevant tests based on the ChangeList (#592)
  • Adds max distance per route, objective function and skip first trip support to async server (#579)
  • Add container builder (#574)

Documentation

Additional Resources

NVIDIA also provides a course on the basics of using cuOpt through our Deep Learning Institute platform. Users can work with cuOpt interactively on hardware provided by NVIDIA hosted in the cloud.

Access the course here. Users must have an developer account and be signed in.

By pulling and using the containers or Helm charts, you accept the terms and conditions of this End User License Agreement.