Servicio de resolución del problema de guiado de vehículos basado en Google Maps A service for solving the Vehicle Routing Problem based on Google Maps Autor: José Fernando Acosta García Directores: José Francisco Chicano García, Enrique Alba Torres Introducción El problema de guiado de vehículos (VRP) consiste en encontrar un conjunto de rutas óptimas para realizar el reparto de una serie de paquetes a sus correspondientes destinos [TV01]. Todos los paquetes se encuentran inicialmente en un almacén y los transportistas deben repartirlos de forma que se minimice el tiempo de reparto o el coste del mismo. Además hay que tener en cuenta que los vehículos usados para el transporte tienen una capacidad limitada y una tasa de consumo de combustible determinada. Este problema tiene un gran interés para las empresas de transporte y logística, ya que el uso de rutas óptimas o casi óptimas supone un ahorro importante en el coste para la empresa. Figura 1 Una solución para una instancia del problema VRP Dado su gran interés, este problema ha sido abordado por multitud de investigadores en todo el mundo y existe una gran cantidad de proyectos de investigación y congresos centrados en él. Asimismo, existen distintas variantes entre las que cabe destacar VRP con límites de capacidad (CVRP) [LGW04] o VRP con ventanas de tiempo (VRPTW) [Sol95]. Sin embargo, incluso en sus versiones más simples el problema es NP-difícil. Esto significa que por el momento las técnicas exactas conocidas para obtener el óptimo global de cualquier instancia del problema requieren un tiempo exponencial con respecto al tamaño del mismo. Este hecho ha motivado la investigación de técnicas aproximadas para la resolución del problema y hoy en día existe un amplio abanico de métodos de optimización desarrollados para resolverlo [NEO]. Podemos clasificar estas técnicas en tres grandes categorías: técnicas exactas, heurísticas ad hoc y metaheurísticas. Como mencionamos anteriormente, las técnicas exactas [Fisher94] permiten encontrar una solución óptima al problema pero suelen ser costosas computacionalmente. No obstante, estas técnicas son muy útiles cuando el tamaño de las instancias a resolver es pequeño. Un ejemplo destacado es Ramificación y Poda (Branch & Bound). Por otro lado, las heurísticas ad hoc son algoritmos especialmente diseñados para resolver un problema concreto, VRP en el caso que nos ocupa. Aunque no aseguran obtener una solución óptima, normalmente consiguen una solución casi óptima en tiempo polinomial. Algunos ejemplos de heurísticas ad hoc para VRP son: la heurística de Clarke y Wright [CR94] y la de Fisher y Jaikumar [FJ81]. Finalmente, las técnicas metaheurísticas son algoritmos de optimización global cuya estructura es general y no depende del problema de optimización concreto que resuelven. El principal vínculo con el problema a resolver se establece a través de una función de evaluación o función objetivo que indica a la metaheurística cuál es la calidad de una solución determinada. Estos algoritmos han obtenido en muchos casos las mejores soluciones conocidas para determinadas instancias de VRP populares en la literatura específica [AD06]. Algunos ejemplos de técnicas metaheurísticas son: algoritmos genéticos [Gold89], optimización basada en colonias de hormigas [DS04] y enfriamiento simulado [KGV83]. La mayoría de las implementaciones de algoritmos que resuelven el problema usan como entrada un fichero de texto plano. En dicho fichero se presentan las coordenadas de los distintos puntos de reparto y del almacén. Además, se indican otras características asociadas a los vehículos o a los puntos de entrega, como por ejemplo: la capacidad de los vehículos, la ventana de tiempo dentro de la cual debe hacerse la entrega, etc. Desde el punto de vista de una empresa, la generación de estos ficheros de texto puede ser tediosa. En este sentido, Google Maps [GM] puede ser de gran ayuda para especificar con un simple click de ratón los puntos geográficos relevantes para el problema. Figura 2 Una imagen de Google Maps mostrando una ruta en Málaga No sólo se puede usar Google Maps para la especificación de los puntos de reparto, sino que es posible utilizar sus servicios web para cosultar la distancia y el tiempo estimado para llegar desde uno a otro. Estos datos forman parte de la información básica que necesitan los algoritmos de resolución para proponer las rutas que más tarde recorrerán los vehículos. Google Maps ofrece una API en Javascript [GMA] para realizar todas estas consultas desde cualquier navegador Web. Así pues, la combinación de Google Maps junto con los algoritmos de resolución del problema VRP permiten, en principio, desarrollar un servicio para calcular cómodamente rutas (casi) optimas de reparto. Al ofrecerse a través de la Web, dicho servicio posee el don de la ubicuidad, permitiendo a personas de todo el mundo hacer uso del mismo sin importar donde se encuentren: un claro ejemplo de transferencia de conocimiento a la Sociedad. Objetivos El objetivo del presente proyecto consiste en desarrollar un servicio para resolver el problema de guiado de vehículos (VRP) en algunas de sus variantes usando Google Maps como base para la especificación de los puntos relevantes y el cálculo de la distancia entre puntos. El servicio se ofrecerá a través de una interfaz Web donde los clientes deben registrarse y pueden crear diferentes solicitudes de resolución. El cliente deberá marcar la localización del almacén y los destinos en un mapa de Google Maps y el sistema deberá proporcionar una solución de acuerdo con las preferencias del cliente (minimizar distancia o tiempo). Las solicitudes y soluciones se almacenarán en una base de datos para que el cliente las modifique o elimine cuando estime oportuno. Para la programación de la aplicación en el servidor se usará Java. En particular se programarán servlets y páginas JSP que interactuarán con la base de datos y con el servicio de optimización remota. Estos servlets serán ejecutados dentro de un Servidor Web Tomcat configurado para establecer conexiones seguras con los navegadores por medio de SSL (Socket Secure Layer). La base de datos se implementará en MySQL haciendo uso de herramientas CASE para su diseño. La parte de la aplicación que se ejecuta en el lado del cliente se implementará con Javascript inmerso en páginas HTML. El código implementado deberá acceder a la API de Google Maps para consultar información geográfica. Como se puede observar, el proyectando deberá dominar una gran variedad de tecnologías para desarrollar el proyecto. Fases del proyecto El proyecto se realizará siguiendo un proceso de desarrollo en espiral. En cada iteración se irán incorporando nuevas funciones a la herramienta. A continuación se muestran las distintas iteraciones para el desarrollo de la herramienta final. Estas iteraciones se corresponden con las distintas fases del proyecto. 1. Diseñar y desarrollar una versión simple de la interfaz en HTML y del servidor (servlets) que permita el envío al servidor de los puntos marcados en el navegador Web usando un mapa de Google Maps inmerso en la página Web. 2. Añadir la función de consulta de distancias entre puntos usando la API en Javascript y la información que ofrece Google Maps. 3. Añadir una capa de seguridad al sistema usando SSL para establecer un canal seguro de paso de información entre el cliente y el servidor. 4. Diseñar una base de datos para almacenar la información de las solicitudes de resolución de los clientes y soluciones de las mismas. Se usarán herramientas CASE para el diseño y se implementará en MySQL. 5. Añadir un sistema de autenticación para entrar al sistema y crear páginas Web para gestionar las solicitudes de los usuarios. 6. Añadir al sistema una conexión con un sistema de optimización remota que permita resolver las solicitudes planteadas por los clientes. Este sistema podrá ejecutarse en una máquina diferente y deberán enviarse los detalles de las instancias por un canal seguro de comunicación. Dependiendo de la urgencia del resultado el sistema debe escoger entre un amplio abanico de técnicas de resolución. 7. Crear manuales de uso y páginas Web de ayuda para los usuarios. Mejorar las páginas Web del servicio desde un punto de vista estético haciendo uso de hojas de estilo CSS y datos en XML para homogeneizar el aspecto visual. Medios materiales Equipo portátil o PC Entorno de desarrollo Java Adobe Dreamweaver para el desarrollo de las páginas Web, hojas de estilo y documentos XML Herramientas CASE para el diseño de los diagramas UML y la base de datos Servidores Web Tomcat Servidor de base de datos MySQL Editor de textos y compilador de LaTeX para la memoria y documentos intermedios. Libros y artículos aportados por los directores del proyecto. Revistas de la hemeroteca y de acceso electrónico. Referencias [AD06] E. Alba, B. Dorronsoro, Computing Nine New Best-So-Far Solutions for Capacitated VRP with a Cellular Genetic Algorithm, Information Processing Letters, 98(6):225-230. 2006. ISSN: 0020-0190. [CR64] G. Clarke and J. Wright "Scheduling of vehicles from a central depot to a number of delivery points", Operations Research, 12 (4), 568-581, 1964. [DS04] Dorigo, M. & Stützle, T. Ant Colony Optimization The MIT Press, 2004 [Fisher94] M. L. Fisher, "Optimal Solution of Vehicle Routing Problems Using Minimum K-trees", Operations Research 42, 626-642, 1994 [FJ81] M. L. Fisher and R. Jaikumar. "A Generalized Assignment Heuristic for Vehicle Routing". Networks, 11:109-124, 1981 [GM] http://maps.google.com [GMA] http://code.google.com/intl/es-ES/apis/maps/ [Gold89] Goldberg, D. E. Genetic Algorithms in Search, Optimization and Machine Learning Addison-Wesley, 1989 [KGV83] Kirkpatrick, S.; Gelatt, C. D. & Vecchi, M. P. Optimization by Simulated Annealing Science, 1983, 4598, 671-680 [LGW04] F. Li, B. Golden, E. Wasil: "Very large-scale vehicle routing: new test problems, algorithms, and results". Computers & Operations Research, 32 (5), pp. 1165-1179. 2005. [NEO] http://neo.lcc.uma.es/radi-aeb/WebVRP/index.html [Sol95] M. M. Solomon. "Algorithms for the Vehicle Routing Problem with Time Windows". Transportation Science, 29(2), pp. 156-166. 1995. [TV01] P. Toth, D. Vigo: "The Vehicle Routing Problem". Monographs on Discrete Mathematics and Applications. SIAM, Philadelphia. 2001.