Hello. Recently I am trying to solve a problem using VRP extension about the delivery and pickup of railway containers transported by trucks between railway terminals (Depots) and the owners of the goods (Orders), in which I need to find a way to tell VRP that goods of certain orders should come from a certain depot and goods of certain orders should be delivered to another depot. In ArcGIS community I found this post in which you suggested using Route Specialties to achieve this but in that problem trucks (Routes) were assigned to a depot in advance, which means the end depot of all the trucks are fixed. So I use Order Pairs, which is another way you suggest if you want to keep the trucks free to get to any depots. Here is the way I use:
Create an order at the location of the depot as a dummy depot point to be paired with the orders. Since one dummy depot can only be paired with one order point, I created dummy depot points for each order that need to be paired.
For those delivery order points, the first order should be the dummy depot and the second order should be the order point.
For those pickup order points, the first order should be the order point and the second order should be the dummy depot point.
And to make the dummy depot points possible to be paired with, I gave them pickup and delivery quantities opposite to the order points the are to be paired with.
Order1(Delivery)[Delivery=1, Pickup=0]→Depot1(Delivery)1[Delivery=0, Pickup=1]
Order3(Pickup)[Delivery=0, Pickup=1]→Depot1(Pickup)1[Delivery=1, Pickup=0]
By importing this table of order pairs, I run the VRP and got my results.
Here are what I’d like to know:
when it should be:
If possible, could you give me some advice on how to prevent this kind of problem from happening?
Thank you in advance for your kind help.
For order pairs, the first order must happen before the second order. This means that in you example you should never see the Depot1(Pickup)1 before its corresponding Order3(Pickup) since they are paired together with the order being the first of the pair. What you could see is Depot1(Delivery)1 --> Order3(Pickup) --> Depot1(Pickup)1 --> Order1(Delivery).
A parameter that might be useful for you to adjust is called Transit Time Importance (found in the Advance section in ArcGIS Pro) or referred to as excess_transit_factor in the REST API. This will influence the allowable additional transit time between the first order and the second order. If you prefer the route go directly from the first order in the pair to the second then set this value to High, or if you want to allow extra time by picking up additional orders before going to the second order in the pair then set this value to Low. When set to Low the main focus is on creating an efficient route so the amount of time between the first and second order in the pair is less important. Medium tries to strike that balance between amount of time on the vehicle and overall efficiency of the route.
Some other thoughts on how this could be handled depending on the size and complexity of the problem:
1. Using the specialties for corresponding to the starting depot and the ending depot with the orders having the matching designations. Then create duplicate routes at each starting depot for each of the possible ending depots. When given extra routes then are needed the solver should only pick-out the best needed routes for the solution.
2. Solve the delivery problem and the pickup problem in two different solves. For delivering to orders from a required start depot the routes can have a virtual ending depot. Similarly for picking up at the orders and delivering to a required end depot the routes can have a virtual start depot. Then once both problems are solved you can pair together the routes and then resolve to get an optimized sequencing with preserving the route.