AHORA NUESTROS CURSOS TAMBIÉN ONLINE
ONLINE
Contactar
Menu
ALUMNOS
Contactar

Proyecto destacado Data Science. Optimizando rutas de distribución.

30 de julio de 2020 10:45:35 CEST

Siempre decimos que el Data Science se puede aplicar a prácticamente todas las disciplinas, en este caso, podemos ver el proyecto de nuestro alumno Isaac Rico, quien aplicó su experiencia previa en el sector de la logística y el transporte para aportar nuevos enfoques y soluciones en la optimización de recursos de la cadena logística.

Se conoce como “rutas de distribución de última milla” al proceso final de transporte de cualquier mercancía, es decir, el último paso para que llegue la compra a tu casa, por ejemplo.

Mejorar el tiempo de cualquiera de estas rutas de distribución de última milla, supone una reducción inmediata tanto en costes humanos como materiales. Este será por tanto, el objetivo de este proyecto, cogiendo como muestra el supermercado Mercadona.

Con el fin de trabajar tanto con un almacén como con puntos de distribución reales, se simuló la distribución de productos de limpieza desde un almacén en Guadalajara a todos los supermercados Mercadona de la Comunidad de Madrid, realizando una aproximación al mínimo tiempo posible a emplear en dicho escenario.

Etapas del proyecto

Se desarrolló en 5 fases siguiendo la metodología propuesta por IBM para realizar proyectos de Data Science.

Comprensión del negocio y enfoque analítico

Se definieron las necesidades del proyecto, así como los elementos necesarios para poder desarrollarlo. Una vez definidas las necesidades, se procedió a buscar las soluciones técnicas más adecuadas al problema planteado, desde la obtención de la información necesaria, los algoritmos más adecuados, hasta la manera de evaluar los resultados obtenidos. 

Recopilación y preparación de datos 

Aquí fue clave la obtención de toda la información necesaria para posteriormente aplicar los algoritmos necesarios en la fase de modelado. 

Para hacerlo lo más completo posible se obtuvo información de tres fuentes diferentes, con diferentes técnicas en cada caso: 

  • Web scraping de la web de Mercadona 

we_scraping_mercadona

Fue necesario automatizar la obtención de información de la web www.mercadona.es mediante web scraping gracias a las herramientas BeautifulSoup y Selenium, que dieron las direcciones de los supermercados Mercadona de la Comunidad de Madrid. 

  • Formación del dataframe de direcciones con la API de Google Places 

api_google_places

Mediante la utilización de la API de Google Places, y para cada una de las direcciones obtenidas previamente de la web de Mercadona, se completó un dataframe con las correspondientes latitudes y longitudes, direcciones detalladas e identificadores de Google Places. 

google_places_mercadona

  • Obtención de la matriz de costes mediante OSRM 

Con la configuración previa de un servidor propio con los mapas de España mediante osrm-routed, se obtuvo, para cada par de puntos de la red (compuesta por los Mercadonas y el almacén), el tiempo empleado en ir de un punto a otro en un vehículo. 

Modelado

El problema se asemeja al problema del viajante (“Traveling Salesman Problem”), que plantea un problema desde principios del Siglo XIX que dice lo siguiente: dada una lista de ciudades y las distancias entre cada par de ellas, ¿cuál es la ruta más corta posible que visita cada ciudad exactamente una vez y al finalizar regresa a la ciudad origen?

Este es un problema NP-Hard dentro en la optimización combinatoria, muy importante en investigación operativa y en ciencias de la computación

En nuestro caso, el número total de puntos fue de 171 (1 almacén y 170 Mercadonas). Para mayor claridad en su representación y para una evaluación más realista de la ruta obtenida, se realizó otra simulación con 16 puntos.

Mediante este enfoque, y con la ayuda de los algoritmos genéticos, que se basan en la teoría de la evolución enfocada en la herencia, la variación y la selección, se obtuvo una ruta cuyo tiempo total se aproxima al mínimo posible. 

Visualización de resultados

En esta etapa se procede a realizar las funciones necesarias para mostrar todos los puntos de la red: popups con direcciones, así como líneas y flechas que marquen la ruta y su sentido de circulación. 

Para la representación de toda la información será necesario importar el dataframe con todas las direcciones, coordenadas geográficas y tipos de puntos. También guardaremos las mejores rutas obtenidas para 171 puntos y para 16 puntos. 

Toda la representación se realiza mediante Folium, herramienta que permite la utilización en Python de la librería Leaflet de JavaScript

Para mostrar los puntos de la red se diferenciará mediante distintos iconos entre los Mercadonas y el almacén. 

También se dibujarán las líneas que unen cada par de puntos, así como las flechas que determinan el sentido de circulación, según la ruta obtenida mediante el algoritmo genético. Para saber la orientación de las flechas se desarrolla una función que, mediante trigonometría, devuelve la rotación exacta. 

En la siguiente imagen se puede ver la ruta inicial aleatoria obtenida para 171 puntos: 

ruta_aleatoria_mercadona

Una vez aplicado el algoritmo genético, el resultado es el siguiente:

algoritmo_genético_data

La representación de la ruta inicial con 16 puntos es la que sigue:

ruta_16_puntos

La ruta final con 16 puntos es

ruta_final_16_puntos

Conclusiones

A partir de los resultados obtenidos se puede concluir que este proyecto es aplicable al negocio, orientándolo a planificar las rutas diarias en función de los destinos, se podrían crear diferentes zonas de reparto y crear las rutas a partir de éstas. 

Como se ha podido observar visualmente mediante los mapas, se puede apreciar que, con pocos puntos, el algoritmo encuentra una solución, a priori, óptima. 

Sin embargo, si crece considerablemente el número de puntos a repartir en una misma ruta, la complejidad computacional aumenta muy rápido, y por ende el tiempo de ejecución. Además, se hace complicado evaluar si la solución obtenida es óptima. En cualquier caso, aunque sea invirtiendo un mayor tiempo de ejecución, el algoritmo es capaz de encontrar buenas soluciones para un número elevado de puntos.


Si tú también quieres llevar a cabo proyectos como este, no lo dudes, apúntate a nuestro Data Science Bootcamp y aprende a sacarle todo el partido a los datos.

También te puede interesar

Estos post sobre Data Science

Suscríbete a nuestro email

Todavía no hay comentarios

Dinos que estás pensando