GMOR: Google Maps para la Optimización de Rutas

Universidad de La Laguna
Junio 2008
Proyecto
Ingeniería Informática
Ayoze Nicolás Fumero Alfonso
Director: Juan José Salazar González
GMOR: Google Maps para la Optimización de Rutas
2
GMOR: Google Maps para la Optimización de Rutas
Agradecimientos
Agradezco a Juan José Salazar González su apoyo e interés por el proyecto desde el primer día, así
como sus consejos y aportaciones a lo largo del desarrollo del mismo.
También quiero agradecer a mis padres (Nicolás y Maria) su apoyo incondicional, y su intento
continuo por darme todas las facilidades posibles para la realización de la ingeniería informática.
3
GMOR: Google Maps para la Optimización de Rutas
Índice
Prólogo................................................................................................................................................. 6
1. Introducción......................................................................................................................................8
1.1. Sistemas de Información Geográfica (SIG).............................................................................. 8
1.1.1. Definición..........................................................................................................................8
1.1.2. Historia.............................................................................................................................. 8
1.2. Google Maps...........................................................................................................................11
1.2.1. Definición........................................................................................................................11
1.2.2. Historia............................................................................................................................ 11
1.2.3. Google Maps API............................................................................................................12
2. Nuestro caso práctico: Transporte escolar......................................................................................15
2.1. Introducción al VRP............................................................................................................... 15
2.2. Características de los problemas............................................................................................. 15
2.2.1. Los clientes..................................................................................................................... 16
2.2.2. Los depósitos...................................................................................................................17
2.2.3. Los vehículos.................................................................................................................. 17
2.3. Formulación matemática.........................................................................................................17
2.3.1. El problema del viajante de comercio (TSP).................................................................. 18
2.3.2. El problema de los m viajantes de comercio (m-TSP)....................................................19
2.3.3. El problema con capacidades (CVRP)............................................................................ 20
2.4. Descripción de nuestro problema........................................................................................... 21
3. Método de resolución..................................................................................................................... 23
3.1. Algoritmo de Ahorros (Clark & Wright)................................................................................ 23
3.2. Ejemplo para el algoritmo de ahorros..................................................................................... 24
3.2.1. Datos de entrada.............................................................................................................. 24
3.2.2. Consideraciones a tener en cuenta.................................................................................. 25
3.2.3. Traza del ejemplo............................................................................................................ 28
3.2.3. Datos de salida................................................................................................................ 30
3.3. Mejoras mediante búsquedas locales...................................................................................... 31
3.3.1. Optimización 2-Opt.........................................................................................................32
3.3.2. Optimización 3-Opt.........................................................................................................34
3.3.3. Optimización factorial.....................................................................................................36
4. Manual de la aplicación.................................................................................................................. 38
4.1. Formatos de archivos XML.................................................................................................... 38
4.2. Pantalla principal.................................................................................................................... 41
4.3. Interfaz del mapa digital......................................................................................................... 43
4.3.1. Mapa digital (Parte Superior)..........................................................................................44
4.3.2. Editor XML (Parte Inferior)............................................................................................56
4.4. Rutas....................................................................................................................................... 59
4.5. Requisitos de la aplicación..................................................................................................... 64
5. Futuro............................................................................................................................................. 65
5.1. Ampliaciones del problema.................................................................................................... 65
5.1.1. El problema con flota heterogénea (FSMVRP).............................................................. 65
5.1.2. El problema con ventanas de tiempo (VRPTW).............................................................66
5.2. Otras heurísticas clásicas........................................................................................................ 67
5.2.1 Algoritmo de ahorros basado en matching...................................................................... 67
4
GMOR: Google Maps para la Optimización de Rutas
5.3. Búsquedas locales multi-ruta.................................................................................................. 68
5.3.1 Transferencias cíclicas..................................................................................................... 69
6. Conclusiones...................................................................................................................................70
Bibliografía......................................................................................................................................... 72
5
GMOR: Google Maps para la Optimización de Rutas
Prólogo
Actualmente los mapas digitales son un elemento cada vez más habitual, y que puede llegar a
englobar muchas funciones, como puede ser desde un uso profesional como la cartografía, un uso
más personal como podría ser en viajes turísticos, o incluso hasta un uso empresarial como podría
ser el insertar publicidad en ellos.
Un mapa digital no es más que un almacenamiento de información espacial como dibujos
electrónicos hechos a base de elementos gráficos sencillos (líneas, puntos, círculos, etc.)
organizados en capas, con el objetivo de ofrecer una salida impresa o por pantalla.
Con los avances que se han ido realizando en las tecnologías, estos mapas son cada vez más
sofisticados, llegando a lograr una interacción cada vez mayor con ellos. No se limitan a mostrar
sólo representaciones de lugares, sino que son capaces de llegar a localizar lugares específicos,
trazar rutas,... También cabe destacar que la manera en que muestran la información ha mejorado
notablemente ya que pueden llegar a mostrar desde mapas tradicionales con mucha información
contenida, hasta mapas con imágenes totalmente reales tomadas desde el aire, o incluso una versión
híbrida de éstas dos.
La motivación de este proyecto precisamente está enfocada hacia el aprovechamiento de esta mayor
interacción actual para lograr una serie de funcionalidades que puedan ser un indicio del potencial
que esconden este tipo de software, todo esto a través de una interfaz lo más sencilla e intuitiva
posible para que cualquier persona con unos conocimientos básicos pueda sacar provecho.
Se pretende aprovechar alguno de los mapas digitales disponibles en internet, en nuestro caso
Google Maps, para crear un entorno que, por una parte, convierta en una tarea fácil el interactuar
con un mapa digital, como puede ser buscar lugares, localizar puntos, almacenar la información,
trazar rutas entre un determinado conjunto de puntos,... por otra parte, que sea capaz de obtener una
solución bastante buena al planteamiento de un problema en el que se tenga que hallar rutas entre
un conjunto de puntos.
6
GMOR: Google Maps para la Optimización de Rutas
Para tal fin se propone GMOR, una herramienta informática basada en Google Maps para el diseño
de rutas de vehículos. Esta herramienta está compuesta de dos partes. Por un lado contiene una
interfaz capaz de interactuar con un mapa digital de forma fácil e intuitiva, de llevar a cabo una
serie de operaciones básicas, y capaz de exportar los datos resultantes de las operaciones en el mapa
digital mediante estructuras XML. Y por otra, un segundo módulo en el que resolver problemas de
diseños de rutas entre un conjunto de puntos, ya sean importados desde el mapa digital o generados
de forma aleatoria.
Por último, con esta aplicación se intenta realizar una simulación de un problema real de rutas como
puede ser el transporte escolar aunque de manera algo simplificada, así como gracias a la tecnología
XML dar la posibilidad de integración con otros proyectos.
Nuestro deseo es el de llegar a mostrar las amplias posibilidades que pueden llegar a tener el uso de
los mapas digitales en problemas reales, y que el prototipo implementado sirva como inspiración
para un futuro proyecto más complejo que aborde los problemas de manera más real, y que cubran
completamente las necesidades de los demandantes.
7
GMOR: Google Maps para la Optimización de Rutas
1. Introducción
1.1. Sistemas de Información Geográfica (SIG)
1.1.1. Definición
Un Sistema de Información Geográfica (SIG o GIS, en su acrónimo inglés) es una integración
organizada de hardware, software, datos geográficos y personal, diseñado para capturar, almacenar,
manipular, analizar y desplegar en todas sus formas la información geográficamente referenciada
con el fin de resolver problemas complejos de planificación y gestión. También puede definirse
como un modelo de una parte de la realidad referido a un sistema de coordenadas terrestre y
construido para satisfacer unas necesidades concretas de información.
El SIG funciona como una base de datos con información geográfica (datos alfanuméricos) que se
encuentra asociada por un identificador común a los objetos gráficos de un mapa digital. De esta
forma, señalando un objeto se conocen sus atributos e, inversamente, preguntando por un registro
de la base de datos se puede saber su localización en la cartografía.
La razón fundamental para utilizar un SIG es la gestión de información espacial. El sistema permite
separar la información en diferentes capas temáticas y las almacena independientemente,
permitiendo trabajar con ellas de manera rápida y sencilla, y facilitando al profesional la posibilidad
de relacionar la información existente a través de la topología de los objetos, con el fin de generar
otra nueva que difícilmente podríamos obtener de otra forma.
1.1.2. Historia
Para la geografía, la geología, la topografía, la biología y demás ciencias que hacen uso de la
información geográfica los SIG han constituido una verdadera revolución para el conocimiento de
los elementos y fenómenos que tienen lugar en la superficie terrestre. En su evolución histórica está
mayoritariamente aceptada la existencia de unos periodos más o menos claros y definidos que
engloban las distintas fases por las que ha transcurrido la evolución de los SIG desde su aparición
hace casi cuarenta años.
Primera etapa
La primera etapa se extendería desde las primeras aproximaciones de los años cincuenta hasta
8
GMOR: Google Maps para la Optimización de Rutas
mediados de los setenta y se caracteriza por los esfuerzos individuales en el desarrollo y la
aplicación de los sistemas.
El nacimiento de los SIG va ligado al desarrollo de otros sistemas, de los cuales ellos son claros
herederos por su similitud, los sistemas de Cartografía Asistida por Ordenador. Una característica
importante de estos primeros pasos es que en todos los casos analizados las personas que iniciaron
el desarrollo de estas tecnologías, desconocían realmente que lo que estaban creando eran Sistemas
de Información Geográfica.
Por un lado encontramos instituciones y otras instancias gubernamentales que ponen en marcha sus
iniciativas de manera particular para resolver los problemas derivados de sus actividades
relacionadas con el tratamiento de la información geográfica. Por otro lado está el grupo que
engloba a las universidades. En ellas también se intentan encontrar nuevos método para el
tratamiento de la información espacial. Este grupo busca el desarrollo de sistemas automáticos con
los que realizar análisis de datos geográficos y no tanto la producción de cartografía. Lo que ambos
grupos buscan es conseguir unas aplicaciones que de forma automática resuelvan cuestiones que
hasta la fecha se habían solventado de manera manual.
Las iniciativas pioneras se llevaron a cabo en los Canadá, Estados Unidos, y Gran Bretaña. El
segundo de ellos es el más significativo en la evolución de los SIG, y no puede compararse con
ningún otro lugar, tanto en el ámbito propio de los Sistemas de Información Geográfica como en el
de las tecnologías relacionadas. Ese protagonismo estadounidense se prolonga desde los años
cincuenta del siglo XX hasta la actualidad.
Canadá
Canadá es referente mundial en la historia de los SIG debido al Canadian Geographic Information
System (CGIS), concebido y desarrollado desde 1966 lo que le convierte en el decano de los
Sistemas de Información Geográfica y también el primero que utiliza ese nombre.
Estados Unidos
Los hitos más importantes de los SIG en los Estados Unidos son:
• Laboratory of Computer Graphics and Spatial Analysis (LCG). Creado en 1966 fue la
primera iniciativa cuyo objetivo principal era el diseño y desarrollo de software específico
para aplicaciones cartográficas. Su principal logro fue el Symap.
• Trabajos de la administración. Es un claro ejemplo de dualidad ya que en la mayoría de los
9
GMOR: Google Maps para la Optimización de Rutas
casos se usaban programas propios y específicos en base a las necesidades de cada
departamento, pero algunas veces también se requirió software de terceros como el
mencionado Symap del LCG. Los SIG más significativos son los del United Status Census
Bureau (USCB) y el del United Status Geological Survey (USGS).
• Enviromental Systems Research Institute (ESRI): No es el único caso que se puede encontrar
dentro del grupo de aportaciones comerciales. Lo que caracteriza a ESRI es su buen olfato
comercial, sintetizado en su capacidad de previsión, de visión de futuro, de antelación. Su
principal aportación al mundo de los SIG es la creación del estándar mundial en esta
tecnología, ArcInfo.
Gran Bretaña
Gran Bretaña sigue un modelo muy similar al estadounidense por presentar tanto iniciativas a nivel
universitario como de la administración pero sin embargo no tiene ejemplos en el sector privado tan
significativos como ESRI en los Estados Unidos.
Segunda etapa
Siguiendo con las fases de evolución de los SIG, la segunda etapa se solaparía en sus primeros
momentos con la primera, iniciándose hacia mediados de los años setenta y extendiéndose hasta
principios de los años ochenta.
Esta etapa de desarrollo está caracterizada, en general, por la disminución de la importancia de las
iniciativas individuales y un aumento de los intereses a nivel corporativo, especialmente por parte
de las instancias gubernamentales y de la administración.
Tercera etapa o fase comercial
Inmediatamente después, también a inicios de los años ochenta, se da lo que se ha venido a conocer
como fase comercial. Es en este periodo cuando el interés de distintas grandes industrias
relacionadas directa o indirectamente con los SIG crece sobremanera, debido a la gran avalancha de
productos en el mercado informático internacional que hicieron generalizarse a esta tecnología.
Cuarta etapa
El paso siguiente a la etapa comercial para profesionales, se corresponde con la década de los
noventa, donde los SIG empezaron a difundirse al nivel del usuario doméstico debido a la
10
GMOR: Google Maps para la Optimización de Rutas
generalización de los ordenadores personales o microordenadores.
Quinta etapa
En los primeros años del siglo XXI la mejora del rendimiento de los ordenadores debido a los
avances tecnológicos, por una parte, y la consolidación, por otra parte, de la necesidad de paquetes
informáticos de información geográfica conforman una nueva etapa en la evolución de los SIG,
sobre todo con la generalización del uso de Internet, que permite la distribución a nivel mundial de
cartografía.
1.2. Google Maps
1.2.1. Definición
Google Maps (conocido al principio como Google Local) es el nombre de un servicio gratuito de
Google. Es un servidor de aplicaciones de mapas en Web. Ofrece imágenes de mapas desplazables,
así como fotos de satélite del mundo entero e incluso la ruta entre diferentes ubicaciones.
1.2.2. Historia
Fue anunciado por primera vez en Google Blog el 8 de febrero del 2005. Originalmente soportaría
sólo a los usuarios de Internet Explorer y Mozilla Firefox, el soporte para Opera y Safari fue
agregado el 25 de febrero del 2005. El software estuvo en su fase beta durante 6 meses antes de
convertirse en parte de Google Local, el 6 de octubre del 2005.
Como en otras aplicaciones Web de Google, se usa un gran número de archivos de Javascript para
crear Google Maps. Como el usuario puede mover el mapa, la visualización del mismo se baja
desde el servidor. Cuando un usuario busca un negocio, la ubicación es marcada por un indicador en
forma de pin, el cual es una imagen PNG transparente sobre el mapa. Para lograr la conectividad sin
sincronía con el servidor, Google aplicó el uso de AJAX dentro de esta aplicación.
En abril del 2005, Google añadió un Ride Finder (en español, Ubicador de Vehículo), en el cual una
persona puede ubicar un taxi o un transporte público en una gran ciudad en tiempo real. La persona
debe hacer click en la barra de Update Position (en español, Actualizar Posición) para encontrar la
11
GMOR: Google Maps para la Optimización de Rutas
nueva ubicación del vehículo en cada momento.
En junio del 2005, los mapas de carreteras de los Estados Unidos, Puerto Rico, Canadá y el Reino
Unido fueron integrados a Google Maps.
A mediados de julio del 2005, Google comienza la versión japonesa de Google Maps y Google
Local.
En abril del 2005, se crea una vista alternativa a la que se mostraba por el satélite. El mayor
responsable de que Google Maps sea una realidad es el QuickBird, un satélite comercial de
teledetección.
En junio del 2005, las imágenes de alta resolución (o a la máxima ampliación), ya estaban
disponible para la mayoría de Canadá y Estados Unidos (incluyendo los estados de Hawaii y
Alaska). Además se tienen de otros países en forma parcial como Francia, Irlanda, Italia, Irak,
Japón, Bahamas, Kuwait, México, Holanda, etc. Sin embargo, algunas áreas fueron oscurecidas por
motivos de seguridad nacional, como el Capitolio, la Casa Blanca y el área 51 . Para el resto del
planeta las imágenes se encuentran disponible en baja resolución, excepto para los polos.
No todas las fotos mostradas son de satélites, algunas son de ciudades tomadas por aviones que
vuelan a bastante altura (sobre los 10.000 metros). Este es el caso de Canarias, donde las fotos que
se muestran son propiedad de GrafCan. La información contenida en los mapas mostrados es
proveída principalmente por la empresa Navteq, que es considerada en estos momentos la mejor del
sector debido a la veracidad de sus datos, y la frecuencia con la que son actualizados sus datos. En
el caso de Canarias los datos actuales provienen de la empresa TeleAtlas.
El 22 de julio del 2005, Google lanza una vista dual de su Google Maps. Esta vista combina la vista
de satélite con mapas ilustrados y los nombres de calles en las imágenes del mundo real. Esto hace
más fácil encontrar rutas entre dos puntos.
1.2.3. Google Maps API
Debido a la popularidad que estaba alcanzando Google Maps y a los intentos de personalizar los
mapas por parte de los usuarios mediante la ingeniería inversa, Google optó por desarrollar un API
para Google Maps, de forma que facilitara a los usuarios el integrar Google Maps en sus webs
personales y con sus propios datos.
12
GMOR: Google Maps para la Optimización de Rutas
Mediante el uso de la API de Google Maps se puede lograr insertar un completo Google Maps en
páginas web externas a Google. Para comenzar, basta con generar una clave personalizada para la
página web y el directorio donde se desea insertar el mapa. Se le da a un usuario la posibilidad de
crear su propia interfaz para el mapa simplemente introduciendo el código Javascript
proporcionado por Google a su página web, y una vez hecho esto, utilizando las funciones
Javascript suministradas por la API para interactuar con el mapa.
La primera versión de la API, no tenía la habilidad para hallar direcciones, por lo que era necesario
especificar manualmente la latitud y la longitud del punto requerido, aunque esto fue implementado
en versiones posteriores.
Aproximadamente por la misma época Yahoo lanzó su propio API para su mapa, que aunque no
tenía soporte internacional ya contaba con una herramienta para determinar la geopocisión de un
objeto.
También cabe destacar que la API de Google Maps es capaz de funcionar ejecutándola localmente,
para de este modo facilitar las tareas de debug o depuración durante la implementación de páginas
personalizadas.
Dentro de esta API podemos escoger entre dos versiones. Por un lado tenemos la gratuita y por otro
la destinada a empresas. Básicamente la diferencia entre estas dos versiones viene a ser que si se
cuenta con una licencia de empresa, Google proporciona una asistencia total al cliente y la
posibilidad de desarrollar aplicaciones de intranet que utilicen la API de Google Maps. Además no
se cuenta con las limitaciones en las peticiones a los servidores de Google Maps que si se tienen en
la versión gratuita del mismo, las cuales son unas 10.000 peticiones a sus servidores al día en
intervalos de 8,64 segundos aproximadamente.
En cuanto a la información mostrada en los mapas, cabe destacar que en lugar de usar los mapas de
Navteq, al igual que la página de Google Maps, esta API usa los mapas proporcionados por
TeleAtlas, empresa de origen europeo, que ofrece una opción más económica y que está en pleno
auge, de hecho cada día sus resultados se acercan más a los proporcionados por Navteq.
13
GMOR: Google Maps para la Optimización de Rutas
Como caso particular podemos destacar el ocurrido en las Islas Canarias, ya que aunque el callejero
mostrado sigue perteneciendo a la empresa TeleAtlas, las imágenes mostradas pertenecen la
empresa GrafCan, la cual tiene su propio callejero que llega a ser en algunos aspectos incluso más
detallado que el proporcionado por TeleAtlas. De hecho, en lo que se refiere al cálculo de
direcciones postales, mientras que TeleAtlas hace una aproximación de la localización de dichas
direcciones, GrafCan tiene totalmente localizadas las direcciones en su callejero. Como desventaja,
y posible razón de que no se use el callejero de GrafCan, cabe decir que aún dichos callejeros no
poseen el sentido de todas las calles, y esto puede ser considerado un elemento indispensable por
los responsables de Google ya que es un elemento primordial en sus mapas.
14
GMOR: Google Maps para la Optimización de Rutas
2. Nuestro caso práctico: Transporte escolar
2.1. Introducción al VRP
El problema de distribuir productos desde ciertos depósitos a sus usuarios finales juega un papel
central en la gestión de algunos sistemas logísticos y su adecuada planificación puede significar
considerables ahorros.
Esos potenciales ahorros justifican en gran medida la utilización de técnicas de Investigación
Operativa como facilitadoras de la planificación, dado que se estima que los costos del transporte
representan entre el 10% y el 20% del costo final de los bienes [1].
En ese sentido, las últimas cuatro décadas han visto un enorme esfuerzo por resolver estos
problemas. En 1959, Dantzig y Ramser [2] realizaron por primera vez una formulación del
problema para una aplicación de distribución de combustible. Cinco años más tarde, Clarke y
Wright [3] propusieron el primer algoritmo que resultó efectivo para su resolución: el popular
Algoritmo de Ahorros (Saving Algorithm), y del que hablamos en la sección 3.1.
A partir de estos trabajos, el área de enrutamiento de vehículos ha crecido de manera explosiva. Por
un lado, hacia modelos que incorporan cada vez más características de la realidad, y, por otro lado,
en la búsqueda de algoritmos que permitan resolver los problemas de manera más eficiente.
Estos modelos y algoritmos deben su éxito, en buena parte, a la evolución de los sistemas
informáticos y de los SIGs. El crecimiento en el poder de cómputo y la baja en sus costos, ha
permitido disminuir los tiempos de ejecución de los algoritmos. Y el desarrollo de los Sistemas de
Información Geográfica resulta fundamental para lograr una adecuada interacción de los modelos y
algoritmos con los encargados de realizar la planificación.
Pero el interés que reviste el área no es exclusivamente práctico. Los problemas de enrutamiento de
vehículos son problemas de optimización combinatoria y pertenecen, en su mayoría, a la clase NP-
Hard. La motivación académica por resolverlos radica en que no es posible construir algoritmos
que en tiempo polinomial resuelvan cualquier instancia del problema (a no ser que P = NP).
2.2. Características de los problemas
A grandes rasgos un problema de enrutamiento de vehículos consiste en, dado un conjunto de
clientes y depósitos dispersos geográficamente y una flota de vehículos, determinar un conjunto de
rutas de costo mínimo que comiencen y terminen en los depósitos, para que los vehículos visiten a
los clientes mientras se respeten sus capacidades y quizás otras restricciones adicionales.
15
GMOR: Google Maps para la Optimización de Rutas
Las características de los clientes, depósitos y vehículos, así como diferentes restricciones
operativas sobre las rutas, dan lugar a diferentes variantes del problema. En las próximas secciones
mostramos algunas; véase [1] para encontrar otras.
2.2.1. Los clientes
Cada cliente tiene una cierta demanda que debería ser satisfecha por algún vehículo. En muchos
casos, la demanda es un bien que ocupa espacio en los vehículos y es usual que un mismo vehículo
no pueda satisfacer la demanda de todos los clientes en una misma ruta.
Un caso equivalente al anterior ocurre cuando los clientes son proveedores y lo que se desea es
recoger una mercancía y transportarla hacia el depósito.
También podría ocurrir que la mercancía deba ser transportada a los clientes pero que no esté
inicialmente en el depósito, sino distribuida en ciertos sitios proveedores. En este caso, los
proveedores deben ser visitados antes que los clientes, y el problema es del tipo “recogidas y
entregas”.
En otros casos la demanda puede verse no como un bien sino un servicio: el cliente simplemente
debe ser visitado por el vehículo. Un mismo vehículo podría, potencialmente, visitar a todos los
clientes.
En otra variante del problema, cada cliente tiene una ubicación y desea ser transportado hacia otro
sitio. Aquí la capacidad del vehículo impone una cota sobre la cantidad de clientes que puede
transportar simultáneamente. Es usual que cada cliente deba ser visitado exactamente una vez. Sin
embargo, en ciertos casos se acepta que la demanda de un cliente sea satisfecha en momentos
diferentes y por vehículos diferentes.
Los clientes podrían tener restricciones relativas a su horario de servicio. Usualmente estas
restricciones se expresan en forma de intervalos de tiempo (llamados ventanas de tiempo) en los
que se puede visitar al cliente. En problemas con varios vehículos diferentes podrían existir
restricciones de compatibilidad entre éstos y los clientes. En estos casos, cada cliente sólo puede ser
visitado por algunos de los vehículos (por ejemplo, algunos vehículos muy pesados no pueden
visitar ciertas localizaciones).
16
GMOR: Google Maps para la Optimización de Rutas
También resulta de interés el estudio de problemas donde la demanda de cada cliente no es un
número conocido sino una variable aleatoria. Son los llamados problemas con demandas
estocásticas.
2.2.2. Los depósitos
Tanto los vehículos como las mercancías a distribuir (si las hubiera) suelen estar ubicadas en
depósitos.
Usualmente se exige que cada ruta comience y finalice en un mismo depósito, aunque éste podría
no ser el caso en algunas aplicaciones (por ejemplo, podría ser que el viaje debiera finalizar en el
domicilio del conductor del vehículo y que fuesen dos conductores diferentes los que usan ese
vehículo, con lo que el domicilio donde termina dependerá de a qué conductor le toca usarlo ese
día).
En los problemas con múltiples depósitos cada uno de éstos tiene diferentes características, por
ejemplo, su ubicación y capacidad máxima de producción. Podría ocurrir que cada depósito tenga
una flota de vehículos asignada a priori o que dicha asignación sea parte de lo que se desea
determinar.
Los depósitos, al igual que los clientes, podrían tener ventanas de tiempo asociadas. En algunos
casos debe considerarse el tiempo necesario para cargar o preparar un vehículo antes de que
comience su ruta, o el tiempo invertido en su limpieza al regresar. Incluso, por limitaciones de los
propios depósitos, podría querer evitarse que demasiados vehículos estén operando en un mismo
depósito a la vez (es decir, la congestión del depósito).
2.2.3. Los vehículos
La capacidad de un vehículo podría tener varias dimensiones, como por ejemplo peso y volumen.
Cuando en un mismo problema existen diferentes mercancías a transportar, los vehículos podrían
tener varios compartimentos, de modo que la capacidad del vehículo dependa de la mercancía de la
que se trate. En general, cada vehículo tiene asociado un costo fijo en el que se incurre al utilizarlo
y un costo variable proporcional a la distancia que recorra.
Los problemas en que los atributos (capacidad, costo, etc.) son los mismos para todos los vehículos
se denominan de flota homogénea, y, si hay diferencias, de flota heterogénea. La cantidad de
vehículos disponibles podría ser un dato de entrada o una variable de decisión. El objetivo más
usual suele ser utilizar la menor cantidad de vehículos y minimizar la distancia recorrida ocupa un
segundo lugar.
Regulaciones legales podrían imponer restricciones sobre el tiempo máximo que un vehículo puede
estar en circulación e incluso prohibir el pasaje de ciertos vehículos por ciertas zonas. En algunos
casos se desea que la cantidad de trabajo realizado por los vehículos (usualmente el tiempo de viaje)
no sea muy dispar. En general se asume que cada vehículo recorre una sola ruta en el período de
planificación, pero últimamente se han estudiado modelos en los que un mismo vehículo puede
recorrer más de una ruta.
2.3. Formulación matemática
En esta sección se formulan algunos de los problemas clásicos y sus extensiones como problemas
de Programación Entera. Dichas formulaciones se dan por completitud y para evitar ambigüedad
17
GMOR: Google Maps para la Optimización de Rutas
en la definición.
La red de transporte por la que circulan los vehículos se modela mediante un grafo ponderado G =
(V,A). Los nodos del grafo representan a los clientes y depósitos. En problemas con un depósito y n
clientes, el nodo 0 representa al depósito y los nodos 1, . . . , n a los clientes. En algunos casos se
agrega una copia del depósito etiquetada con n +1 para simplificar la formulación, siendo en este
caso 0 el origen de las rutas y n + 1 es el destino final.
Cada arco (i, j) A representa el mejor camino para ir desde el nodo ∈ i hacia el nodo j en la red de
transporte y tiene asociado un costo
c
ij
y un tiempo de viaje
t
ij
. Según la estructura de los
costos y los tiempos y las características de la red, el grafo puede ser simétrico o asimétrico. Puede
suponerse que G es completo, pues entre todo par de lugares de una red de transporte razonable,
debería existir algún camino.
Denotaremos por N
+
¦i ) y N

¦i ) al conjunto de nodos adyacentes e incidentes al nodo i, es
decir, N
+
¦i ) = {j V | (i, j) A} ∈ ∈ y N

¦i ) = {j V | (j, i) A} ∈ ∈ .
2.3.1. El problema del viajante de comercio (TSP)
En el Problema del Agente Viajero (o TSP por “Travelling Salesman Problem”) se dispone de un
solo vehículo que debe visitar a todos los clientes en una sola ruta y a costo mínimo. No suele haber
un depósito (y si lo hubiera no se distingue de los clientes), no hay demanda asociada a los clientes
y tampoco hay restricciones temporales. El problema puede formularse como:
min

¦i , j)∈A
c
ij
x
ij
(1.1)
s. a.

j ∈N
+
¦ i)
x
ij
=1 ∀i ∈V
(1.2)

i∈N
-
¦ j )
x
ij
=1 ∀ j ∈V
(1.3)

i∈S , j ∈N
+
¦i ) \S
x
ij
¯1 ∀S⊂V
(1.4)
x
ij
∈¦0, 1¦ ∀¦i , j )∈A
.
Esta formulación fue propuesta por Dantzig, Fulkerson y Johnson [4]. Las variables binarias
x
ij

indican si el arco (i, j) es utilizado en la solución, es decir, en la ruta que debe seguir el vehículo. La
función objetivo (1.1) establece que el costo total de la solución es la suma de los costos de los
arcos utilizados. Las restricciones (1.2) y (1.3) indican que la ruta debe llegar y abandonar cada
nodo exactamente una vez. Finalmente, las restricciones (1.4) son llamadas restricciones de
eliminación de subrutas e indican que todo subconjunto de nodos S debe ser abandonado al menos
una vez. Nótese que si no se impusieran estas restricciones la solución podría constar de más de un
ciclo, como se muestra en la figura 1.1. Esta solución viola la restricción (1.4) para S = {0, 1, 2}.
Existen diferentes tipos de escritura para las restricciones de eliminación de subrutas. Asumiendo
que ∣A∣=O¦ n
2
) , esta formulación tiene una cantidad polinomial de variables binarias y O¦ 2
n
)
restricciones.
18
GMOR: Google Maps para la Optimización de Rutas
Figura 1.1: Una solución formada por 2 subrutas.
El problema puede alternativamente formularse con una cantidad polinomial de restricciones,
agregando variables reales
u
i
para i = 1, . . . , n y sustituyendo las restricciones (1.4) por
u
i
−u
j
+nx
ij
<n−1 ∀¦i , j )∈E , i≠0, j ≠0.
(1.6)
Este modelo alternativo fue propuesto por Miller, Tucker y Zemlin [5] y fuerzan a que las variables
reales
u
i
que determinen una cantidad estrictamente creciente a lo largo de la ruta (es decir,
u
j
≥u
i
+1
si j es visitado inmediatamente después que i ). En esta nueva formulación hay
O¦ n
2
) variables binarias, O¦ n) variables positivas y O¦ n
2
) restricciones. Sin embargo, esta
formulación no resulta apta para la resolución de problemas de tamaño considerable mediante
métodos exactos, pues si bien se disminuye la cantidad de restricciones, la cota que se obtiene
resolviendo su relajación lineal resulta en general muy débil.
La mayor parte de los problemas de enrutamiento de vehículos son generalizaciones del TSP. En
ese sentido, éste puede considerarse el problema de enrutamiento de vehículos más simple. No
obstante, pertenece a la clase de problemas NP-Hard [6] y es uno de los Problemas de
Optimización Combinatoria más clásico y difundido.
2.3.2. El problema de los m viajantes de comercio (m-TSP)
El problema de los m agentes viajeros (o m-TSP) es una generalización del TSP en la cual se
tiene un depósito y m vehículos. El objetivo es construir exactamente m rutas, una para cada
vehículo, de modo que cada cliente sea visitado una vez por uno de los vehículos. Cada ruta debe
comenzar y finalizar en el depósito. Una formulación, dada por Miller et al. [5] es la siguiente:
min

¦i , j)∈A
c
ij
x
ij
s.a.

i∈N
-
¦0)
x
i0
=

j ∈N
+
¦0)
x
0j
<m
(1.7)

i∈N
-
¦ j )
x
ij
=

j ∈N
+
¦i )
x
ij
=1 ∀i ∈V \{0}
(1.8)
u
i
−u
j
+nx
ij
<n−1 ∀¦i , j )∈A, i≠0, j≠0
(1.9)
x
ij
∈¦0, 1¦ ∀¦i , j )∈A
u
i
¯0 ∀i ∈V \{0}
.
19
GMOR: Google Maps para la Optimización de Rutas
El modelo es similar al segundo modelo presentado para el TSP. La restricción (1.7) indica que
exactamente m vehículos salen del depósito y las (1.8) asegura que cada cliente es un nodo
intermedio en exactamente una ruta. Finalmente, con (1.9) se eliminan las subrutas.
Modificando (1.9) es fácil incorporar en el problema una limitación sobre el número máximo Q de
clientes que pueden estar en una misma ruta. La nueva restricción es:
u
i
−u
j
+Qx
ij
<Q−1
Y el nuevo problema pasa a ser el CVRP (que describimos con detalle en la siguiente sección) con
demandas unitarias.
2.3.3. El problema con capacidades (CVRP)
El CVRP es una extensión del m-TSP en la cual cada cliente i ∈ V \ {0} tiene asociada una demanda
d
i
y cada vehículo tiene una capacidad Q (la flota es homogénea). En este problema la cantidad
de rutas no está fijada de antemano como en el TSP y en el m-TSP, aunque suele haber un número
m máximo de vehículos en la flota.
Para un conjunto de clientes S,
d ¦S)=

i∈S
d
i
es su demanda total y r(S) indica la mínima
cantidad de vehículos necesarios para servirlos a todos. En la formulación conocida con el nombre
de dos índices, se utilizan las variables binarias
x
ij
para determinar si el arco (i, j) se utiliza o no
en la solución. El problema se formula de la siguiente manera:
min

¦i , j)∈A
c
ij
x
ij
(1.10)
s. a.

i∈N
-
¦0)
x
i0
=

j ∈N
+
¦0)
x
0j
<m
(1.11)

i∈N
-
¦ j )
x
ij
=

j ∈N
+
¦i )
x
ij
=1 ∀i ∈V \{0}
(1.12)

i∈S , j ∈N
+
¦i ) \S
x
ij
¯r ¦S) ∀S⊂V \{0}
(1.13)
x
ij
∈¦0, 1¦ ∀¦i , j )∈A
La función objetivo (1.10) es el costo total de la solución. Las restricciones (1.11) indica que m es la
cantidad de vehículos utilizados en la solución y que todos los vehículos que parten del depósito
deben regresar. La restricción (1.12) aseguran que todo cliente es un nodo intermedio de alguna
ruta. Finalmente, la restricción (1.13) actúa como restricción de eliminación de subrutas y a la vez
impone que la demanda total de los clientes visitados por un vehículo no puede superar la capacidad
Q.
20
GMOR: Google Maps para la Optimización de Rutas
Determinar el valor de r(S) requiere la resolución del siguiente problema:
r ¦S )=min

k ∈K
y
k
s. a.

i∈S
d
i
x
ik
<C
yk
∀k ∈K

k ∈K
x
ik
=1 ∀i ∈S
x
ik
∈¦0, 1¦ ∀i ∈S , ∀k ∈K
y
k
∈¦0,1¦ ∀k ∈K
,
donde K es un conjunto con suficientes vehículos para satisfacer la demanda (por ejemplo, n). Este
problema es conocido como Bin Packing Problem (BPP) [7]. Una cota inferior para la cantidad de
vehículos está dada por el valor óptimo de la relajación lineal del BPP, que es el entero superior de
d ¦S)/ Q . La formulación es válida incluso cuando se sustituye r(S) por la cota inferior
mencionada anteriormente, entero superior de d ¦S)/ Q , aunque su relajación lineal es más débil
que cuando se usa la solución exacta del BPP.
En algunos casos se agrega a este problema la restricción de que ninguna ruta puede tener un largo
mayor que cierta cota L. Dicha restricción no puede incorporarse a esta formulación, pues las rutas
no están individualizadas. Para incorporar esta restricción adicional (u otras como ventanas
temporales, etc.) es necesario usar variables con tres índices del tipo x
ij
k
.
2.4. Descripción de nuestro problema
En primer lugar mencionar que a pesar de poder hacer un planteamiento generalizado, nos
centraremos en un caso en particular con el objetivo de ser lo más claro posible: el transporte
escolar.
Se dispone de un conjunto de puntos localizados sobre un mapa, y necesitamos hallar la/s posible/s
ruta/s que nos permitan visitar todos los puntos del problema. Estos puntos pueden ser de tres tipos:
● Salida: será el punto desde donde comiencen todas las rutas. En nuestro problema particular
diremos que es el depósito donde se encuentran los vehículos que recogerán a los alumnos.
Cada uno de estos vehículos cuenta con una capacidad máxima de alumnos que pueda
transportar y que no será posible sobrepasar.
● Paradas: serán los puntos por donde las rutas deben pasar y que tendrán una cierta demanda
a cumplir. En nuestro problema, en esas paradas se encontrarán los alumnos y la demanda a
cumplir indicará el número de alumnos a recoger en dicho punto.
● Llegada: será el punto donde finalicen todas las rutas. En nuestro problema, representará el
colegio donde deben ser entregados los alumnos.
Con lo expuesto anteriormente podemos decir entonces que el problema consiste en hallar el
número de rutas necesarias para recoger a todos los alumnos utilizando para ello unos vehículos con
capacidad limitada mediante una solución buena.
21
GMOR: Google Maps para la Optimización de Rutas
Por tanto, el problema que más se ajusta a nuestro caso es el problema de enrutamiento de vehículos
con restricciones (CVRP) .
Hay que destacar que este planteamiento está simplificado, ya que en el caso de querer abordarlo de
manera totalmente realista, la complejidad del problema sería mucho mayor debido al gran número
de otros factores que habría que tener en cuenta, ver figura a continuación. El objetivo de este
proyecto no es el de resolver un problema totalmente real sino mostrar el potencial que pueden
ofrecer los SIGs a la resolución de problemas de rutas de vehículos en el mundo real (es decir, en
logística).
Figura 1.2: Complejidad de los problemas.
22
GMOR: Google Maps para la Optimización de Rutas
3. Método de resolución
3.1. Algoritmo de Ahorros (Clark & Wright)
Uno de los algoritmos más difundidos para el CVRP es el Algoritmo de Ahorros de Clarke y
Wright [3]. Si en una solución dos rutas diferentes (0, . . . , i, 0) y (0, j, . . . , 0) pueden ser
combinadas formando una nueva ruta (0, . . . , i, j, . . . , 0) como se muestra en la figura 2.1, el
ahorro (en distancia) obtenido por dicha unión es
s
ij
=c
i0
+c
0j
−c
ij
(2.1)
Figura 2.1: Dos rutas antes y después de ser unidas
En la nueva solución los arcos (i, 0) y (0, j) no serán utilizados y se agregará el arco (i, j). En este
algoritmo se parte de una solución inicial y se realizan las uniones que den mayores ahorros siempre
que no violen las restricciones del problema. Existe una versión paralela en la que se trabaja sobre
todas las rutas simultáneamente, y otra secuencial que construye las rutas de una en una.
Algoritmo de Ahorros (Versión paralela)
Paso 1 (inicialización). Para cada cliente i construir la ruta (0, i, 0).
Paso 2 (cálculo de ahorros). Calcular
s
ij
para cada par de clientes i y j.
Paso 3 (mejor unión). Sea
s
i ∗ j ∗
=max s
ij
, donde el máximo se toma entre los ahorros que no han
sido considerados aún. Sean
r
i ∗
y
r
j ∗
las rutas que contienen a los clientes i

y j


respectivamente. Si i

es el último cliente de
r
i ∗
y j
*
es el primer cliente de
r
j ∗
y la
combinación de
r
i ∗
y
r
j ∗
es factible, combinarlas. Eliminar
s
i ∗ j ∗
de futuras
consideraciones. Si quedan ahorros por examinar ir al paso 3, si no terminar.
Algoritmo de Ahorros (Versión secuencial)
Paso 1 (inicialización). Para cada cliente i construir la ruta (0, i, 0).
Paso 2 (cálculo de ahorros). Calcular
s
ij
para cada par de clientes i y j.
Paso 3 (selección). Si todas las rutas fueron consideradas, terminar. Si no, seleccionar una ruta que
aún no haya sido considerada.
23
GMOR: Google Maps para la Optimización de Rutas
Paso 4 (extensión). Sea (0, i, . . . , j, 0) la ruta actual. Si no existe ningún ahorro conteniendo a i o
a j, ir al paso 3. Sea
s
k ∗ i
¦o s
jl ∗
)
el máximo ahorro conteniendo a i (o a j). Si k
*
¦ol

) es el
último (o primer) cliente de su ruta y la combinación de dicha ruta con la actual es factible, realizar
dicha combinación. Eliminar
s
k ∗ i
¦o s
jl ∗
)
de futuras consideraciones. Ir al paso 4.
Dado que en la definición de
s
ij
solamente interviene la ubicación de los clientes i y j, todos los
ahorros pueden calcularse una sola vez al comienzo de la ejecución del algoritmo. En la versión
secuencial podría calcularse los ahorros a medida que son necesarios.
Si el máximo ahorro es negativo, la combinación de las rutas aumentará la distancia recorrida pero
disminuirá la cantidad de rutas de la solución (y por lo tanto la cantidad de vehículos utilizados).
Dependiendo de las particularidades de cada problema, debe decidirse si realizar o no ese tipo de
combinaciones.
Se ha observado que utilizando la definición original de ahorro se suele generar algunas rutas
circulares (ver figura 2.2) lo cual puede ser negativo. Para solucionar este problema algunos autores
[13, 14, 15] proponen redefinir el ahorro como:
s
ij
=c
i0
+c
0j
− λc
ij
(2.2)
donde λ es un parámetro que penaliza la unión de rutas con clientes lejanos (llamado parámetro de
forma o shape parameter ). Dicho parámetro puede utilizarse también para generar un conjunto de
soluciones diferentes mediante la ejecución repetida del algoritmo con diferentes valores de λ.
En general ocurre que al comienzo de la ejecución del algoritmo dos alternativas pueden parecer
equivalentes y, sin embargo, la elección tiene un gran impacto en la solución final. Las soluciones
obtenidas con el Algoritmo de Ahorros pueden, en general, ser mejoradas mediante operadores de
búsqueda local como el algoritmo 3-opt [16], esto lo tratamos en la sección 3.3.
Figura 2.2: Un ejemplo de rutas circulares y radiales.
3.2. Ejemplo para el algoritmo de ahorros
A continuación, se ilustra cómo funciona el algoritmo implementado sobre un pequeño ejemplo.
3.2.1. Datos de entrada
Los datos inicialmente disponibles son:
● n = 4 clientes ¦1, 2, 3, 4¦
● El depósito será el punto 0
24
GMOR: Google Maps para la Optimización de Rutas
● Las demandas para cada uno de los clientes son:
d
i
=¦ 0,5, 13,12, 8)
● La matriz de distancias o costes es: c
ij
=
¦
0 2 3 2 2
2 0 2 4 4
3 2 0 4.5 5
2 4 4.5 0 3
2 4 5 3 0
)
● La capacidad de los vehículos es 20.
Figura 3.1: Situación inicial.
3.2.2. Consideraciones a tener en cuenta
Estado inicial
El primer paso que se realiza es el calcular el conjunto de rutas iniciales, que no es más que asignar
cada uno de los puntos a una ruta diferente, tal y como se muestra en la figura 3.2.
Figura 3.2: Estado inicial.
25
GMOR: Google Maps para la Optimización de Rutas
Sobrecarga de vehículos
Una vez tenemos el estado inicial, el siguiente paso es empezar a realizar las fusiones de las
diferentes rutas, ya que se trata de realizar conexiones entre diferentes rutas para obtener una mejor
solución que la inicial.
Para esto calculamos el ahorro que obtendríamos al fusionar las diferentes rutas que tenemos
actualmente, mediante la fórmula (2.1).
Figura 3.3: Ejemplo para la fusión i = 1 y j = 2.
En el caso de que
s
ij
>0
dicha fusión debe ser tenida en cuenta.
Pero en estas posibles fusiones hay que tener en cuenta la restricción que se nos impone con la
capacidad limitada de los vehículos. Por ejemplo, en el caso de intentar la unión entre los puntos 2 y
3 obligamos a que el vehículo cargue
d
2
+d
3
=25
unidades, y esto es imposible por que Q = 20.
Figura 3.4: Fusión entre los puntos 2 y 3.
dado que en los datos iniciales hemos dicho que la capacidad de los vehículos es 20, esta ruta no es
factible y por lo tanto no se debe considerar.
26
GMOR: Google Maps para la Optimización de Rutas
Puntos Internos
Un punto, el cual no es el primero ni el último en una de las rutas actuales, no puede ser
considerado para realizar posibles fusiones.
Por ejemplo, como se puede ver en la figura 3.5, el punto 2 no cuenta con un arco desde o hasta el
depósito. Por tanto
s
i2
o s
2j
no deben ser consideradas a la hora de fusionar rutas.
Figura 3.5: Puntos internos.
Puntos que se encuentren en la misma ruta
Si los puntos sugeridos por la fórmula del ahorro son extremos de la misma ruta, la operación de
fusión no puede llevarse a cabo, ya que en ese caso se formarían subrutas y esto no debe estar
permitido.
Por ejemplo, en la figura 3.6 se muestra que si llegásemos a unir los puntos 1 y 3, se da como
resultado una subruta, por tanto el ahorro de fusionar estos puntos nunca debería tenerse en cuenta.
Figura 3.6: Formación de subrutas.
27
GMOR: Google Maps para la Optimización de Rutas
3.2.3. Traza del ejemplo
Inicialización
Paso 1: Calculamos el estado inicial anteriormente descrito.
Paso 2: Calculamos los valores de ahorro para cada par de puntos del problema.
Paso 3: Se construye una lista con todos los valores de ahorros ordenados de mayor a menor, cuanto
mayor es el valor de ahorro, más conveniente es la ruta. En nuestro ejemplo los valores iniciales se
pueden ver en la figura 3.7.
Figura 3.7: Valores de ahorros iniciales.
Iteración 1
Tomamos el primer valor de la lista de ahorros, ya que es el más prometedor.
28
GMOR: Google Maps para la Optimización de Rutas
Comprobando las consideraciones antes mencionadas vemos que:
● d
12
=d
1
+d
2
=1820=Q
● Ambos puntos son extremos en sus rutas.
● Ambos puntos no pertenecen a la misma ruta.
Por tanto, ya que cumplen esas tres condiciones, la fusión de ambas rutas puede llevarse a cabo. La
solución que obtenemos tiene un coste de 11, y en ella quedan unidos los puntos 1 y 2 tal y como se
puede ver en la figura 3.9.
Figura 3.9: Iteración 1.
Iteración 2
Continuamos tomando el resto de valores de la lista de ahorros en los que no se encontraban los
puntos ya fusionados.
Y nuevamente hacemos las mismas comparaciones:
● d
34
=d
3
+d
4
=20<Q
● Ambos puntos son extremos en sus rutas.
● Ambos puntos no pertenecen a la misma ruta.
Por tanto, ya que cumplen esas tres condiciones, la fusión de ambas rutas puede llevarse a cabo. La
solución que obtenemos tiene un coste de 10, y en ella quedan unidos los puntos 3 y 4 tal y como se
puede ver en la figura 3.10.
29
GMOR: Google Maps para la Optimización de Rutas
Figura 3.10: Iteración 2.
Tras esta iteración, ya no nos quedan más posibles fusiones debido a que todos los puntos están
contenidos en alguna ruta.
Iteración 3
En esta iteración trabajamos con las dos rutas anteriormente calculadas. Por tanto la única fusión
posible es entre 2 y 3.
En esta ocasión, al hacer las comprobaciones pertinentes obtenemos que:
● d
23
=d
2
+d
3
=38>Q
● Ambos puntos son extremos en sus rutas.
● Ambos puntos no pertenecen a la misma ruta.
Por tanto, al no cumplirse la restricción de la capacidad limitada de los vehículos, dicha fusión no
puede llevarse a cabo, y dado que ya no tenemos más posibles fusiones, la ejecución termina aquí.
3.2.3. Datos de salida
La solución que obtenemos es entonces la mostrada en la figura 3.11.
30
GMOR: Google Maps para la Optimización de Rutas
Figura 3.11: Solución final.
Ruta 1:
● Coste:11
● Demanda: 18
● Secuencia: 0 – 1 – 2 – 0
Ruta 2:
● Coste: 10
● Demanda: 20
● Secuencia: 0 – 3 – 4 – 0
3.3. Mejoras mediante búsquedas locales
En este punto hablamos sobre las mejoras implementadas en la aplicación, y que pueden ser usadas
conjuntamente o por separado, para mejorar las soluciones proporcionados por el algoritmo de
Ahorros de Clarke & Wright.
Una vez que se tiene una solución para el problema, se puede intentar mejorarla mediante algún
procedimiento de búsqueda local. Para cada solución s se define un conjunto de soluciones vecinas
N(s). Un procedimiento de Búsqueda Local parte de una solución s, la reemplaza por una solución
s
*
∈N ¦ s) de menor costo y repite el procedimiento hasta que la solución no pueda ser mejorada.
Al terminar, se obtiene una solución localmente óptima respecto a la definición de la vecindad. Para
obtener s

puede buscarse la mejor solución de N(s) (estrategia best improvement) o simplemente
tomar la primera solución de N(s) que mejore el costo (estrategia first improvement).
Usualmente se define N(s) como las soluciones que pueden obtenerse aplicando a s alguna regla o
procedimiento sencillo que consiste en intercambiar los arcos de la solución. Estos intercambios
para el CVRP pueden clasificarse en intercambios de una ruta e intercambios multi-ruta. En los
intercambios de una ruta los clientes que se visitan no cambian después de la aplicación del
operador, lo que varía es el orden en que se realizan las visitas. En los intercambios multi-ruta,
además de cambios en el orden de las visitas suele modificarse el conjunto de clientes visitados en
cada ruta.
31
GMOR: Google Maps para la Optimización de Rutas
3.3.1. Optimización 2-Opt
Este método intenta obtener una mejor solución para una ruta dada. Básicamente, lo que se pretende
lograr con este algoritmo de optimización es la eliminación de cruces entro los arcos que unen los
puntos de una ruta. Para ello, elimina dos arcos de la ruta e intenta reconectarlos de la mejor manera
posible, tal y como se muestra en la siguiente figura 3.12.
Figura 3.12: 2-Opt.
En la parte izquierda de la figura 3.12, tenemos la ruta original con los dos arcos, que intentan ser
optimizados, marcados. En la parte derecha tenemos una solución alternativa, que podría resultar
mejor.
Para ser más concretos, este algoritmo funciona de la siguiente manera. Sean dos arcos de una
misma ruta, cuyos puntos son (i, i + 1) y (j, j + 1), tal que i < j, con unos costes asociados
c
i , i+1
y c
j , j+1
y con un conjunto de arcos entre ambos arcos llamado
¯
P , tal y como se muestra
en la figura 3.13.
32
GMOR: Google Maps para la Optimización de Rutas
Figura 3.13: Estado inicial.
Si se da la condición de que el coste del camino desde i hasta j + 1 es mayor que el coste desde i a
j, más el coste del conjunto de arcos
¯
P en dirección contraria, y más el coste desde i + 1 hasta j +
1, o lo que es lo mismo,
¯
P+c
i ,i+1
+c
j , j +1
>c
ij
+c
j+1, i+1
+
¯
P en dirección contraria, entonces hemos
encontrado un camino más óptimo que el que teníamos en la solución actual,. Por tanto deberemos
eliminar los arcos (i, i + 1) y (j, j + 1) y sustituirlos por los arcos (i, j) e (i + 1, j + 1) teniendo en
cuenta que debemos invertir el sentido en el conjunto de arcos que van desde i + 1 hasta j, (es decir,
¯
P ), tal y como se muestra en la figura 3.14.
Figura 3.14: Después de optimizar.
Esta operación se debe repetir para cada par de arcos que contenga la ruta, teniendo en cuenta que i
debe ser menor que j, hasta que no se puedan realizar más intercambios en la solución en estudio.
Este algoritmo se ejecuta tras cada iteración del algoritmo de Ahorros de Clarke & Wright, con lo
que logramos que cada vez que se fusionan dos rutas, consigamos un mejor camino entre los
puntos, en el caso de que sea posible.
La complejidad de este algoritmo es O¦ n
2
) .
33
GMOR: Google Maps para la Optimización de Rutas
3.3.2. Optimización 3-Opt
Este algoritmo, al igual que el anterior, intenta encontrar una mejor ruta entre un conjunto de puntos
dados. Su objetivo es similar también al algoritmo 2-Opt, aunque en este caso se trata de un
algoritmo un poco más complejo, ya que las operaciones en lugar de hacerlas con dos arcos, se
llevan a cabo con tres arcos simultáneamente. Por tanto, lo que hace este algoritmo es eliminar tres
arcos e intentar buscar un camino más óptimo reconectándolos de manera alternativa, tal y como
podemos ver en la figura 3.15.
Figura 3.15: 3-Opt.
El dibujo en la izquierda de la figura 3.15 sería la ruta hallada por el algoritmo de Ahorros, ruta
actual, mientras que los dos siguientes dibujos vendrían a ser posibles alternativas al camino
obtenido, y que podrían resultar mejor que el primero.
Por tanto, la operación a realizar para encontrar caminos alternativos es la siguiente. Dados tres
arcos cuyos puntos son (i ,i +1), (j, j +1) y (k, k + 1), tal que i < j < k, con unos costes asociados
c
i , i+1
, c
j , j+1
yc
k , k+1
, tal y como se puede ver en la figura 3.16.
34
GMOR: Google Maps para la Optimización de Rutas
Figura 3.16: Estado inicial.
Si se da la condición de que la suma de los costes de los tres arcos que estamos tratando de
optimizar es mayor que la suma del coste del arco que va de i a j + 1, más el coste del arco que va
de j a k + 1, y más el coste del arco que va de k a i + 1, o lo que es lo mismo,
c
i , i+1
+c
j , j +1
+c
k ,k +1
>c
i , j+1
+c
j ,k +1
+c
k ,i+1
entonces hemos encontrado un camino mejor que el
que teníamos en la solución actual. Por tanto deberemos eliminar los arcos (i, i + 1), (j, j + 1) y (k,
k + 1), y sustituirlos por los arcos (i, j + 1), (j, k + 1) y (k, i + 1) teniendo en cuenta que en este
algoritmo no tenemos que cambiar el sentido a ningún camino entre estos arcos, tal y como pasaba
en el algoritmo anterior, ver figura 3.17.
35
GMOR: Google Maps para la Optimización de Rutas
Figura 3.17: Después de la optimización.
Esta operación se debe repetir para todos los arcos del camino en estudio, teniendo en cuenta que i
debe ser menor que j y j debe ser menor que k, y hasta que no se puedan realizar más intercambios
en el camino en estudio.
Al igual que el algoritmo anterior (2-Opt), éste se ejecuta también tras cada iteración del algoritmo
de Ahorros de Clarke & Wright, con lo que logramos que cada vez que se fusionan dos rutas,
consigamos un mejor camino entre los puntos, en el caso de que sea posible.
En este caso el algoritmo tiene una complejidad O¦ n
3
) .
3.3.3. Optimización factorial
Este algoritmo, a diferencia de los dos anteriores, no trata de encontrar una mejor ruta sino que
encuentra la ruta más óptima para un conjunto de puntos dados. Su objetivo es el de encontrar la
mejor ruta que une todos los puntos pertenecientes a la ruta pasada. Para ello, lo que el algoritmo
hace es comprobar una por una cada una de las posibles soluciones al problema, es decir,
comprueba cada uno de los posibles caminos que unen todos los puntos.
36
GMOR: Google Maps para la Optimización de Rutas
Figura 3.18: Optimización Factorial.
En la figura 3.18 vemos un ejemplo de esta optimización. El primer dibujo sería la ruta que se le ha
facilitado al algoritmo, mientras que el resto de dibujos son el resto de posibles rutas, y que este
algoritmo calcula para encontrar la de menor coste.
La operación para encontrar caminos alternativos en este algoritmo es la siguiente. Al algoritmo se
le pasa la lista de puntos que forman la ruta que se quiere optimizar, y éste mediante llamadas
recursivas construye todas las posibilidades pero de manera que no se puedan repetir puntos en la
solución actual, es decir, la primera solución que hallará será en el orden que se le suministre la lista
de puntos. Una vez tiene todos los puntos en una posible solución, comprueba si es la mejor
solución alcanzada y si es así entonces la almacena por si llega a ser la más óptima.
En estos cálculos los puntos de salida y llegada sólo se tienen en cuenta al calcular el coste de la
ruta, ya que estos puntos tienen un papel que es permanente y de ahí que no entren en las posibles
permutaciones.
La complejidad de este algoritmo es por tanto O¦ n!) . Dada la carga computacional que esto
supone, en un principio optamos por que esta optimización sólo se ejecutase con conjuntos de
puntos de poco tamaño (n < 8 puntos), pero finalmente se dejó la elección de ese parámetro al
propio usuario, el cual puede modificarla en cualquier momento.
Este tipo de optimización se engloba dentro de los denominados métodos exactos. En este tipo de
metodologías, suele resolverse alguna relajación del problema y utilizarse un esquema de
ramificación y acotamiento al estilo del método Branch and Bound [10]. También se han propuesto
algoritmos basados en Programación Dinámica que aceleran los cálculos mediante una relajación
del espacio de estados. Por otro lado, hay diversas implementaciones del método de Generación de
Columnas, que han resultado especialmente efectivas para problemas con ventanas de tiempo muy
ajustados. Para un completo compendio de métodos exactos para problemas de enrutamiento de
vehículos, puede consultarse los trabajos de Laporte y Norbert [11] y de Laporte [12].
37
GMOR: Google Maps para la Optimización de Rutas
4. Manual de la aplicación
4.1. Formatos de archivos XML
Esta aplicación utiliza varios formatos de archivos según la opción escogida. Estos formatos se
diferencian entre sí en que se les va añadiendo información adicional según se va tratando el
problema.
A continuación se describen estos formatos en el orden natural en el que se va añadiendo dicha
información adicional.
Formato 1
Este formato es el que se carga en la interfaz de mapa digital para que ésta muestre una serie de
puntos en dicho mapa. La estructura viene a ser la mostrada a continuación:
<markers>
<marker lat="28.483158198194182" lng="-16.32346272468567" postal="Camino del
Medio, Spain" com="" list="" type="Salida" label="0" />
<marker lat="28.481328725656038" lng="-16.321359872817993" postal="Av Astrofisico
Francisco Sanchez, 38206 San Cristóbal de la Laguna, Spain" com="" list="3-5"
type="Parada" label="1" />
<marker lat="28.484148363410558" lng="-16.320748329162598" postal="Calle
Leocadio Machado, 38203 San Cristóbal de la Laguna, Spain" com="" list="3-7"
type="Parada" label="2" />
<marker lat="28.482818710839805" lng="-16.325318813323975" postal="Av de la
República de Venezuela, 38206 San Cristóbal de la Laguna, Spain" com="" list=""
type="Llegada" label="3" />
</markers>

En este formato cada uno de los elementos marker representan un punto en el mapa , y el
significado de sus campos es el siguiente:
• lat: Indica la latitud del punto en cuestión.
• lng: Indica la longitud del punto en cuestión.
• postal: Indica la dirección postal asignada al punto.
• com: Contiene un comentario aclaratorio para el punto en cuestión.
• list: Contiene una lista de cero o más elementos que representa según el tipo de nodo lo
siguiente:
➢ Salida: no se tiene en cuenta, ya que en la salida no se recogen alumnos.
38
GMOR: Google Maps para la Optimización de Rutas
➢ Parada: contiene una lista donde cada elemento consta de dos valores separados por
un guión, el primer valor es la etiqueta de uno de los puntos de llegada, y el segundo
valor la cantidad de alumnos que se dirigen a ese destino (destino-alumnos).
➢ Llegada: no se tiene en cuenta, ya que en la llegada se descargan los vehículos.
• type: Indica el tipo del punto en cuestión. Los diferentes tipos son:
➢ Salida: cuando queremos indicar que este punto es el inicio de la ruta.
➢ Parada: cuando queremos indicar que este es uno de los puntos por donde debemos
pasar.
➢ Llegada: cuando queremos indicar que este punto es el final de la ruta.
• label: Indica el número identificador de referencia (código) asociado al punto. Es un número
irrepetible (único) dentro de este archivo XML, y será usado para definir rutas.
Formato 2
Este formato es el que obtenemos una vez hemos calculado la matriz de distancias para los puntos
del problema. La estructura viene a ser la misma que la del formato 1 pero añadiendo la
información referente a la matriz de distancias, y es como sigue:
<markers>
<!-- Tabla generada el 23/1/2008 a las 16:55 horas -->
<distances length="4">
<row label=”0” elements="0,520,1011,568"/>
<row label=”1” elements="491,0,809,685"/>
<row label=”2” elements="1496,812,0,637"/>
<row label=”3” elements="859,685,637,0"/>
</distances>
<marker lat="28.483158198194182" lng="-16.32346272468567" postal="Camino del
Medio, Spain" com="" list="" type="Salida" label="0" />
<marker lat="28.481328725656038" lng="-16.321359872817993" postal="Av Astrofisico
Francisco Sanchez, 38206 San Cristóbal de la Laguna, Spain" com="" list="3-5"
type="Parada" label="1" />
<marker lat="28.484148363410558" lng="-16.320748329162598" postal="Calle
Leocadio Machado, 38203 San Cristóbal de la Laguna, Spain" com="" list="3-7"
type="Parada" label="2" />
<marker lat="28.482818710839805" lng="-16.325318813323975" postal="Av de la
República de Venezuela, 38206 San Cristóbal de la Laguna, Spain" com="" list=""
type="Llegada" label="3" />
</markers>

39
GMOR: Google Maps para la Optimización de Rutas
A este nuevo formato se le añade lo que viene comprendido entre las etiquetas distances, y donde
cada elemento row representa una fila en la matriz de distancias de un problema, siendo label una
referencia al punto al que pertenecen esas distancias y elements dichas distancias. Esta matriz no
tiene que ser simétrica, ya que hay calles con sentido de circulación único.
Nota: Éste es el fichero de entrada para el botón “Abrir” del programa principal.
Formato 3
Este formato es el que obtenemos una vez hemos calculado una solución al problema planteado, es
decir, la estructura es similar a la anterior pero añadiendo unos nuevos elementos que nos indican la
o las rutas resultantes de los problemas, quedándonos por tanto:
<markers>
<routes>
<route problem=”0” points="0,4,2,1,3"/>
</routes>
<distances length="5">
<row label=”0” elements="0,429,762,1176,656"/>
<row label=”1” elements="282,0,333,771,680"/>
<row label=”2” elements="615,333,0,438,1014"/>
<row label=”3” elements="874,771,438,0,938"/>
<row label=”4” elements="658,680,1014,683,0"/>
</distances>
<marker lat="28.484723597986779" lng="-16.324675083160400" postal="Calle
Marcelino Perdomo Reyes, 38206 San Cristóbal de la Laguna, Spain" com=""
list="" type="Salida" label="0"/>
<marker lat="28.482969594243151" lng="-16.325125694274902" postal="Av de la
República de Venezuela, 38206 San Cristóbal de la Laguna, Spain" com=""
list="3-5" type="Parada" label="1"/>
<marker lat="28.481743660350865" lng="-16.325190067291260" postal="Av de
Bartolomé Cairasco, 38206 San Cristóbal de la Laguna, Spain" com="" list="3-7"
type="Parada" label="2"/>
<marker lat="28.481243852449428" lng="-16.320748329162598" postal="Av Astrofisico
Francisco Sanchez, 38206 San Cristóbal de la Laguna, Spain" com="" list=""
type="Llegada" label="3"/>
<marker lat="28.483563695548227" lng="-16.320705413818359" postal="Calle
Leocadio Machado, 38203 San Cristóbal de la Laguna, Spain" com="" list="3-4"
type="Parada" label="4"/>
</markers>

40
GMOR: Google Maps para la Optimización de Rutas
En este nuevo formato se añade, con respecto a los anteriores, lo que está comprendido entre las
etiquetas routes, y donde cada uno de sus elementos route nos indica la ruta mediante una secuencia
de puntos a seguir. Contiene un atributo problem que indica a que problema pertenece de los que
tenemos en el archivo XML, y un atributo points que indica los puntos que pertenecen a la ruta en
cuestión mediante la etiqueta label que se encuentra dentro de este archivo XML.
Nota: Éste es el fichero que se obtiene al usar el botón “Guardar” de la parte de la aplicación que
calcula las rutas.
4.2. Pantalla principal
La pantalla principal de la aplicación consta de tres partes bien diferenciadas, ver figura 4.1.
Figura 4.1: Pantalla principal.
La primera de las partes corresponde a la toolbar. En ella encontramos opciones generales y de
navegación por la aplicación, como pueden ser las optimizaciones que queremos utilizar, un acceso
directo a la ayuda,... Esto se explicará a continuación.
La segunda parte contiene las dos funciones principales de la aplicación. Por un lado el acceso a la
parte que nos muestra la interfaz del mapa digital, y por otra el acceso que nos lleva a la pantalla de
resolución de problemas de cálculo de rutas. Estas dos partes se describen más adelante.
La tercera parte viene a ser una pequeña ayuda que nos va indicando en cada momento las opciones
que tenemos disponibles para realizar, y lograr de esta forma que la interfaz (además de ser sencilla)
sea también clara.
ToolBar
Tal y como se dijo anteriormente, en esta zona se encuentran las opciones que se pueden considerar
más generales de la aplicación.
Las opciones que tenemos disponibles de izquierda a derecha son las siguientes:
41
GMOR: Google Maps para la Optimización de Rutas
● Pantalla Principal: Nos permite volver a la pantalla principal. En el caso de haber abierto un
archivo XML, nos dará la posibilidad de resolver otro problema de ese mismo archivo o
volver a la pantalla principal.
● Opciones: Esta opción nos permite especificar las optimizaciones que queremos utilizar en
el algoritmo de Ahorros de Clark & Wright. Las posibles optimizaciones que tenemos son:
la 2-Opt, la 3-Opt y la optimización factorial, a la cual se le puede especificar el número
máximo del conjunto de puntos al que se le debe ejecutar dicha optimización. Es
recomendable que dicho parámetro no sea excesivamente grande ya que esto implicaría un
número mayor de operaciones a realizar con la consecuente ralentización de la ejecución del
algoritmo. Por defecto, están todas las optimizaciones habilitadas y el valor para la
optimización factorial es de 8, como se puede ver en la siguiente figura. También nos
permite especificar una semilla para el generador aleatorio de problemas (por defecto se usa
la hora del ordenador, lo que no permite repetir la generación consecutiva de un mismo
problema).
● Ayuda: Nos permite acceder a la ayuda del programa. En ella se explican todas las opciones
básicas de la aplicación de manera más simplificada que en este capítulo. También contiene
una breve descripción de los formatos de archivos XML utilizados por la aplicación. En
concreto, el contenido de esta ayuda es:
● Acerca de: Contiene información básica de la aplicación, como puede ser el autor o la
versión actual.
42
GMOR: Google Maps para la Optimización de Rutas
4.3. Interfaz del mapa digital
Esta interfaz se encuentra a su vez dividida en dos partes. En la parte superior tenemos el mapa
digital junto con todas las operaciones o informaciones relacionadas con éste. En la parte inferior
disponemos de un sencillo editor XML, que nos permite interactuar con el mapa digital en modo
texto, es decir, nos permite modificar la información que está mostrando el mapa actualmente. Estas
dos partes se pueden observar en las figuras 4.3 y 4.4.
Figura 4.3: Parte del Mapa Digital.
Figura 4.4: Parte del Editor XML.
También se dispone de un menú superior, en el que se engloban algunas opciones dependiendo de si
afectan al mapa digital o al editor XML.
43
GMOR: Google Maps para la Optimización de Rutas
4.3.1. Mapa digital (Parte Superior)
Esta sección esta dividida a su vez en dos zonas. A la izquierda tenemos un panel donde en su parte
superior se nos muestran datos correspondientes a las opciones elegidas en el apartado del menú
superior que engloba las operaciones a realizar sobre el mapa, como pueden ser campos a rellenar,
acciones a realizar,... A la derecha tenemos el propio mapa digital.
Menú general
Las opciones que podemos encontrar en este menú son las que están relacionadas con la
información que tenemos cargada en el mapa digital en un momento dado. Estas opciones son las
que se muestran en la figura 4.5.
Figura 4.5: Opciones del menú superior para el mapa digital.
A continuación, pasamos a describir cada una de ellas.
Copiar a XML
La finalidad de esta opción es pasar todos los puntos que actualmente tenemos creados en el mapa
digital a formato XML, para a continuación mostrarlos a través del editor XML situado en la parte
inferior de la pantalla.
Hay que tener en cuenta que con esta opción, los datos que tengamos en el editor XML en ese
momento serán borrados para añadir los datos procedentes del mapa digital.
Añadir a XML
El objetivo de esta opción es muy similar a la explicada en el apartado anterior, es decir, pasa todos
los puntos que actualmente tenemos creados en el mapa digital a formato XML, para a continuación
mostrarlos a través del editor XML situado en la parte inferior de la pantalla.
En este caso los datos que puede haber en ese momento en el editor XML no serán borrados, sino
que los nuevos datos procedentes del mapa digital se añadirán a los ya existentes en el editor XML.
Como consecuencia puede suceder que una misma localización aparezca dos veces en el XML
cuando se trate de un punto en el mapa que ya estaba en el XML. La herramienta controla esto
internamente para evitar duplicidades, pero pequeñísimas discrepancias pueden ser clasificadas
como puntos diferentes cuando son un mismo punto, o a un mismo punto cuando son dos, y en
estos casos se visualiza un mensaje.
44
GMOR: Google Maps para la Optimización de Rutas
Fijar Punto
La finalidad de esta opción es la de crear un punto en el mapa por medio de su dirección postal.
Para ello, una vez que seleccionamos la opción, en el panel “Opciones” se mostrarán una serie de
campos, tal y como se puede ver en la figura 4.6.
Figura 4.6: Fijar Punto.
Los campos a rellenar para realizar la operación son:
● Municipio: Se especifica el municipio de la localización donde se quiere fijar el punto. Por
ejemplo: San Cristóbal de La Laguna.
● Calle: Se especifica la calle de la localización donde se quiere fijar el punto. Por ejemplo:
Heraclio Sánchez.
● Número: Se especifica el número de la localización donde se quiere fijar el punto. Por
ejemplo: 5.
Hay que tener en cuenta que cuanto más completa sea la información con la que se rellenan los
campos, se tendrá una mayor probabilidad de encontrar la dirección deseada. Por ejemplo, no es lo
mismo simplemente poner como municipio “La Laguna” que poner “San Cristóbal de La Laguna”.
Se debe tener precaución con la información suministrada si no se quiere obtener un resultado
erróneo.
Ruta entre dos puntos
Esta opción nos permite visualizar un posible camino entre dos puntos de los que tenemos fijados
en el mapa.
45
GMOR: Google Maps para la Optimización de Rutas
Su modo de empleo es como sigue. Una vez hemos elegido esta opción, se nos mostrará en el panel
“Opciones” la figura 4.7.
Figura 4.7: Ruta entre dos puntos.
El primer paso tras ver estas indicaciones es escoger un color de entre los posibles. Este color será
el de la ruta dibujada entre los dos puntos que se escogerán.
El segundo paso es escoger los puntos entre los que queremos que se visualice la ruta. Para ello,
basta con simplemente hacer click en el primer punto, con lo que en el panel “Opciones” veremos el
contenido de la figura 4.8, y una vez hecho esto hacer nuevamente click sobre el punto que
queremos que sea el final de la ruta.
Figura 4.8: Ruta entre dos puntos (2).
Una vez realizados estos pasos deberemos obtener un resultado en el mapa digital similar al de la
figura 4.9.
Figura 4.9: Ruta entre dos puntos (3).
En el panel “Opciones” tendremos la posibilidad de borrar las rutas que tenemos dibujadas en el
mapa, ver figura 4.10.
46
GMOR: Google Maps para la Optimización de Rutas
Figura 4.10: Ruta entre dos puntos (4).
Otra posibilidad para borrar las rutas pero de manera individual es haciendo click sobre ellas. Si lo
hacemos se nos mostrará un botón en el panel “Info” que nos permite borrar dicha ruta.
Matriz de distancias
Esta opción nos permite calcular la matriz de distancias entre todos los puntos que pertenecen a un
problema determinado. Para ello, una vez hemos escogido esta opción se nos solicita escoger, en el
panel “Opciones”, uno o más pares de puntos salida-llegada para calcular una o más matrices.
Mediante el botón “Añadir Matriz” introducimos las matrices de distancias que queremos hallar. Y
una vez tenemos introducida alguna se habilita el botón “Iniciar Cálculo de Matrices”, el cual una
vez se ejecuta nos muestra en el panel “Opciones” un mensaje de espera y una barra de progreso en
la cual se nos indica el tanto por ciento de la operación a realizar, y el tiempo estimado para su
finalización en cada una de las matrices que se quieren calcular, como en la figura 4.11.
47
GMOR: Google Maps para la Optimización de Rutas
Figura 4.11: Matriz de distancias.
Durante el proceso de la obtención de las diferentes distancias no se debe hacer ninguna otra
operación. Se debe esperar hasta que éste finalice. El proceso puede tardar hasta horas dependiendo
del número de localizaciones y de la velocidad de la conexión a internet.
Importante: Una vez haya acabado de calcular la matriz de distancias, se cargará en el editor XML
una estructura XML con la que crearemos un fichero para guardar a disco, y de este modo nos
servirá como entrada para la parte de la aplicación donde se resuelven los problemas de cálculo de
ruta, ver figura 4.12.
Figura 4.12: Fichero XML con matriz de distancias.
Debido a la limitación impuesta que supone el uso de la API de Google Maps de forma gratuita, no
se puede realizar un número excesivamente rápido de peticiones a sus servidores. En concreto,
Google permite a los usuarios de su API para Google Maps gratuita una petición a sus servidores
cada 8,64 segundos, lo que nos permite realizar unas 10.000 peticiones a sus servidores al día.
Para intentar clarificar esto, supongamos que tenemos un problema que contiene 100 puntos. Si
queremos calcular la matriz de distancias, tendremos que calcular 100 x 100 distancias, o lo que es
lo mismo, deberemos realizar 10.000 peticiones a los servidores de Google Maps. Si tenemos en
cuenta que el tiempo necesario para petición es de 8,64 segundos, entonces el tiempo que nos
tomará calcular la matriz de distancias es de 10.000 x 8,46 = 84.600 segundos, y si lo pasamos a
horas 23 horas y media. Por lo que este proceso implica prácticamente 1 día.
48
GMOR: Google Maps para la Optimización de Rutas
Dibujar Ruta
Esta opción nos permite que una vez obtenida una solución, mediante el calculador de rutas de la
aplicación, a uno o varios problemas de rutas planteados dibujarlo en el mapa digital.
Para ello, una vez hemos ejecutado la opción se nos invita a escoger el fichero XML en el cual
hemos almacenado la solución del problema en cuestión, ver figura 4.13.
Figura 4.13: Escoger fichero con rutas.
Tras escoger el archivo donde tenemos una o más soluciones y presionar el botón “Aceptar”, en el
caso de tener información previamente cargada en el mapa, se nos preguntará si queremos
conservarla o eliminarla antes de cargar la solución.
Una vez hemos respondido la pregunta anterior, se nos permitirá elegir en el panel de “Opciones”
que soluciones de las que contiene el archivo XML queremos dibujar en el mapa.
Para ello, debemos añadir una o más soluciones mediante el botón “Añadir Ruta”, y una vez hecho
esto se habilitará el botón “Dibujar Rutas”, que tal y como su nombre indica dibujará las soluciones
escogidas en el mapa.
Una vez hecho lo anterior deberemos esperar a que se terminen de dibujar todas las rutas que
componen la solución, por lo que tenemos que esperar a que la aplicación así lo indique mediante
un mensaje que se mostrará al usuario. A continuación, se nos mostrará en el panel de “Opciones”
la posibilidad de limpiar completamente el mapa de las rutas dibujadas, aunque tal y como ya se
mencionó en la opción de rutas entre dos puntos, estas rutas pueden ser borradas manualmente
haciendo click sobre ellas.
49
GMOR: Google Maps para la Optimización de Rutas
El resultado que se debe obtener una vez acabado el proceso debe ser similar al de la figura 4.14.
Figura 4.14: Rutas dibujadas sobre mapa digital.
Panel izquierdo (Opciones e Info)
Este panel situado a la izquierda del mapa digital tiene la función de apoyar las operaciones a
realizar sobre éste, aunque también algunas relacionadas con el editor XML, y que serán descritas
más adelante.
Está dividido en dos subpaneles. En la parte superior tenemos el panel “Opciones”, que ya ha sido
ampliamente descrito en punto anterior, y su función principal es la de indicar las instrucciones para
realizar las operaciones del menú sobre el mapa digital o sobre el editor XML. En la parte inferior,
nos encontramos con el subpanel “Info” cuya funcional principal, tal y como su nombre indica, es la
de proporcionar información. En concreto, la información que muestra este panel esta relacionada
con los puntos fijados en el mapa de la siguiente manera:
50
GMOR: Google Maps para la Optimización de Rutas
Cuando hacemos click en un punto que tenemos fijado en el mapa digital, se abre una ventana sobre
ese punto como la mostrada en la figura 4.15.
Figura 4.15: Ventana de los puntos.
En esa ventana podemos observar que tenemos varios campos bien diferenciados. En la parte
superior, tenemos lo que vendría a ser la dirección postal donde tenemos fijado el punto. Justo
debajo, las geocoordenadas del punto y su identificador. Luego tenemos un cuadro llamado
Comentario cuya función es la de tener textos que sirvan de información adicional para el punto
(por ejemplo en la figura 4.15 estamos indicando el número de la parada que se le asignó a ese
punto). Y por último, tenemos otro cuadro llamado Demandas en el cual podemos tener una lista de
pares de números (por ejemplo para nuestro problema podría tratarse del numero de alumnos a
recoger en dicho punto, y podrían ser 12 alumnos a la parada 2 y 14 alumnos a la parada 3 como
podemos ver también en la figura 4.15).
Independientemente de los campos antes descritos, contamos con un botón “Borrar”, el cual permite
borrar el punto del mapa digital.
Una vez explicada la información que tiene asociada cada punto, podemos pasar a explicar en
profundidad la función que tiene el panel “Info”.
51
GMOR: Google Maps para la Optimización de Rutas
Cada vez que se hace click sobre un punto, a parte de mostrarse la ventana anteriormente descrita,
en el panel “Info” se cargan todos los datos referentes a ese punto, como se muestra en la figura
4.16.
Figura 4.16: Panel “Info”.
Este panel se encarga de leer la información que se puede ver en la ventana del punto junto con
alguna adicional, y nos da la posibilidad de modificarla como queramos, es decir, añadir datos a la
dirección o modificarla, añadir comentarios, cantidades a la lista de demandas,...
En concreto los campos que contiene este panel “Info” son los siguientes:
● Dirección: Contiene la dirección donde ha sido fijado el punto.
● Comentario: Contiene comentarios aclaratorios sobre el punto.
● Añadir Demandas: Da la posibilidad de añadir o modificar elementos de la lista de
demandas. Si se desea añadir un elemento, bastará con seleccionar el campo nuevo, escoger
el destino de la ruta, escribir una cantidad en el recuadro alumnos y presionar el botón
“Guardar”. En el caso de querer modificar, la operación a realizar es similar, salvo que en
lugar de nuevo, deberemos especificar la posición de la lista que queremos modificar.
52
GMOR: Google Maps para la Optimización de Rutas
● Eliminar Demandas: En el caso de querer eliminar una demanda, deberemos seleccionar la
posición a eliminar y presionar el botón “Borrar”.
● Tipo: En este campo podemos modificar el tipo asignado al punto, estos tipos pueden ser
“Salida”, “Parada” y “Llegada”, por defecto al crear un punto el tipo asignado es el de
Parada. Para cambiar entre los distintos tipo basta con seleccionar uno en la lista y presionar
el botón “Cambiar”.
Hay que tener en cuenta que para que los cambios realizados sean permanentes, se debe utilizar el
botón “Guardar” de cada una de las secciones del panel “Info”, de otro modo algunos campos de la
información del punto no serán actualizados.
Nótese que cada localización tiene además una referencia interna “label” que no es modificable por
que es un contador interno. Tampoco se muestran los campos de las geocoordenadas en este panel
pero pueden ser modificados moviendo el punto arrastrándolo con el cursor del ratón, explicado
más adelante.
Mapa digital
El mapa digital cuenta con varios controles que nos permiten realizar operaciones sobre él de forma
directa.
Zoom y movimientos
El primero de ellos se encuentra en la parte izquierda del mismo, y no permite movernos por el
mapa en cualquier dirección o realizar zoom sobre la zona centrada actualmente, ver figura 4.17.
Figura 4.17: Control para el movimiento y el zoom.
53
GMOR: Google Maps para la Optimización de Rutas
Tipos de mapas
También se dispone en la parte superior derecha del mapa de otro control, el cual nos permite
visualizar los distintos tipos de mapas facilitados por Google Maps.
Los diferentes tipos de mapas son tres.
El primero de ellos es un mapa como los que habitualmente se tienen, mediante dibujos, ver figura
4.18. En este tipo de mapas se dispone de gran cantidad de información.
Figura 4.18: Mapa normal.
La segunda opción disponible es la de visualizar imágenes que provienen directamente de las
tomadas por un satélite, o en ocasiones por un avión que vuela a grandes alturas, ver figura 4.19. En
este otro tipo, no se dispone de tanta información escrita como en el anterior pero al tratarse de
imágenes reales, la información visual es mucho mayor.
Figura 4.19: Mapa por satélite.
Por último, tenemos lo que sería una versión híbrida de los dos mapas anteriores, en la que podemos
ver toda la información que era mostrada en el primer tipo de mapa situada encima de las imágenes
proporcionadas por los satélites. Por tanto podemos decir que este último tipo contiene las ventajas
de los dos anteriores: por un lado contiene mucha información escrita, y por otro también cuenta
con la información visual gracias a las imágenes reales, ver figura 4.20.
54
GMOR: Google Maps para la Optimización de Rutas
Figura 4.20: Mapa híbrido.
Menú popup
También está disponible un menú que se muestra utilizando el botón derecho del ratón, ver figura
4.21.
Figura 4.21: Menú Popup.

Las operaciones que se pueden realizar desde este menú son las siguientes:
● Acercarse: nos permite aumentar el zoom en el mapa.
● Alejarse: nos permite disminuir el zoom en el mapa.
● Centrar mapa aquí: nos permite centrar el mapa en el punto donde se haya hecho click para
mostrar este menú.
● Poner marca aquí: nos permite fijar un punto donde se haya hecho click para mostrar este
menú. Con esta opción, si el punto se fija en un lugar conocido se le añade la dirección por
defecto del lugar, que puede ser modificada luego, tal y como se mencionó en el apartado
del panel “Info”.
55
GMOR: Google Maps para la Optimización de Rutas
Cabe destacar, que aunque estas opciones se parezcan al primer control descrito en este punto, no es
así, ya que mientras que los controles anteriores están orientados al punto donde se encuentra
centrado el mapa, estas opciones están orientadas al punto donde se encuentra el cursor. Con este
control logramos simplificar algunas operaciones al usuario de la aplicación.
Puntos
Aunque ya se han mencionado prácticamente todas las características de ellos en los anteriores
puntos, falta una característica por describir.
Esta característica es la que nos da la posibilidad de mover los puntos por el mapa. Para ello, basta
con mantener el botón del ratón pulsado sobre uno de los puntos que tenemos fijados en el mapa, y
sin soltar el botón de ratón moverlo hacia la posición que deseamos.
Conviene tener presente que cuando cambiamos la localización de un punto, si llega a modificarse
la dirección que actualmente contiene por otra, la aplicación nos mostrará un mensaje de
advertencia y nos permitirá decidir si conservar la dirección postal que tenía o cambiarla por la
nueva dirección. Ver figura 4.22.
Figura 4.22: Mensaje de advertencia.
4.3.2. Editor XML (Parte Inferior)
En esta segunda zona, tal y como comentamos anteriormente, contamos con un sencillo editor para
los archivos XML de la aplicación, para lo cual se cuenta con algunas opciones básicas como
pueden ser: cortar, copiar, pegar,...
También se cuenta con unas cuantas opciones que se pueden realizar desde el menú general, en la
parte superior de la interfaz.
Menú general
Las opciones que podemos encontrar en este menú son las que están relacionadas con la
información que tenemos cargada en el editor XML en un momento dado. Estas opciones son las
que se muestran en la figura 4.23.
56
GMOR: Google Maps para la Optimización de Rutas
Figura 4.23: Menú Archivo XML .
A continuación pasamos a describir cada una de ellas.
Copiar a mapa
La finalidad de esta opción es pasar todos los puntos que actualmente tenemos cargados en el editor
XML al mapa digital. Para ello, se deberá leer el contenido del editor XML y a continuación crear
los puntos con los atributos que tienen cada uno de los elementos de la estructura XML en el mapa
digital situado en la parte superior de la pantalla.
Hay que tener en cuenta que con esta opción los datos que tengamos en el mapa digital en ese
momento serán borrados para añadir los datos procedentes del editor XML.
Añadir a mapa
El objetivo de esta opción es muy similar a la explicada en el apartado anterior, es decir, lee todos
los puntos que actualmente tenemos cargados en el editor XML, para a continuación crear por cada
uno de los elementos de la estructura XML un punto en el mapa digital, teniendo en cuenta los
atributos de dicho elemento del XML.
Aunque en este caso tenemos la particularidad de que los puntos que puede haber en ese momento
en el mapa digital no serán borrados, sino que los nuevos puntos procedentes del editor XML se
añadirán a los ya existentes en el mapa digital.
Abrir archivo
Esta opción del menú nos permite cargar el contenido de archivos XML de nuestra aplicación que
tenemos almacenados en nuestro disco duro. Para ello, una vez escogida la opción se nos muestra
en el panel “Opciones” un diálogo para escoger el archivo que queremos cargar en el editor XML.
Ver figura 4.24.
Figura 4.24: Abrir archivo.
Una vez escogido el archivo XML que queremos cargar bastará con presionar el botón “Aceptar”, y
tendremos la información del archivo cargada en el editor XML.
57
GMOR: Google Maps para la Optimización de Rutas
Hay que destacar que con esta opción si no se dispone de ningún punto creado en el mapa digital, se
cargan los datos simultáneamente en el editor XML y en el mapa digital. Esto se indica en el panel
“Opciones” una vez se ha terminado la operación con éxito. Ver figura 4.25.
Figura 4.25: Cargado (1).
Si se da el caso de que ya hay puntos creados en el mapa digital, entonces la aplicación sólo cargará
el contenido de dicho archivo XML en el editor XML, indicándolo con el siguiente mensaje en el
panel “Opciones”, ver figura 4.26.
Figura 4.26: Cargado (2).
Nota: En el caso de que se esté usando el Microsoft Internet Explorar 6 o superior se mostrará un
mensaje de advertencia (ver figura 4.27) debido al hecho de que por defecto, este navegador no es
capaz de cargar los archivos XML desde el disco duro como consecuencia de las políticas de
seguridad que tiene. Por lo que para resolver este problema hay que dirigirse al menú
“Herramientas”, luego a “Opciones de internet”, pestaña de “Opciones avanzadas”, y en la parte de
seguridad deshabilitar la opción “Habilitar compatibilidad con XMLHTTP nativo”.
Figura 4.27: Mensaje advertencia.
Editor de texto
Tal y como se ha dicho anteriormente, la aplicación posee un sencillo editor de texto que nos
permite realizar cambios en los datos actualmente cargados y reflejar dichos cambios en el propio
mapa digital.
Este editor podemos dividirlo en dos partes. En la parte superior tenemos un pequeño menú que
contiene algunas opciones básicas, mientras que en la parte inferior tenemos el área de texto donde
será cargado el contenido de los archivos XML.
58
GMOR: Google Maps para la Optimización de Rutas
Menú superior
Este menú contiene algunas operaciones básicas para la edición de texto que pueden resultar muy
útiles. Ver figura 4.28.
Figura 4.28: Operaciones básicas.
Dichas opciones son las siguientes, de izquierda a derecha:
● Cortar: borrar el texto que este seleccionado.
● Copiar: copia el texto que este seleccionado.
● Pegar: pega un texto que haya sido copiado anteriormente a continuación de donde se
encuentre el cursor.
● Deshacer: deshace las últimas operaciones realizadas sobre el texto que contiene el editor.
● Rehacer: vuelve a hacer las últimas operaciones deshechas mediante la anterior opción sobre
el texto que contiene el editor.
● Outdent: borra un tabulado.
● Indent: añade un tabulado.
Nota: En navegadores como por ejemplo el Mozilla FireFox, las opciones de cortar, copiar y pegar
no están disponibles debido a políticas de seguridad del propio navegador. Aunque es posible
disponer de estas opciones con el botón derecho del ratón.
Área de texto
Esta parte simplemente carga el contenido de los archivos XML para poder ser editado por el
usuario. Ver figura 4.29.
Figura 4.29: Área de texto.
4.4. Rutas
Esta segunda interfaz viene a ser como la segunda parte de la aplicación, ya que si en el mapa
digital fijamos una serie de puntos sobre el mapa, con esta segunda interfaz hallamos una o varias
59
GMOR: Google Maps para la Optimización de Rutas
rutas que recorran todos esos puntos, para más tarde volver al mapa digital y mostrar la solución
encontrada.
En esta interfaz se nos proporcionan un conjunto de opciones, tales como, cargar ficheros, hallar las
soluciones, visualizarlas,...
Figura 4.30: Interfaz de Rutas.
En esta interfaz, como se puede ver, seguimos contando con una pequeña sección que nos orienta en
el uso de la aplicación. Además tenemos una serie de botones que realizan las operaciones, y que
aunque al inicio no están todos habilitados, a medida que vamos usándolos se irán activando los
botones oportunos.
Las operaciones que realizan estos botones más en profundidad se explican a continuación.
Abrir
La función de este botón es la de cargar en la aplicación una archivo XML que contiene un
problema de rutas, es decir, que además de tener una lista de puntos, posee también la matriz de
distancias para todos esos puntos.
Hay que tener en cuenta que los problemas que se quieren cargar deben tener como requisito
indispensable un punto que sea la salida, y otro que sea la llegada. De otro modo el problema no se
podría llegar a resolver, ya que el planteamiento inicial seria incorrecto. También hay que
60
GMOR: Google Maps para la Optimización de Rutas
asegurarse que la demanda de un cliente nunca llegue a ser mayor que la capacidad de un vehículo,
ya que en nuestro problema un cliente sólo puede ser visitado una vez.
Si elegimos esta opción, a continuación se habilitan los botones de “Calcular” y “Calcular paso a
paso”.
Generar
La finalidad de está opción es la de generar un problema de rutas aleatorio. El objetivo de este
problema aleatorio no es otro que el de realizar pruebas sobre el algoritmo implementado en la
aplicación, y así comprobar los resultados proporcionados por el mismo.
Los problemas que se generan con está opción, han sido calculados aproximadamente para que
siempre devuelvan soluciones lo suficientemente complejas, varias rutas que contengan varios
puntos, y que siempre sean resolubles (las demandas de los clientes nunca sobrepasen las
capacidades de los vehículos).
Para que los resultados que se obtengan con esta opción sean lo suficientemente buenos para valorar
las soluciones devueltas por el algoritmo, el número total de puntos puede oscilar desde 10 a 50
puntos, las capacidades de los vehículos desde 20 a 40, y las demandas de los clientes como
máximo serán ¼ de la capacidad de los vehículos para el problema actual.
Cuando se usa esta opción de generar el problema aleatoriamente se habilitan los botones de
Calcular y Calcular paso a paso, pero el resultado obtenido por el algoritmo no se podrá almacenar
en un fichero, ya que esto podría provocar que el usuario intente cargar dicho resultado en el mapa
digital, con lo que se podrían provocar errores debido a que no están pensadas para ello (las
geocoordenadas no tienen sentido en el mundo real).
Calcular
Una vez hemos cargado en memoria un problema, ya sea desde un archivo XML proporcionado por
la interfaz de mapa digital, o desde un problema generado aleatoriamente, se habilitará este botón.
Su función es la de ejecutar el algoritmo de Ahorros de Clarke & Wright sobre el problema cargado
y utilizar las optimizaciones escogidas por el usuario, anteriormente descritas en este manual. En el
caso de que el problema haya sido leído desde un archivo XML cuando presionamos este botón se
nos abrirá una ventana en la que tenemos que escoger el problema que vamos a resolver, de los que
hay en el archivo XML, y la capacidad de los vehículos que se utilizará para dicho problema.
Una vez se ha ejecutado esta opción, se habilitará el botón que nos permite previsualizar el
resultado en el propio visualizador de la aplicación, y así evaluar la solución devuelta por la
aplicación antes de su carga en el mapa digital. También se activará el botón de “Guardar”, para
61
GMOR: Google Maps para la Optimización de Rutas
almacenar la solución en un fichero XML, pero esto dependerá de si el problema fue cargado desde
un fichero proporcionado por la parte del mapa digital, o fue un problema generado aleatoriamente.
Calcular paso a paso
Al igual que la anterior opción, una vez hemos cargado en memoria un problema, ya sea desde un
archivo XML proporcionado por la interfaz de mapa digital, o desde un problema generado
aleatoriamente, se habilitará este botón.
Su función es llevar a cabo la ejecución de una única iteración del algoritmo de Ahorros de Clarke
& Wright. Por tanto realiza la misma operación que el botón “Calcular” pero con la particularidad
que con cada pulsación se consigue que se ejecute una iteración del algoritmo.
Hay que tener en cuenta que esta opción se debe ejecutar antes que la del botón “Calcular”, ya que
de lo contrario, se ejecutaría el problema hasta llegar a una solución. También es posible que tras
ejecutar 1 o más veces esta opción, ejecutemos la de “Calcular” para realizar el resto de iteraciones
automáticamente.
Guardar
Esta opción nos permite almacenar en un archivo XML una solución al problema planteado. Para
ello añadirá a la información que ya fue cargada previamente las rutas que conforman la solución
obtenida.
Este botón no se habilitará tras la resolución de un problema si éste fue generado aleatoriamente, tal
y como se ha dicho anteriormente.
Visualizar
La finalidad de esta opción es la de permitirnos previsualizar las soluciones proporcionadas por la
aplicación sin tener que cargarlas en el mapa digital. O también, si el problema fue generado
aleatoriamente simplemente visualizar la solución generada para valorarla.
Una vez ejecutamos esta opción, se nos muestra una ventana (ver figura 4.31) con todos los datos
relevantes del problema planteado.
62
GMOR: Google Maps para la Optimización de Rutas
Figura 4.31: Visualizador.
Como se puede ver, esta ventana se divide en dos partes. Por un lado, tenemos una visualización
simplificada de la solución del problema, y por otro, tenemos un panel “Opciones” con todos los
datos mostrados en la parte izquierda, de manera que si desmarcamos dichas opciones, conseguimos
que no sean mostradas en el dibujo de la izquierda, resultando útil para cuando los problemas son
excesivamente grandes y no es posible ver todas las rutas con claridad.
Los campos que podemos elegir si queremos que se muestren o no son: el nombre de los puntos
(color rojo), las demandas de los clientes (color azul) y cada una de las rutas. Para cada una de las
rutas que estén dibujadas en el mapa, en el panel “Opciones”, se muestra el coste de dicha ruta y la
cantidad de elementos que transporta el vehículo que recorre dicha ruta.
En lo referente al dibujo, el punto verde es la salida, el azul es la llegada, y el conjunto de puntos
rojos son las diferentes paradas por donde tienen que pasar los vehículos. El resto de colores se
corresponden con los campos descritos para el panel “Opciones”.
Este visualizador se habilita una vez hemos ejecutado el botón “Calcular” para que de este modo
podamos ver el resultado obtenido tras la ejecución. Para el caso de esta opción, no importa si el
problema ha sido generado aleatoriamente o ha sido cargado desde un archivo XML proporcionado
63
GMOR: Google Maps para la Optimización de Rutas
por la interfaz del mapa digital.
También es posible abrir este visualizador cuando usamos la opción de “Calcular paso a paso”, con
lo que conseguimos ver cómo se va resolviendo el problema paso a paso, lo que supone una ayuda
importante a la hora de ver si el algoritmo funciona correctamente.
Por último decir que debajo del panel donde se muestra el dibujo simplificado de la solución,
tenemos la capacidad de los vehículos para el problema planteado.
4.5. Requisitos de la aplicación
Los requisitos de esta aplicación no son muy extensos, pero si indispensables para su correcto
funcionamiento. Estos requisitos son:
● Tener instalado un navegador web capaz de interpretar el lenguaje Javascript, tales como
Mozilla Firefox, Microsoft Internet Explorer, Opera,...
● Tener instalado Microsoft .NET Framework 1.1 o superior.
● Conexión a internet.
64
GMOR: Google Maps para la Optimización de Rutas
5. Futuro
5.1. Ampliaciones del problema
Dado que, tal y como se ha dicho anteriormente, el problema no trata situaciones totalmente reales,
las ampliaciones que a continuación exponemos están enfocadas precisamente a obtener un mayor
realismo.
A continuación, se describen unas ampliaciones del problema inicial que añaden algunos otros
factores al problema, haciéndolo más verídico.
5.1.1. El problema con flota heterogénea (FSMVRP)
En los problemas con flota heterogénea los costos y capacidades de los vehículos varían, existiendo
un conjunto T = {1, . . . , |T|} de tipos de vehículo. La capacidad de los vehículos k T ∈ es q
k
y
su costo fijo (si lo tuvieran) es f
k
. Los costos y tiempos de viaje para cada tipo de vehículo son
c
ij
k
y t
ij
k
respectivamente. Se asume que los índices de los vehículos están ordenados en forma
creciente por capacidad (es decir, q
k
1
≤ q
k
2
para k
1
, k
2
∈T , k
1
k
2
).
En la siguiente formulación de flujo de vehículos de tres índices [8] se agrega un índice para
discriminar entre los tipos de vehículos.
min

k∈T
f
k

j ∈N
+
¦0)
x
0j
k
+

k ∈T

¦i , j )∈A
c
ij
k
x
ij
k
(1.15)
s. a.

k ∈T

i∈A
+
¦ j )
x
ij
k
=1 ∀ j ∈V \{0}
(1.16)

j ∈N
+
¦ i)
x
ij
k


j∈N
-
¦i )
x
ij
k
=0 ∀i ∈V , ∀k∈T
(1.17)
r
0
=0
(1.18)
r
j
−r
i
¯¦d
j
+q
∣T∣
)

k∈T
x
ij
k
−q
∣T∣
∀i ∈V \{0} , ∀ j ∈N
+
¦i )
(1.19)
k
r
j
<

k∈T

i ∈N
-
¦ j)
q
k
x
ij
i
∀ j ∈V \{0}
(1.20)
x
ij
k
∈¦0, 1¦ ∀¦i , j )∈A, ∀k ∈T
r
j
¯0 ∀ j ∈V
Las variables binarias x
ij
k
indican si el arco (i, j) es utilizado por el vehículo k y las variables
r
i
positivas indican la carga acumulada en la ruta correspondiente hasta el nodo i (inclusive). La
función objetivo (1.15) mide el costo total de la solución incluyendo costos fijos y variables. Las
restricciones (1.16) establecen que todo cliente debe ser visitado por algún vehículo. En (1.17) se
indica que si un vehículo de tipo k visita al nodo i, entonces un vehículo del mismo tipo debe
abandonarlo. Las restricciones (1.18) y (1.19) fijan los valores de las variables
r
i
y actúan como
restricciones de eliminación de subrutas, mientras que la capacidad de los vehículos se impone en
65
GMOR: Google Maps para la Optimización de Rutas
(1.20). En esta formulación se asume que la cantidad de vehículos de cada tipo es ilimitada. El
problema correspondiente se denomina Fleet Size and Mix Vehicle Routing Problem (o FSMVRP).
No solo se debe decidir las rutas, sino la composición de la flota de vehículos a utilizar.
Usualmente, al tratar con problemas de flota heterogénea, se opta por utilizar este modelo aún
cuando en algunos casos no refleja la realidad.
Si la cantidad de vehículos disponibles de cada tipo k fuera
v
k
, conocida de antemano, debería
agregarse las restricciones

j ∈N
+
¦ 0)
x
0j
k
<v
k
∀k ∈T
5.1.2. El problema con ventanas de tiempo (VRPTW)
En esta variante del problema, además de capacidades, cada cliente i ∈ V \ {0} tiene asociada una
ventana de tiempo
[ e
i
, l
i
|
que establece un horario de servicio permitido para que un vehículo
llegue a él y un tiempo de servicio o retraso
s
i
.
Si (i, j) es un arco de la solución y
t
i
y t
j
son las horas de llegada a los clientes i y j, las ventanas
de tiempo implican que necesariamente debe cumplirse
t
i
≤ l
i
yt
j
≤l
j
. Por otro lado, si
t
i
e
i
,
entonces el vehículo deberá esperar hasta que el cliente “abra” y necesariamente
t
j
=e
i
+s
i
+t
ij
.
Utilizando los nodos 0 y n + 1 para representar al depósito y el conjunto K para representar a los
vehículos (no a los tipos de vehículos como en la sección anterior), el problema se formula para una
flota de vehículos, posiblemente heterogénea, de la siguiente manera [9]:
min

k∈K

¦ i , j) ∈A
c
ij
k
x
ij
k
(1.21)
s. a.

k ∈K

j ∈N
-
¦ i)
x
ij
k
=1 ∀i ∈V ∖¦0, n+1¦
(1.22)

j ∈N
+
¦ 0)
x
0j
k
=1 ∀k ∈K
(1.23)

j ∈n
+
¦ i)
x
ij
k


j∈N
-
¦i)
x
ji
k
=0 ∀k∈K , i ∈V ∖¦0, n+1¦
(1.24)

i∈V \{0,n+1}
d
i ∑
j∈N
+
¦ i)
x
ij
k
<q
k
∀k∈K
(1.25)
y
j
k
−y
i
k
¯s
i
+t
ij
k
−M ¦1−x
ij
k
) ∀i , j ∈V \{0, n + 1}, k ∈K (1.26)
e
i
<y
i
k
<l
i
∀i ∈V ∖¦0, n+1¦, k∈K (1.27)
x
ij
k
∈¦0, 1¦ ∀¦i , j )∈A, k∈K
y
i
k
¯0 ∀i ∈V ∖¦0, n+1¦, k ∈K
Las variables x
ij
k
indican si el arco (i, j) es recorrido por el vehículo k. Las variables y
i
k

indican la hora de llegada al cliente i cuando es visitado por el vehículo k (si el cliente no es visitado
por dicho vehículo el valor de la variable no tiene significado). La función objetivo (1.21) es el
costo total de las rutas.
66
GMOR: Google Maps para la Optimización de Rutas
La restricción (1.22) indica que todos los clientes deben ser visitados. Las restricciones (1.23) y
(1.24) determinan que cada vehículo k K ∈ recorre un camino de 0 a n + 1. La capacidad de cada
vehículo es impuesta en (1.25). Siendo M una constante lo suficientemente grande, la restricción
(1.26) asegura que si un vehículo k viaja de i a j, no puede llegar a j antes que y
i
+s
i
+t
ij
k
, y
actúan además como restricciones de eliminación de subrutas. Finalmente, los límites de las
ventanas de tiempo son impuestos en (1.27).
5.2. Otras heurísticas clásicas
Otras de las posibles ampliaciones en un futuro para este proyecto, podría pasar por implementar
algunas otras heurísticas clásicas que han sido planteadas para el CVRP. Un ejemplo se explica en
el siguiente punto.
5.2.1 Algoritmo de ahorros basado en matching
Cuando en el Algoritmo de Ahorros se decide unir dos rutas
r
i
y r
j
, se está descartando otras
uniones posibles en las que participan
r
i
or
j
(porque i y j dejan de ser extremos en la nueva
ruta). La unión que da el máximo ahorro podría, en algunos casos, hacer que las uniones que
permanecen factibles no sean buenas. Elegir siempre el máximo ahorro es una estrategia demasiado
voraz.
En el Algoritmo de Ahorros Basado en Matching se decide la unión a realizar considerando como
afecta ésta a las posibles uniones en iteraciones posteriores. Para esto, se considera un grafo que
tiene a todas las rutas como nodos y un arco entre dos nodos p y q cuyo peso es el ahorro obtenido
si las rutas correspondientes se combinan (siempre que la combinación sea factible). Un Matching
de peso máximo sobre dicho grafo da un conjunto de combinaciones a realizar que es globalmente
bueno.
Algoritmo de Ahorros Basado en Matching
Paso 1 (inicialización): Para cada cliente i construir la ruta (0, i, 0).
Paso 2 (cálculo de los ahorros): Actualizar
s
pq
para cada par de rutas p y q que pueda ser
combinado manteniendo la factibilidad. Si ningún par de rutas puede ser combinado, terminar.
Paso 3 (matching): Resolver un problema de Matching de peso máximo sobre un grafo cuyos nodos
son las rutas de la solución actual y en el cual hay un arco entre las rutas p y q con peso
s
pq
si su
combinación es factible.
Paso 4 (uniones): Dado el Matching de peso máximo, combinar todo par de rutas p y q tal que el
arco (p, q) pertenezca al Matching. Ir a 2.
Hallar un Matching de Peso Máximo en un grafo puede resolverse en tiempo polinomial en la
cantidad de nodos del grafo [17]. Pero, por un lado, el grafo tiene tantos nodos como rutas haya en
la solución (inicialmente hay n
2
rutas) y, por otro lado, se halla un nuevo Matching en cada
iteración. Entonces, para problemas grandes puede ser conveniente hallar el Matching en forma
aproximada mediante alguna heurística.
En la figura 5.1 se muestra una posible solución parcial de 5 rutas, el grafo asociado y la nueva
solución inducida por el Matching de Peso Máximo que es {(1, 3), (4, 5)}. El ahorro total es de 17.
Supongamos que el vehículo no tiene capacidad para satisfacer la demanda de ninguna combinación
67
GMOR: Google Maps para la Optimización de Rutas
de tres de las rutas originales. Si se hubiera ejecutado el Algoritmo de Ahorros clásico, se hubiera
combinado primero las rutas 3 y 4 y luego las 2 y 5, obteniendo un ahorro total de 15.
Figura 5.1: Iteración de un algoritmo de ahorros basado en Matching.
En la propuesta de Desrochers y Verhoog [18] y de Altinkemer y Gavish [19], al combinar dos
rutas, no solamente se considera la posibilidad de insertar una al final de la otra como en el
Algoritmo de Ahorros original, sino todas las posibilidades de armar una nueva ruta con los clientes
de ambas. Entonces, si
S
p
y S
q
son los conjuntos de clientes de las rutas p y q, el ahorro por
combinarlas se define como
s
pq
=t ¦ S
p
)+t ¦ S
q
) −t ¦S
p
∪S
q
)
, donde t(S) indica el costo de una
solución óptima para el TSP sobre el conjunto de clientes S. Con esta definición no sólo se hace
costoso el cálculo de los ahorros, sino que además éstos deben ser re-calculados en cada nueva
iteración. Cuando la cantidad de clientes en cada ruta es grande conviene realizar el cálculo de
s
pq
en forma aproximada.
En las uniones dadas por el Matching de peso máximo una misma ruta no participa en más de una
unión (porque los arcos correspondientes forman un Matching en el grafo). Sin embargo, podría ser
ventajoso que la ruta resultante de una unión sea inmediatamente unida con otra. Resulta
conveniente, entonces, no realizar todas las uniones dadas por el Matching de peso máximo, sino
solamente algunas. Una opción es combinar sólo las rutas que correspondan al arco de mayor peso
del Matching [18]. Otra alternativa para realizar las uniones de manera más gradual es conectar los
nodos del grafo sobre el que se calcula el Matching con nodos ficticios con pesos tales que se
priorice la inclusión de algunos de estos últimos en el Matching [19]. Así, no todos los arcos del
Matching se corresponderán con uniones de rutas.
En la propuesta de Wark y Holt [20] el ahorro puede definirse de la forma usual descrita en el
algoritmo clásico de Ahorros, o puede modificarse para privilegiar las uniones que estén lejos de ser
infactibles (por ejemplo, si la ruta resultante está lejos de llenar la capacidad del vehículo o lejos de
la máxima distancia permitida). Cuando no hay más combinaciones de rutas que sean factibles,
algunas rutas son divididas probabilísticamente, lo que permite proseguir la búsqueda de soluciones.
5.3. Búsquedas locales multi-ruta
Otra posible ampliación que proponemos es la de implementar búsquedas locales pero en esta
ocasión multi-rutas, es decir, buscan la mejor solución intercambiando nodos entre las diferentes
rutas que forman la solución final.
68
GMOR: Google Maps para la Optimización de Rutas
Van Breedam [40] propuso dos operadores para intercambiar clientes entre un par de rutas. En el
operador String Relocation, una secuencia de m nodos es transferida de una ruta a la otra
manteniendo el orden en la ruta original. En operador String Exchange una ruta envía una secuencia
de m clientes a la otra y esta última envía otra secuencia de n clientes a la primera. Simbólicamente
se denota con (m, 0) a cada String Relocation y con (m, n) a cada String Exchange.
En las Figuras 5.2(a)-(b) se muestra un intercambio SR (2, 0) y en 5.2(c)-(d) se ilustra un
intercambio SE (2, 1).
Figura 5.2: String Relocation y String Exchange.
5.3.1 Transferencias cíclicas
Las transferencias cíclicas, introducidas por Thompson y Psaraftis [42], son intercambios multi-ruta
que intentan eliminar clientes de una ruta y reubicarlos en otra de manera cíclica. Si
R=¦r
1
,., r
m
¦
es el conjunto de rutas de la solución y ρ : R → R es una permutación cíclica de
algún subconjunto Rb R ⊆ (con |Rb| = b), la transferencia de exactamente k clientes de cada ruta r ∈
Rb a la ruta ρ(r) es una k-transferencia b-cíclica. Cuando Rb = R se habla de k-transferencias
cíclicas.
Dado un valor de k, buscar una k-transferencia cíclica que mejore la solución actual, puede
formularse como el problema de hallar un ciclo de costo negativo en un grafo dirigido G = (V,A,W).
Los nodos de G corresponden a conjuntos de k clientes que están en una misma ruta de la solución:
V =¦s/ s⊂r
i
,∣s∣=k , r
i
∈R¦
. El conjunto de arcos
A=¦¦ s
i
, s
j
)/ s
i
⊂R
i
, s
j
⊂R
j
, R
i
≠R
j
, R
j
∪s
i
∖ s
j
es factible¦
indica las transferencias factibles. El
arco
¦ s
i
, s
j
)
representa la transferencia que elimina los clientes
s
i
de
R
i
, los agrega a
R
j
y elimina
s
j
de
R
j
. El costo de un arco
¦ s
i
, s
j
)
es el incremento del costo en la ruta
R
j
si se realiza la transferencia, es decir,
w¦ s
i
, s
j
)=t ¦ R
j
∪s
i
∖ s
j
)
donde t(S) es el costo de un
TSP óptimo sobre el conjunto de clientes S.
Todo ciclo en G tal que sus nodos corresponden a conjuntos de clientes en rutas diferentes,
representa una k-transferencia cíclica. Dicha transferencia mejora la solución si el peso del ciclo
correspondiente es negativo. Encontrar un ciclo de costo negativo con las características deseadas es
NP-Hard [42].
Incluso G no puede ser construido en tiempo polinomial: ∣A∣es O¦ m
2
n
2k
) y calcular
w¦ s
i
, s
j
)

implica resolver un TSP.
69
GMOR: Google Maps para la Optimización de Rutas
6. Conclusiones
Las principales motivaciones para abordar este proyecto han sido la investigación en el ámbito de
los mapas digitales, y observar el beneficio que esta tecnología puede suponer para la resolución de
problemas reales.
Como ya se ha mencionado anteriormente, no era objetivo de este proyecto el resolver un problema
totalmente real, con todos los factores que ello conlleva, sino mostrar mediante un problema
simplificado la capacidad que tiene este tipo de tecnología para permitir plantearlo y, una vez
resuelto, mostrar la solución a dicho problema. Es por ello, que este proyecto se puede considerar
que está más centrado en los mapas digitales, aunque no por ello descuida la parte encargada de
resolver los problemas.
Mapas digitales
Tal y como hemos podido ver, las funciones proporcionadas por la API de Google Maps nos han
permitido personalizar nuestro mapa digital en gran medida.
Podemos decir que se ha cumplido satisfactoriamente con nuestras expectativas, ya que no sólo se
limita a movernos por un mapa mundial, sino que además nos permite obtener datos de suma
importancia para los problemas que pretendemos resolver, como puede ser la distancia para calcular
la matriz de distancias entre una serie de puntos que pertenecen a un problema.
También cabe destacar la cantidad de datos que contienen dichos mapas, no siendo aún totalmente
completos, y que nos permiten conocer los nombres de las calles, los sentidos de circulación, las
localizaciones exactas de las carreteras,...
Destacar también la posibilidad de agregar puntos al mapa de forma totalmente dinámica lo que nos
permite plantear un problema en el mapa de forma sencilla.
Por último, debemos decir que las limitaciones que Google impone para el uso de su API
gratuitamente empañan un poco los resultados obtenidos, ya que estas limitaciones están orientadas
hacia la consulta de sus servidores por lo que en algunas operaciones debemos respetar intervalos
de tiempo entre las distintas consultas a sus servidores. Esto provoca que dichas operaciones se
prolonguen considerablemente en el tiempo. Por otra parte, esto es totalmente comprensible ya que
ofrecer un servicio gratuito de esta magnitud debe ser un trabajo considerable.
Resolución de problemas de enrutamiento
En lo que se refiere al cálculo de soluciones en los problemas planteados en el mapa digital, a pesar
de no ser nuestra principal motivación para la realización del proyecto, podemos decir que los
resultados obtenidos son considerablemente buenos.
Para esta parte del proyecto decidimos consultar la literatura y llevar a cabo la implementación de
algunos algoritmos clásicos en la resolución de este tipo de problemas. Debido a esto nos decidimos
por el algoritmo de ahorros de Clarke & Wright (Savings Algorithm) con el que logramos obtener
soluciones a los problemas de enrutamiento de vehículos con capacidad limitada (CVRP)
totalmente viables, y que podían ser representados en el mapa digital correctamente.
Debido a que las solución obtenidas con el algoritmo anteriormente mencionado, a pesar de ser
correctas, estaban bastante lejos de ser óptimas se optó por implementar una serie de mejoras. Estas
70
GMOR: Google Maps para la Optimización de Rutas
mejoras en concreto son la 2-Opt, 3-Opt y la factorial. Gracias a ellas las soluciones que ahora se
obtienen son mucho mejores, llegando a ser óptimas en muchos casos, sobretodo a nivel local de
cada una de las rutas.
Por último decir que, para confirmar que estas mejoras y el algoritmo funcionaban correctamente
añadimos a la aplicación un debugger, que nos permite crear problemas generados aleatoriamente y
visualizar los resultados obtenidos, con lo que podemos observar por ejemplo como se eliminan los
cruces en las soluciones obtenidas mediante la mejora 2-Opt.
Como conclusión, el trabajo desarrollado durante este proyecto confirma que la tecnología
informática disponible actualmente, combinando tanto mapas digitales como algoritmos de
optimización, permiten el desarrollo e implementación de prototipos informáticos que pueden
ayudar notablemente a decisores que deban resolver problemas de logística tales como el diseño de
rutas de transporte escolar, recogida y entrega de mercancías y/o personas, rutas para visitar
clientes, etc.
71
GMOR: Google Maps para la Optimización de Rutas
Bibliografía
[1] Toth, P., Vigo, D.: An Overview of Vehicle Routing Problems. Monographs on Discrete
Mathematics and Applications. In: The Vehicle Routing Problem. SIAM (2000) 1–26
[2] Dantzig, G., Ramser, J.: The truck dispatching problem. Management Science 6 (1959) 80-
91
[3] Clarke, G., Wright, W.: Scheduling of vehicles from a central depot to a number of delivery
points. Operations Research 12 (1964) 568–581
[4] Dantzig, G., Fulkerson, D., Johnson, S.: Solution of a large scale traveling salesman
problem. Operations Research 2 (1954) 393–410
[5] C. Miller, A. Tucker, R. Zemlin: Integer programming formulation of traveling salesman
problems. Journal of the ACM 7 (1960) 326–329
[6] Garey, M., Johnson, D.: Computers and intractability: a guide to the theory of NP-
completeness. W. H. Freeman and Company (1979)
[7] Martello, S., Toth, P.: Knapsack problems: algorithms and computer implementations. John
Wiley and Sons (1990)
[8] Golden, B., Assad, A., Levy, L., Gheysens, F.: The fleet size and mix vehicle routing
problem. Computers & Operations Research 11 (1984) 49– 66
[9] Cordeau, F., Desaulniers, G., Desrosiers, J., Solomon, M., Soumis, F.: The VRP with time
windows. Technical Report Cahiers du GERAD G-99-13, École des Hautes Études
Commerciales de Montréal (1999)
[10] Nemhauser, G., Wolsey, L.: Integer and Combinatorial Optimization. John Wiley & Sons
(1988)
[11] Laporte, G., Nobert, Y.: Exact algorithms for the vehicle routing problem. Annals of
Discrete Mathematics 31 (1987) 147–184
[12] Laporte, G.: The vehicle routing problem: an overview of exact and approximate algorithms.
European Journal of Operational Research 59 (1992) 345–358
[13] Yellow, P.: A computational modification to the savings method of vehicle scheduling.
Operational Research Quarterly 21 (1970) 281–283
[14] Golden, B., Magnanti, T., Nguyen, H.: Implementing vehicle routing algorithms. Networks
7(1977) 113–148
[15] Gaskell, T.: Bases for vehicle fleet scheduling. Operational Research Quarterly 18 (1967)
281–295
[16] Lin, S.: Computer solutions of the traveling salesman problem. Bell System Technical
Journal 44 (1965) 2245–2269
[17] Gabow, H.: An efficient implementation of Edmonds’ algorithm for maximum matching on
graphs. Journal of the ACM 23 (1976) 221–234
[18] Desrochers, M., Verhoog, T.: A matching based savings algorithm for the vehicle routing
problem. Technical Report Cahiers du GERAD G-89-04, ´École des Hautes ´Études
Commerciales de Montréal (1989)
72
GMOR: Google Maps para la Optimización de Rutas
[19] Altinkemer, K., Gavish, B.: Parallel savings based heuristics for the delivery problem.
Operations Research 39 (1991) 456–469
[20] Wark, P., Holt, J.: A repeated matching heuristic for the vehicle routing problem. Journal of
Operational Research Society 45 (1994) 1156–1167
[40] Breedam, A.V.: Improvement heuristics for the vehicle routing problem based on simulated
annealing. European Journal of Operational Research 86 (1995) 480–490
[42] Thompson, P., Psaraftis, H.: Cyclic transfer algorithms for multivehiclerouting and
scheduling problems. Operations Research 41 (1993) 935–946
73

GMOR: Google Maps para la Optimización de Rutas

2

GMOR: Google Maps para la Optimización de Rutas

Agradecimientos
Agradezco a Juan José Salazar González su apoyo e interés por el proyecto desde el primer día, así como sus consejos y aportaciones a lo largo del desarrollo del mismo. También quiero agradecer a mis padres (Nicolás y Maria) su apoyo incondicional, y su intento continuo por darme todas las facilidades posibles para la realización de la ingeniería informática.

3

.................. Ejemplo para el algoritmo de ahorros....................................3..28 3....................4...................................... Google Maps API.........................................................................................................................................................1......................................3...........................................3.............................3......2.............................................3..................................................................................................................................................2.................1...........................3................... 43 4..........................................................................................3........................................ 23 3.................................................................................................................... 25 3..11 1...3................................................................ 16 2............................................................................................................................................ 6 1....................2...................................................................................................................1................................................................................................34 3............... Consideraciones a tener en cuenta...................3.2...... Historia....... Características de los problemas........................................................................ Optimización factorial...................................................................................................... Definición.......................... Datos de entrada..................................................................2................................................ Optimización 2-Opt....4........ 30 3................... El problema de los m viajantes de comercio (m-TSP).... 31 3................................................................ Requisitos de la aplicación..................2.......................................2.GMOR: Google Maps para la Optimización de Rutas Índice Prólogo.............3.................... Datos de salida....1.....................................3.....................................2..... Optimización 3-Opt....2.................................................................... Otras heurísticas clásicas.............................................................................3..............................11 1............................2..... 65 5.............................................1.................................................... Definición.2................................... Editor XML (Parte Inferior).......................................................3........2......1. Método de resolución.........1............................ El problema con ventanas de tiempo (VRPTW)............................ 21 3.............................................................................................................. Nuestro caso práctico: Transporte escolar......2....................... Introducción al VRP..2.................... 41 4................. 23 3............................. 17 2................... Futuro..........8 1.......................................... El problema con flota heterogénea (FSMVRP).....17 2................................2............................................3..............36 4.................. Sistemas de Información Geográfica (SIG)................................................32 3..............1.....24 3......................................................................... Mejoras mediante búsquedas locales.............12 2......... 65 5...........................................................3... Introducción.........19 2............................1.................................................... Manual de la aplicación...20 2....................................................................................... Los depósitos.. Algoritmo de Ahorros (Clark & Wright)....................... El problema del viajante de comercio (TSP)..........1..............................................3.................................................... 15 2......... Google Maps..........3.....................................................................5....1........................................... 67 4 ................................................................. 65 5....................................................................................................2........... 18 2....... El problema con capacidades (CVRP)........................................................56 4.....................................2.........24 3...............................2................................ Traza del ejemplo........ Pantalla principal... Los clientes................. Historia.................................2....................2............. Rutas...................1.............11 1................2............66 5......................1.. Formatos de archivos XML....................8 1...............................8 1............................................... Descripción de nuestro problema.......................... 59 4..................................... Formulación matemática... 38 4..................................................................1..............1 Algoritmo de ahorros basado en matching..............................1..1........................................................... 67 5..............15 2.......2........................................................................... Interfaz del mapa digital....................8 1....... Ampliaciones del problema............ Mapa digital (Parte Superior)........2................ 64 5................................................................................38 4............ Los vehículos.........15 2...........................2.........................17 2.........44 4..1..........

...............................................1 Transferencias cíclicas.............3.............................................. Búsquedas locales multi-ruta.GMOR: Google Maps para la Optimización de Rutas 5........................... Conclusiones.............................................70 Bibliografía....................................... 69 6........................................................................................................ 68 5...............72 5 ...............................................................................................................................3.........

. hasta mapas con imágenes totalmente reales tomadas desde el aire. No se limitan a mostrar sólo representaciones de lugares. o incluso una versión híbrida de éstas dos. todo esto a través de una interfaz lo más sencilla e intuitiva posible para que cualquier persona con unos conocimientos básicos pueda sacar provecho. trazar rutas entre un determinado conjunto de puntos. con el objetivo de ofrecer una salida impresa o por pantalla. almacenar la información. convierta en una tarea fácil el interactuar con un mapa digital. y que puede llegar a englobar muchas funciones. llegando a lograr una interacción cada vez mayor con ellos.. Un mapa digital no es más que un almacenamiento de información espacial como dibujos electrónicos hechos a base de elementos gráficos sencillos (líneas. por otra parte. También cabe destacar que la manera en que muestran la información ha mejorado notablemente ya que pueden llegar a mostrar desde mapas tradicionales con mucha información contenida.GMOR: Google Maps para la Optimización de Rutas Prólogo Actualmente los mapas digitales son un elemento cada vez más habitual. un uso más personal como podría ser en viajes turísticos. por una parte. o incluso hasta un uso empresarial como podría ser el insertar publicidad en ellos. Se pretende aprovechar alguno de los mapas digitales disponibles en internet.) organizados en capas. trazar rutas. 6 .. en nuestro caso Google Maps. etc. La motivación de este proyecto precisamente está enfocada hacia el aprovechamiento de esta mayor interacción actual para lograr una serie de funcionalidades que puedan ser un indicio del potencial que esconden este tipo de software. localizar puntos. como puede ser buscar lugares... sino que son capaces de llegar a localizar lugares específicos. como puede ser desde un uso profesional como la cartografía. estos mapas son cada vez más sofisticados. Con los avances que se han ido realizando en las tecnologías. que sea capaz de obtener una solución bastante buena al planteamiento de un problema en el que se tenga que hallar rutas entre un conjunto de puntos.. puntos. para crear un entorno que. círculos.

ya sean importados desde el mapa digital o generados de forma aleatoria. Esta herramienta está compuesta de dos partes. con esta aplicación se intenta realizar una simulación de un problema real de rutas como puede ser el transporte escolar aunque de manera algo simplificada. y capaz de exportar los datos resultantes de las operaciones en el mapa digital mediante estructuras XML. de llevar a cabo una serie de operaciones básicas. y que cubran completamente las necesidades de los demandantes. y que el prototipo implementado sirva como inspiración para un futuro proyecto más complejo que aborde los problemas de manera más real. 7 .GMOR: Google Maps para la Optimización de Rutas Para tal fin se propone GMOR. un segundo módulo en el que resolver problemas de diseños de rutas entre un conjunto de puntos. así como gracias a la tecnología XML dar la posibilidad de integración con otros proyectos. una herramienta informática basada en Google Maps para el diseño de rutas de vehículos. Nuestro deseo es el de llegar a mostrar las amplias posibilidades que pueden llegar a tener el uso de los mapas digitales en problemas reales. Por un lado contiene una interfaz capaz de interactuar con un mapa digital de forma fácil e intuitiva. Por último. Y por otra.

Sistemas de Información Geográfica (SIG) 1. Historia Para la geografía. la biología y demás ciencias que hacen uso de la información geográfica los SIG han constituido una verdadera revolución para el conocimiento de los elementos y fenómenos que tienen lugar en la superficie terrestre. la topografía.2. De esta forma.GMOR: Google Maps para la Optimización de Rutas 1. analizar y desplegar en todas sus formas la información geográficamente referenciada con el fin de resolver problemas complejos de planificación y gestión.1. diseñado para capturar. 1. señalando un objeto se conocen sus atributos e. Primera etapa La primera etapa se extendería desde las primeras aproximaciones de los años cincuenta hasta 8 . en su acrónimo inglés) es una integración organizada de hardware. software. En su evolución histórica está mayoritariamente aceptada la existencia de unos periodos más o menos claros y definidos que engloban las distintas fases por las que ha transcurrido la evolución de los SIG desde su aparición hace casi cuarenta años. y facilitando al profesional la posibilidad de relacionar la información existente a través de la topología de los objetos. El sistema permite separar la información en diferentes capas temáticas y las almacena independientemente. Introducción 1. la geología. datos geográficos y personal. Definición Un Sistema de Información Geográfica (SIG o GIS.1. almacenar. El SIG funciona como una base de datos con información geográfica (datos alfanuméricos) que se encuentra asociada por un identificador común a los objetos gráficos de un mapa digital.1. con el fin de generar otra nueva que difícilmente podríamos obtener de otra forma. inversamente. manipular. La razón fundamental para utilizar un SIG es la gestión de información espacial. También puede definirse como un modelo de una parte de la realidad referido a un sistema de coordenadas terrestre y construido para satisfacer unas necesidades concretas de información. permitiendo trabajar con ellas de manera rápida y sencilla. preguntando por un registro de la base de datos se puede saber su localización en la cartografía.1.

Canadá Canadá es referente mundial en la historia de los SIG debido al Canadian Geographic Information System (CGIS). tanto en el ámbito propio de los Sistemas de Información Geográfica como en el de las tecnologías relacionadas. Por otro lado está el grupo que engloba a las universidades. Ese protagonismo estadounidense se prolonga desde los años cincuenta del siglo XX hasta la actualidad. El segundo de ellos es el más significativo en la evolución de los SIG. El nacimiento de los SIG va ligado al desarrollo de otros sistemas. Las iniciativas pioneras se llevaron a cabo en los Canadá. concebido y desarrollado desde 1966 lo que le convierte en el decano de los Sistemas de Información Geográfica y también el primero que utiliza ese nombre. Estados Unidos Los hitos más importantes de los SIG en los Estados Unidos son: • Laboratory of Computer Graphics and Spatial Analysis (LCG). Una característica importante de estos primeros pasos es que en todos los casos analizados las personas que iniciaron el desarrollo de estas tecnologías. Este grupo busca el desarrollo de sistemas automáticos con los que realizar análisis de datos geográficos y no tanto la producción de cartografía. y no puede compararse con ningún otro lugar. • Trabajos de la administración. y Gran Bretaña. En ellas también se intentan encontrar nuevos método para el tratamiento de la información espacial. los sistemas de Cartografía Asistida por Ordenador.GMOR: Google Maps para la Optimización de Rutas mediados de los setenta y se caracteriza por los esfuerzos individuales en el desarrollo y la aplicación de los sistemas. Lo que ambos grupos buscan es conseguir unas aplicaciones que de forma automática resuelvan cuestiones que hasta la fecha se habían solventado de manera manual. Creado en 1966 fue la primera iniciativa cuyo objetivo principal era el diseño y desarrollo de software específico para aplicaciones cartográficas. Es un claro ejemplo de dualidad ya que en la mayoría de los 9 . Por un lado encontramos instituciones y otras instancias gubernamentales que ponen en marcha sus iniciativas de manera particular para resolver los problemas derivados de sus actividades relacionadas con el tratamiento de la información geográfica. desconocían realmente que lo que estaban creando eran Sistemas de Información Geográfica. de los cuales ellos son claros herederos por su similitud. Estados Unidos. Su principal logro fue el Symap.

Cuarta etapa El paso siguiente a la etapa comercial para profesionales. también a inicios de los años ochenta. la segunda etapa se solaparía en sus primeros momentos con la primera. sintetizado en su capacidad de previsión. de antelación. Su principal aportación al mundo de los SIG es la creación del estándar mundial en esta tecnología. especialmente por parte de las instancias gubernamentales y de la administración. se corresponde con la década de los noventa. por la disminución de la importancia de las iniciativas individuales y un aumento de los intereses a nivel corporativo. Gran Bretaña Gran Bretaña sigue un modelo muy similar al estadounidense por presentar tanto iniciativas a nivel universitario como de la administración pero sin embargo no tiene ejemplos en el sector privado tan significativos como ESRI en los Estados Unidos. Esta etapa de desarrollo está caracterizada. Los SIG más significativos son los del United Status Census Bureau (USCB) y el del United Status Geological Survey (USGS). Lo que caracteriza a ESRI es su buen olfato comercial. debido a la gran avalancha de productos en el mercado informático internacional que hicieron generalizarse a esta tecnología. en general. ArcInfo. donde los SIG empezaron a difundirse al nivel del usuario doméstico debido a la 10 . se da lo que se ha venido a conocer como fase comercial. de visión de futuro. pero algunas veces también se requirió software de terceros como el mencionado Symap del LCG. Es en este periodo cuando el interés de distintas grandes industrias relacionadas directa o indirectamente con los SIG crece sobremanera. iniciándose hacia mediados de los años setenta y extendiéndose hasta principios de los años ochenta. Tercera etapa o fase comercial Inmediatamente después. • Enviromental Systems Research Institute (ESRI): No es el único caso que se puede encontrar dentro del grupo de aportaciones comerciales. Segunda etapa Siguiendo con las fases de evolución de los SIG.GMOR: Google Maps para la Optimización de Rutas casos se usaban programas propios y específicos en base a las necesidades de cada departamento.

por una parte. Historia Fue anunciado por primera vez en Google Blog el 8 de febrero del 2005. Como el usuario puede mover el mapa. y la consolidación. que permite la distribución a nivel mundial de cartografía.2. Como en otras aplicaciones Web de Google. Definición Google Maps (conocido al principio como Google Local) es el nombre de un servicio gratuito de Google.GMOR: Google Maps para la Optimización de Rutas generalización de los ordenadores personales o microordenadores. la visualización del mismo se baja desde el servidor. 1. el cual es una imagen PNG transparente sobre el mapa. Ubicador de Vehículo). de la necesidad de paquetes informáticos de información geográfica conforman una nueva etapa en la evolución de los SIG. se usa un gran número de archivos de Javascript para crear Google Maps. Originalmente soportaría sólo a los usuarios de Internet Explorer y Mozilla Firefox. la ubicación es marcada por un indicador en forma de pin. Actualizar Posición) para encontrar la 11 . sobre todo con la generalización del uso de Internet. Ofrece imágenes de mapas desplazables. Quinta etapa En los primeros años del siglo XXI la mejora del rendimiento de los ordenadores debido a los avances tecnológicos. El software estuvo en su fase beta durante 6 meses antes de convertirse en parte de Google Local. Es un servidor de aplicaciones de mapas en Web.2. el soporte para Opera y Safari fue agregado el 25 de febrero del 2005.2. 1. Google añadió un Ride Finder (en español.2. así como fotos de satélite del mundo entero e incluso la ruta entre diferentes ubicaciones. Cuando un usuario busca un negocio. Para lograr la conectividad sin sincronía con el servidor. En abril del 2005. La persona debe hacer click en la barra de Update Position (en español. en el cual una persona puede ubicar un taxi o un transporte público en una gran ciudad en tiempo real. por otra parte. Google aplicó el uso de AJAX dentro de esta aplicación. Google Maps 1.1. el 6 de octubre del 2005.

de forma que facilitara a los usuarios el integrar Google Maps en sus webs personales y con sus propios datos. Google Maps API Debido a la popularidad que estaba alcanzando Google Maps y a los intentos de personalizar los mapas por parte de los usuarios mediante la ingeniería inversa. 1. las imágenes de alta resolución (o a la máxima ampliación). Google optó por desarrollar un API para Google Maps. Italia. Irak. El 22 de julio del 2005. se crea una vista alternativa a la que se mostraba por el satélite. No todas las fotos mostradas son de satélites. Sin embargo. Irlanda. Esto hace más fácil encontrar rutas entre dos puntos. En junio del 2005. Este es el caso de Canarias. Holanda. y la frecuencia con la que son actualizados sus datos. que es considerada en estos momentos la mejor del sector debido a la veracidad de sus datos. como el Capitolio. En junio del 2005. la Casa Blanca y el área 51 . Bahamas. Google comienza la versión japonesa de Google Maps y Google Local. En el caso de Canarias los datos actuales provienen de la empresa TeleAtlas. México.2. En abril del 2005. Para el resto del planeta las imágenes se encuentran disponible en baja resolución. Google lanza una vista dual de su Google Maps. donde las fotos que se muestran son propiedad de GrafCan. Kuwait. Esta vista combina la vista de satélite con mapas ilustrados y los nombres de calles en las imágenes del mundo real. algunas áreas fueron oscurecidas por motivos de seguridad nacional. los mapas de carreteras de los Estados Unidos. Puerto Rico.3. algunas son de ciudades tomadas por aviones que vuelan a bastante altura (sobre los 10. un satélite comercial de teledetección. A mediados de julio del 2005. ya estaban disponible para la mayoría de Canadá y Estados Unidos (incluyendo los estados de Hawaii y Alaska). La información contenida en los mapas mostrados es proveída principalmente por la empresa Navteq. excepto para los polos.GMOR: Google Maps para la Optimización de Rutas nueva ubicación del vehículo en cada momento. Canadá y el Reino Unido fueron integrados a Google Maps.000 metros). Japón. 12 . etc. El mayor responsable de que Google Maps sea una realidad es el QuickBird. Además se tienen de otros países en forma parcial como Francia.

empresa de origen europeo. que ofrece una opción más económica y que está en pleno auge. Dentro de esta API podemos escoger entre dos versiones. esta API usa los mapas proporcionados por TeleAtlas. para de este modo facilitar las tareas de debug o depuración durante la implementación de páginas personalizadas. Básicamente la diferencia entre estas dos versiones viene a ser que si se cuenta con una licencia de empresa. La primera versión de la API. cabe destacar que en lugar de usar los mapas de Navteq. Además no se cuenta con las limitaciones en las peticiones a los servidores de Google Maps que si se tienen en la versión gratuita del mismo. que aunque no tenía soporte internacional ya contaba con una herramienta para determinar la geopocisión de un objeto. Aproximadamente por la misma época Yahoo lanzó su propio API para su mapa. Por un lado tenemos la gratuita y por otro la destinada a empresas. basta con generar una clave personalizada para la página web y el directorio donde se desea insertar el mapa. Se le da a un usuario la posibilidad de crear su propia interfaz para el mapa simplemente introduciendo el código Javascript proporcionado por Google a su página web. no tenía la habilidad para hallar direcciones. 13 . utilizando las funciones Javascript suministradas por la API para interactuar con el mapa. aunque esto fue implementado en versiones posteriores. Para comenzar.64 segundos aproximadamente. por lo que era necesario especificar manualmente la latitud y la longitud del punto requerido.GMOR: Google Maps para la Optimización de Rutas Mediante el uso de la API de Google Maps se puede lograr insertar un completo Google Maps en páginas web externas a Google. En cuanto a la información mostrada en los mapas. al igual que la página de Google Maps. y una vez hecho esto. las cuales son unas 10. de hecho cada día sus resultados se acercan más a los proporcionados por Navteq. También cabe destacar que la API de Google Maps es capaz de funcionar ejecutándola localmente.000 peticiones a sus servidores al día en intervalos de 8. Google proporciona una asistencia total al cliente y la posibilidad de desarrollar aplicaciones de intranet que utilicen la API de Google Maps.

la cual tiene su propio callejero que llega a ser en algunos aspectos incluso más detallado que el proporcionado por TeleAtlas. mientras que TeleAtlas hace una aproximación de la localización de dichas direcciones. Como desventaja. ya que aunque el callejero mostrado sigue perteneciendo a la empresa TeleAtlas. y esto puede ser considerado un elemento indispensable por los responsables de Google ya que es un elemento primordial en sus mapas. cabe decir que aún dichos callejeros no poseen el sentido de todas las calles. y posible razón de que no se use el callejero de GrafCan. 14 .GMOR: Google Maps para la Optimización de Rutas Como caso particular podemos destacar el ocurrido en las Islas Canarias. De hecho. GrafCan tiene totalmente localizadas las direcciones en su callejero. en lo que se refiere al cálculo de direcciones postales. las imágenes mostradas pertenecen la empresa GrafCan.

Por un lado.2. La motivación académica por resolverlos radica en que no es posible construir algoritmos que en tiempo polinomial resuelvan cualquier instancia del problema (a no ser que P = NP). Cinco años más tarde. Pero el interés que reviste el área no es exclusivamente práctico. 2. en su mayoría. Dantzig y Ramser [2] realizaron por primera vez una formulación del problema para una aplicación de distribución de combustible. por otro lado. ha permitido disminuir los tiempos de ejecución de los algoritmos. Esos potenciales ahorros justifican en gran medida la utilización de técnicas de Investigación Operativa como facilitadoras de la planificación. A partir de estos trabajos. Estos modelos y algoritmos deben su éxito.1.1. y del que hablamos en la sección 3. en buena parte. para que los vehículos visiten a los clientes mientras se respeten sus capacidades y quizás otras restricciones adicionales. 15 . hacia modelos que incorporan cada vez más características de la realidad. dado un conjunto de clientes y depósitos dispersos geográficamente y una flota de vehículos. dado que se estima que los costos del transporte representan entre el 10% y el 20% del costo final de los bienes [1]. Características de los problemas A grandes rasgos un problema de enrutamiento de vehículos consiste en. a la evolución de los sistemas informáticos y de los SIGs. Introducción al VRP El problema de distribuir productos desde ciertos depósitos a sus usuarios finales juega un papel central en la gestión de algunos sistemas logísticos y su adecuada planificación puede significar considerables ahorros. Los problemas de enrutamiento de vehículos son problemas de optimización combinatoria y pertenecen. a la clase NPHard. Nuestro caso práctico: Transporte escolar 2. y. las últimas cuatro décadas han visto un enorme esfuerzo por resolver estos problemas. determinar un conjunto de rutas de costo mínimo que comiencen y terminen en los depósitos. el área de enrutamiento de vehículos ha crecido de manera explosiva. El crecimiento en el poder de cómputo y la baja en sus costos. Y el desarrollo de los Sistemas de Información Geográfica resulta fundamental para lograr una adecuada interacción de los modelos y algoritmos con los encargados de realizar la planificación. Clarke y Wright [3] propusieron el primer algoritmo que resultó efectivo para su resolución: el popular Algoritmo de Ahorros (Saving Algorithm). En 1959. En ese sentido.GMOR: Google Maps para la Optimización de Rutas 2. en la búsqueda de algoritmos que permitan resolver los problemas de manera más eficiente.

En este caso. Usualmente estas restricciones se expresan en forma de intervalos de tiempo (llamados ventanas de tiempo) en los que se puede visitar al cliente. 2. También podría ocurrir que la mercancía deba ser transportada a los clientes pero que no esté inicialmente en el depósito. algunos vehículos muy pesados no pueden visitar ciertas localizaciones). cada cliente sólo puede ser visitado por algunos de los vehículos (por ejemplo. En estos casos. Un mismo vehículo podría. Los clientes podrían tener restricciones relativas a su horario de servicio. En muchos casos. visitar a todos los clientes. la demanda es un bien que ocupa espacio en los vehículos y es usual que un mismo vehículo no pueda satisfacer la demanda de todos los clientes en una misma ruta. Es usual que cada cliente deba ser visitado exactamente una vez. y el problema es del tipo “recogidas y entregas”. sino distribuida en ciertos sitios proveedores. Sin embargo. Aquí la capacidad del vehículo impone una cota sobre la cantidad de clientes que puede transportar simultáneamente. Un caso equivalente al anterior ocurre cuando los clientes son proveedores y lo que se desea es recoger una mercancía y transportarla hacia el depósito. En otra variante del problema. En las próximas secciones mostramos algunas. véase [1] para encontrar otras. así como diferentes restricciones operativas sobre las rutas. Los clientes Cada cliente tiene una cierta demanda que debería ser satisfecha por algún vehículo. potencialmente.1. dan lugar a diferentes variantes del problema. En otros casos la demanda puede verse no como un bien sino un servicio: el cliente simplemente debe ser visitado por el vehículo. los proveedores deben ser visitados antes que los clientes. 16 .GMOR: Google Maps para la Optimización de Rutas Las características de los clientes. cada cliente tiene una ubicación y desea ser transportado hacia otro sitio.2. en ciertos casos se acepta que la demanda de un cliente sea satisfecha en momentos diferentes y por vehículos diferentes. depósitos y vehículos. En problemas con varios vehículos diferentes podrían existir restricciones de compatibilidad entre éstos y los clientes.

y. su ubicación y capacidad máxima de producción. Son los llamados problemas con demandas estocásticas. Los depósitos. Los problemas en que los atributos (capacidad. 2. Cuando en un mismo problema existen diferentes mercancías a transportar. Regulaciones legales podrían imponer restricciones sobre el tiempo máximo que un vehículo puede estar en circulación e incluso prohibir el pasaje de ciertos vehículos por ciertas zonas.2. aunque éste podría no ser el caso en algunas aplicaciones (por ejemplo. cada vehículo tiene asociado un costo fijo en el que se incurre al utilizarlo y un costo variable proporcional a la distancia que recorra. de flota heterogénea. como por ejemplo peso y volumen. etc. Incluso.2. Podría ocurrir que cada depósito tenga una flota de vehículos asignada a priori o que dicha asignación sea parte de lo que se desea determinar.3. Los vehículos La capacidad de un vehículo podría tener varias dimensiones. podría ser que el viaje debiera finalizar en el domicilio del conductor del vehículo y que fuesen dos conductores diferentes los que usan ese vehículo. costo.2. o el tiempo invertido en su limpieza al regresar. En general se asume que cada vehículo recorre una sola ruta en el período de planificación. si hay diferencias. Usualmente se exige que cada ruta comience y finalice en un mismo depósito. los vehículos podrían tener varios compartimentos. podría querer evitarse que demasiados vehículos estén operando en un mismo depósito a la vez (es decir. podrían tener ventanas de tiempo asociadas. La cantidad de vehículos disponibles podría ser un dato de entrada o una variable de decisión.) son los mismos para todos los vehículos se denominan de flota homogénea. En general. El objetivo más usual suele ser utilizar la menor cantidad de vehículos y minimizar la distancia recorrida ocupa un segundo lugar. la congestión del depósito). de modo que la capacidad del vehículo dependa de la mercancía de la que se trate. pero últimamente se han estudiado modelos en los que un mismo vehículo puede recorrer más de una ruta.3. En algunos casos debe considerarse el tiempo necesario para cargar o preparar un vehículo antes de que comience su ruta. al igual que los clientes. por ejemplo. 2. Dichas formulaciones se dan por completitud y para evitar ambigüedad 17 . por limitaciones de los propios depósitos. Formulación matemática En esta sección se formulan algunos de los problemas clásicos y sus extensiones como problemas de Programación Entera. En algunos casos se desea que la cantidad de trabajo realizado por los vehículos (usualmente el tiempo de viaje) no sea muy dispar. 2. En los problemas con múltiples depósitos cada uno de éstos tiene diferentes características. Los depósitos Tanto los vehículos como las mercancías a distribuir (si las hubiera) suelen estar ubicadas en depósitos. con lo que el domicilio donde termina dependerá de a qué conductor le toca usarlo ese día).GMOR: Google Maps para la Optimización de Rutas También resulta de interés el estudio de problemas donde la demanda de cada cliente no es un número conocido sino una variable aleatoria.

j∈ A . x ij ∈{0. . Finalmente. Denotaremos por N + i y N − i  al conjunto de nodos adyacentes e incidentes al nodo i. debería existir algún camino. . en la ruta que debe seguir el vehículo. . Puede suponerse que G es completo. Esta solución viola la restricción (1. n a los clientes. Las variables binarias x ij indican si el arco (i. a. no hay demanda asociada a los clientes y tampoco hay restricciones temporales. Las restricciones (1. Asumiendo que ∣A∣=O n2  .1. Existen diferentes tipos de escritura para las restricciones de eliminación de subrutas. Cada arco (i.GMOR: Google Maps para la Optimización de Rutas en la definición. j ∈ N i  \S ∑ + xij 1 ∀ S ⊂V ∀i .1) establece que el costo total de la solución es la suma de los costos de los arcos utilizados. La red de transporte por la que circulan los vehículos se modela mediante un grafo ponderado G = (V.2) (1.3) indican que la ruta debe llegar y abandonar cada nodo exactamente una vez. El problema puede formularse como: min s.4) para S = {0. pues entre todo par de lugares de una red de transporte razonable. En algunos casos se agrega una copia del depósito etiquetada con n +1 para simplificar la formulación. el grafo puede ser simétrico o asimétrico. 1} Esta formulación fue propuesta por Dantzig.1. Según la estructura de los costos y los tiempos y las características de la red. es decir. 2}. i) ∈ A}.A). j∈ A ∑ cij x ij x ij =1 x ij =1 (1.1) ∀ i∈V ∀ j ∈V j ∈N  i ∑ + (1. i . es decir. Los nodos del grafo representan a los clientes y depósitos. Fulkerson y Johnson [4].4) son llamadas restricciones de eliminación de subrutas e indican que todo subconjunto de nodos S debe ser abandonado al menos una vez. 18 . 2. Nótese que si no se impusieran estas restricciones la solución podría constar de más de un ciclo. N + i = {j ∈ V | (i. La función objetivo (1. No suele haber un depósito (y si lo hubiera no se distingue de los clientes). 1. j) es utilizado en la solución.3. En problemas con un depósito y n clientes. el nodo 0 representa al depósito y los nodos 1.4) i∈ N  j  ∑ - i∈ S . j) ∈ A representa el mejor camino para ir desde el nodo i hacia el nodo j en la red de transporte y tiene asociado un costo c ij y un tiempo de viaje t ij . siendo en este caso 0 el origen de las rutas y n + 1 es el destino final.3) (1. El problema del viajante de comercio (TSP) En el Problema del Agente Viajero (o TSP por “Travelling Salesman Problem”) se dispone de un solo vehículo que debe visitar a todos los clientes en una sola ruta y a costo mínimo. esta formulación tiene una cantidad polinomial de variables binarias y O 2n  restricciones. las restricciones (1. como se muestra en la figura 1. .2) y (1. j) ∈ A} y N − i = {j ∈ V | (j.

No obstante.8) (1. El objetivo es construir exactamente m rutas. El problema puede alternativamente formularse con una cantidad polinomial de restricciones.6) Este modelo alternativo fue propuesto por Miller. 19 . i≠0. . u j ≥ u i1 si j es visitado inmediatamente después que i ). j∈ A .a. La mayor parte de los problemas de enrutamiento de vehículos son generalizaciones del TSP. 2. Una formulación. O n variables positivas y O n2  restricciones. En ese sentido. pues si bien se disminuye la cantidad de restricciones.1: Una solución formada por 2 subrutas. pertenece a la clase de problemas NP-Hard [6] y es uno de los Problemas de Optimización Combinatoria más clásico y difundido. Sin embargo. . . dada por Miller et al. Tucker y Zemlin [5] y fuerzan a que las variables reales u i que determinen una cantidad estrictamente creciente a lo largo de la ruta (es decir.9) i∈ N  j  ∑ j ∈ N i  ∑ u i−u j nx ij n−1 x ij ∈{0. . j≠0 ∀i . la cota que se obtiene resolviendo su relajación lineal resulta en general muy débil. éste puede considerarse el problema de enrutamiento de vehículos más simple. 1} ∀ i .7) (1. i≠0. j∈E . j≠0. (1. Cada ruta debe comenzar y finalizar en el depósito. j∈ A ∑ cij x ij x i0 = x ij = i∈ N 0  ∑ - j ∈ N 0  ∑ + + x 0j m x ij =1 ∀ i ∈V \{0} (1. i . j∈ A u i0 ∀ i∈V \{0} .2. n y sustituyendo las restricciones (1.GMOR: Google Maps para la Optimización de Rutas Figura 1. El problema de los m viajantes de comercio (m-TSP) El problema de los m agentes viajeros (o m-TSP) es una generalización del TSP en la cual se tiene un depósito y m vehículos. esta formulación no resulta apta para la resolución de problemas de tamaño considerable mediante métodos exactos.3.4) por u i − u jnx ij n −1 ∀i . [5] es la siguiente: min s. agregando variables reales u i para i = 1. En esta nueva formulación hay O n2  variables binarias. de modo que cada cliente sea visitado una vez por uno de los vehículos. una para cada vehículo.

Para un conjunto de clientes S. Finalmente. El problema con capacidades (CVRP) El CVRP es una extensión del m-TSP en la cual cada cliente i ∈ V \ {0} tiene asociada una demanda d i y cada vehículo tiene una capacidad Q (la flota es homogénea). Las restricciones (1. la restricción (1.11) ∀ i∈V \{0} ∀ S ⊂V \{0} i∈ N  j  ∑ x ij = j ∈ N i  ∑ x ij =1 (1. a. j) se utiliza o no en la solución.13) i∈ S . La restricción (1.11) indica que m es la cantidad de vehículos utilizados en la solución y que todos los vehículos que parten del depósito deben regresar. El problema se formula de la siguiente manera: min s.3.8) asegura que cada cliente es un nodo intermedio en exactamente una ruta. aunque suele haber un número m máximo de vehículos en la flota. se utilizan las variables binarias x ij para determinar si el arco (i. Finalmente.9) es fácil incorporar en el problema una limitación sobre el número máximo Q de clientes que pueden estar en una misma ruta.GMOR: Google Maps para la Optimización de Rutas El modelo es similar al segundo modelo presentado para el TSP. i . j ∈ N i  \S ∑ + xij r S  x ij ∈{0. d S =∑ d i es su demanda total y r(S) indica la mínima i∈ S cantidad de vehículos necesarios para servirlos a todos.9) se eliminan las subrutas. En la formulación conocida con el nombre de dos índices.12) (1. Modificando (1. 2. j∈ A ∑ cij x ij x i0 = (1. En este problema la cantidad de rutas no está fijada de antemano como en el TSP y en el m-TSP.3.13) actúa como restricción de eliminación de subrutas y a la vez impone que la demanda total de los clientes visitados por un vehículo no puede superar la capacidad Q. 20 . La restricción (1.10) es el costo total de la solución. 1} ∀ i . con (1. La nueva restricción es: u i−u j Qxij Q−1 Y el nuevo problema pasa a ser el CVRP (que describimos con detalle en la siguiente sección) con demandas unitarias.10) j ∈ N 0  i∈ N 0  ∑ - ∑ + + x 0j m (1.7) indica que exactamente m vehículos salen del depósito y las (1. j∈A La función objetivo (1.12) aseguran que todo cliente es un nodo intermedio de alguna ruta.

Estos puntos pueden ser de tres tipos: ● Salida: será el punto desde donde comiencen todas las rutas.4. 1} y k ∈{0. En nuestro problema. nos centraremos en un caso en particular con el objetivo de ser lo más claro posible: el transporte escolar.GMOR: Google Maps para la Optimización de Rutas Determinar el valor de r(S) requiere la resolución del siguiente problema: r S =min ∑ y k k ∈K s. aunque su relajación lineal es más débil que cuando se usa la solución exacta del BPP. Este problema es conocido como Bin Packing Problem (BPP) [7]. La formulación es válida incluso cuando se sustituye r(S) por la cota inferior mencionada anteriormente. entero superior de d S /Q . Llegada: será el punto donde finalicen todas las rutas. representará el colegio donde deben ser entregados los alumnos. que es el entero superior de d S /Q . En algunos casos se agrega a este problema la restricción de que ninguna ruta puede tener un largo mayor que cierta cota L. ij 2. Una cota inferior para la cantidad de vehículos está dada por el valor óptimo de la relajación lineal del BPP. ● ● Con lo expuesto anteriormente podemos decir entonces que el problema consiste en hallar el número de rutas necesarias para recoger a todos los alumnos utilizando para ello unos vehículos con capacidad limitada mediante una solución buena. Paradas: serán los puntos por donde las rutas deben pasar y que tendrán una cierta demanda a cumplir. pues las rutas no están individualizadas. En nuestro problema. Se dispone de un conjunto de puntos localizados sobre un mapa. En nuestro problema particular diremos que es el depósito donde se encuentran los vehículos que recogerán a los alumnos. en esas paradas se encontrarán los alumnos y la demanda a cumplir indicará el número de alumnos a recoger en dicho punto.1} donde K es un conjunto con suficientes vehículos para satisfacer la demanda (por ejemplo. etc. ∑ xik =1 x ik ∈{0. Para incorporar esta restricción adicional (u otras como ventanas temporales. Cada uno de estos vehículos cuenta con una capacidad máxima de alumnos que pueda transportar y que no será posible sobrepasar. Descripción de nuestro problema En primer lugar mencionar que a pesar de poder hacer un planteamiento generalizado. 21 . y necesitamos hallar la/s posible/s ruta/s que nos permitan visitar todos los puntos del problema. n). a. ∀ k ∈ K ∀ k ∈K . ∑ d i x ik C yk i∈ S k ∈K ∀k ∈K ∀ i∈S ∀ i∈ S . Dicha restricción no puede incorporarse a esta formulación.) es necesario usar variables con tres índices del tipo x k .

GMOR: Google Maps para la Optimización de Rutas Por tanto. la complejidad del problema sería mucho mayor debido al gran número de otros factores que habría que tener en cuenta. Hay que destacar que este planteamiento está simplificado. El objetivo de este proyecto no es el de resolver un problema totalmente real sino mostrar el potencial que pueden ofrecer los SIGs a la resolución de problemas de rutas de vehículos en el mundo real (es decir. 22 . ver figura a continuación. ya que en el caso de querer abordarlo de manera totalmente realista. el problema que más se ajusta a nuestro caso es el problema de enrutamiento de vehículos con restricciones (CVRP) .2: Complejidad de los problemas. en logística). Figura 1.

0). 23 . . i. 0) como se muestra en la figura 2. 0) y (0. Sean r i ∗ y r j ∗ las rutas que contienen a los clientes i ∗ y j ∗ respectivamente. Si en una solución dos rutas diferentes (0. Método de resolución 3.1. el ahorro (en distancia) obtenido por dicha unión es sij =c i0 c 0j − cij (2. j. donde el máximo se toma entre los ahorros que no han sido considerados aún. Paso 3 (selección). Eliminar si ∗ j ∗ de futuras consideraciones. Si no. Para cada cliente i construir la ruta (0. Paso 2 (cálculo de ahorros). terminar. 0). Algoritmo de Ahorros (Versión paralela) Paso 1 (inicialización).GMOR: Google Maps para la Optimización de Rutas 3.1. . Algoritmo de Ahorros (Clark & Wright) Uno de los algoritmos más difundidos para el CVRP es el Algoritmo de Ahorros de Clarke y Wright [3]. En este algoritmo se parte de una solución inicial y se realizan las uniones que den mayores ahorros siempre que no violen las restricciones del problema. si no terminar. i. Calcular sij para cada par de clientes i y j. . Si quedan ahorros por examinar ir al paso 3. Si i ∗ es el último cliente de r i ∗ y j * es el primer cliente de r j ∗ y la combinación de r i ∗ y r j ∗ es factible. . j. i. i. . j). . Si todas las rutas fueron consideradas. 0) y (0. .1: Dos rutas antes y después de ser unidas En la nueva solución los arcos (i. y otra secuencial que construye las rutas de una en una. . combinarlas. . 0) pueden ser combinadas formando una nueva ruta (0. . . j) no serán utilizados y se agregará el arco (i.1) Figura 2. . Paso 3 (mejor unión). seleccionar una ruta que aún no haya sido considerada. . Para cada cliente i construir la ruta (0. Sea si ∗ j ∗ =max s ij . . Calcular sij para cada par de clientes i y j. Paso 2 (cálculo de ahorros). Algoritmo de Ahorros (Versión secuencial) Paso 1 (inicialización). Existe una versión paralela en la que se trabaja sobre todas las rutas simultáneamente. . .

la combinación de las rutas aumentará la distancia recorrida pero disminuirá la cantidad de rutas de la solución (y por lo tanto la cantidad de vehículos utilizados). . Datos de entrada Los datos inicialmente disponibles son: ● ● n = 4 clientes {1. esto lo tratamos en la sección 3. Se ha observado que utilizando la definición original de ahorro se suele generar algunas rutas circulares (ver figura 2. la elección tiene un gran impacto en la solución final. j. Sea (0. 14. 15] proponen redefinir el ahorro como: sij =c i0 c 0j − λcij (2. i. ir al paso 3. Si no existe ningún ahorro conteniendo a i o a j. Dependiendo de las particularidades de cada problema.1.GMOR: Google Maps para la Optimización de Rutas Paso 4 (extensión). 3. en general. Dado que en la definición de sij solamente interviene la ubicación de los clientes i y j. Para solucionar este problema algunos autores [13. 0) la ruta actual. sin embargo. . En general ocurre que al comienzo de la ejecución del algoritmo dos alternativas pueden parecer equivalentes y. Figura 2. En la versión secuencial podría calcularse los ahorros a medida que son necesarios. Dicho parámetro puede utilizarse también para generar un conjunto de soluciones diferentes mediante la ejecución repetida del algoritmo con diferentes valores de λ. todos los ahorros pueden calcularse una sola vez al comienzo de la ejecución del algoritmo. Ejemplo para el algoritmo de ahorros A continuación. Si el máximo ahorro es negativo. Eliminar s k ∗ i o s jl ∗  de futuras consideraciones.2. ser mejoradas mediante operadores de búsqueda local como el algoritmo 3-opt [16]. 3. se ilustra cómo funciona el algoritmo implementado sobre un pequeño ejemplo. 4} El depósito será el punto 0 24 . 3.2.3. Ir al paso 4. . debe decidirse si realizar o no ese tipo de combinaciones. Si k * o l ∗  es el último (o primer) cliente de su ruta y la combinación de dicha ruta con la actual es factible.2) lo cual puede ser negativo. Sea s k ∗ i o s jl ∗  el máximo ahorro conteniendo a i (o a j). realizar dicha combinación.2: Un ejemplo de rutas circulares y radiales.2) donde λ es un parámetro que penaliza la unión de rutas con clientes lejanos (llamado parámetro de forma o shape parameter ). Las soluciones obtenidas con el Algoritmo de Ahorros pueden. 2. .

5 0 3 4 5 3 0  Figura 3.2.1: Situación inicial.2. Consideraciones a tener en cuenta Estado inicial El primer paso que se realiza es el calcular el conjunto de rutas iniciales. tal y como se muestra en la figura 3.12. Figura 3.2.GMOR: Google Maps para la Optimización de Rutas ● Las demandas para cada uno de los clientes son: d i = 0. que no es más que asignar cada uno de los puntos a una ruta diferente.  2 3 2 2 0 2 4 4 2 0 4. 3. 13. 25 .5.5 5 4 4. 8 0 2 c ij = 3 2 2 ● La matriz de distancias o costes es: ● La capacidad de los vehículos es 20.2: Estado inicial.

GMOR: Google Maps para la Optimización de Rutas Sobrecarga de vehículos Una vez tenemos el estado inicial, el siguiente paso es empezar a realizar las fusiones de las diferentes rutas, ya que se trata de realizar conexiones entre diferentes rutas para obtener una mejor solución que la inicial. Para esto calculamos el ahorro que obtendríamos al fusionar las diferentes rutas que tenemos actualmente, mediante la fórmula (2.1).

Figura 3.3: Ejemplo para la fusión i = 1 y j = 2. En el caso de que sij 0 dicha fusión debe ser tenida en cuenta. Pero en estas posibles fusiones hay que tener en cuenta la restricción que se nos impone con la capacidad limitada de los vehículos. Por ejemplo, en el caso de intentar la unión entre los puntos 2 y 3 obligamos a que el vehículo cargue d 2d 3=25 unidades, y esto es imposible por que Q = 20.

Figura 3.4: Fusión entre los puntos 2 y 3. dado que en los datos iniciales hemos dicho que la capacidad de los vehículos es 20, esta ruta no es factible y por lo tanto no se debe considerar. 26

GMOR: Google Maps para la Optimización de Rutas Puntos Internos Un punto, el cual no es el primero ni el último en una de las rutas actuales, no puede ser considerado para realizar posibles fusiones. Por ejemplo, como se puede ver en la figura 3.5, el punto 2 no cuenta con un arco desde o hasta el depósito. Por tanto si2 o s 2j no deben ser consideradas a la hora de fusionar rutas.

Figura 3.5: Puntos internos. Puntos que se encuentren en la misma ruta Si los puntos sugeridos por la fórmula del ahorro son extremos de la misma ruta, la operación de fusión no puede llevarse a cabo, ya que en ese caso se formarían subrutas y esto no debe estar permitido. Por ejemplo, en la figura 3.6 se muestra que si llegásemos a unir los puntos 1 y 3, se da como resultado una subruta, por tanto el ahorro de fusionar estos puntos nunca debería tenerse en cuenta.

Figura 3.6: Formación de subrutas.

27

GMOR: Google Maps para la Optimización de Rutas

3.2.3. Traza del ejemplo
Inicialización Paso 1: Calculamos el estado inicial anteriormente descrito. Paso 2: Calculamos los valores de ahorro para cada par de puntos del problema. Paso 3: Se construye una lista con todos los valores de ahorros ordenados de mayor a menor, cuanto mayor es el valor de ahorro, más conveniente es la ruta. En nuestro ejemplo los valores iniciales se pueden ver en la figura 3.7.

Figura 3.7: Valores de ahorros iniciales.

Iteración 1 Tomamos el primer valor de la lista de ahorros, ya que es el más prometedor.

28

y en ella quedan unidos los puntos 3 y 4 tal y como se puede ver en la figura 3.9: Iteración 1.GMOR: Google Maps para la Optimización de Rutas Comprobando las consideraciones antes mencionadas vemos que: ● ● ● d 12=d 1d 2=1820=Q Ambos puntos son extremos en sus rutas. ya que cumplen esas tres condiciones.9.10. Ambos puntos no pertenecen a la misma ruta. ya que cumplen esas tres condiciones. Ambos puntos no pertenecen a la misma ruta. Por tanto. 29 . y en ella quedan unidos los puntos 1 y 2 tal y como se puede ver en la figura 3. Por tanto. la fusión de ambas rutas puede llevarse a cabo. Iteración 2 Continuamos tomando el resto de valores de la lista de ahorros en los que no se encontraban los puntos ya fusionados. Y nuevamente hacemos las mismas comparaciones: ● ● ● d 34=d 3d 4=20Q Ambos puntos son extremos en sus rutas. La solución que obtenemos tiene un coste de 11. Figura 3. La solución que obtenemos tiene un coste de 10. la fusión de ambas rutas puede llevarse a cabo.

3.11.2. 30 .3. Por tanto.GMOR: Google Maps para la Optimización de Rutas Figura 3. y dado que ya no tenemos más posibles fusiones. Ambos puntos no pertenecen a la misma ruta. al no cumplirse la restricción de la capacidad limitada de los vehículos.10: Iteración 2. En esta ocasión. al hacer las comprobaciones pertinentes obtenemos que: ● ● ● d 23=d 2d 3=38Q Ambos puntos son extremos en sus rutas. Iteración 3 En esta iteración trabajamos con las dos rutas anteriormente calculadas. Tras esta iteración. la ejecución termina aquí. ya no nos quedan más posibles fusiones debido a que todos los puntos están contenidos en alguna ruta. dicha fusión no puede llevarse a cabo. Datos de salida La solución que obtenemos es entonces la mostrada en la figura 3. Por tanto la única fusión posible es entre 2 y 3.

Una vez que se tiene una solución para el problema. Mejoras mediante búsquedas locales En este punto hablamos sobre las mejoras implementadas en la aplicación. Para obtener s∗ puede buscarse la mejor solución de N(s) (estrategia best improvement) o simplemente tomar la primera solución de N(s) que mejore el costo (estrategia first improvement). En los intercambios de una ruta los clientes que se visitan no cambian después de la aplicación del operador. Un procedimiento de Búsqueda Local parte de una solución s. Para cada solución s se define un conjunto de soluciones vecinas N(s). En los intercambios multi-ruta. se puede intentar mejorarla mediante algún procedimiento de búsqueda local. la reemplaza por una solución s* ∈ N  s de menor costo y repite el procedimiento hasta que la solución no pueda ser mejorada. Estos intercambios para el CVRP pueden clasificarse en intercambios de una ruta e intercambios multi-ruta. lo que varía es el orden en que se realizan las visitas. para mejorar las soluciones proporcionados por el algoritmo de Ahorros de Clarke & Wright. 31 .3. se obtiene una solución localmente óptima respecto a la definición de la vecindad. Ruta 1: ● ● ● Coste:11 Demanda: 18 Secuencia: 0 – 1 – 2 – 0 Coste: 10 Demanda: 20 Secuencia: 0 – 3 – 4 – 0 Ruta 2: ● ● ● 3. además de cambios en el orden de las visitas suele modificarse el conjunto de clientes visitados en cada ruta.11: Solución final. Usualmente se define N(s) como las soluciones que pueden obtenerse aplicando a s alguna regla o procedimiento sencillo que consiste en intercambiar los arcos de la solución. y que pueden ser usadas conjuntamente o por separado.GMOR: Google Maps para la Optimización de Rutas Figura 3. Al terminar.

elimina dos arcos de la ruta e intenta reconectarlos de la mejor manera posible. que podría resultar mejor.GMOR: Google Maps para la Optimización de Rutas 3. Optimización 2-Opt Este método intenta obtener una mejor solución para una ruta dada. este algoritmo funciona de la siguiente manera. lo que se pretende lograr con este algoritmo de optimización es la eliminación de cruces entro los arcos que unen los puntos de una ruta. tal y como se muestra en la siguiente figura 3. que intentan ser optimizados. Para ello. j1 y con un conjunto de arcos entre ambos arcos llamado  .1. i + 1) y (j. j + 1). i1 y c j . cuyos puntos son (i.12: 2-Opt. Figura 3. En la parte derecha tenemos una solución alternativa.13. con unos costes asociados c i . En la parte izquierda de la figura 3. tenemos la ruta original con los dos arcos. Básicamente.12. Sean dos arcos de una misma ruta. Para ser más concretos.3. 32 . tal y como se muestra P en la figura 3. tal que i < j. marcados.12.

j 1c ij c j1. j) e (i + 1.  c i . Esta operación se debe repetir para cada par de arcos que contenga la ruta. j + 1) y sustituirlos por los arcos (i. 33 . j + 1) teniendo en cuenta que debemos invertir el sentido en el conjunto de arcos que van desde i + 1 hasta j. Este algoritmo se ejecuta tras cada iteración del algoritmo de Ahorros de Clarke & Wright. Si se da la condición de que el coste del camino desde i hasta j + 1 es mayor que el coste desde i a j. y más el coste desde i + 1 hasta j + P P P 1.13: Estado inicial.i1  en dirección contraria. o lo que es lo mismo.14: Después de optimizar. i + 1) y (j. consigamos un mejor camino entre los puntos. La complejidad de este algoritmo es O n2  . tal y como se muestra en la figura 3.i1c j . más el coste del conjunto de arcos  en dirección contraria.  ). P Figura 3. con lo que logramos que cada vez que se fusionan dos rutas. teniendo en cuenta que i debe ser menor que j.14. entonces hemos encontrado un camino más óptimo que el que teníamos en la solución actual. en el caso de que sea posible.GMOR: Google Maps para la Optimización de Rutas Figura 3. hasta que no se puedan realizar más intercambios en la solución en estudio.. (es decir. Por tanto deberemos eliminar los arcos (i.

i +1). aunque en este caso se trata de un algoritmo un poco más complejo.3. tal y como se puede ver en la figura 3.15. al igual que el anterior. j +1) y (k. intenta encontrar una mejor ruta entre un conjunto de puntos dados. c j . lo que hace este algoritmo es eliminar tres arcos e intentar buscar un camino más óptimo reconectándolos de manera alternativa. ruta actual. ya que las operaciones en lugar de hacerlas con dos arcos. mientras que los dos siguientes dibujos vendrían a ser posibles alternativas al camino obtenido. se llevan a cabo con tres arcos simultáneamente. 34 . j1 y c k . Figura 3.GMOR: Google Maps para la Optimización de Rutas 3. y que podrían resultar mejor que el primero. i1 . k1 .16. tal que i < j < k. Por tanto.15 sería la ruta hallada por el algoritmo de Ahorros. Dados tres arcos cuyos puntos son (i . k + 1). Su objetivo es similar también al algoritmo 2-Opt. Por tanto. la operación a realizar para encontrar caminos alternativos es la siguiente. (j. con unos costes asociados c i .15: 3-Opt. El dibujo en la izquierda de la figura 3. Optimización 3-Opt Este algoritmo.2. tal y como podemos ver en la figura 3.

i + 1) teniendo en cuenta que en este algoritmo no tenemos que cambiar el sentido a ningún camino entre estos arcos. c i .i1 entonces hemos encontrado un camino mejor que el que teníamos en la solución actual. (j. j + 1).16: Estado inicial. k + 1) y (k. y más el coste del arco que va de k a i + 1. j 1c k . (j. Por tanto deberemos eliminar los arcos (i. i1c j . tal y como pasaba en el algoritmo anterior. k + 1). 35 . j1c j . j + 1) y (k.k 1c i . i + 1). y sustituirlos por los arcos (i. o lo que es lo mismo.k 1 c k . ver figura 3. más el coste del arco que va de j a k + 1.GMOR: Google Maps para la Optimización de Rutas Figura 3. Si se da la condición de que la suma de los costes de los tres arcos que estamos tratando de optimizar es mayor que la suma del coste del arco que va de i a j + 1.17.

36 . Su objetivo es el de encontrar la mejor ruta que une todos los puntos pertenecientes a la ruta pasada. Para ello. comprueba cada uno de los posibles caminos que unen todos los puntos. Optimización factorial Este algoritmo. 3. teniendo en cuenta que i debe ser menor que j y j debe ser menor que k. En este caso el algoritmo tiene una complejidad O n3  .GMOR: Google Maps para la Optimización de Rutas Figura 3. con lo que logramos que cada vez que se fusionan dos rutas. y hasta que no se puedan realizar más intercambios en el camino en estudio. lo que el algoritmo hace es comprobar una por una cada una de las posibles soluciones al problema. éste se ejecuta también tras cada iteración del algoritmo de Ahorros de Clarke & Wright. Al igual que el algoritmo anterior (2-Opt). no trata de encontrar una mejor ruta sino que encuentra la ruta más óptima para un conjunto de puntos dados. a diferencia de los dos anteriores. en el caso de que sea posible. consigamos un mejor camino entre los puntos.3. Esta operación se debe repetir para todos los arcos del camino en estudio.3. es decir.17: Después de la optimización.

que han resultado especialmente efectivas para problemas con ventanas de tiempo muy ajustados. En la figura 3. La operación para encontrar caminos alternativos en este algoritmo es la siguiente. mientras que el resto de dibujos son el resto de posibles rutas. la primera solución que hallará será en el orden que se le suministre la lista de puntos. Dada la carga computacional que esto supone. el cual puede modificarla en cualquier momento. Al algoritmo se le pasa la lista de puntos que forman la ruta que se quiere optimizar.18 vemos un ejemplo de esta optimización. Una vez tiene todos los puntos en una posible solución. Este tipo de optimización se engloba dentro de los denominados métodos exactos. También se han propuesto algoritmos basados en Programación Dinámica que aceleran los cálculos mediante una relajación del espacio de estados.GMOR: Google Maps para la Optimización de Rutas Figura 3. La complejidad de este algoritmo es por tanto O n ! . El primer dibujo sería la ruta que se le ha facilitado al algoritmo. en un principio optamos por que esta optimización sólo se ejecutase con conjuntos de puntos de poco tamaño (n < 8 puntos). Para un completo compendio de métodos exactos para problemas de enrutamiento de vehículos. y que este algoritmo calcula para encontrar la de menor coste. 37 . En estos cálculos los puntos de salida y llegada sólo se tienen en cuenta al calcular el coste de la ruta. ya que estos puntos tienen un papel que es permanente y de ahí que no entren en las posibles permutaciones. En este tipo de metodologías. comprueba si es la mejor solución alcanzada y si es así entonces la almacena por si llega a ser la más óptima. puede consultarse los trabajos de Laporte y Norbert [11] y de Laporte [12]. es decir.18: Optimización Factorial. suele resolverse alguna relajación del problema y utilizarse un esquema de ramificación y acotamiento al estilo del método Branch and Bound [10]. y éste mediante llamadas recursivas construye todas las posibilidades pero de manera que no se puedan repetir puntos en la solución actual. hay diversas implementaciones del método de Generación de Columnas. Por otro lado. pero finalmente se dejó la elección de ese parámetro al propio usuario.

A continuación se describen estos formatos en el orden natural en el que se va añadiendo dicha información adicional.321359872817993" postal="Av Astrofisico Francisco Sanchez. 38203 San Cristóbal de la Laguna. La estructura viene a ser la mostrada a continuación: <markers> <marker lat="28. 38206 San Cristóbal de la Laguna. Formato 1 Este formato es el que se carga en la interfaz de mapa digital para que ésta muestre una serie de puntos en dicho mapa.320748329162598" postal="Calle Leocadio Machado. Formatos de archivos XML Esta aplicación utiliza varios formatos de archivos según la opción escogida. Spain" com="" list="3-7" type="Parada" label="2" /> <marker lat="28. Spain" com="" list="" type="Llegada" label="3" /> </markers> En este formato cada uno de los elementos marker representan un punto en el mapa .1.325318813323975" postal="Av de la República de Venezuela. list: Contiene una lista de cero o más elementos que representa según el tipo de nodo lo siguiente: ➢ Salida: no se tiene en cuenta.481328725656038" lng="-16. 38206 San Cristóbal de la Laguna.483158198194182" lng="-16.484148363410558" lng="-16.482818710839805" lng="-16. y el significado de sus campos es el siguiente: • • • • • lat: Indica la latitud del punto en cuestión. com: Contiene un comentario aclaratorio para el punto en cuestión. 38 . Spain" com="" list="" type="Salida" label="0" /> <marker lat="28. lng: Indica la longitud del punto en cuestión. Spain" com="" list="3-5" type="Parada" label="1" /> <marker lat="28. Estos formatos se diferencian entre sí en que se les va añadiendo información adicional según se va tratando el problema. postal: Indica la dirección postal asignada al punto.32346272468567" postal="Camino del Medio. Manual de la aplicación 4.GMOR: Google Maps para la Optimización de Rutas 4. ya que en la salida no se recogen alumnos.

482818710839805" lng="-16.321359872817993" postal="Av Astrofisico Francisco Sanchez. Llegada: cuando queremos indicar que este punto es el final de la ruta.637.GMOR: Google Maps para la Optimización de Rutas ➢ Parada: contiene una lista donde cada elemento consta de dos valores separados por un guión. La estructura viene a ser la misma que la del formato 1 pero añadiendo la información referente a la matriz de distancias. Spain" com="" list="" type="Llegada" label="3" /> </markers> 39 . ya que en la llegada se descargan los vehículos. Parada: cuando queremos indicar que este es uno de los puntos por donde debemos pasar.Tabla generada el 23/1/2008 a las 16:55 horas --> <distances length="4"> <row label=”0” elements="0. 38206 San Cristóbal de la Laguna.325318813323975" postal="Av de la República de Venezuela. 38203 San Cristóbal de la Laguna. Spain" com="" list="3-5" type="Parada" label="1" /> <marker lat="28.320748329162598" postal="Calle Leocadio Machado.483158198194182" lng="-16.481328725656038" lng="-16. y será usado para definir rutas. el primer valor es la etiqueta de uno de los puntos de llegada. Salida: cuando queremos indicar que este punto es el inicio de la ruta.809.812. Spain" com="" list="3-7" type="Parada" label="2" /> <marker lat="28.685. y el segundo valor la cantidad de alumnos que se dirigen a ese destino (destino-alumnos).520. ➢ • type: Indica el tipo del punto en cuestión.32346272468567" postal="Camino del Medio. Llegada: no se tiene en cuenta. Es un número irrepetible (único) dentro de este archivo XML.0.568"/> <row label=”1” elements="491.0"/> </distances> <marker lat="28. Formato 2 Este formato es el que obtenemos una vez hemos calculado la matriz de distancias para los puntos del problema.1011.484148363410558" lng="-16.0.637"/> <row label=”3” elements="859. Los diferentes tipos son: ➢ ➢ ➢ • label: Indica el número identificador de referencia (código) asociado al punto. 38206 San Cristóbal de la Laguna. Spain" com="" list="" type="Salida" label="0" /> <marker lat="28.685"/> <row label=”2” elements="1496. y es como sigue: <markers> <!-.

680.333. Esta matriz no tiene que ser simétrica. 38206 San Cristóbal de la Laguna. Spain" com="" list="" type="Salida" label="0"/> <marker lat="28.482969594243151" lng="-16.3"/> </routes> <distances length="5"> <row label=”0” elements="0.325125694274902" postal="Av de la República de Venezuela.320748329162598" postal="Av Astrofisico Francisco Sanchez.429.GMOR: Google Maps para la Optimización de Rutas A este nuevo formato se le añade lo que viene comprendido entre las etiquetas distances.484723597986779" lng="-16.1176.4. Spain" com="" list="" type="Llegada" label="3"/> <marker lat="28.771. 38206 San Cristóbal de la Laguna.483563695548227" lng="-16.324675083160400" postal="Calle Marcelino Perdomo Reyes. Spain" com="" list="3-4" type="Parada" label="4"/> </markers> 40 . y donde cada elemento row representa una fila en la matriz de distancias de un problema.683. Formato 3 Este formato es el que obtenemos una vez hemos calculado una solución al problema planteado. la estructura es similar a la anterior pero añadiendo unos nuevos elementos que nos indican la o las rutas resultantes de los problemas.771. es decir.325190067291260" postal="Av de Bartolomé Cairasco. Spain" com="" list="3-5" type="Parada" label="1"/> <marker lat="28.762.1.1014"/> <row label=”3” elements="874.438. 38206 San Cristóbal de la Laguna.938"/> <row label=”4” elements="658.481243852449428" lng="-16. siendo label una referencia al punto al que pertenecen esas distancias y elements dichas distancias.481743660350865" lng="-16.0.438. ya que hay calles con sentido de circulación único.0. quedándonos por tanto: <markers> <routes> <route problem=”0” points="0.333.2.0.1014.0"/> </distances> <marker lat="28. 38206 San Cristóbal de la Laguna.320705413818359" postal="Calle Leocadio Machado. 38203 San Cristóbal de la Laguna. Spain" com="" list="3-7" type="Parada" label="2"/> <marker lat="28.656"/> <row label=”1” elements="282.680"/> <row label=”2” elements="615. Nota: Éste es el fichero de entrada para el botón “Abrir” del programa principal.

en esta zona se encuentran las opciones que se pueden considerar más generales de la aplicación.. y lograr de esta forma que la interfaz (además de ser sencilla) sea también clara. y un atributo points que indica los puntos que pertenecen a la ruta en cuestión mediante la etiqueta label que se encuentra dentro de este archivo XML. lo que está comprendido entre las etiquetas routes.1. Pantalla principal La pantalla principal de la aplicación consta de tres partes bien diferenciadas.1: Pantalla principal. La segunda parte contiene las dos funciones principales de la aplicación. con respecto a los anteriores. Figura 4.2. un acceso directo a la ayuda. y por otra el acceso que nos lleva a la pantalla de resolución de problemas de cálculo de rutas.. y donde cada uno de sus elementos route nos indica la ruta mediante una secuencia de puntos a seguir.. Contiene un atributo problem que indica a que problema pertenece de los que tenemos en el archivo XML. Las opciones que tenemos disponibles de izquierda a derecha son las siguientes: 41 . La primera de las partes corresponde a la toolbar. 4. Estas dos partes se describen más adelante. ToolBar Tal y como se dijo anteriormente. En ella encontramos opciones generales y de navegación por la aplicación. Nota: Éste es el fichero que se obtiene al usar el botón “Guardar” de la parte de la aplicación que calcula las rutas. ver figura 4. La tercera parte viene a ser una pequeña ayuda que nos va indicando en cada momento las opciones que tenemos disponibles para realizar. Por un lado el acceso a la parte que nos muestra la interfaz del mapa digital. como pueden ser las optimizaciones que queremos utilizar.GMOR: Google Maps para la Optimización de Rutas En este nuevo formato se añade. Esto se explicará a continuación.

Las posibles optimizaciones que tenemos son: la 2-Opt. ● ● Ayuda: Nos permite acceder a la ayuda del programa. 42 . el contenido de esta ayuda es: ● Acerca de: Contiene información básica de la aplicación. están todas las optimizaciones habilitadas y el valor para la optimización factorial es de 8. En concreto. También contiene una breve descripción de los formatos de archivos XML utilizados por la aplicación. la 3-Opt y la optimización factorial. nos dará la posibilidad de resolver otro problema de ese mismo archivo o volver a la pantalla principal. También nos permite especificar una semilla para el generador aleatorio de problemas (por defecto se usa la hora del ordenador. Por defecto. Opciones: Esta opción nos permite especificar las optimizaciones que queremos utilizar en el algoritmo de Ahorros de Clark & Wright. En el caso de haber abierto un archivo XML. Es recomendable que dicho parámetro no sea excesivamente grande ya que esto implicaría un número mayor de operaciones a realizar con la consecuente ralentización de la ejecución del algoritmo. En ella se explican todas las opciones básicas de la aplicación de manera más simplificada que en este capítulo. como se puede ver en la siguiente figura. como puede ser el autor o la versión actual. lo que no permite repetir la generación consecutiva de un mismo problema). a la cual se le puede especificar el número máximo del conjunto de puntos al que se le debe ejecutar dicha optimización.GMOR: Google Maps para la Optimización de Rutas ● Pantalla Principal: Nos permite volver a la pantalla principal.

En la parte superior tenemos el mapa digital junto con todas las operaciones o informaciones relacionadas con éste. que nos permite interactuar con el mapa digital en modo texto.3.3 y 4. Estas dos partes se pueden observar en las figuras 4.3: Parte del Mapa Digital. Interfaz del mapa digital Esta interfaz se encuentra a su vez dividida en dos partes. nos permite modificar la información que está mostrando el mapa actualmente. es decir. Figura 4.4. En la parte inferior disponemos de un sencillo editor XML. en el que se engloban algunas opciones dependiendo de si afectan al mapa digital o al editor XML. También se dispone de un menú superior.4: Parte del Editor XML. Figura 4.GMOR: Google Maps para la Optimización de Rutas 4. 43 .

A la derecha tenemos el propio mapa digital. y en estos casos se visualiza un mensaje.5.. los datos que tengamos en el editor XML en ese momento serán borrados para añadir los datos procedentes del mapa digital. pasamos a describir cada una de ellas. La herramienta controla esto internamente para evitar duplicidades. Estas opciones son las que se muestran en la figura 4.GMOR: Google Maps para la Optimización de Rutas 4. Mapa digital (Parte Superior) Esta sección esta dividida a su vez en dos zonas. A la izquierda tenemos un panel donde en su parte superior se nos muestran datos correspondientes a las opciones elegidas en el apartado del menú superior que engloba las operaciones a realizar sobre el mapa. es decir. Menú general Las opciones que podemos encontrar en este menú son las que están relacionadas con la información que tenemos cargada en el mapa digital en un momento dado. A continuación. pero pequeñísimas discrepancias pueden ser clasificadas como puntos diferentes cuando son un mismo punto.. Copiar a XML La finalidad de esta opción es pasar todos los puntos que actualmente tenemos creados en el mapa digital a formato XML.3. acciones a realizar.1. En este caso los datos que puede haber en ese momento en el editor XML no serán borrados. Hay que tener en cuenta que con esta opción. Figura 4.. pasa todos los puntos que actualmente tenemos creados en el mapa digital a formato XML. Añadir a XML El objetivo de esta opción es muy similar a la explicada en el apartado anterior. para a continuación mostrarlos a través del editor XML situado en la parte inferior de la pantalla. como pueden ser campos a rellenar.5: Opciones del menú superior para el mapa digital. o a un mismo punto cuando son dos. sino que los nuevos datos procedentes del mapa digital se añadirán a los ya existentes en el editor XML. Como consecuencia puede suceder que una misma localización aparezca dos veces en el XML cuando se trate de un punto en el mapa que ya estaba en el XML. para a continuación mostrarlos a través del editor XML situado en la parte inferior de la pantalla. 44 .

Figura 4. Ruta entre dos puntos Esta opción nos permite visualizar un posible camino entre dos puntos de los que tenemos fijados en el mapa. Se debe tener precaución con la información suministrada si no se quiere obtener un resultado erróneo. Número: Se especifica el número de la localización donde se quiere fijar el punto.6: Fijar Punto. Por ejemplo: 5. Para ello. una vez que seleccionamos la opción.GMOR: Google Maps para la Optimización de Rutas Fijar Punto La finalidad de esta opción es la de crear un punto en el mapa por medio de su dirección postal. no es lo mismo simplemente poner como municipio “La Laguna” que poner “San Cristóbal de La Laguna”. tal y como se puede ver en la figura 4. 45 . Por ejemplo. Los campos a rellenar para realizar la operación son: ● Municipio: Se especifica el municipio de la localización donde se quiere fijar el punto. Calle: Se especifica la calle de la localización donde se quiere fijar el punto. ● ● Hay que tener en cuenta que cuanto más completa sea la información con la que se rellenan los campos. Por ejemplo: Heraclio Sánchez. Por ejemplo: San Cristóbal de La Laguna.6. se tendrá una mayor probabilidad de encontrar la dirección deseada. en el panel “Opciones” se mostrarán una serie de campos.

46 .8: Ruta entre dos puntos (2). Figura 4.9: Ruta entre dos puntos (3).9. Una vez hemos elegido esta opción.GMOR: Google Maps para la Optimización de Rutas Su modo de empleo es como sigue. Este color será el de la ruta dibujada entre los dos puntos que se escogerán.7. En el panel “Opciones” tendremos la posibilidad de borrar las rutas que tenemos dibujadas en el mapa. y una vez hecho esto hacer nuevamente click sobre el punto que queremos que sea el final de la ruta. Una vez realizados estos pasos deberemos obtener un resultado en el mapa digital similar al de la figura 4. basta con simplemente hacer click en el primer punto. Figura 4. se nos mostrará en el panel “Opciones” la figura 4. con lo que en el panel “Opciones” veremos el contenido de la figura 4.7: Ruta entre dos puntos. Figura 4. El primer paso tras ver estas indicaciones es escoger un color de entre los posibles.10.8. El segundo paso es escoger los puntos entre los que queremos que se visualice la ruta. ver figura 4. Para ello.

Matriz de distancias Esta opción nos permite calcular la matriz de distancias entre todos los puntos que pertenecen a un problema determinado. Si lo hacemos se nos mostrará un botón en el panel “Info” que nos permite borrar dicha ruta. como en la figura 4. Mediante el botón “Añadir Matriz” introducimos las matrices de distancias que queremos hallar. Y una vez tenemos introducida alguna se habilita el botón “Iniciar Cálculo de Matrices”.10: Ruta entre dos puntos (4). el cual una vez se ejecuta nos muestra en el panel “Opciones” un mensaje de espera y una barra de progreso en la cual se nos indica el tanto por ciento de la operación a realizar. uno o más pares de puntos salida-llegada para calcular una o más matrices. Otra posibilidad para borrar las rutas pero de manera individual es haciendo click sobre ellas. 47 . en el panel “Opciones”.GMOR: Google Maps para la Optimización de Rutas Figura 4.11. una vez hemos escogido esta opción se nos solicita escoger. y el tiempo estimado para su finalización en cada una de las matrices que se quieren calcular. Para ello.

no se puede realizar un número excesivamente rápido de peticiones a sus servidores. lo que nos permite realizar unas 10. Durante el proceso de la obtención de las diferentes distancias no se debe hacer ninguna otra operación. y de este modo nos servirá como entrada para la parte de la aplicación donde se resuelven los problemas de cálculo de ruta.46 = 84.000 x 8.GMOR: Google Maps para la Optimización de Rutas Figura 4. En concreto.64 segundos.000 peticiones a sus servidores al día. Para intentar clarificar esto. Importante: Una vez haya acabado de calcular la matriz de distancias. deberemos realizar 10.600 segundos. Figura 4. tendremos que calcular 100 x 100 distancias.64 segundos. El proceso puede tardar hasta horas dependiendo del número de localizaciones y de la velocidad de la conexión a internet. o lo que es lo mismo. Si queremos calcular la matriz de distancias. Debido a la limitación impuesta que supone el uso de la API de Google Maps de forma gratuita. se cargará en el editor XML una estructura XML con la que crearemos un fichero para guardar a disco. y si lo pasamos a horas 23 horas y media.12: Fichero XML con matriz de distancias. 48 . ver figura 4.11: Matriz de distancias.12. Google permite a los usuarios de su API para Google Maps gratuita una petición a sus servidores cada 8. Si tenemos en cuenta que el tiempo necesario para petición es de 8. supongamos que tenemos un problema que contiene 100 puntos. Por lo que este proceso implica prácticamente 1 día.000 peticiones a los servidores de Google Maps. entonces el tiempo que nos tomará calcular la matriz de distancias es de 10. Se debe esperar hasta que éste finalice.

Para ello. 49 . se nos permitirá elegir en el panel de “Opciones” que soluciones de las que contiene el archivo XML queremos dibujar en el mapa. Figura 4. se nos mostrará en el panel de “Opciones” la posibilidad de limpiar completamente el mapa de las rutas dibujadas. mediante el calculador de rutas de la aplicación. aunque tal y como ya se mencionó en la opción de rutas entre dos puntos. por lo que tenemos que esperar a que la aplicación así lo indique mediante un mensaje que se mostrará al usuario.13: Escoger fichero con rutas. Una vez hemos respondido la pregunta anterior. y una vez hecho esto se habilitará el botón “Dibujar Rutas”. Para ello. Una vez hecho lo anterior deberemos esperar a que se terminen de dibujar todas las rutas que componen la solución.GMOR: Google Maps para la Optimización de Rutas Dibujar Ruta Esta opción nos permite que una vez obtenida una solución. estas rutas pueden ser borradas manualmente haciendo click sobre ellas.13. A continuación. se nos preguntará si queremos conservarla o eliminarla antes de cargar la solución. a uno o varios problemas de rutas planteados dibujarlo en el mapa digital. debemos añadir una o más soluciones mediante el botón “Añadir Ruta”. Tras escoger el archivo donde tenemos una o más soluciones y presionar el botón “Aceptar”. una vez hemos ejecutado la opción se nos invita a escoger el fichero XML en el cual hemos almacenado la solución del problema en cuestión. que tal y como su nombre indica dibujará las soluciones escogidas en el mapa. ver figura 4. en el caso de tener información previamente cargada en el mapa.

GMOR: Google Maps para la Optimización de Rutas El resultado que se debe obtener una vez acabado el proceso debe ser similar al de la figura 4. nos encontramos con el subpanel “Info” cuya funcional principal. aunque también algunas relacionadas con el editor XML. En la parte superior tenemos el panel “Opciones”. En concreto.14. En la parte inferior. Está dividido en dos subpaneles. y que serán descritas más adelante. la información que muestra este panel esta relacionada con los puntos fijados en el mapa de la siguiente manera: 50 .14: Rutas dibujadas sobre mapa digital. es la de proporcionar información. que ya ha sido ampliamente descrito en punto anterior. tal y como su nombre indica. y su función principal es la de indicar las instrucciones para realizar las operaciones del menú sobre el mapa digital o sobre el editor XML. Figura 4. Panel izquierdo (Opciones e Info) Este panel situado a la izquierda del mapa digital tiene la función de apoyar las operaciones a realizar sobre éste.

Figura 4. Justo debajo. En la parte superior.15: Ventana de los puntos. Luego tenemos un cuadro llamado Comentario cuya función es la de tener textos que sirvan de información adicional para el punto (por ejemplo en la figura 4. el cual permite borrar el punto del mapa digital. tenemos lo que vendría a ser la dirección postal donde tenemos fijado el punto. 51 . En esa ventana podemos observar que tenemos varios campos bien diferenciados.GMOR: Google Maps para la Optimización de Rutas Cuando hacemos click en un punto que tenemos fijado en el mapa digital. las geocoordenadas del punto y su identificador. contamos con un botón “Borrar”.15. tenemos otro cuadro llamado Demandas en el cual podemos tener una lista de pares de números (por ejemplo para nuestro problema podría tratarse del numero de alumnos a recoger en dicho punto.15 estamos indicando el número de la parada que se le asignó a ese punto). podemos pasar a explicar en profundidad la función que tiene el panel “Info”. Y por último. y podrían ser 12 alumnos a la parada 2 y 14 alumnos a la parada 3 como podemos ver también en la figura 4. Una vez explicada la información que tiene asociada cada punto.15). Independientemente de los campos antes descritos. se abre una ventana sobre ese punto como la mostrada en la figura 4.

16: Panel “Info”. a parte de mostrarse la ventana anteriormente descrita. cantidades a la lista de demandas. En concreto los campos que contiene este panel “Info” son los siguientes: ● ● ● Dirección: Contiene la dirección donde ha sido fijado el punto.. Figura 4.. deberemos especificar la posición de la lista que queremos modificar.GMOR: Google Maps para la Optimización de Rutas Cada vez que se hace click sobre un punto.16. como se muestra en la figura 4. Comentario: Contiene comentarios aclaratorios sobre el punto. Este panel se encarga de leer la información que se puede ver en la ventana del punto junto con alguna adicional. En el caso de querer modificar. en el panel “Info” se cargan todos los datos referentes a ese punto. es decir. escribir una cantidad en el recuadro alumnos y presionar el botón “Guardar”. escoger el destino de la ruta. salvo que en lugar de nuevo. la operación a realizar es similar. añadir datos a la dirección o modificarla. y nos da la posibilidad de modificarla como queramos. Añadir Demandas: Da la posibilidad de añadir o modificar elementos de la lista de demandas. añadir comentarios. Si se desea añadir un elemento.. 52 . bastará con seleccionar el campo nuevo.

ver figura 4. ● Hay que tener en cuenta que para que los cambios realizados sean permanentes. 53 . Figura 4. Zoom y movimientos El primero de ellos se encuentra en la parte izquierda del mismo. “Parada” y “Llegada”. Para cambiar entre los distintos tipo basta con seleccionar uno en la lista y presionar el botón “Cambiar”. se debe utilizar el botón “Guardar” de cada una de las secciones del panel “Info”. Nótese que cada localización tiene además una referencia interna “label” que no es modificable por que es un contador interno. por defecto al crear un punto el tipo asignado es el de Parada. Mapa digital El mapa digital cuenta con varios controles que nos permiten realizar operaciones sobre él de forma directa. Tampoco se muestran los campos de las geocoordenadas en este panel pero pueden ser modificados moviendo el punto arrastrándolo con el cursor del ratón. explicado más adelante.17. deberemos seleccionar la posición a eliminar y presionar el botón “Borrar”.17: Control para el movimiento y el zoom.GMOR: Google Maps para la Optimización de Rutas ● Eliminar Demandas: En el caso de querer eliminar una demanda. Tipo: En este campo podemos modificar el tipo asignado al punto. estos tipos pueden ser “Salida”. de otro modo algunos campos de la información del punto no serán actualizados. y no permite movernos por el mapa en cualquier dirección o realizar zoom sobre la zona centrada actualmente.

18: Mapa normal. y por otro también cuenta con la información visual gracias a las imágenes reales. la información visual es mucho mayor.20. 54 . en la que podemos ver toda la información que era mostrada en el primer tipo de mapa situada encima de las imágenes proporcionadas por los satélites. no se dispone de tanta información escrita como en el anterior pero al tratarse de imágenes reales. ver figura 4.19.19: Mapa por satélite.18. Por tanto podemos decir que este último tipo contiene las ventajas de los dos anteriores: por un lado contiene mucha información escrita. En este otro tipo. En este tipo de mapas se dispone de gran cantidad de información. El primero de ellos es un mapa como los que habitualmente se tienen. el cual nos permite visualizar los distintos tipos de mapas facilitados por Google Maps. mediante dibujos. Por último. ver figura 4. Figura 4.GMOR: Google Maps para la Optimización de Rutas Tipos de mapas También se dispone en la parte superior derecha del mapa de otro control. La segunda opción disponible es la de visualizar imágenes que provienen directamente de las tomadas por un satélite. tenemos lo que sería una versión híbrida de los dos mapas anteriores. o en ocasiones por un avión que vuela a grandes alturas. Los diferentes tipos de mapas son tres. Figura 4. ver figura 4.

GMOR: Google Maps para la Optimización de Rutas Figura 4.21.20: Mapa híbrido. tal y como se mencionó en el apartado del panel “Info”. Alejarse: nos permite disminuir el zoom en el mapa. ver figura 4. Poner marca aquí: nos permite fijar un punto donde se haya hecho click para mostrar este menú. Con esta opción. que puede ser modificada luego.21: Menú Popup. ● 55 . si el punto se fija en un lugar conocido se le añade la dirección por defecto del lugar. Figura 4. Centrar mapa aquí: nos permite centrar el mapa en el punto donde se haya hecho click para mostrar este menú. Las operaciones que se pueden realizar desde este menú son las siguientes: ● ● ● Acercarse: nos permite aumentar el zoom en el mapa. Menú popup También está disponible un menú que se muestra utilizando el botón derecho del ratón.

Estas opciones son las que se muestran en la figura 4.22: Mensaje de advertencia. pegar. para lo cual se cuenta con algunas opciones básicas como pueden ser: cortar.23. si llega a modificarse la dirección que actualmente contiene por otra. no es así. la aplicación nos mostrará un mensaje de advertencia y nos permitirá decidir si conservar la dirección postal que tenía o cambiarla por la nueva dirección. falta una característica por describir.GMOR: Google Maps para la Optimización de Rutas Cabe destacar. contamos con un sencillo editor para los archivos XML de la aplicación. copiar. 4. También se cuenta con unas cuantas opciones que se pueden realizar desde el menú general. ya que mientras que los controles anteriores están orientados al punto donde se encuentra centrado el mapa... en la parte superior de la interfaz. Editor XML (Parte Inferior) En esta segunda zona. Puntos Aunque ya se han mencionado prácticamente todas las características de ellos en los anteriores puntos. Con este control logramos simplificar algunas operaciones al usuario de la aplicación. tal y como comentamos anteriormente. 56 .2. Menú general Las opciones que podemos encontrar en este menú son las que están relacionadas con la información que tenemos cargada en el editor XML en un momento dado. Para ello.3. que aunque estas opciones se parezcan al primer control descrito en este punto. estas opciones están orientadas al punto donde se encuentra el cursor. Conviene tener presente que cuando cambiamos la localización de un punto. Esta característica es la que nos da la posibilidad de mover los puntos por el mapa. Ver figura 4. y sin soltar el botón de ratón moverlo hacia la posición que deseamos. basta con mantener el botón del ratón pulsado sobre uno de los puntos que tenemos fijados en el mapa..22. Figura 4.

Copiar a mapa La finalidad de esta opción es pasar todos los puntos que actualmente tenemos cargados en el editor XML al mapa digital. Figura 4. para a continuación crear por cada uno de los elementos de la estructura XML un punto en el mapa digital.GMOR: Google Maps para la Optimización de Rutas Figura 4. Para ello. lee todos los puntos que actualmente tenemos cargados en el editor XML. Hay que tener en cuenta que con esta opción los datos que tengamos en el mapa digital en ese momento serán borrados para añadir los datos procedentes del editor XML.24. Una vez escogido el archivo XML que queremos cargar bastará con presionar el botón “Aceptar”. A continuación pasamos a describir cada una de ellas. sino que los nuevos puntos procedentes del editor XML se añadirán a los ya existentes en el mapa digital. una vez escogida la opción se nos muestra en el panel “Opciones” un diálogo para escoger el archivo que queremos cargar en el editor XML. Abrir archivo Esta opción del menú nos permite cargar el contenido de archivos XML de nuestra aplicación que tenemos almacenados en nuestro disco duro.24: Abrir archivo. Aunque en este caso tenemos la particularidad de que los puntos que puede haber en ese momento en el mapa digital no serán borrados. Para ello. se deberá leer el contenido del editor XML y a continuación crear los puntos con los atributos que tienen cada uno de los elementos de la estructura XML en el mapa digital situado en la parte superior de la pantalla. teniendo en cuenta los atributos de dicho elemento del XML. Añadir a mapa El objetivo de esta opción es muy similar a la explicada en el apartado anterior. es decir. 57 . Ver figura 4. y tendremos la información del archivo cargada en el editor XML.23: Menú Archivo XML .

luego a “Opciones de internet”.25: Cargado (1). Este editor podemos dividirlo en dos partes. Por lo que para resolver este problema hay que dirigirse al menú “Herramientas”. En la parte superior tenemos un pequeño menú que contiene algunas opciones básicas. Si se da el caso de que ya hay puntos creados en el mapa digital.25. Figura 4.26.27) debido al hecho de que por defecto. entonces la aplicación sólo cargará el contenido de dicho archivo XML en el editor XML. Ver figura 4. Editor de texto Tal y como se ha dicho anteriormente. se cargan los datos simultáneamente en el editor XML y en el mapa digital.27: Mensaje advertencia. Figura 4. este navegador no es capaz de cargar los archivos XML desde el disco duro como consecuencia de las políticas de seguridad que tiene. Figura 4.26: Cargado (2). pestaña de “Opciones avanzadas”. y en la parte de seguridad deshabilitar la opción “Habilitar compatibilidad con XMLHTTP nativo”. la aplicación posee un sencillo editor de texto que nos permite realizar cambios en los datos actualmente cargados y reflejar dichos cambios en el propio mapa digital. Nota: En el caso de que se esté usando el Microsoft Internet Explorar 6 o superior se mostrará un mensaje de advertencia (ver figura 4. mientras que en la parte inferior tenemos el área de texto donde será cargado el contenido de los archivos XML.GMOR: Google Maps para la Optimización de Rutas Hay que destacar que con esta opción si no se dispone de ningún punto creado en el mapa digital. indicándolo con el siguiente mensaje en el panel “Opciones”. 58 . Esto se indica en el panel “Opciones” una vez se ha terminado la operación con éxito. ver figura 4.

las opciones de cortar. Deshacer: deshace las últimas operaciones realizadas sobre el texto que contiene el editor.28. de izquierda a derecha: ● ● ● Cortar: borrar el texto que este seleccionado. Aunque es posible disponer de estas opciones con el botón derecho del ratón.GMOR: Google Maps para la Optimización de Rutas Menú superior Este menú contiene algunas operaciones básicas para la edición de texto que pueden resultar muy útiles. Figura 4. Indent: añade un tabulado. ● ● ● ● Nota: En navegadores como por ejemplo el Mozilla FireFox.28: Operaciones básicas. con esta segunda interfaz hallamos una o varias 59 . Dichas opciones son las siguientes. Rehacer: vuelve a hacer las últimas operaciones deshechas mediante la anterior opción sobre el texto que contiene el editor. Rutas Esta segunda interfaz viene a ser como la segunda parte de la aplicación. Figura 4. Pegar: pega un texto que haya sido copiado anteriormente a continuación de donde se encuentre el cursor. ya que si en el mapa digital fijamos una serie de puntos sobre el mapa. 4. Área de texto Esta parte simplemente carga el contenido de los archivos XML para poder ser editado por el usuario. Ver figura 4.29. copiar y pegar no están disponibles debido a políticas de seguridad del propio navegador.4. Copiar: copia el texto que este seleccionado.29: Área de texto. Ver figura 4. Outdent: borra un tabulado.

cargar ficheros. En esta interfaz. como se puede ver. De otro modo el problema no se podría llegar a resolver. En esta interfaz se nos proporcionan un conjunto de opciones. y que aunque al inicio no están todos habilitados..GMOR: Google Maps para la Optimización de Rutas rutas que recorran todos esos puntos. visualizarlas.30: Interfaz de Rutas.. hallar las soluciones. Además tenemos una serie de botones que realizan las operaciones. posee también la matriz de distancias para todos esos puntos. que además de tener una lista de puntos. Las operaciones que realizan estos botones más en profundidad se explican a continuación. Abrir La función de este botón es la de cargar en la aplicación una archivo XML que contiene un problema de rutas. También hay que 60 . Figura 4. a medida que vamos usándolos se irán activando los botones oportunos. tales como. para más tarde volver al mapa digital y mostrar la solución encontrada. ya que el planteamiento inicial seria incorrecto. y otro que sea la llegada. seguimos contando con una pequeña sección que nos orienta en el uso de la aplicación. Hay que tener en cuenta que los problemas que se quieren cargar deben tener como requisito indispensable un punto que sea la salida. es decir..

con lo que se podrían provocar errores debido a que no están pensadas para ello (las geocoordenadas no tienen sentido en el mundo real). El objetivo de este problema aleatorio no es otro que el de realizar pruebas sobre el algoritmo implementado en la aplicación. Para que los resultados que se obtengan con esta opción sean lo suficientemente buenos para valorar las soluciones devueltas por el algoritmo. y las demandas de los clientes como máximo serán ¼ de la capacidad de los vehículos para el problema actual. Si elegimos esta opción. pero el resultado obtenido por el algoritmo no se podrá almacenar en un fichero. han sido calculados aproximadamente para que siempre devuelvan soluciones lo suficientemente complejas. En el caso de que el problema haya sido leído desde un archivo XML cuando presionamos este botón se nos abrirá una ventana en la que tenemos que escoger el problema que vamos a resolver. y la capacidad de los vehículos que se utilizará para dicho problema. Los problemas que se generan con está opción. se habilitará el botón que nos permite previsualizar el resultado en el propio visualizador de la aplicación. de los que hay en el archivo XML. y así evaluar la solución devuelta por la aplicación antes de su carga en el mapa digital. ya que en nuestro problema un cliente sólo puede ser visitado una vez. o desde un problema generado aleatoriamente. varias rutas que contengan varios puntos. anteriormente descritas en este manual. También se activará el botón de “Guardar”. ya que esto podría provocar que el usuario intente cargar dicho resultado en el mapa digital. para 61 . Una vez se ha ejecutado esta opción. el número total de puntos puede oscilar desde 10 a 50 puntos. se habilitará este botón. y que siempre sean resolubles (las demandas de los clientes nunca sobrepasen las capacidades de los vehículos).GMOR: Google Maps para la Optimización de Rutas asegurarse que la demanda de un cliente nunca llegue a ser mayor que la capacidad de un vehículo. Su función es la de ejecutar el algoritmo de Ahorros de Clarke & Wright sobre el problema cargado y utilizar las optimizaciones escogidas por el usuario. las capacidades de los vehículos desde 20 a 40. y así comprobar los resultados proporcionados por el mismo. Calcular Una vez hemos cargado en memoria un problema. a continuación se habilitan los botones de “Calcular” y “Calcular paso a paso”. Cuando se usa esta opción de generar el problema aleatoriamente se habilitan los botones de Calcular y Calcular paso a paso. ya sea desde un archivo XML proporcionado por la interfaz de mapa digital. Generar La finalidad de está opción es la de generar un problema de rutas aleatorio.

se nos muestra una ventana (ver figura 4. O también.31) con todos los datos relevantes del problema planteado. o fue un problema generado aleatoriamente. se ejecutaría el problema hasta llegar a una solución. Visualizar La finalidad de esta opción es la de permitirnos previsualizar las soluciones proporcionadas por la aplicación sin tener que cargarlas en el mapa digital. Por tanto realiza la misma operación que el botón “Calcular” pero con la particularidad que con cada pulsación se consigue que se ejecute una iteración del algoritmo. ejecutemos la de “Calcular” para realizar el resto de iteraciones automáticamente. 62 . si el problema fue generado aleatoriamente simplemente visualizar la solución generada para valorarla. Guardar Esta opción nos permite almacenar en un archivo XML una solución al problema planteado. tal y como se ha dicho anteriormente. ya sea desde un archivo XML proporcionado por la interfaz de mapa digital. Para ello añadirá a la información que ya fue cargada previamente las rutas que conforman la solución obtenida. Su función es llevar a cabo la ejecución de una única iteración del algoritmo de Ahorros de Clarke & Wright. Este botón no se habilitará tras la resolución de un problema si éste fue generado aleatoriamente. se habilitará este botón. También es posible que tras ejecutar 1 o más veces esta opción. Calcular paso a paso Al igual que la anterior opción. o desde un problema generado aleatoriamente. una vez hemos cargado en memoria un problema. ya que de lo contrario. Hay que tener en cuenta que esta opción se debe ejecutar antes que la del botón “Calcular”.GMOR: Google Maps para la Optimización de Rutas almacenar la solución en un fichero XML. Una vez ejecutamos esta opción. pero esto dependerá de si el problema fue cargado desde un fichero proporcionado por la parte del mapa digital.

Como se puede ver. tenemos un panel “Opciones” con todos los datos mostrados en la parte izquierda. el punto verde es la salida. las demandas de los clientes (color azul) y cada una de las rutas.GMOR: Google Maps para la Optimización de Rutas Figura 4. Este visualizador se habilita una vez hemos ejecutado el botón “Calcular” para que de este modo podamos ver el resultado obtenido tras la ejecución. y el conjunto de puntos rojos son las diferentes paradas por donde tienen que pasar los vehículos. no importa si el problema ha sido generado aleatoriamente o ha sido cargado desde un archivo XML proporcionado 63 . El resto de colores se corresponden con los campos descritos para el panel “Opciones”. y por otro. esta ventana se divide en dos partes. Para cada una de las rutas que estén dibujadas en el mapa. Para el caso de esta opción. tenemos una visualización simplificada de la solución del problema. resultando útil para cuando los problemas son excesivamente grandes y no es posible ver todas las rutas con claridad. conseguimos que no sean mostradas en el dibujo de la izquierda. Por un lado. Los campos que podemos elegir si queremos que se muestren o no son: el nombre de los puntos (color rojo). el azul es la llegada. En lo referente al dibujo. de manera que si desmarcamos dichas opciones. en el panel “Opciones”.31: Visualizador. se muestra el coste de dicha ruta y la cantidad de elementos que transporta el vehículo que recorre dicha ruta.

También es posible abrir este visualizador cuando usamos la opción de “Calcular paso a paso”.. Conexión a internet. Por último decir que debajo del panel donde se muestra el dibujo simplificado de la solución. ● ● 64 . Microsoft Internet Explorer. tenemos la capacidad de los vehículos para el problema planteado. tales como Mozilla Firefox.1 o superior.5.GMOR: Google Maps para la Optimización de Rutas por la interfaz del mapa digital. pero si indispensables para su correcto funcionamiento. Opera.NET Framework 1. con lo que conseguimos ver cómo se va resolviendo el problema paso a paso. lo que supone una ayuda importante a la hora de ver si el algoritmo funciona correctamente. Estos requisitos son: ● Tener instalado un navegador web capaz de interpretar el lenguaje Javascript.. 4.. Requisitos de la aplicación Los requisitos de esta aplicación no son muy extensos. Tener instalado Microsoft .

q k ≤ q k para k 1 . existiendo un conjunto T = {1. Los costos y tiempos de viaje para cada tipo de vehículo son c k y t k respectivamente. |T|} de tipos de vehículo.19) fijan los valores de las variables r i y actúan como restricciones de eliminación de subrutas. j∈ A .17) (1. entonces un vehículo del mismo tipo debe abandonarlo. ∑ ∑ j ∈N  i k ∈T i∈ A+  j  x k =1 ij ∑ + xk − ij j∈ N i  ∑ - x k =0 ij ∀ i∈V . Ampliaciones del problema Dado que. . Se asume que los índices de los vehículos están ordenados en forma ij ij creciente por capacidad (es decir. Las restricciones (1. a.16) establecen que todo cliente debe ser visitado por algún vehículo. 1} r j0 ∀ j∈V Las variables binarias x k indican si el arco (i. Las restricciones (1. A continuación. 1 2 En la siguiente formulación de flujo de vehículos de tres índices [8] se agrega un índice para discriminar entre los tipos de vehículos. j) es utilizado por el vehículo k y las variables ij r i positivas indican la carga acumulada en la ruta correspondiente hasta el nodo i (inclusive). ∀ k ∈T r 0=0 k r j−r id jq∣T∣ ∑ xij −q∣T∣ k∈T ∀ i∈V \{0} . 5.16) (1.18) y (1.15) (1. tal y como se ha dicho anteriormente. haciéndolo más verídico. ∀ k ∈T r j ∑ k ij k∈T i ∈ N  j - ∑ k qk x ¿ ij (1. El problema con flota heterogénea (FSMVRP) En los problemas con flota heterogénea los costos y capacidades de los vehículos varían.1. mientras que la capacidad de los vehículos se impone en 65 .19) ∀ j∈V \{0} ∀i . Futuro 5. . k 1k 2 ). las ampliaciones que a continuación exponemos están enfocadas precisamente a obtener un mayor realismo. el problema no trata situaciones totalmente reales. En (1. La función objetivo (1.17) se indica que si un vehículo de tipo k visita al nodo i. j ∈ A ∑ c ij xij ∀ j∈V \{0} k k (1.15) mide el costo total de la solución incluyendo costos fijos y variables.20) x ∈{0. se describen unas ampliaciones del problema inicial que añaden algunos otros factores al problema. min ∑ f k∈T k j ∈ N 0  ∑ + x 0j ∑ k k ∈T i . k 2 ∈T .1. .GMOR: Google Maps para la Optimización de Rutas 5. ∀ j∈N + i (1.18) s. . La capacidad de los vehículos k ∈ T es q k y su costo fijo (si lo tuvieran) es f k .1.

El problema correspondiente se denomina Fleet Size and Mix Vehicle Routing Problem (o FSMVRP). de la siguiente manera [9]: min ∑ k∈ K  i .23) (1. 66 . n1} ∀ k ∈K x ji =0 x ij q k k k s.n+1} ∑ j∈ N  i ∑ + k y kj − y k s it ij −M 1−x k  i ij e i y i l i k x ij ∈{0. k ∈ K ∀ i ∈V ∖ {0. las ventanas de tiempo implican que necesariamente debe cumplirse t i ≤ l i y t j ≤ l j . entonces el vehículo deberá esperar hasta que el cliente “abra” y necesariamente t j=e i si t ij . se opta por utilizar este modelo aún cuando en algunos casos no refleja la realidad. si t ie i .GMOR: Google Maps para la Optimización de Rutas (1.21) ∀ i ∈V ∖ {0. l i ] que establece un horario de servicio permitido para que un vehículo llegue a él y un tiempo de servicio o retraso si . La función objetivo (1. sino la composición de la flota de vehículos a utilizar. k ∈ K j ∈ N - i ∑ ∑ j ∈N  0 k xij =1 (1. conocida de antemano. j∈A . j) es un arco de la solución y t i y t j son las horas de llegada a los clientes i y j. n + 1} .1. El problema con ventanas de tiempo (VRPTW) En esta variante del problema. Por otro lado.25) (1. Utilizando los nodos 0 y n + 1 para representar al depósito y el conjunto K para representar a los vehículos (no a los tipos de vehículos como en la sección anterior).22) (1.2. j) es recorrido por el vehículo k. j ∈ A ∑ c ij x ij k k (1.20). En esta formulación se asume que la cantidad de vehículos de cada tipo es ilimitada. n1} ∀ k ∈K ∀ i . al tratar con problemas de flota heterogénea. n1}. Las variables y k ij i indican la hora de llegada al cliente i cuando es visitado por el vehículo k (si el cliente no es visitado por dicho vehículo el valor de la variable no tiene significado).26) (1. No solo se debe decidir las rutas. j∈V \{0. 1} y i 0 k k ∀i . k ∈K ∀ i∈V ∖ {0. n1}. Si la cantidad de vehículos disponibles de cada tipo k fuera v k .27) ∑ + + x k =1 0j x ij − di k j ∈n  i ∑ j∈ N i ∑ - ∀ k ∈K .21) es el costo total de las rutas. cada cliente i ∈ V \ {0} tiene asociada una ventana de tiempo [ei . posiblemente heterogénea.24) (1. Usualmente. k ∈ K Las variables x k indican si el arco (i. además de capacidades. k ∈ K i∈V \{0. debería agregarse las restricciones j ∈N  0 ∑ + x k v k 0j ∀ k ∈T 5. a. el problema se formula para una flota de vehículos. Si (i. i∈V ∖ {0.

Paso 2 (cálculo de los ahorros): Actualizar s pq para cada par de rutas p y q que pueda ser combinado manteniendo la factibilidad. Otras heurísticas clásicas Otras de las posibles ampliaciones en un futuro para este proyecto. 5. 3).24) determinan que cada vehículo k ∈ K recorre un camino de 0 a n + 1. se halla un nuevo Matching en cada iteración. La unión que da el máximo ahorro podría. combinar todo par de rutas p y q tal que el arco (p. (4. Un ejemplo se explica en el siguiente punto.26) asegura que si un vehículo k viaja de i a j. hacer que las uniones que permanecen factibles no sean buenas.2. se está descartando otras uniones posibles en las que participan r i o r j (porque i y j dejan de ser extremos en la nueva ruta). Las restricciones (1. terminar. la restricción (1. Entonces. no puede llegar a j antes que y is it k .22) indica que todos los clientes deben ser visitados.2. q) pertenezca al Matching.1 se muestra una posible solución parcial de 5 rutas. y ij actúan además como restricciones de eliminación de subrutas. el grafo asociado y la nueva solución inducida por el Matching de Peso Máximo que es {(1. La capacidad de cada vehículo es impuesta en (1. Si ningún par de rutas puede ser combinado. En el Algoritmo de Ahorros Basado en Matching se decide la unión a realizar considerando como afecta ésta a las posibles uniones en iteraciones posteriores. Pero. Supongamos que el vehículo no tiene capacidad para satisfacer la demanda de ninguna combinación 67 . por otro lado. los límites de las ventanas de tiempo son impuestos en (1. i. podría pasar por implementar algunas otras heurísticas clásicas que han sido planteadas para el CVRP. Hallar un Matching de Peso Máximo en un grafo puede resolverse en tiempo polinomial en la cantidad de nodos del grafo [17]. 5)}. el grafo tiene tantos nodos como rutas haya en la solución (inicialmente hay n 2 rutas) y. Ir a 2. se considera un grafo que tiene a todas las rutas como nodos y un arco entre dos nodos p y q cuyo peso es el ahorro obtenido si las rutas correspondientes se combinan (siempre que la combinación sea factible). Para esto. 5. Siendo M una constante lo suficientemente grande. para problemas grandes puede ser conveniente hallar el Matching en forma aproximada mediante alguna heurística. Paso 3 (matching): Resolver un problema de Matching de peso máximo sobre un grafo cuyos nodos son las rutas de la solución actual y en el cual hay un arco entre las rutas p y q con peso s pq si su combinación es factible. El ahorro total es de 17.25). Un Matching de peso máximo sobre dicho grafo da un conjunto de combinaciones a realizar que es globalmente bueno. por un lado. Paso 4 (uniones): Dado el Matching de peso máximo. Algoritmo de Ahorros Basado en Matching Paso 1 (inicialización): Para cada cliente i construir la ruta (0. Elegir siempre el máximo ahorro es una estrategia demasiado voraz. en algunos casos.1 Algoritmo de ahorros basado en matching Cuando en el Algoritmo de Ahorros se decide unir dos rutas r i y r j .23) y (1.27).GMOR: Google Maps para la Optimización de Rutas La restricción (1. Finalmente. En la figura 5. 0).

si la ruta resultante está lejos de llenar la capacidad del vehículo o lejos de la máxima distancia permitida). 5. Así.GMOR: Google Maps para la Optimización de Rutas de tres de las rutas originales.1: Iteración de un algoritmo de ahorros basado en Matching. el ahorro por combinarlas se define como s pq=t  S pt  S q −t S p ∪S q  . se hubiera combinado primero las rutas 3 y 4 y luego las 2 y 5. no realizar todas las uniones dadas por el Matching de peso máximo. Entonces. sino que además éstos deben ser re-calculados en cada nueva iteración. al combinar dos rutas. Una opción es combinar sólo las rutas que correspondan al arco de mayor peso del Matching [18]. En la propuesta de Wark y Holt [20] el ahorro puede definirse de la forma usual descrita en el algoritmo clásico de Ahorros. podría ser ventajoso que la ruta resultante de una unión sea inmediatamente unida con otra. algunas rutas son divididas probabilísticamente. En la propuesta de Desrochers y Verhoog [18] y de Altinkemer y Gavish [19]. Cuando no hay más combinaciones de rutas que sean factibles. 68 .3. Cuando la cantidad de clientes en cada ruta es grande conviene realizar el cálculo de s pq en forma aproximada. no todos los arcos del Matching se corresponderán con uniones de rutas. Resulta conveniente. Si se hubiera ejecutado el Algoritmo de Ahorros clásico. Con esta definición no sólo se hace costoso el cálculo de los ahorros. Sin embargo. lo que permite proseguir la búsqueda de soluciones. buscan la mejor solución intercambiando nodos entre las diferentes rutas que forman la solución final. si S p y S q son los conjuntos de clientes de las rutas p y q. sino solamente algunas. es decir. Figura 5. no solamente se considera la posibilidad de insertar una al final de la otra como en el Algoritmo de Ahorros original. obteniendo un ahorro total de 15. entonces. Otra alternativa para realizar las uniones de manera más gradual es conectar los nodos del grafo sobre el que se calcula el Matching con nodos ficticios con pesos tales que se priorice la inclusión de algunos de estos últimos en el Matching [19]. Búsquedas locales multi-ruta Otra posible ampliación que proponemos es la de implementar búsquedas locales pero en esta ocasión multi-rutas. En las uniones dadas por el Matching de peso máximo una misma ruta no participa en más de una unión (porque los arcos correspondientes forman un Matching en el grafo). o puede modificarse para privilegiar las uniones que estén lejos de ser infactibles (por ejemplo. sino todas las posibilidades de armar una nueva ruta con los clientes de ambas. donde t(S) indica el costo de una solución óptima para el TSP sobre el conjunto de clientes S.

es decir. Dicha transferencia mejora la solución si el peso del ciclo correspondiente es negativo. puede formularse como el problema de hallar un ciclo de costo negativo en un grafo dirigido G = (V. Encontrar un ciclo de costo negativo con las características deseadas es NP-Hard [42]. w  si .3. representa una k-transferencia cíclica. En operador String Exchange una ruta envía una secuencia de m clientes a la otra y esta última envía otra secuencia de n clientes a la primera. Figura 5. El conjunto de arcos A={ si . s j⊂R j . 5.W).A.2: String Relocation y String Exchange. buscar una k-transferencia cíclica que mejore la solución actual. n) a cada String Exchange. 1). Si R={r 1 . una secuencia de m nodos es transferida de una ruta a la otra manteniendo el orden en la ruta original. s j  representa la transferencia que elimina los clientes si de Ri . la transferencia de exactamente k clientes de cada ruta r ∈ Rb a la ruta ρ(r) es una k-transferencia b-cíclica. Todo ciclo en G tal que sus nodos corresponden a conjuntos de clientes en rutas diferentes. Cuando Rb = R se habla de k-transferencias cíclicas. . r i ∈R} . introducidas por Thompson y Psaraftis [42]. r m } es el conjunto de rutas de la solución y ρ : R → R es una permutación cíclica de algún subconjunto Rb ⊆ R (con |Rb| = b). El arco  si . Ri ≠R j . s j  implica resolver un TSP.∣s∣=k . R j∪s i ∖ s j es factible} indica las transferencias factibles.1 Transferencias cíclicas Las transferencias cíclicas. El costo de un arco  si .2(a)-(b) se muestra un intercambio SR (2. los agrega a R j y elimina s j de R j . Simbólicamente se denota con (m. En el operador String Relocation. 0) y en 5. 0) a cada String Relocation y con (m. Dado un valor de k. 69 . son intercambios multi-ruta que intentan eliminar clientes de una ruta y reubicarlos en otra de manera cíclica. s j =t  R j ∪s i ∖ s j  donde t(S) es el costo de un TSP óptimo sobre el conjunto de clientes S.GMOR: Google Maps para la Optimización de Rutas Van Breedam [40] propuso dos operadores para intercambiar clientes entre un par de rutas.2(c)-(d) se ilustra un intercambio SE (2. s j  es el incremento del costo en la ruta R j si se realiza la transferencia. s j / si ⊂Ri . Incluso G no puede ser construido en tiempo polinomial: ∣A∣es O m2 n2k  y calcular w  si . En las Figuras 5. Los nodos de G corresponden a conjuntos de k clientes que están en una misma ruta de la solución: V ={s /s⊂r i .

Para esta parte del proyecto decidimos consultar la literatura y llevar a cabo la implementación de algunos algoritmos clásicos en la resolución de este tipo de problemas. sino que además nos permite obtener datos de suma importancia para los problemas que pretendemos resolver. los sentidos de circulación. Podemos decir que se ha cumplido satisfactoriamente con nuestras expectativas. esto es totalmente comprensible ya que ofrecer un servicio gratuito de esta magnitud debe ser un trabajo considerable. podemos decir que los resultados obtenidos son considerablemente buenos. Por último. Como ya se ha mencionado anteriormente. Esto provoca que dichas operaciones se prolonguen considerablemente en el tiempo. Conclusiones Las principales motivaciones para abordar este proyecto han sido la investigación en el ámbito de los mapas digitales. debemos decir que las limitaciones que Google impone para el uso de su API gratuitamente empañan un poco los resultados obtenidos. Estas 70 . no era objetivo de este proyecto el resolver un problema totalmente real. Destacar también la posibilidad de agregar puntos al mapa de forma totalmente dinámica lo que nos permite plantear un problema en el mapa de forma sencilla. y que podían ser representados en el mapa digital correctamente. las funciones proporcionadas por la API de Google Maps nos han permitido personalizar nuestro mapa digital en gran medida.. ya que no sólo se limita a movernos por un mapa mundial. mostrar la solución a dicho problema. aunque no por ello descuida la parte encargada de resolver los problemas. Debido a que las solución obtenidas con el algoritmo anteriormente mencionado.. Es por ello. no siendo aún totalmente completos. Por otra parte. a pesar de ser correctas. las localizaciones exactas de las carreteras. estaban bastante lejos de ser óptimas se optó por implementar una serie de mejoras. sino mostrar mediante un problema simplificado la capacidad que tiene este tipo de tecnología para permitir plantearlo y. ya que estas limitaciones están orientadas hacia la consulta de sus servidores por lo que en algunas operaciones debemos respetar intervalos de tiempo entre las distintas consultas a sus servidores. y que nos permiten conocer los nombres de las calles. con todos los factores que ello conlleva. Resolución de problemas de enrutamiento En lo que se refiere al cálculo de soluciones en los problemas planteados en el mapa digital. También cabe destacar la cantidad de datos que contienen dichos mapas.. Mapas digitales Tal y como hemos podido ver. como puede ser la distancia para calcular la matriz de distancias entre una serie de puntos que pertenecen a un problema. a pesar de no ser nuestra principal motivación para la realización del proyecto. Debido a esto nos decidimos por el algoritmo de ahorros de Clarke & Wright (Savings Algorithm) con el que logramos obtener soluciones a los problemas de enrutamiento de vehículos con capacidad limitada (CVRP) totalmente viables. una vez resuelto. y observar el beneficio que esta tecnología puede suponer para la resolución de problemas reales. que este proyecto se puede considerar que está más centrado en los mapas digitales.GMOR: Google Maps para la Optimización de Rutas 6.

rutas para visitar clientes. etc. con lo que podemos observar por ejemplo como se eliminan los cruces en las soluciones obtenidas mediante la mejora 2-Opt. permiten el desarrollo e implementación de prototipos informáticos que pueden ayudar notablemente a decisores que deban resolver problemas de logística tales como el diseño de rutas de transporte escolar. 3-Opt y la factorial. combinando tanto mapas digitales como algoritmos de optimización.GMOR: Google Maps para la Optimización de Rutas mejoras en concreto son la 2-Opt. que nos permite crear problemas generados aleatoriamente y visualizar los resultados obtenidos. llegando a ser óptimas en muchos casos. el trabajo desarrollado durante este proyecto confirma que la tecnología informática disponible actualmente. para confirmar que estas mejoras y el algoritmo funcionaban correctamente añadimos a la aplicación un debugger. sobretodo a nivel local de cada una de las rutas. Por último decir que. 71 . recogida y entrega de mercancías y/o personas. Gracias a ellas las soluciones que ahora se obtienen son mucho mejores. Como conclusión.

Fulkerson. Ramser. Annals of Discrete Mathematics 31 (1987) 147–184 Laporte. P. Desrosiers. T. S. Wolsey. M. P.. Tucker. G.. Gheysens.: A computational modification to the savings method of vehicle scheduling.. J. Management Science 6 (1959) 8091 Clarke. Nguyen.: Solution of a large scale traveling salesman problem. L. John Wiley and Sons (1990) Golden. Miller. Operational Research Quarterly 18 (1967) 281–295 Lin. M. Journal of the ACM 23 (1976) 221–234 Desrochers. H. R. S.. Johnson. G. Vigo.: Computers and intractability: a guide to the theory of NPcompleteness. S.. W..: The truck dispatching problem. B. A. Verhoog. M... École des Hautes Études Commerciales de Montréal (1999) Nemhauser.: Integer and Combinatorial Optimization.GMOR: Google Maps para la Optimización de Rutas Bibliografía [1] [2] [3] [4] [5] [6] [7] [8] [9] Toth.: Computer solutions of the traveling salesman problem. Bell System Technical Journal 44 (1965) 2245–2269 Gabow.. L. SIAM (2000) 1–26 Dantzig..: A matching based savings algorithm for the vehicle routing problem. A. G.. F. Freeman and Company (1979) Martello. Desaulniers. Networks 7(1977) 113–148 Gaskell. Monographs on Discrete Mathematics and Applications. H. European Journal of Operational Research 59 (1992) 345–358 Yellow. Magnanti. B. Operations Research 2 (1954) 393–410 C. Technical Report Cahiers du GERAD G-89-04...: Exact algorithms for the vehicle routing problem. D.. F.: Implementing vehicle routing algorithms. ´École des Hautes ´Études Commerciales de Montréal (1989) 72 [10] [11] [12] [13] [14] [15] [16] [17] [18] .: The VRP with time windows. D. D. G. Solomon. In: The Vehicle Routing Problem. Toth.: Knapsack problems: algorithms and computer implementations.. T.. Operational Research Quarterly 21 (1970) 281–283 Golden. Wright.: An Overview of Vehicle Routing Problems. W.: An efficient implementation of Edmonds’ algorithm for maximum matching on graphs. Y. H.: The vehicle routing problem: an overview of exact and approximate algorithms. Assad. Zemlin: Integer programming formulation of traveling salesman problems. G.: The fleet size and mix vehicle routing problem.. Operations Research 12 (1964) 568–581 Dantzig. F. G. Levy. Technical Report Cahiers du GERAD G-99-13. Nobert. John Wiley & Sons (1988) Laporte.: Scheduling of vehicles from a central depot to a number of delivery points. P. Johnson. J... Journal of the ACM 7 (1960) 326–329 Garey. Computers & Operations Research 11 (1984) 49– 66 Cordeau. G. Soumis. T.: Bases for vehicle fleet scheduling.

European Journal of Operational Research 86 (1995) 480–490 Thompson. K. P. Psaraftis.: Parallel savings based heuristics for the delivery problem. Journal of Operational Research Society 45 (1994) 1156–1167 Breedam.: Cyclic transfer algorithms for multivehiclerouting and scheduling problems. Gavish. A.GMOR: Google Maps para la Optimización de Rutas [19] [20] [40] [42] Altinkemer. P. H.: A repeated matching heuristic for the vehicle routing problem..V. J. B.: Improvement heuristics for the vehicle routing problem based on simulated annealing. Operations Research 41 (1993) 935–946 73 .. Operations Research 39 (1991) 456–469 Wark.. Holt.

Sign up to vote on this title
UsefulNot useful