[FEA] Native maximum ride time constraint for Pickup & Delivery (DARP)
@tmckayus is already working on this.
Since Jun 30, 2026.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.