Hi Jay,I am actually having a similar issue. Similar question, how do you force it to use all Routes? I am having a VRP layer with buses with a capacity of 14 and order pairs to particular destinations. I assign multiple routes but not all of them are utilized. Any thoughts on how to make sure they are all used? David
The VRP Solver is set up to take lots of extra routes and then only use what is necessary to most efficiently solve the problem. If you are wanting all of the routes to be used you can change whichever max value for the routes that makes sense for limiting them. One that makes sense intuitively without knowing you exact problem is to limit the max order count so that in order to fulfill all of the orders every route needs to be used. So, for example, if you have 50 orders and 5 routes you could say that each route has a max order count of 12 and then it will force the solver to use all 5 routes to service all 50 orders.
Another option could be to solve the problem once and see what the total time used for all of the routes and then limit the Max Total Time for a second solve so again all of the routes are needed. So, for example, if for the first solve three out of the five routes were used and for all three routes a total of three hours were needed to service all of the orders then each route could be given a Max Total Time of 40 mins for the next solve and it should force all five of them to be used. A similar approach can be used for distance. The time and distance options would allow for more flexibility in the number of orders each route could go to but it wouldn’t necessarily guarantee all the routes would be used. It would depend on the way the rest of the problem was modeled and the times and distances between orders but should work for a majority of cases.
Heather
Hi Heather, This helps me reformulate my problem. I know my exact number of orders and buses, so I think I just need to set the MaxOrderCount to be (orders/bus_count)+1 to assume some near equal distribution of effort. I might need to set it to be the minimum of the capacity of the vehicles in case they divide labor in ways that don't make sense. (If I have 20 riders, and the vehicles have a capacity of 12, maybe really we need just need to account for that in some way). I will have to experiment on this. Thanks Heather! I greatly appreciate your assistance. David
Hi Heather, This solved my immediate problem but created more questions. Below is a data table of resulting average travel times from the VRP solver. We are trying to create a tool that can help with different scenarios of paratransit ridership coupled with bus allocations (number of routes). The numbers derived here are the averages of the "TotalTime" values for each route. Something we noticed was that for lower ridership outputs we saw some type of solve instability whenever the number of seats surpassed the number of total riders. For example each bus has 14 seats, and as a result our results make sense when we get to 2 buses with 20 riders. When we get to 3 buses though, we essentially could have "1 extra" bus (as 2 buses could pick everyone up in one load). I am trying to understand conceptually why the average TotalTime could increase when 3 routes are assigned. I have tried a multitude of MaxOrderCount approaches including:
1. max(Orders/Bus_Count, BusCapacity)
2. max(Orders/BusCount, BusCapacity*.75)
3. Orders/BusCount
Is this a result of how the solver workers? Am I missing a concept? Do you have any ideas on what to check for that causes this instability? These results are useful and give us a launching point for future analysis, but I am trying to understand this tools various parameters to determine what is relevant.Thanks for your help so far!
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.