NVIDIA / NVIDIA/cuopt

[FEA] Native maximum ride time constraint for Pickup & Delivery (DARP)

Open
#1,490 3 comments 0 reactions 1 assignee View on GitHub

@tmckayus is already working on this.

Since Jun 30, 2026.

awaiting response feature request
Dominant language
Cuda
Stars
1k
Forks
233
Avg merge
4d 4h
Merged PRs (30d)
95

Description

Is your feature request related to a problem? Please describe.
When modeling Dial-a-Ride Problems (DARP) with cuOpt's pickup & delivery feature, there is no native way to enforce a maximum ride time (maximum in-vehicle time) per order: the elapsed time between actual pickup service start and actual dropoff service start must not exceed a threshold T_max[i].
Static task_time_windows cannot correctly express this constraint, because tightening the dropoff window only approximates it. If the pickup happens late within its own window, the effective ride time can still exceed T_max, or the window may become infeasible/over-constrained when pickup happens early.
This is discussed in #1467, where another user (food delivery use case, hot food delivery time limits) confirmed they have the same need.

Describe the solution you'd like
A native per-order (or per-vehicle-type) maximum ride time constraint (e.g. as a dynamic constraint linking pickup and dropoff actual service times, not just static windows). Ideally exposed as an additional parameter alongside the existing pickup & delivery pair configuration (e.g. max_ride_time per order, analogous to pickup_delivery_pairs).

Describe alternatives you've considered
Setting the dropoff time window as [earliest_pickup + min_travel_time, latest_pickup + T_max]: gives only a conservative upper bound and doesn't enforce the constraint correctly when pickup timing varies within its own window.

Additional context
Use case: DARP-style demand-responsive transit scheduling, where passenger comfort/regulatory constraints cap the in-vehicle ride time. Happy to discuss/help test if this is on the roadmap.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.