|
POST
|
Thank you for pointing out the continued need for this improvement. With Pro 2.6 we do not have any new capabilities in this area. I will bring up the need to the team for further consideration at our next planning meeting.
... View more
08-18-2020
09:39 AM
|
3
|
0
|
4370
|
|
POST
|
Hello Rima, Interesting question, I would like to make sure I understand it correctly. By priority you are wanting to designate the set of orders that are visited before any other order on the route that it is assigned, there might be more than one of these high priority orders on a route, and it doesn't matter which route is servicing them just that they are first up in the day. Is that correct? Assuming I have that correct, lets first recap the options you have looked into to give some explanation on each. 1. Revenue - The workflow that you mentioned for revenue is using a slightly different definition for priority. It is for when there are more orders in the problem then can be serviced by the routes available, then the high priority orders will be assigned to routes over lower priority ones. It however does not give preference to the timing of when those orders are visited, just that they are visited. 2. Preserve Route and Relative Sequence - This method would keep the orders towards the beginning of the route but it does allow for orders to be inserted in front of the first order or in between other orders, so it would not guarantee keeping the high priority orders at the very beginning of the route. I am concerned about you getting an error message for this assignment rule but not Preserve Route. If you do not think you should be getting the error message or it is not descriptive enough, we can try to work through that also or you can open a support ticket and we can dig into it more. 3. Preserve Route - This again will just keep the orders on a specific route but does not give any preference to keeping them at the beginning. 4. Anchor First - This does keep the orders at the first of the route but as you have pointed out it only allows for one order per route so it doesn't quite fit what you are looking for with needing a few orders serviced at the very beginning. An option I think will work for you is to put tight time windows on the orders that need to be visited before other orders on the routes. In your example if the four routes were to start at 8:00 am sharp then for the six orders that need to be serviced first, give them a time window between 8:00 and 8:10 am. As long as the max violation time is not set to 0, then the solver can visit these late but will try to meet the time windows as close as possible. Setting the Time Window Violation Importance parameter to High will make the "penalty" for the algorithm to visit these orders late even higher further incentivising visiting them first on the route. Based on your specific problem set up, such as service time and how far away orders are from the depot, you may need to adjust the time windows. Hope this helps, Heather
... View more
08-18-2020
09:20 AM
|
1
|
1
|
2384
|
|
POST
|
With the 24 depots, does the route need to go back to the exact same depot where it started or are you wanting it to have flexibility to go to any of those depots, it just has to be there by the 8 hour mark? Your method of making copies of the routes with a MaxTotalTime of 8 hours is what I would suggest for this scenario in most cases. However, I have suggested in a few cases where breaks have to take place at a certain time and location that it can be modeled using an order with a time window and then either use the assignment rule or specialties to connect it to a specific route. Using revenue for the orders that are breaks can also make sure that those are assigned even if out of the way. Something to experiment with if the first option isn't working the way you need it. Hope that helps, Heather
... View more
08-06-2020
11:22 AM
|
0
|
0
|
1075
|
|
BLOG
|
Hello, It would be great to know a bit more about the problem you are trying to solve with balancing the order count. If you are expecting the routes modeled in the problem to all be used, then you could take the total number of orders and divide by the number of routes to understand what a completely even distribution would be. From there you could add a few to that number and set it as your MaxOrderCount for all routes. That would give the solver a little play in the number of orders on a route but would mostly balance the count among routes. Hope this helps, Heather
... View more
08-06-2020
11:14 AM
|
0
|
0
|
1433
|
|
BLOG
|
It is with great excitement that I announce with ArcGIS Pro 2.6, we have added full ribbon and layer support for the Vehicle Routing Problem. This experience should match workflows similar to the other Network Analyst solvers. We also added a few new tricks to help make things easier to access across all the solvers. The first step is to make a new VRP layer. On the Analysis tab, look for the Network Analysis icon and click on the drop-down. Here you choose one of the Network Analyst solvers and it now includes the Vehicle Routing Problem. At the bottom of this dropdown menu is the network data source that will be used to create the layer. Make sure this points to the correct local network data source or portal location before choosing Vehicle Routing Problem. Looking in the Contents Pane, you should now see the newly created VRP layer. We have made some changes to the VRP feature classes, tables, and fields within the tables compared to what is historically used in ArcMap and our Services. This ArcGIS Pro help page explains the different fields within the tables and feature classes of a VRP layer. If you are used to the schema from these other platforms this help page describes the differences. Let’s, now, look at the new VRP ribbon. In the TOC, select any part of the VRP layer and the VRP contextual tab should appear. Select that VRP tab and you should see the ribbon. Analysis There are a lot of options on this ribbon so let’s break it down by section. Going from left to right, let’s start with the Analysis section. Here you will find a single button called Run. The run button is what actually starts the solve with the layer data and all the parameter settings. If the layer is pointing to ArcGIS Online as its network dataset, then running the solver will consume credits. Input Data The next section of the VRP ribbon is Input Data. This section is devoted to getting data into the sub-layers and -tables for the VRP layer. There are a lot of sub-layers and -tables. So, we have made prominent importing the four main layers: Orders, Depots, Routes and Breaks. At a minimum every VRP layer must define the Orders, Depots, and Routes. These buttons open the Add Locations GP tool, which allows data to be added from a feature class or table. The other sub-layers and -tables are accessed from the two groupings buttons with a dropdown arrow. The last button in this section is the Create Features button. This opens the Create Features Pane used to manually digitize locations on the map. This can also be accessed from the Edit Ribbon. However, when using the button on the VRP ribbon it filters the feature classes that display in the Create Features Pane to those associated with the current layer. The create features button was added to all the Network Analyst solver ribbons. The last thing of note for the Input Data section is that Import Routes and Import Breaks both have a dropdown arrow. Clicking on these dropdowns shows the option of either importing or adding. We have added two new GP tools: Add Vehicle Routing Problem Routes and Add Vehicle Routing Problem Breaks. These two tools help create Routes or Breaks from business constraints by walking through the different parameters. Both will also allow for making multiple copies of the same parameters with one run of the tool. Travel Settings Next in the VRP ribbon is Travel Settings. Here you set the travel mode to be used by the solver. Only time-based impedance travel modes can be used with the VRP solver. Therefore, they are the only options displayed in the Mode dropdown. If you need to tweak the travel mode settings for your model, the small launcher button at the bottom of the Travel Settings group opens the layer property pages to the Travel Mode page. Also, in this section you set the units used for the time and distance-based fields for the whole problem. The units used for these settings do not need to match the units used by the travel mode. Default Date The next section of the ribbon is Default Date. In this group, you indicate what day the problem should use for solving. This is used when only times are given in time window fields. Also, in this group, is a parameter setting new to the ArcGIS Pro Ribbon for all solvers, the Reference Time Zone. This allows you to indicate if the time windows are based on UTC or the time zone at the location. This setting is very important when the locations within a single model span multiple time zones. Output Geometry Next in the VRP ribbon is Output Geometry. This allows you to determine how the route shapes will be drawn. The options include along the road network following the actual path the vehicle will take, straight lines just connecting one location to the next, or no lines at all. This affects only the geometry displayed for the routes. It does not change the actual calculations for how that route will be traversed. Advanced The settings in the Advanced section allow you to influence the solution of the solver. There is extra help to understand each of these in the dropdown. So, if you decide to change these values from the defaults, please take the extra time to read them to understand how the parameters work. Time Window Importance determines how much emphasis the solver places on meeting the time windows vs having the least cost (total time, total distance, etc.) solution. Transit Time Importance is only a useful parameter if Order Pairs are in the problem. If so, it then influences allowing an order to be on the vehicle for longer before it is dropped off to save time or distance (mostly used for transporting packages) vs taking the order more directly to its drop off location (mostly used for transporting people). The last parameter is Spatial Clustering. This allows you to decide if you would prefer a solution that clusters orders onto routes in the same geographic area (such as all in the same neighborhood) or if you would prefer the lowest cost solution allowing routes to cross geographic regions. Directions and Share As The last two sections of the VRP ribbon, Directions and Share As, are all about getting the route direction information to the drivers. The Directions section will allow you to print turn by turn directions for the routes. While, The Share As section creates route layers for ArcGIS Online and used in Navigator. Hopefully this has helped orient you to the new VRP Layer and Ribbon. Checkout our help page for more information. Please reach out if you have any questions.
... View more
07-29-2020
04:11 PM
|
1
|
2
|
3132
|
|
POST
|
Hello, The Query for the Feature Locator Where Clause is for limiting the network edges on which the stops can be located. So to solve the problem one zone at a time you will need to break the orders feature class up by the different zones. It sounds like you have a very big problem. Are you solving for a really large geographic area or do you have a high density of order locations (such as every house)? Heather
... View more
07-27-2020
11:39 AM
|
0
|
0
|
1850
|
|
POST
|
You are correct that a VRP analysis can only use one travel mode at a time. By restricting the problem to just a single travel mode when in reality there are two vehicle types, one with a more restrictive set up then the other, I see two different things that might need to be worked around. The first is that some orders simply can not be reached by the more restrictive vehicle because to get to that order the vehicle must drive on a street that it is not allowed. To overcome this I would first solve the problem with the more restrictive of the travel modes. Any orders that are unreachable by the vehicles with that travel mode will need to be visited by the other vehicle and all the others can be visited by either vehicle type. Then solve the VRP with the less restrictive travel mode and use specialties to restrict the orders that must be on the less restrictive vehicle. The second thing that will need to be considered is the final route paths being optimized for the specific travel mode. To do this once the VRP analysis is done, the route paths can be rerun using the Route solver to get the best path for each travel mode. The VRP analysis will already be done with one of the travel modes so only the routes that will be driven by the other vehicle type will need to be rerun. Hope this helps, Heather
... View more
06-23-2020
09:53 AM
|
2
|
1
|
3083
|
|
POST
|
Hi Justin, I'm all for keeping hair on heads instead of on the floor. Let's see if we can get your model working well again. I again see two options depending on a few settings and preferences for you. 1.) Since you liked the route zone option you could again go with this defining a region for each truck and have multiple copies of that polygon for each of the minor routes you are making for that truck to divide the work among days and morning/afternoon. This might run into similar skipped orders or routes overlapping each other within the region but they would then at least all be done by the same driver and only require defining three zones. 2.) The other options is to use dynamic seed points. This will tell the solver to emphasize clustering orders onto routes based on geographic regions so they are better clustered into regions over looking for the minimum cost. It usually does a really good job of minimizing cost also but just so you understand the difference in the emphasis for the heuristic with this setting. This is set up differently depending on how you are solving the problem. If you are using an ArcMap VRP layer you will need to add a point feature for each of the 30 routes into the map in the feature class called Route Seed Points. It does not matter where these points are, they just have to be in the map and the solver will move them around to the best location for the center of that cluster. You will need to specify the RouteName and then make SeedPointType set to Dynamic for all of them. If you are using the Solve Vehicle Routing Problem GP tool, or one of the ways to call a service then simply make sure that Spatial Cluster Routes is set to True. This will not put any emphasis on keeping the trucks in the same region for all 10 of the minor routes for days and morning/afternoon. If they are all essentially the same you could not predefine which route goes for which truck and then look at the output afterwards and group the routes to trucks based on what is close by geographically. Let me know if you have other questions, Heather
... View more
06-18-2020
11:24 AM
|
0
|
1
|
7323
|
|
POST
|
Hi Justin, Great question. There are a few options for requiring the routes to go back to the depot for a break and they each have their benefits so It might be worth trying both to see what works best for you (and we would love feedback on what you end up doing). 1.) One option is to break the work day into multiple routes per person setting the time portions of those routes appropriately for the time of day such as Justin_Morning has a start time of 8 am and a max total time of 2 hours, Justin_LateMorning has a start time of 10:15 am and a max total time of 1.75 hours, Justin_afternoon has a start time of 1:00 pm with a max total time of 2.75 hours, and Justin_LateAfternoon has a start time of 3:00 pm and a max total time of 2 hours. The start and end depot for all of them would be back at the office forcing the routes for each driver to go back to the office for a morning break, lunch break, and afternoon break. One concern for this is that it will grow the size of the problem substantially, so this works well for smaller fleets but if you have a large problem to begin with it could make the problem too large. This should still do a good job of filling up the routes to get work done efficiently. 2.) Another option when needing a break to take place at a specific location is to insert it as an order. You can use the TimeWindowStart1, TimeWindowEnd1, and MaxViolationTime1 fields to indicate the time of the break and the ServiceTime to indicate how long it is. You will need one order for each route for each break that is needed and then can pair each with the route using the specialties. So following the example above you would have three orders Justin_MorningBreak, Justin_LunchBreak, and Justin_AfternoonBreak with the appropriate time windows. They would each be given and OrderSpecialties value of Justin and then the route Justin would have a RouteSpecialties of Justin. If you see that the solver is not assigning these orders which is a possibility if you have too much work for the day, then I would add in a revenue value for these orders that is more then the revenue for other orders in the problem combined, that will signify to the solver to definitely go to that order. Hope that helps, Heather
... View more
06-18-2020
08:23 AM
|
0
|
3
|
7323
|
|
POST
|
This sounds like an interesting problem. I think we should be able to address your three concerns. 1.) When working over night, it is important to add date information as well as time. So for example you have collection points from 23:00 to 25:00 am, if you add date information into that you would instead input this as 01 June 2020 23:00 am to 02 June 2020 01:00. This lets the solver know that it is a two hour time frame that just happens to span across midnight. If the actual date isn't of importance to you just pick dates that are representative of when you normally run these routes such as spanning from Monday to Tuesday. 2.) When a vehicle can pickup a load from orders, empty the vehicle, and then go back out to more orders, we use route renewals to model the emptying the vehicle. For this you will need to add in the location that the vehicles can be emptied into the depot feature class if it is not already in there. Then add in information in the Route Renewals table. You will need a row for each of your vehicles. You can find more information about Route Renewals in our doc, here. It is important to note that the solver assumes that it can empty the vehicle at the end of the day at the ending depot so if you need to empty the vehicles else where, make that location the ending depot. 3.) I am not sure I full understand this question. If you are saying you would like a way to route the vehicles back to the starting location after emptying out the vehicles, that would best be done as a separate solve using the Route solver. If you are asking for a time dependent ending location (point A if before 9:30 and point B if after 9:30) that is not something our solver currently supports. I think the way I would handle this is to leave the ending depot blank (you have to have a starting depot to do this as we require at least one of the start depot and end depot). This will stop the route at the last order location. You could then determine which ending depot you would like the vehicle to return to and determine that path using the route solver. Alternatively you could solve the VRP problem twice, once using point A as the ending depot and once using point B as the ending depot. Then when looking at the results look at which is correct based on your time restrictions. Hope this helps, Heather
... View more
06-08-2020
10:07 AM
|
1
|
0
|
1901
|
|
POST
|
1. We have scenario based workflow documentation on our to do list and School Bus routing is on the top. 2. There are not other multi settings behaviors for paired orders. 3. Package delivery with some orders having time windows can create situations where it could be useful to offload some packages but not all. Such as a bulky package being delivered earlier then the small package that has a time window late in the day could open up some carrying capacity for that route. Thanks, Heather
... View more
06-05-2020
02:18 PM
|
0
|
0
|
3567
|
|
POST
|
Hello, In looking over your data it seems the solver runs into some tie breaking challenges. Since school bus routing isn't our only use case for order pairs, we have added in the logic of grouping orders for drop-off for the school bus routing type scenario when orders have the same location, same time window, and same MaxTransitTime. So for your data if you add the same MaxTransitTime value to all of your order pairs then you should see the routes pick up everyone before going to the school and then dropping them all off. We typically see a regulation on how long a student can be on the school bus which would make filling that field out necessary but if that is not the case in your area then you can add a large value that is longer then the time for the route such as 1000 minutes. Hope this helps, Heather
... View more
05-13-2020
02:13 PM
|
1
|
2
|
3567
|
|
POST
|
I'm not sure why the solver is not emptying the bus when visiting the schools from the descriptions. It would be helpful to have a look at the data to be able to troubleshoot this more. I would recommend opening a support issue for this so we can securely transfer data. I will work with them to look at the data. Thanks, Heather
... View more
05-01-2020
04:31 PM
|
1
|
4
|
3567
|
|
POST
|
Hi Victor, That sounds like an interesting problem. You could try making the route zone for an area that surrounds the city's downtown and goes far enough out into the suburbs to cover all of the orders leaving a hole in the route zone for the downtown area. Heather
... View more
04-22-2020
02:12 PM
|
0
|
1
|
1901
|
|
POST
|
Hello, What is described by Anna is still accurate for the VRP Solver. It uses a time-neutral travel time for solving and that is what is returned in the NA classes. The directions will reflect the traffic if included in the network dataset. Thanks, Heather
... View more
04-17-2020
08:04 AM
|
0
|
0
|
2442
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 05-31-2023 10:55 AM | |
| 1 | 02-23-2023 07:40 AM | |
| 1 | 04-29-2022 09:39 AM | |
| 1 | 03-02-2022 08:50 AM | |
| 1 | 11-04-2021 11:11 AM |
| Online Status |
Offline
|
| Date Last Visited |
a week ago
|