We are trying to solve the following routing problem.
We have 2 destinations. We can call them A and B.
We have 20 individuals. 10 want to go to A and 10 want to go to B.
We everyone needs to arrive at their destination between 8AM and 10AM.
We have 2 vans that each can carry 5 passengers. We have one assigned to A and one to B.
the VRP creates one route for each van picking up 5 passengers and taking them to A and B. It does not make any more runs even though there is plenty of time for both vans to drop of the passengers, go back and get more.
We have tried route renewals along with a lot of other settings with no luck. Is there a specific way this should be done?
To support multiple runs with VRP, one approach is to define 4 routes in total—2 for each destination. For each destination (A and B), the first route should have StartDepotName as the origin and EndDepotName as A or B. The second route should have StartDepotName as A or B and EndDepotName also as A or B. This simulates the van returning to the origin, picking up the remaining 5 individuals, and heading back to the same destination. Each route should have Capacity_1 set to 5, matching the van’s capacity.
Alternatively, to better represent the pickup and drop-off structure, you can create two order locations for each individual: one where they are picked up and one where they are dropped off. The drop-off locations would be at A or B, so you'd have 10 overlapping drop-off orders at each location. These pickup and drop-off points can then be paired using the Order Pairs table. For this setup, the pickup location should have PickupQuantity_1 set to 1, and the drop-off location should have DeliveryQuantity_1 set to 1. This lets the solver optimize pickup and drop-off scheduling, and it may result in mixed routes where passengers going to both A and B are served on the same trip if that’s more efficient.
If you’re trying to use the Route Renewals setting, I’d be interested to see how your Route Renewals table is configured—especially to ensure it allows enough turnaround time and correctly specifies the depot as the renewal location.
Also, just to check: have you possibly set MaxOrderCount to 5 on your routes? If so, that might be unnecessarily restricting the solver. It’s better to control capacity using the Quantity and Capacity fields instead.
Let me know more about your setup and I’d be happy to dig into it further.
Thanks for taking the time and responding. I first wanted explain that I highly simplified the problem.
To answer your first approach, ideally we don't know which people should be grouped in the first pick up and which ones in the second. We also don't know how long it takes the first group to get to their destination. To make the second run start after drop off and not before (since in reality there is only one van) we would have to know when the first run is complete.
Your second option appears to be suggesting order pairs, which in my opinion is the way it should work. But it doesn't. According to ESRI and online research that I have done. The unsatisfying answer seems to be the ESRI routing engine does not support route renewals when used with ordered pairs. The engine focuses on assigning as many orders to the route without making any attempt to pickup other orders in a second run.
This is what we have also observed during our weeks of testing. It will pickup 5 for each route, and leave the reset with errors. If we increase the capacity to 7. It will pick up 7 and leave 3. In fact, if we set capacity to 1 it will pick up 1 and leave 9 with errors.
The main purpose of my post was to see if anyone has successfully used order pairs with route renewals. The reason for asking is because there is nothing in the documentation that states order pairs and route renewals don't work with each other. So far, I just have the online posts saying they seem to not work with each other and tech support telling me that is probably what is happening.
Hi FredHejazi,
Thanks again for your detailed message. I took some time to replicate the scenario you described, focusing specifically on using Order Pairs only (without route renewal).
Here’s what I did:
Created 10 pickup-drop-off pairs for each destination (Location A and Location B).
For each person:
Routes were constrained only by MaxCapacity, which was set appropriately (e.g., 5), with no route renewal enabled. The constraint MaxOrderCount is a required field for VRP so in this case it needs to be set high enough to not artificially limit the problem. It will limit the total number of order locations (both pickup and drop off counted separately) for a route. It can be set to the total number of orders in the problem.
In this setup, the routing engine correctly scheduled multiple trips to serve all orders across the route (e.g., first group dropped off before starting the second group), without returning to the depot between runs.
I’ve shared screenshots of my project settings for reference. The orders labeled P1–P10 represent people going to Location A, and O1–O10 represent those going to Location B.
Also, as mentioned earlier, for the second approach you were testing, please double-check the route settings:
If you want us to take a closer look at your specific setup, you can open a support ticket and include the names:
This will allow the customer service group to share any necessary data with me confidentially.
Let me know how it goes or if you'd like help analyzing your scenario directly.