Vehicle Routing Problem: Sirviendo pedidos mediante una flota de
Transcripción
Vehicle Routing Problem: Sirviendo pedidos mediante una flota de
MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Vehicle Routing Problem: Sirviendo pedidos mediante una flota de vehículos En este ejercicio, buscaremos las rutas óptimas para una flota de vehículos, operados por una compañía de distribución, para entregar mercancía desde un centro de distribución a un conjunto de 25 tiendas de alimentación. Cada tienda tiene una demanda específica de productos y cada camión tiene una capacidad determinada de transporte. El objetivo principal es asignar los camiones de la flota al conjunto de tiendas para llevar a cabo las entregas secuencialmente, de manera que se minimicen los costes globales del tranporte. Esto se puede llevar a cabo solucionando un problema de rutas para vehículos (Vehicle Routing Problem – VRP). Una vez la secuencia de entregas haya sido determinada, generaremos un informe de direcciones tramo a tramo, que podría ser distribuido electrónicamente o impreso para los conductores de los camiones. Preparando la visualización 1. Abrimos Vehicle_Routing_Problem.mxd en ArcMap. 2. Nos aseguramos de tener activada la extensión Network Analyst. 3. Abrimos la barra de análisis de Network Analyst (Customize > Toolbars > Network Analyst). 4. Mostramos la ventana de Network Analyst mediante el botón correspondiente de la barra de herramientas. La ventana de Network Analyst puede colocarse donde nos vaya mejor. En este caso, la hemos situado debajo de la tabla de contenidos: Creando la capa de análisis de Vehicle Routing Problem 5. Clicamos en Network Analyst en la barra de herramientas Network Analyst y clicamos en New Vehicle Routing Problem. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis La capa de análisis para el problema de rutas de vehículos se añade a la ventana Network Analyst. Los distintos elementos (Orders, Depots, Routes, Depot Visits, Breaks, Route Zones, Route Seed Points, Route Renewals, Specialties, Order Pairs, Point Barriers, Line Barriers, y Polygon Barriers) estan vacíos. La capa de análisis se añade tambien a la Tabla de Contenidos. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Añadiendo los pedidos (orders) Añadiremos las localizaciones de las tiendas a la clase Orders. Nos podemos imaginar las orders como los pedidos realizados, ya que cada tienda ha solicitado productos que deben ser entregados desde el centro de distribución. Los miembros de la clase Orders serán al final las distintas paradas a lo largo de las rutas de los vehículos. Las localizaciones de las tiendas ya están añadidas en el mapa en la capa Stores. Los atributos de las tiendas contienen información sobre el peso total de los productos demandados por cada tienda, la ventana temporal dentro de la cual debe realizarse la entrega y el tiempo de servicio previsto para cada entrega (el tiempo de descarga de los productos). 6. En la ventana Network Analyst clicamos con el botón derecho sobre Orders (0) y elegimos Load Locations. Se abre la ventana Load Locations. 7. Seleccionamos Stores de la lista desplegable Load Locations. 8. Nos aseguramos que la propiedad Name se ha asociado al campo Name, y que la propiedad ServiceTime se ha asociado al campo ServiceTime. 9. Seleccionamos en Field el campo TimeStart1 para la propiedad TimeWindowStart1. 10. Seleccionamos en Field el campo TimeEnd1 para la propiedad TimeWindowEnd1. 11. Seleccionamos en Field el campo Demand para la propiedad DeliveryQuantities. 12. Indicamos un 0 como el valor por defecto en la propiedad MaxViolationTime1. Esto indica que la ventana temporal no puede ser ignorada. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis 13. Clicamos en OK. Las 25 tiendas son listadas en la ventana Network Analyst bajo Orders y se visualizan en el mapa. Añadiendo los almacenes (Depots) Los productos son entregados desde un único centro de distribución, que se encuentra representado por la capa DistributionCenter. El centro de distribución opera entre las 8:00 a.m. y las 5:00 p.m. Vamos a añadir el centro de distribución en Depots. 14. En la ventana Network Analyst, clicamos con el botón derecho en Depots (0) elegimos Load Locations. Se abre la ventana Load Locations. 15. Seleccionamos DistributionCenter de la lista de Load Locations. 16. Nos aseguramos que la propiedad Name se ha asociado al campo Name. 17. Escribimos 8 AM en Default Value para la propiedad TimeWindowStart1. 18. Escribimos 5 PM en Default Value para la propiedad TimeWindowEnd1. 19. Clicamos en OK. Un centro de distribución se lista en la ventana Network Analyst en Depots y se visualiza en el mapa. Añadiendo las Rutas (Routes) El centro de distribución cuenta con tres camiones, cada uno de los cuales con una capacidad máxima de 15000 Kgs de productos. Habrá que añadir tres rutas (una para cada camión) y establecer las propiedades de las rutas en base a los procedimientos operacionales del centro de distribución. 20. En la ventana Network Analyst, clicar con el botón derecho en Routes (0) y elegir Add Item. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Una nueva ruta, Item 1, se ha añadido bajo la clase Routes en la ventana Network Analyst window, y la ventana de propiedades de la ruta se abre. 21. En la ventana Properties, has que especificar los atributos para la ruta que se muestran a continuación. Lo atributos que no aparecen en la tabla hay que dejarlos con su valor por defecto. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis 22. Clicamos en OK. Una ruta nueva, llamada Truck_1, se añade a la clase de rutas en la ventana Network Analyst. Como los tres camiones on idénticos, podemos realizar dos copias de la ruta creada para el primer camión y cambiarles el nombre. 23. Clicamos con el botón derecho en el objeto de ruta Truck_1 en la ventana Network Analyst y elegimos Copy. 24. Clicamos con el botón derecho en la clase Route (1) en la ventana Network Analyst y elegimos Paste. 25. Repetimos el proceso para crear un tercer objeto de ruta. 26. Hacemos doble click sobre el segundo Truck_1 de la lista. Se abre la ventana de propiedades. 27. Clicamos en la propiedad Name y escribimos Truck_2. 28. Pulsamos ENTER dos veces. Se asigna a la ruta un nombre único y se cierra la ventana. 29. Usamos el mismo procedimiento para renombrar la tercera ruta como Truck_3. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Estableciendo las propiedades para el análisis 30. Clicamos el botón de propiedades de la capa de análisis en la ventana Network Analyst. 31. Clicamos en la pestaña Analysis Settings. 32. Nos aseguramos de que en Time Attribute tenemos TravelTime (Minutes) seleccionado. 33. Clicamos en Distance Attribute y elegimos Meters. Este atributo se usa para calcular las distancias, aunque lo que se minimiza es el tiempo. 34. Indicamos en Default Date el Day of Week. Elegimos Monday en el desplegable. 35. Nos aseguramos de que en Capacity Count hay el valor 1. Esto indica que los productos a entregar tienen sólo una unidad de medida, en este caso el peso. En otros casos podríamos tener más, como, por ejemplo, pero y volumen. 36. Nos aseguramos de que Minutes está seleccionado en Time Field Units. Esto indica que todos los atributos de tiempo se expresan en minutos. 37. Nos aseguramos de que Distance Field Units indica Kilometers. Esto indica que todas las distancias se indican en kilómetros. 38. Como los camiones tienen dificultades para realizar giros de 180º, establecemos UTurns at Junctions como Not Allowed. 39. Seleccionamos Straight Line en el desplegable Output Shape Type. Esto sólo afecta la visualización de las rutas, y no el resultado del análisis. 40. Nos aseguramos de que Use Hierarchy está marcado. 41. En Restrictions, nos aseguramos de que RestrictedTurns y Oneway están marcados. 42. Dejamos los valores por defecto en Directions. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis 43. Clicamos en OK. Ejecutar el proceso para determinar la mejor asignación de ruta y secuencia de reparto 44. Clicamos en el botón Solve en la barra de herramientas Network Analyst. El solucionador VRP calcula las tres rutas necesarias para el reparto y dibuja las líneas que conectan los distintos puntos de reparto. Cada ruta empieza y termina en el centro de distribución. Determinar las direcciones giro a giro para las rutas 45. Clicamos con el botón derecho en Routes (3) en la ventana Network Analyst y clicar en Selection > Clear Selected Features. 46. Clicamos en el botón de la ventana de direccions en la barra de herramientas Network Analyst. Se abre la ventana de direccions. 47. Podemos exportas el resultado como un layer (<filename>.lyr) clicando con el botón derecho sobre Vehicle Routing Problem en la tabla de contenidos y eligiendo Save As Layer File. Esto guarda el resultado en el disco duro para poder usarlo posteriormente en otro mapa. 48. Cerramos la ventana de direcciones. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Realizando cambios a la solución existente para plantear un escenario distinto La solución obtenida hasta ahora funciona bien. Sin embargo, al cabo de unas semanas, el conductor del segundo camión se toma vacaciones. Ahora, la compañía de distribución debe realizar las mismas entregas pero sólo con dos camiones. Para conseguirlo, deciden pagar horas extra a los dos conductores restantes y darles un descanso pagado durante el día. Adicionalmente, la empresa adquiere dos centros de distribución satélites, que pueden ser usados por los camiones para reponer los productos sin tener que volver al centro de distribución principal. Vamos a ver como analizamos de nuevo el problema con estas nuevas condiciones. Borrando una ruta existente de la solución 49. En la ventana Network Analyst, clicamos con el botón derecho sobre Truck_2 en la clase Routes y elegimos Delete. Añadiendo puntos de repuesto (route renewals) Los dos centros de distribución satélite que la empresa ha adquirido están en las siguientes direcciones: 800 Brush Street y 100 OldCounty Road, y sirven de punto de repuesto de la mercancía. Los camiones pueden reponer ahí y ahorrar tiempo al no tener que volver al centro de distribución principal. Añadiremos esos puntos de repuesto mediante geocodificación. Las rutas que pueden reponer mercancías y el tiempo de servicio se especifican en la clase Route Renewals. 50. En la ventana Network Analyst, clica con el botón derecho en Depots (1) y elige Find Address. 51. Elige SanFranciscoLocator de la lista desplegable Choose an address locator. 52. En el cuadro Street or Intersection, escribe 800 Brush St. 53. Haz clic en Find. El localizador de direcciones SanFranciscoLocator, encuentra la dirección y la muestra en la ventana inferior. 54. Clica con el botón derecho en el resultado y elige Add as Network Analysis Object. La localización de la dirección se añade como depot en la ventana Network Analyst y en el mapa. 55. En el cuadro Street or Intersection, escribe ahora 100 Old County Rd. 56. Haz clic en Find. El localizador de direcciones SanFranciscoLocator, encuentra la dirección y la muestra en la ventana inferior. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis 57. Clica con el botón derecho en el resultado y elige Add as Network Analysis Object. La localización de la dirección se añade como tercer depot en la ventana Network Analyst y en el mapa. 58. Cierra el cuadro de diálogo Find. Ambos camiones pueden reponer su mercancía en ambas localizaciones, por lo que hay que asociarlos a ellas. El solucionador decidirá en cada momento cual es la mejor situada para ser usada por cada camión. 59. En la ventana Network Analyst, clica con el botón derecho en Route Renewals (0) y clica Add Item. Se añade un nuevo objeto, Item1, en la clase Route Renewals de la ventana Network Analyst, y se abre la ventana de propiedades. 60. Especificar en la ventana de propiedades los siguientes atributos: 61. Clicamos en OK. Un nuevo objeto route renewal, 800 Brush St, aparece listado bajo el elemento Truck_1 en la ventana Network Analyst. 62. Seguir los tres últimos pasos para añadir tres objetos tipo route renewal más, de forma que ambos camiones puedan reponer en ambas localizaciones. La ventana Network Analyst debería tener, ahora, dos nuevos objetos tipo route renewal listados con los ítems Truck_1 y Truck_3, respectivamente. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Modificando las rutas para incluir las horas extraordinarias Para poder llevar a cabo el exceso de trabajo, la empresa quiere eliminar las restricciones de tiempo máximo (maximum time), de tiempo de viaje máximo (maximum travel time), y de distancia máxima (maximum distance) para las rutas. Como los conductores tendrán que trabajar más que antes, tienen una paga extra de 18$ la hora por las horas que sobrepasen las seis horas trabajadas. Vamos a introducir todos estos cambios. 63. En la ventana Network Analyst, en la clase Routes, hacer doble clic en Truck_1. Se habre la ventana de propiedades. Introducir los cambios que indica la siguiente tabla: Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis 64. Hacer clic en OK. 65. Repetir los últimos tres pasos para Truck_3. Añadiendo los descansos Ya que los trabajadores harán más horas, necesitarán un descanso de media hora durante su jornada laboral. Vamos a especificarlo. 66. En la ventana Network Analyst, hacer clic con el botón derecho en Breaks (0) y elegir Add Item. Se abre la ventana de propiedades. Especificar los atributos como se indica en la siguiente tabla: Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis 67. Clicar en OK. 68. Repetimos los tres pasos anteriores, pero entrando Truck_3 como nombre. En la ventana Network Analyst hay ahora dos objetos en la clase Breaks: Truck_1 and Truck_3. Determinando la solución 69. Clicar en el botón Solve de la barra de herramientas Network Analyst. El solucionador VRP calcula las dos rutas necesarias para el reparto y dibuja las líneas que conectan los distintos puntos de reparto. Cada ruta empieza y termina en el centro de distribución, sirve unas cuantas tiendas en su recorrido, visita un centro de reposición para reponer mercancía, continua el servicio a las tiendas que faltan y, finalmente, vuelve al centro de distribución. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Esta solución es satisfactoria, pero parece ser que el conductor del Truck_1 prefiere conducir por el downtown, mientras que el conductor del Truck_3 prefiere la zona de East Bay. La empresa quiere buscar una nueva solución para satisfacer tambien las preferencias de los conductores. Vamos a tenerlo en cuenta, pues. Añadiendo Route seed points En este paso vamos a añadir route seed points para ambos camiones mediante la geocodificación de direcciones. Tambien podrían importarse de una Feature Class de puntos o crearlos interactivamente con la herramienta Create Network Location. 70. En la ventana Network Analyst, clicamos con el botón derecho en Route Seed Points (0) y elegimos Find Address. Se abre la ventana de diálogo de Find. 71. En el cuadro Street or Intersection, escribe 278 Dorantes Ave. 72. Haz clic en Find. El localizador de direcciones SanFranciscoLocator, encuentra la dirección y la muestra en la ventana inferior. 73. Clica con el botón derecho en el resultado y elige Add as Network Analysis Object. La localización se añade como un route seed point. Se muestra en la ventana Network Analyst y en el mapa. 74. Cierra la ventana Find. 75. En la ventana Network Analyst, haz doble clic sobre el nuevo route seed point, 278 Dorantes Ave. Se abre la ventana de propiedades. Especifica los atributos según la tabla siguiente: 76. Repite los pasos del 70 al 74 para añadir otro route seed point at 1888 Peralta St. 77. Repite el paso 75 para cambiar la propiedad RouteName a Truck_3. Roger Milego MTIG - Modelització i anàlisi de xarxes Network Analyst 10.0 – Exercicis Determinar la solución 78. Clicar en el botón Solve de la barra de herramientas Network Analyst. El solucionador VRP calcula las dos rutas necesarias para el reparto y dibuja las líneas que conectan los distintos puntos de reparto. La ruta para el Truck_1 incluye repartos solamente en la zona del downtown. 79. Salir de ArcMap. Roger Milego