Our scenario has a truck leaving the depot with an empty roll-off garbage container. The truck will go to a customer location, swap the full container with an empty container, carry the full container to a landfill to empty, then return to the depot to sanitize the container. At this point the truck is available for a second run of the same setup.
We tried adding three orders (pickup location "A", dump location "B", sanitize location "C"), then adding two order pair records (FirstOrder "A"+SecondOrder "B", FirstOrder "B"+SecondOrder "C"). The solver returned an error "Order pairs has a FirstOrderName value for an order that is already paired."
How can we setup a VRP to solve this scenario?
@HeatherMoe @RodneyConger @RobertHaley @KelseyMills
Solved! Go to Solution.
Hi @GarrettMelvin The VRP doesn’t support chaining pairs. You might try using a single pair that links the customer location with the landfill and force the trip back to the depot using capacities. Your landfill order fills the truck and forces a renewal.
Hi @GarrettMelvin Something along the here is what i had in mind. Each of the points below is labeled with the order name and the solved sequence. The Depot is labeled with the sequences of the depot visits (1, 5, and 9)
The route has a capacity of 1. It begins at the depot empty. it travels to "PU2" and picks up an order with pickup quantity = 1. PU2 is paired with DEL2 at the landfill, it visits there next with sequence 3. After if services the delivery at the landfill, it picks up another order (assigned by the VRP) at the landfill with pick up quantity 1 - which fills the vehicle again. Next it visits the Depot to renew as sequence 5. It then travels to PU1 to fill the capacity again. PU1 is paired with DEL1 at the landfill and that's sequence 7. Another landfill order with pick up quantity 1 is serviced as sequence 8 and that forces the vehicle back to the depot to renew again as sequence 9.
Hi @GarrettMelvin The VRP doesn’t support chaining pairs. You might try using a single pair that links the customer location with the landfill and force the trip back to the depot using capacities. Your landfill order fills the truck and forces a renewal.
Thanks @RodneyConger1. We created a "force landfill" order for each customer pair order, but the solve did not return a feasible solution (some routes serviced only "force landfill" orders, some routes serviced customer orders without a "force landfill"). We changed the setup to have one "force landfill" order for each route, and setup specialties so they would stay only one per route. We then added in time windows, revenue, and renewals, and the resulting solve produced an output where the "force landfill" orders were (mostly) in the feasible sequence. The only instances of infeasible sequence was for routes that were unable to make a 2 customer serviced route, in which case a sanitize run is unnecessary. Thank you.
Hi @GarrettMelvin Something along the here is what i had in mind. Each of the points below is labeled with the order name and the solved sequence. The Depot is labeled with the sequences of the depot visits (1, 5, and 9)
The route has a capacity of 1. It begins at the depot empty. it travels to "PU2" and picks up an order with pickup quantity = 1. PU2 is paired with DEL2 at the landfill, it visits there next with sequence 3. After if services the delivery at the landfill, it picks up another order (assigned by the VRP) at the landfill with pick up quantity 1 - which fills the vehicle again. Next it visits the Depot to renew as sequence 5. It then travels to PU1 to fill the capacity again. PU1 is paired with DEL1 at the landfill and that's sequence 7. Another landfill order with pick up quantity 1 is serviced as sequence 8 and that forces the vehicle back to the depot to renew again as sequence 9.
Thank you @RodneyConger1. I would add that with multiple routes and additional customers, adding in LF orders for each route and grouping together through specialties helps to prevent routes from servicing only LF orders.
We have a similar working use case where pickups are made at one customer, delivered to another customer, after which a truck wash at the depot is required. There are multiple locations for pickup and delivery customers. Our approach is a two-solve solution. First we add all routes with a max order count of 4 (knowing that most of the time only two pickups and deliveries is feasible with then available time constraints); add pickup and delivery orders with assignment rule override, quantities of 1, and order pairs; and add route renewals. We also add in a wash order at each delivery location with a pickup quantity of 1 and an assignment rule of exclude. The naming convention is order1_p (for pickup), order1_d (for delivery), and order1_w (for wash). The first VRP solve assigns two sets of paired orders to each route. We update assignment rule for routed orders to Preserve Route, and route max order count to 6. We created a script that identifies route name for each delivery order, and updates the wash order route name to the appropriate value, and updates assignment rule from exclude to preserve route. We then run a second solve, and the output routes all wash orders after the pickup/delivery pair, and forces the renewal, essentially creating a three "paired order" situation.
Do you have any suggestions to improve this work flow?