I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ......

32
Mg. Wilbert Chávez Irazábal -1- I ÍNDICE I ÍNDICE ..................................................................................................... Pág. 01 II RESUMEN ………………………………………………………………... Pág. 02 III INTRODUCCIÓN…………………………………………………………… Pág. 03 IV PARTE TEÓRICA O MARCO TEÓRICO ………………………..…….. Pág. 05 1. Algoritmos más rápidos sobre redes reales de Carreteras…………… Pág. 06 1.1. Algoritmo A* ………………………………………………….. Pág. 08 1.2. Algoritmos ACO ………………………………..………. Pág. 09 2. El método del etiquetado (the labeling method) …..……………. Pág. 10 3. Algoritmo Dijkstra……………………………………………… Pág. 12 4. El algoritmo Dijkstra con cubos dobles y cubos Aproximados………. Pág. 16 V MATERIALES Y MÉTODOS……………………………………………….. Pág. 20 VI RESULTADOS ………………………………………………………………. Pág. 20 6.1. Algoritmo Dijkstra con parámetros de optimización dinámicos……. Pág. 20 6.2. El Algoritmo Dijkstra implementado en comparación con cubos dobles y aproximados ………………………………………………. Pág. 24 VII DISCUSIÓN………………………………………………………………….. Pág. 25 7.1 Conclusiones………………………………………………………… Pag.29 7.2 Recomendaciones……………………………………………………… Pag.29 VIII REFERENCIAS ……………………………………………………………… Pág. 29 IX APÉNDICE…………………………………………………………………… Pág. 31

Transcript of I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ......

Page 1: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -1-

I ÍNDICE

I ÍNDICE ..................................................................................................... Pág. 01

II RESUMEN ………………………………………………………………... Pág. 02

III INTRODUCCIÓN…………………………………………………………… Pág. 03

IV PARTE TEÓRICA O MARCO TEÓRICO ………………………..…….. Pág. 05

1. Algoritmos más rápidos sobre redes reales de Carreteras…………… Pág. 06

1.1. Algoritmo A* ………………………………………………….. Pág. 08

1.2. Algoritmos ACO ………………………………..………. Pág. 09

2. El método del etiquetado (the labeling method) …..……………. Pág. 10

3. Algoritmo Dijkstra……………………………………………… Pág. 12

4. El algoritmo Dijkstra con cubos dobles y cubos Aproximados………. Pág. 16

V MATERIALES Y MÉTODOS……………………………………………….. Pág. 20

VI RESULTADOS ………………………………………………………………. Pág. 20

6.1. Algoritmo Dijkstra con parámetros de optimización dinámicos……. Pág. 20

6.2. El Algoritmo Dijkstra implementado en comparación con cubosdobles y aproximados ………………………………………………. Pág. 24

VII DISCUSIÓN………………………………………………………………….. Pág. 25

7.1 Conclusiones………………………………………………………… Pag.29

7.2 Recomendaciones……………………………………………………… Pag.29

VIII REFERENCIAS ……………………………………………………………… Pág. 29

IX APÉNDICE…………………………………………………………………… Pág. 31

Page 2: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -2-

II RESUMEN

En este trabajo se plantea la optimización y adaptación de un módulo de

cálculo de rutas teniendo en cuenta las condiciones dinámicas del tráfico con el

objetivo de gestionar eficientemente los recursos que posee una empresa de

transporte. La lógica de la aplicación encargada del cálculo de rutas que se

desarrollo está basada en el algoritmo Dijkstra pero con adaptaciones y

mejoras para el caso que nos ocupa.

El trabajo esta subdividió en dos subtareas, siendo la primera subtarea el de la

asignación óptima de recursos, para posteriormente abordar la solución

mediante el cálculo de rutas de mínimo tiempo con el objetivo tanto de

optimizar los procesos de asignación de recursos como de tiempo de recorrido.

En el diseño de la aplicación se implemento utilizando el lenguaje de

programaciones C++, dotadas de capas de comunicaciones y utilizando para

ello sockets, capacitándola para recibir peticiones de optimización por parte del

cliente.

Asimismo, con los resultados obtenidos se realizo el estudio comparativo con

otras metodologías como Dijkstra estático implementado con cubos dobles,

Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO.

Obteniéndose una buena performance.

Page 3: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -3-

III INTRODUCCIÓN

En este proyecto se investiga la optimización de rutas de transporte vehiculares

con factor de coste variable. Es bien sabido que el entorno de transporte no es

estático, es decir, posee ciertas variables que se encuentran en continuo

cambio tales como distancia, estado de las carreteras, climatología, estado del

tráfico. Cada vez resulta más necesario ofrecer a las empresas de transporte,

en especial a las de mercancías, una aplicación útil y eficiente en la que

confluyan todos los parámetros dinámicos de la carretera y apunte las rutas

más óptimas en cada momento, gracias al análisis del entorno.

Se trata de un tema de gran importancia actualmente, ya que en los últimos

años ha aumentado en gran medida el número de vehículos y el precio del

combustible, mientras que el número de infraestructuras disponibles no lo ha

hecho del mismo modo, por lo que una aplicación eficiente, capaz de

solucionar los problemas del enrutamiento de vehículos puede proporcionar a

una empresa importantes beneficios gracias al ahorro de tiempo y dinero, y es

que, actualmente, las aplicaciones comerciales destinadas a este fin

únicamente proporcionan rutas válidas sin tener en cuenta los cambios en la

red viaria, es decir, con parámetros estáticos tales como la longitud de los

tramos de carretera y velocidad media en atravesarlos.

El presente trabajo muestra un modelo que representa parte de las condiciones

reales en las cuales se llevan a cabo los aspectos prácticos del transporte.

Una de estas condiciones es la dependencia temporal de los tiempos de

recorrido de acuerdo con el momento o fecha en el que se realicen y de la

evolución de la previsión de las variables de tráfico. Poder tener en cuenta toda

esta información dinámica a la hora de proceder en la estimación de la mejor

ruta entre un origen y un destino es un avance que puede darse gracias a los

datos que recogen todos los días los Centros de Gestión de Tráfico utilizando

múltiples sensores de carretera.

Otro de los aspectos clave ha sido el estudio de los algoritmos que resuelven el

problema de encontrar el camino más corto entre dos puntos en aras de elegir

el más eficiente para resolver el problema. Se realiza un estudio comparativo

entre diversas metodologías mostrando especial interés en parámetros como la

eficiencia, tiempo de ejecución y validez de los resultados para terminar

Page 4: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -4-

justificando la elección que se ha realizado, que en este caso se trata de la

implementación de una variante del algoritmo Dijkstra optimizado para un

entorno cuyos pesos o factores sean variables con el tiempo.

Para llegar al algoritmo definitivo que resuelva los requisitos impuestos por el

entorno se ha realizado un estudio previo de esta metodología, repasando las

optimizaciones realizadas por otros autores tales como la implementación

mediante cubos dobles y sacos de desbordamiento [Noto00], o la optimización

que presentaba Yusuke Fujita [Fuji03] ejecutando el algoritmo Dijkstra

simultáneamente desde el origen y el destino.

El algoritmo elegido tiene múltiples y grandes ventajas frente a otras

metodologías. La primera de ellas se trata de que el algoritmo siempre es

capaz de proporcionar la solución óptima al problema en un tiempo razonable,

mientras que en otras metodologías la resolución se realiza mediante pruebas

por lo que no siempre se puede asegurar el haber llegado a la solución más

óptima del problema. Otra de las ventajas es que no necesita una configuración

previa de parámetros para conseguir resolver el problema puesto que la

configuración del algoritmo Dijkstra no varía dependiendo de la red en la que se

utilice. Todo ello, además, se encuentra encuadrado en una situación de

entorno variable, es decir, el algoritmo es capaz de considerar los costes

dinámicos de cada uno de los arcos de la red, devolviendo, a cada instante, las

rutas más óptimas. Para conseguir estos avances se ha partido de la definición

tradicional del algoritmo Dijkstra para resolver el problema del camino más

corto y se ha ajustado adecuadamente el código para solventar las

necesidades impuestas por el tráfico variables en las redes reales de

carreteras.

Page 5: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -5-

IV PARTE TEÓRICA O MARCO TEÓRICO

El problema de resolver el camino más corto es un área clásica de

investigación dentro del mundo de la informática y los sistemas GIS, se lleva

estudiando desde 1950. Este problema se aplica en campos tan diversos como

puede ser el transporte o las redes de comunicaciones.

Hoy en día existen muchos métodos para determinar la ruta más corta en

función del tipo de red y las especificaciones del problema. A pesar de que en

la literatura existen muchos documentos describiendo métodos y

comparándolos entre sí en términos de rendimiento, la verdad es que no existe

un método mejor para todos los problemas, sino que dependiendo de las

características de este se trata de buscar un algoritmo que se ajuste a los

requerimientos del problema debido a que cada problema tiene sus

condiciones y se aplica a redes de distinto tipo.

Una red se define como un grafo orientado G = (N, A), el cual consiste en un

conjunto de N nodos y un conjunto de A arcos y lleva asociados una serie de

valores numéricos, tales como el número de nodos n = | N |, el número de

arcos m = | A | y la longitud de cada arco, que denotaremos con l (vi,vj). En un

grafo orientado cada arco tiene también una dirección por lo que los arcos (vi,vj)

y (vj, vi) con i j son distintos.

Un camino del vértice vi al vértice vj es una secuencia de arcos de la forma

(vi,vk), (vk, vl), …, (vm, vj) pertenecientes a A, en la que cada vértice aparece

únicamente en una ocasión.

Aunque en el problema general se utiliza un grafo orientado, el cual es muy útil

por ejemplo en el plano de una ciudad donde existen caminos de un solo

sentido, en el caso que se está estudiando se utiliza un grafo que posee tanto

arcos orientados como arcos no orientados, puesto que el problema está

enfocado a redes de transporte de larga distancia, en las que las carreteras en

general son de doble sentido pero como es lógico también existen carreteras

de sentido único.

La formulación del problema del camino más corto se da de la siguiente

manera: dada una red, encontrar los caminos más cortos (de menor coste)

Page 6: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -6-

desde un nodo origen hasta el resto de los nodos de la red o bien hasta un

subconjunto de los mismos.

Estos caminos más cortos forman un árbol orientado T cuya raíz es el nodo

origen s y que cumple la propiedad de que el único camino desde s hasta un

nodo i de la red corresponde al camino más cortó hasta ese nodo. Este árbol

orientado recibe el nombre de árbol de camino más corto (shortest path tree) y

en una red de n nodos existen n árboles diferentes.

Los caminos más cortos desde un nodo origen hasta el resto de nodos de una

red se conocen como one-to-all shortest paths. Por otra parte, los caminos más

cortos desde un nodo origen hasta un subconjunto del resto de nodos de una

red, se conocen como one-to-some shortest paths. Por último, los caminos más

cortos desde cada nodo hasta cualquier otro de una red se conocen como all-

to-all shortest paths.

1. Algoritmos más rápidos sobre redes reales de Carreteras

Aunque en la literatura existen numerosos estudios empíricos sobre la

eficiencia de diversos algoritmos que resuelvan el SPP [Cher93] [Gold93],

todavía no existe una respuesta clara acerca de qué algoritmo se ejecuta más

rápido sobre redes reales de carreteras. En un estudio realizado por Zhan y

Noon [Zhan96], se identificaron los tres algoritmos más rápidos, los cuales en

orden más a menos son: el algoritmo de crecimiento de grafo (the graph growth

algorithm) implementado con dos colas, el algoritmo de Dijkstra implementado

con cubos aproximados (approximate buckets) y por último el algoritmo de

Dijkstra implementado con cubos dobles (double buckets).

Zhan y Noon probaron con redes reales de carreteras 15 de los 17 algoritmos

estudiados por Cherkassky [Cher93], adaptándolos para que resolviesen

automáticamente la variante all-pairs SPP. No consideraron el algoritmo

específico para redes acíclicas debido a que los arcos de las redes reales de

carreteras son bidireccionales y por tanto estas redes contienen ciclos. Del

mismo modo tampoco consideraron una implementación basada en el uso de

una pila para mantener los nodos etiquetados ya que en las pruebas

Page 7: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -7-

preliminares con redes reales de carreteras esta implementación demostró ser

mucho más lenta que el resto de las implementaciones.

Los 15 algoritmos se recogen en la siguiente tabla, mientras que una

descripción detallada de los mismo puede encontrarse en [Cher93] y en las

referencias que contiene.

Tabla 1. Resumen de las 15 implementaciones estudiadas por [Zhan96]

En su estudio, Zhan y Noon usaron 21 redes reales de carreteras para evaluar

los algoritmos. Una característica importante de las redes reales de carreteras

es su bajo grado de conectividad, medido como la relación entre el número de

arcos y el número de nodos. Los grados de conectividad de las redes reales de

carreteras, en general, son parecidos entre sí y difirieren notablemente de los

de las redes simuladas [Gall88]. Esta diferencia es importante debido a que el

número de iteraciones para construir un árbol del camino más corto está

directamente relacionado con el grado de conectividad de la red.

Page 8: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -8-

Del trabajo de Zhan y Noon se desprende que el algoritmo que resuelve de

manera más eficiente el one-to-all SPP es el algoritmo de crecimiento de grafo

de Pallottino implementado con dos colas. Sin embargo, cuando lo que se

pretende es resolver el one-to-one SPP o el one-to-some SPP, el algoritmo

Dijkstra ofrece ventajas, ya que el algoritmo puede terminar tan pronto como se

obtenga la mínima distancia hasta el nodo destino.

En concreto, Zhan y Noon recomendaban dos implementaciones del algoritmo

Dijkstra: la implementación basada en cubos aproximados y la implementación

basada en cubos dobles. La elección entre una u otra implementación se hacía

dependiendo de la longitud máxima de los arcos de la red. Si los arcos de la

red tenían una longitud menor que 1500, Zhan y Noon recomendaban la

implementación del algoritmo de Dijkstra con cubos aproximados para resolver

el one-to-some SPP y viceversa si las redes tenían arcos de longitud mayor

que 1500.

Otro estudio [Chab02] describe el comportamiento del algoritmo A* en redes

con una conectividad más alta que las redes reales de carreteras pero en el

que se tienen en cuenta las condiciones dinámicas del entorno.

1.1. Algoritmo A*El algoritmo A* es un algoritmo de búsqueda para grafos que encuentra el

camino de menor coste entre un nodo inicial y un nodo final. Usa una función

heurística (denotada por f'(x), es una aproximación a f(x), función quien

proporciona la verdadera evaluación de un nodo) para determinar el orden en

que la búsqueda visita nodos en el árbol. La mencionada función es la suma de

otras dos funciones:

Una función que indica el coste del camino seguido hasta un cierto nodo

(denotada g(x)).

Una estimación admisible de la distancia hasta la meta (h'(x)).

La función de evaluación resulta entonces f0(x) = g(x) + h0(x).

Empezando en un nodo inicial dado, el algoritmo expande el nodo con el menor

valor de f'(x). A* mantiene un conjunto de soluciones parciales almacenadas en

una cola de prioridad. La prioridad asignada a un camino x viene determinada

por la función f'(x). El proceso continua hasta que una meta tiene un valor f'(x)

Page 9: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -9-

menor que cualquier otro nodo en la cola (o hasta que el árbol ha sido

completamente recorrido).

1.2. Algoritmos ACOLos algoritmos ACO se basan en el comportamiento de algunas colonias de

hormigas a la hora de buscar caminos óptimos hacia el alimento. Su

funcionamiento se basa esencialmente en el uso de colonias de hormigas

artificiales (población de agentes), siendo por tanto un algoritmo distribuido. Las

hormigas artificiales cooperan entre sí mediante un sistema de comunicación

inspirado en la feromona.

Se trata de algoritmos esencialmente constructivos: en cada iteración del

algoritmo, cada hormiga construye una solución al problema recorriendo un

grafo de construcción.

Cada arista del grafo, que representa los posibles pasos que la hormiga puede

dar, tiene asociada dos tipos de información que guían el movimiento de la

hormiga:

Información heurística, que mide la preferencia heurística de moverse

desde el nodo r hasta el nodo s, o sea, de recorrer la arista Ars. Las

hormigas no modifican esta información durante la ejecución del

algoritmo.

Información de los rastros de feromona artificiales, que mide lo

aprendido por otras hormigas del movimiento de r a s. Imita a la

feromona real que depositan las hormigas naturales. Esta información se

modifica durante la ejecución del algoritmo dependiendo de las

soluciones encontradas por las hormigas.

Los problemas que se pueden resolver mediantes estos algoritmos se tratan de

grafos ponderados G = (X,A), siendo A el conjunto de aristas que unen el

conjunto de componentes X. Al grafo G se le denomina grafo de construcción.

Las hormigas artificiales buscarán soluciones óptimas, de coste mínimo, en el

grafo de construcción, y el movimiento estará basado en la información

heurística de cada arista y la feromona depositada en la misma. Además, se la

dotará de una memoria para poder recordar el camino seguido, que le será de

utilidad en el momento de actualizar el rastro de feromona.

Page 10: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -10-

El modo de operación básico de un algoritmo de ACO es como sigue:

Las M hormigas de la colonia se mueven, concurrentemente y de

manera asíncrona, a través de los estados adyacentes del problema, el

cual se representa en forma de grafo con pesos. Este movimiento se

realiza siguiendo una regla de transición que está basada en la

información local disponible en las aristas del grafo. Esta información

local incluye la información heurística y memorística (rastros de

feromona) para guiar la búsqueda. Al moverse por el grafo de

construcción, las hormigas construyen incrementalmente soluciones.

Una vez que cada hormiga ha generado una solución, se evalúa y

deposita una cantidad de feromona a lo largo de las aristas que es

función de la calidad de su solución. Esta información guiará la

búsqueda de las otras hormigas de la colonia en el futuro.

Además, el modo de operación genérico de un algoritmo ACO incluye

procedimientos adicionales globales tal como la evaporación de la feromona, la

valoración extra de las mejores soluciones depositando una cantidad de

feromona adicional sólo en las transiciones/componentes asociadas a dichas

soluciones (simulando hormigas elitistas o de mayor rango) [Pozo07].

2. El método del etiquetado (the labeling method)

El método del etiquetado es la base de muchos algoritmos que resuelven el

SPP [Gall88] [Ahuj93], tal es el caso del algoritmo Dijkstra. La salida que

proporciona este método consiste en un árbol que parte de un nodo s y termina

en un conjunto de nodos.

Este árbol se construye iterativamente, de forma que al final se obtienen los

caminos más cortos desde el nodo origen hasta el resto de nodos.

El método del etiquetado mantiene tres variables para cada nodo i mientras

construye el árbol del camino más corto: la etiqueta de distancia f(i), el nodo

padre, p(i), y el estado del nodo, S(i). La etiqueta de distancia p(i), contiene la

distancia del camino más corto desde s hasta i que se ha encontrado en un

momento dado, cuando el algoritmo ha finalizado esta variable almacena la

Page 11: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -11-

mínima distancia desde s hasta i. El nodo padre p(i) almacena el identificador

del nodo que precede inmediatamente al nodo i en el árbol. Por último, la

variable del estado del nodo, S(i), almacena uno de los siguientes valores: no

alcanzado, etiquetado temporalmente o etiquetado permanentemente

Cuando el valor es no alcanzado se trata de un nodo que no ha sido

examinado durante la ejecución del algoritmo. Normalmente, la etiqueta de

distancia de un nodo no alcanzado se fija a un valor positivo muy alto (suele ser

+). Una vez que ya se conoce el camino más cortó desde el nodo s hasta el

nodo i, el nodo i esta etiquetado permanentemente. Por último, el estado de

etiquetado temporalmente se da cuando se conoce un camino desde s hasta el

nodo i pero este aún puede ser mejorado. Por tanto, mientras se encuentre

etiquetado temporalmente f(i) es sólo una cota superior de la distancia mínima

entre el nodo s y hasta el nodo i. Una vez que el nodo i pasa a estar etiquetado

permanentemente, f(i) contiene finalmente la distancia mínima entre el nodo s y

el nodo i.

Cuando el algoritmo comienza, se crea un árbol inicial y se inicializan

convenientemente las variables f(i), p(i) y S(i) de cada nodo. Durante la etapa

de búsqueda, cuando un nodo i es examinado, se comprueba la etiqueta de

distancia de cada nodo sucesor j para ver si es posible reducirla yendo al nodo

j desde el nodo i. Si es ese el caso, el árbol se actualiza cambiando el nodo

padre de j a i, es decir, se hace p(j) = i. Como las etiquetas de distancia f(j) se

van haciendo más pequeñas cada vez, llega un momento en el que los nodos j

pasar a estar etiquetados permanentemente.

El algoritmo continúa hasta que todos los nodos están etiquetados

permanentemente. Cuando el algoritmo termina el árbol solución es un árbol de

camino más corto.

Formalmente, el método que se acaba de describir sobre un nodo i se puede

representarse como se muestran en la figura 1.

Page 12: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -12-

Figura 1. Pseudocódigo del método del etiquetado

3. Algoritmo Dijkstra

Una vez estudiadas las bases para entender el funcionamiento del algoritmo se

va a pasar a detallar el método Dijkstra, el cual sigue las especificaciones

[Drey63] en su capítulo 2, utilizado para implementar la solución al problema

que se plantea en este proyecto.

El algoritmo Dijkstra es uno de los algoritmos más representativos para la

resolución del SPP. Este obtiene todos los caminos más cortos desde un

origen s (es decir, resuelve el one-to-all SPP), sin embardo también puede

servir para resolver el all pairs SPP en el cual haya los árboles de camino más

corto de todos los nodos de la red simplemente aplicándolo a cada nodo que

componga el grafo.

Primeramente exponemos el fundamento sobre el que se asienta, que se trata

del principio de optimalidad: si el camino más corto entre los vértices u y v pasa

por el vértice w, entonces la parte del camino que va de w a v debe ser el

camino más corto entre todos los caminos que van de w a v. De esta manera,

se van construyendo sucesivamente los caminos de coste mínimo desde un

vértice inicial hasta cada uno de los vértices del grafo, y se utilizan los caminos

conseguidos como parte de los nuevos caminos.

Page 13: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -13-

Figura 2. Explicación del principio de optimalidad del algoritmo Dijkstra

La exposición del algoritmo es la siguiente:

Dado un conjunto de N nodos, numerados arbitrariamente desde 1 hasta N, y

la matriz NxN denominada D, no necesariamente simétrica y cuyos elementos

del tipo dij representan la longitud del arco que conecta directamente el nodo i

con el nodo j. Se asume que dii=0 y dij 0. Si el nodo i no se encuentra

directamente conectado al nodo j, entonces dij =.

Una vez definido el grafo el algoritmo Dijkstra asigna a los nodos etiquetas de

tentativa, las cuales representan la distancia más corta desde el nodo origen a

todos los demás nodos. El paso que se describe a continuación es repetido

exactamente una vez por cada nodo y una vez concluido las etiquetas de

tentativa pasan a ser etiquetas permanentes y cada una de ellas representa la

distancia más corta desde cada nodo al nodo origen.

Inicialmente la etiqueta del nodo origen es permanente y posee el valor 0,

mientras que las etiquetas del resto de nodos (en total N-1) son tentativas con

distancia infinito. Después, uno por uno, se compara cada etiqueta de tentativa

con la suma de la etiqueta del nodo origen y el coste de atravesar el arco que

une el nodo origen con el nodo en análisis. El valor más pequeño entre estos

dos es la nueva etiqueta de tentativa del nodo.

A continuación se elije, entre el conjunto de N-1 nodos con etiqueta de

tentativa, el que posea la mínima distancia al origen y se declara dicha etiqueta

como etiqueta permanente. Supongamos que dicho nodo es el nodo k.

Page 14: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -14-

Entonces se compara uno por uno cada nodo del conjunto N-2 que poseen

etiquetas de tentativa con la suma de la etiqueta del nodo k y el coste del arco

que les une, la más pequeña entre estas dos distancias pasa a ser la nueva

etiqueta de tentativa. Una vez realizado este paso N-2 veces, el nodo con la

mínima distancia del conjunto N-2 pasa a poseer etiqueta permanente y este

último paso se repite hasta que el número de elementos en el conjunto de

nodos con etiqueta tentativa es 0 o bien hasta que el nodo considerado destino

es etiquetado permanentemente.

Los caminos óptimos pueden ser fácilmente reconstruidos si se adopta una

política correcta sobre los datos que tienen que almacenar las etiquetas. La

política más común guarda la distancia al origen y el número del nodo que une

el arco al nodo que se esté analizando si atravesando dicho arco la distancia al

origen es menor de la que poseía, este nodo es llamado nodo padre.

Formalmente, el algoritmo Dijkstra se puede representar de la manera que

sigue:

Dado G = (N, E) donde N es el conjunto de nodos y E el conjunto de arcos y s

un elemento del conjunto N:

Page 15: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -15-

Figura 3. Pseudocódigo algoritmo Dijkstra

Al implementar el algoritmo Dijkstra en un sistema digital mediante el lenguaje

C++ no se puede realizar la iniciación a infinito por motivos obvios, por lo que

se acordó inicializar al valor -1 para ese fin.

Pasamos ahora a estudiar su eficiencia. Si N es el número total de nodos que

componen el grafo y E el número total de arcos, el tiempo total de ejecución del

algoritmo Dijkstra es O(N2 + E) = O(N2), donde la igualdad resulta del hecho de

que siempre es posible encontrar constantes c1, c2 y c3 que satisfagan la

Page 16: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -16-

igualdad c1·N2 + c2·N2 c3·N2, y por tanto el tiempo de ejecución del algoritmo

varía cuadráticamente con el número de nodos de la red.

Por otra parte es importante recalcar que el algoritmo no funciona cuando los

pesos de los arcos pueden tener una magnitud negativa. Por ejemplo, si se

considera el siguiente grafo:

Figura 4. Ejemplo de pesos negativos en el algoritmo Dijkstra

Si se declara el nodo A como nodo origen, el algoritmo seleccionará el arco

(A, X) que minimiza la expresión f(A) + l(A, X) y que en este caso será el arco

(A, B).

Entonces se fijará f (B) = 2 y se buscará el arco (B, Y) que minimice la

expresión f(B) + l(B, Y). Como este arco no existe, pueden ocurrir dos cosas:

que el algoritmo termine sin descubrir la mínima distancia hasta el nodo C, o

que se vuelva a examinar el nodo A, se seleccione el nodo (A, C) y se fije la

distancia f(C) = 3. Ninguno de las dos posibles soluciones es la correcta puesto

que en el segundo caso el algoritmo no encuentra el camino más corto a C que

es A – B – C, sino que lo considera inmediato de coste 3.

4. El algoritmo Dijkstra con cubos dobles y cubos Aproximados

En el algoritmo original de Dijkstra, los nodos con etiqueta de tentativa son

tratados como una lista no ordenada, lo cual es equivalente a implementar con

una lista no ordenada la cola de prioridad Q del procedimiento general para la

construcción de un árbol de camino más corto. Esto supone una limitación, ya

que en cada iteración hay que recorrer todos los nodos almacenados en Q para

seleccionar aquel con la mínima etiqueta de distancia.

Page 17: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -17-

Una mejora del algoritmo consiste en mantener los nodos etiquetados en una

estructura de datos de forma que se encuentre ordenador por sus etiquetas de

distancia.

Una estructura de datos formada por cubos (buckets) es un ejemplo de tales

estructuras.

Los cubos se encuentran dispuestos de una manera ordenada como se

muestra en la siguiente figura 5. [Ahuj93]

Figura 5. Ejemplo de una estructura de datos basada en cubos

El cubo k almacena todos los nodos etiquetados temporalmente cuyas

etiquetas de distancia están dentro de un cierto rango. Los nodos contenidos

en un cubo pueden almacenarse en una lista doblemente enlazada. Una lista

doblemente enlazada únicamente requiere un tiempo O(1) para completar cada

una de las operaciones para actualizar una distancia en la estructura de cubos.

Entre estas operaciones están el comprobar si un cubo está vacío, añadir un

elemento a un cubo y borrar un elemento de un cubo.

Dial en 1969 fue el primero en implementar el algoritmo Dijkstra utilizando

cubos [Dial69]. En la implementación de Dial, el cubo k contiene todos los

nodos etiquetados temporalmente cuyas etiquetas de distancia son iguales a k.

Los cubos se recorren de una manera secuencial (0, 1, 2,3,…) hasta que se

encuentra un cubo que no está vacío. Por definición, todos los nodos del primer

cubo no vacío tienen la mínima etiqueta de distancia. Uno a uno, estos nodos

Page 18: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -18-

con la mínima etiqueta de distancia son examinados, etiquetados

permanentemente y eliminados del cubo.

La posición dentro de la estructura de cubos de un nodo etiquetado

temporalmente se actualiza cuando su etiqueta de distancia cambia. Por

ejemplo, si la etiqueta de distancia de un nodo etiquetado temporalmente

cambia de f1 a f2, el nodo pasa del cubo f1 al cubo f2. Este proceso se repite

hasta que todos los nodos son etiquetados permanentemente o cuando se

etiqueta el nodo declarado como destino.

La implementación de Dial sobre el algoritmo Dijkstra requiere (n · C) + 1 cubos

en el peor de los casos, donde C es la longitud máxima de los arcos de la red.

Sin embargo, se ha demostrado que en una red con una longitud máxima de

arco igual a C sólo se necesitan C + 1 cubos para almacenar todos los nodos

con etiqueta de tentativa.

Como puede observarse, en la implementación básica con cubos del algoritmo

Dijkstra, los requerimientos de memoria pueden ser prohibitivos cuando C y n

son grandes. Estos requerimientos de memoria pueden reducirse usando otras

implementaciones con cubos del algoritmo Dijkstra, tales como la

implementación con saco de desbordamiento (overflow bag) o la

implementación con cubos aproximados (approximate buckets) [Cher93].

La implementación con saco de desbordamiento utiliza solo a < (C +1) cubos,

siendo a un parámetro de entrada. En la etapa i del algoritmo, únicamente se

encuentran almacenados en cubos los nodos etiquetados temporalmente cuyas

etiquetas de distancia están dentro del intervalo [a(i), a(i) + (a – 1)]. Los otros

nodos se almacenan en una estructura aparte denominada saco de

desbordamiento. Inicialmente los valores de i y de a(i) se fijan a 0. Cuando no

queda ningún nodo en el intervalo antes mencionado, i se incrementa en una

unidad y de a(i) se fija al valor de la mínima etiqueta de distancia de los nodos

etiquetados temporalmente. Entonces, los nodos cuyas etiquetas de distancia

quedan dentro del nuevo intervalo [a(i), a(i) + a-1] se mueven desde el saco de

desbordamiento hasta los cubos correspondientes y comienza un nuevo ciclo

de comprobación.

Page 19: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -19-

En la implementación con cubos aproximados del algoritmo Dijkstra, el cubo i

contiene aquellos nodos etiquetados temporalmente cuyas etiquetas de

distancia están dentro del intervalos [i · b, (i + 1) · (b-1)], donde b es una

constante que se puede elegir.

Aquí, el término de aproximados se refiere al hecho de que las etiquetas de

distancia de los nodos contenidos en un mismo cubo no son exactamente

iguales, como ocurría en el caso de la implementación básica con cubos, sino

que están dentro de un determinado rango de valores. Cada cubo está

implementado mediante una cola FIFO (first in first, out).

La implementación con cubos aproximados requiere un total de número de

cubos especificados por la ecuación: EnteroMasGrande · (C/b) +1, siendo la

complejidad temporal en el peor de los casos de O (m · b + n (b + C / b)). Como

se puede observar, este algoritmo reduce los requerimientos de memoria a

costa de aumentar el tiempo de ejecución. Cada nodo puede que sea

examinado más de una vez, aunque no más de b veces.

Finalmente, la implementación del algoritmo de Dijkstra con cubos dobles

combina ideas de las dos implementaciones anteriores. Esta implementación

mantiene dos niveles de cubos: un nivel superior y otro inferior.

En el nivel inferior, son usados un total de d cubos. Un cubo i del nivel superior

contiene todos aquellos nodos cuyas etiquetas de distancia están dentro del

intervalo [i · d, (i + 1) · d -1]. Además, en el nivel superior existe un cubo no

vacío que contiene el valor del índice más bajo de L. Un cubo f(j) – (L · d) del

nivel inferior contiene los nodos cuyas etiquetas de distancia están en el

intervalo [L · d, (L +1) · d -1]. Precisamente son los nodos contenidos en los

cubos del nivel inferior los que son examinados durante el proceso de

comprobación. Una vez que todos los nodos del nivel inferior han sido

examinados, el valor de L se incrementa y entonces, los nodos contenidos en

los cubos no vacíos del nivel superior se mueven hasta los cubos

correspondientes del nivel inferior para que comience un nuevo ciclo de

comprobación [Vara03].

Page 20: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -20-

V. MATERIALES Y MÉTODOS

Se siguió el esquema de principio establecido en la Metodología de la

Investigación y como el presente trabajo es aplicado, se presenta la

fundamentación teórica y las aplicaciones que se pueden hacer con nuestro

diseño.

Los resultados obtenidos en nuestra simulación han sido comparados con los

valores obtenidos por otros algoritmos. Para la realización nuestro trabajo

hemos hecho uso de las bibliografías que se muestra en el ítem VIII de

referencias. Asimismo, para la implementación de la aplicación informática, se

cuenta con un equipo INTEL Core i7, 3.4GHZ Seis Núcleos, Disco Duro Sata

500 GB, Memoria RAM 4 GB 4000 DDR III, Windows SEVEN 7, equipado con

Microsoft® Visual Studio 2008 para la edición de código en lenguaje C/C++.

Del mismo modo se conto con el acceso al programa servidor de información

de cartográfica digital comercial Geobis.

VI.RESULTADOS

Antes de darles los resultados de las medidas realizadas le describiremos el

algoritmo optimizado y el algoritmo montado.

6.1. Algoritmo Dijkstra con parámetros de optimización dinámicos

En los algoritmos descritos anteriormente no cambian sustancialmente en lo

referente a programación cuando el coste de atravesar cierto arco no es

siempre el mismo, si no que varía dependiendo del instante de tiempo en el

que se vaya a atravesar, pero sí que cambia de forma importante el resultado.

A continuación se va a formular la variante del algoritmo Dijkstra que tiene en

cuenta la variabilidad de los costes en función del momento del viaje en el que

se planea atravesar cierto arco. Esta variante será la que posteriormente se ha

implementado en el proyecto, siguiendo las indicaciones de la referencia

[Drey69].

En un entorno variable el SPP de una fuente al resto de nodos puede que no

proporcione la misma solución en cada ejecución del algoritmo, esto dependerá

Page 21: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -21-

de los pesos variables de los arcos en un cierto momento y de la predicción de

los instantes sucesivos.

[Cook66] estudió el problema de encontrar el camino más rápido entre

ciudades en las cuales el tiempo de viaje entre la ciudad i y la ciudad j

dependía del momento de salida de la ciudad i. A partir de ello [Drey69] formuló

el siguiente algoritmo: Si t es el momento de salida de la ciudad i hacia la

ciudad j, dij (t) denota el tiempo de viaje. Si los horarios de viaje son tales que

un retraso en la salida disminuye el tiempo de llegada, dij (t) representa el

desfase de tiempo entre el instante t y el momento más temprano de llegada

posible.

Según esto, se define fi (t) como el mínimo tiempo de viaje hasta N, partiendo

de la ciudad i en el instante t, y se establece la siguiente fórmula:

N

min( ) ( ( ))

f (t)=0

i ij j ijf d t f t d tj i

Ecuación N°01

Se asume que todas las distancias dij (t) están definidas y que toman valores

enteros positivos. Por otra parte se define T como el máximo tiempo de viaje

que se puede dar entre cualquier ciudad y N, tomando como partida i en el

instante 0 y asumiendo que todos los nodos están conectados en cualquier

instante (puede que por enlaces de coste ), el procedimiento requiere como

mucho N2 · T2 sumas y comparaciones.

Se va a describir un procedimiento iterativo para encontrar el camino más corto

desde la ciudad i hasta la N en el instante 0. Este procedimiento es el método

Dijkstra, el cual se ha demostrado que es tan eficiente como cuando resuelve el

problema estático, asegurando el encontrar el árbol de los caminos más cortos

en cada ejecución.

Al igual que ocurría en el método estático, al principio únicamente se encuentra

etiquetado permanentemente el nodo origen, io, con una distancia igual a 0 y el

resto de nodos de la red poseen una etiqueta de tentativa igual a . En el

segundo paso se examinan las etiquetas de tentativa de todos los nodos

adyacente a i y se compara entre la distancia de la etiqueta actual, fj, y la suma

de fi y dij (fi). Una vez actualizadas las etiquetas de todos los nodos adyacentes

Page 22: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -22-

al origen se elige el nodo con etiqueta de tentativa cuya distancia f sea la

mínima, por ejemplo k, y se declara permanente. (fk representa el mínimo

tiempo posible de viaje saliendo del nodo io en el instante 0) Ahora el nodo k es

usado para intentar reducir las etiquetas de tentativa de sus adyacentes,

usando la comparación de fk + dkj (fk) con la etiqueta actual y una vez realizado

se volverá a elegir el nodo con mínima distancia como permanente. El

algoritmo terminará cuando los N nodos de la red posean una etiqueta

permanente o se encuentre la mínima distancia a un nodo declarado como

destino.

Después de cómo máximo N2 comparaciones y N2 / 2 sumas, el nodo N será

etiquetada y, partiendo del nodo io en el instante 0, el árbol de caminos más

cortos quedará definido incluyendo el último nodo N.

Como esta variante del método Dijkstra guarda grandes semejanzas con el

primero, se puede concluir que el método necesitará N2 / 2 sumas y 2N2

comparaciones si el método distingue entre las dos clases de nodos

(temporales y permanentes).

A continuación se muestra el pseudocódigo de esta variante:

Dado G = (N, E) donde N es el conjunto de nodos y E el conjunto de arcos y s

un elemento del conjunto N:

Page 23: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -23-

Figura 6. Pseudocódigo Dijkstra con parámetros dinámicos dependientes del tiempo

Page 24: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -24-

6.2. El Algoritmo Dijkstra implementado en comparación con cubosdobles y aproximados.

Las implementaciones con cubos dobles y cubos aproximados son de la

implementación realizada en el proyecto pero con una variación sustancial

sobre las otras dos. En este caso se ha decidido implementar dos listas

enlazadas separadas, una que contiene los nodos con etiquetas de tentativa y

la segunda con los nodos con etiqueta permanente.

La primera de ellas se trata de una lista ordenada por el campo del tiempo, que

es en nuestro caso el que se va a desear optimizar. Durante la ejecución,

cuando cada nodo de la red es etiquetado temporalmente se inserta en la lista

de manera ordenada y cuando la distancia a cierto nodo que ya posee una

etiqueta cambia este simplemente se reordena en la lista. De esta forma al

acabar cada iteración no es necesario buscar en ella cuál es el nodo de mínimo

coste, sino que el primero de la lista de tentativas será el nodo solución en

cada una de las iteraciones. De esta manera se ahorra tiempo de búsqueda

con respecto a las implementaciones antes vistas.

En cada iteración el nodo con mínimo coste (el primero de la lista de tentativas)

se sacará de esta y se insertará en primer lugar en la lista de nodos

permanentes, de esta manera cuando se etiquete el nodo destino únicamente

se deberá recorrer una vez la lista de nodos permanentes para encontrar el

camino de nodos hasta el origen.

Esta implementación proporciona resultados óptimos de rendimiento en las

pruebas realizadas sobre la red de carreteras siendo uno de los motivos la

conectividad de la red utilizada. Es decir, en una red con alta conectividad en

cada iteración del algoritmo se etiquetan varios nodos con etiquetas de

tentativa pero sin embargo solo uno de ellos sale de la lista (el que va a ser

etiquetado permanentemente), por lo que la lista enlazada en pocas iteraciones

crecerá de manera notable y el coste de procesamiento de insertar los nodos

ordenadamente será mayor. Sin embargo, cuando la conectividad de la red es

baja, como ocurre en las redes reales de carreteras, la lista de nodos tentativa

apenas crece por lo que las operaciones de insertar y ordenar un nodo tienen

Page 25: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -25-

un coste de procesamiento menor que en la implementación por cubos, donde

es necesario hacer búsquedas iterativas en dos listas diferentes para insertar

un nodo.

VII DISCUSIÓN

La comparación del rendimiento del módulo de cálculo de rutas frente a otras

metodologías que resuelven el mismo problema se presentan a continuacion.

Tabla 2. Tabla que muestra la comparación de tiempos entre la implementación de Dijkstraconvencional y el Dijkstra implementado en el proyecto (Fuente Propia).

Según se muestra en la Tabla 2 las mejoras implementadas respecto al

algoritmo convencional suponen una mejora importantísima del tiempo de

procesamiento, con ellas el algoritmo se convierte en una aplicación con

utilidad para solventar problemas de manera inmediata. Sin embargo, si no se

hubieran aplicado estas mejoras el algoritmo seguiría produciendo soluciones

igualmente óptimas pero la validez de los resultados ya no sería la misma,

puesto que la lentitud en encontrar la solución a una ruta que se quiere llevar a

cabo de manera inmediata le resta eficiencia en el procesamiento de la

información.

Tabla 3. Tiempos de ejecución del módulo de rutas implementado(Fuente Propia)

Page 26: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -26-

En la Tabla 3 se pueden observar los tiempos de ejecución del algoritmo, para

el cálculo de rutas dependiendo de la distancia desde el nodo origen al nodo

destino. Para estimar los tiempos medios se han realizado 4 ejecuciones de

cada ruta en las cuales el nodo origen y el nodo destino son siempre los

mismos. Por otra parte los tiempos se encuentran expresados en milisegundos

de lo que se desprende que la aplicación posee buena calidad de resultados en

referencia al tiempo necesario para obtenerlos. Por otra parte, es importante

notar que el tiempo de procesamiento de un nodo siempre es el mismo, pero

los tiempos de ejecución aumentan directamente con la distancia porque el

número de nodos que deben ser examinados también lo hace.

A continuación se va a realizar un estudio de los tiempos medios de

procesamiento por nodo, para ello se han realizado pruebas en las que se

comprueba el número de nodos etiquetados permanentemente frente al tiempo

que el algoritmo ha necesitado para ello. Asimismo se han realizado pruebas

resolviendo el one-to-all SPP con el objetivo de que el algoritmo resolviera el

SPP a los 123705 nodos que posee la red para comprobar el tiempo de

ejecución. Los resultados obtenidos se muestran a continuación:

Tabla 4. Tiempos medios de procesamiento por nodo (Fuente Propia)

A la vista de los resultados el módulo de cálculo de rutas resuelve un nodo

cada 0,021069 ms, lo cual es un tiempo bastante bueno y más teniendo en

cuenta las condiciones dinámicas del algoritmo.

En la tabla 5 se observa la comparación del rendimiento con la implementación

de Dijkstra mediante cubos dobles hecha por [Vara03]. En la prueba realizada

Page 27: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -27-

se toman 100 nodos orígenes junto con 300 nodos destino y se hallan todas las

posibles rutas de cada punto origen a cada punto destino (en total 30000 rutas

halladas), en este caso se trabajó sobre un grafo de 3636 y 4574, mucho

menor que nuestro grafo de trabajo.

También es importante notar que la implementación con cubos dobles que

realizó no tenía en cuenta las condiciones dinámicas de la carretera, situación

que nuestro módulo si contempla.

Con los tiempos totales de ejecución de cada una de las 30000 rutas que

obtuvo halló el tiempo medio de procesamiento por nodo de cada una de las

rutas y con ello obtuvo una estimación media del tiempo de procesamiento por

nodo de la implementación de Dijkstra con cubos dobles. Los resultados son

los siguientes:

Tabla 5. Comparación de los tiempos de procesamiento por nodo entre la implementaciónestática de Dijkstra de [Vara03] y la implementación dinámica de Dijkstra optimizada (fuente

propia)

[Chab02] realizó una implementación del algoritmo A* teniendo en cuenta los

pesos variables en los arcos de la red de pruebas y realizó estudios de

rendimiento sobre ella, la cual constaba de 3000 nodos y 10000 arcos. La

conectividad de esta red difiere bastante con las redes reales de carreteras

donde la conectividad es baja, mientras que el grafo donde se han realizado las

pruebas del trabajo posee una relación arco/nodo de 1,0826 la conectividad de

la red de [Chab02] es de 3,33.

Tabla 6. Comparación del tiempo de procesamiento entre el algoritmo A* implementado por[Chab02] y el algoritmo Dijkstra implementado en el proyecto (Fuente Propia)

Page 28: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -28-

En la tabla 7 se refleja que el algoritmo implementado en el proyecto es

ligeramente más rápido que el implementado por [Chab02].

Tabla 7. Comparación entre los tiempos de procesamiento entre el algoritmo Dijkstraimplementado por [Chab02] y el implementado en este proyecto (Fuente propia)

Se realiza las pruebas sobre una red de 4698 enlaces y 3631 nodos, por lo que

la conectividad de la red es de 1,2938, dato que revela que el grafo es bastante

semejante al que conforman las redes reales de carreteras. Del mismo modo,

es importante notar que la máquina sobre la que se realizaron las pruebas es la

misma que la que se ha utilizado para probar la aplicación desarrollada en este

proyecto.

Para los algoritmos ACO el tiempo medio de ejecución se encuentra en

relación con el tamaño de la colonia de hormigas, de lo que se desprende que

la calidad de las soluciones obtenidas depende del tiempo de ejecución.

La colonia se encuentra en torno a 145 hormigas:

Tabla 8. Comparación el tiempo de ejecución en el entorno de costes dinámicos entre elalgoritmo ACO y el algoritmo Dijkstra implementado en el proyecto(Fuente propia).

Page 29: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -29-

7.1 Conclusiones

1. Con el algoritmo implementado se ha obtenido una mejora importante,

en el tiempo de procesamiento de la información, tal como se puede

observar en las tablas mostradas en el presente trabajo de investigación.

2. La aplicación del algoritmo implementado, en el optimizador hace que

podamos procesar una gran cantidad de información de tráfico en

tiempo real.

3. La utilización de Algoritmos dinámicos son los más recomendables para

realizar la optimización de rutas, puesto que la velocidad de las

variaciones de las condiciones no perjudica la performance de los

resultados que nos brinda el algoritmo implementado.

7.2 Recomendaciones

1. El diseño del optimizador de rutas debe de desarrollarse utilizando

algoritmos dinámicos, modulables.

2. Incrementar el número vías con sensores para mejorar el mapa de

tráfico de las ciudades.

Page 30: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -30-

VIII REFERENCIAS

[Affa08] Affabili Vicenten, P. Estimación de tiempos dinámicos de recorridoen vías de tráfico ininterrumpido con tramos sensorizados. Proyectofin de carrera. Escuela superior de ingenieros de telecomunicación.2008-UVA.

[Ahuj93] Ahuja R.K., Mehlorm K, Orlin J.B. Faster Algorithms for ShortestPath Problem. Journal of Association of Computing Machinery, 1993Pagina 213-223

[Chab02] Chabini Ismail, Lan Shan. Adaptations of the A* Algorithm for thecomputation of fastest paths in deterministic discrete-time dynamicnetworks. IEEE Transactions on Intelligent transportation systems2002, Vol. 3, Pagina 60-74

[Cher93] Cherkassky B.V, Goldberg, A.V., Radzik ,T. Shortest PathsAlgorithms: Theory and Experimental Evaluation. Technical report,Computer science Department, Stanford University 1993, Pagina93-1480.

[Cook66] Cooke K., Halsey L. The Shortest Route through a Network withTime-Dependent Internodal Transit Time, Journal of MathematicalAnalysis and Application, 1966, Vol. 14. Paginas 493-498.

[Dial69] Shortest Path Forest with Topological Ordering, Communications ofthe ACM, 1969 Vol 12, Paginas 632-633.

[Drey69] Dreyfus S. E. An appraisal of some shortest-path algorithms.Operations Research 1969, Vol. 17, Pagina 395-412.

[Fuji03] Fujita Yusuke, Nakamura, Yoshihiko, Shiller Zvi. Dual Dijkstrasearch for paths with different topologies. IEEE InternationalConference on Robotics and Automation 2003, Vol 3, Pages: 3359-3364

[Gall88] Gallo, G, Pallotino, S. Shortest Paths Algorithms. Annals ofoperations research, 1988 Vol. 13 Pagina 3-79.

[Gold93] Goldberg A.V, Radzik T. A Heuristic Improvement of TheBellman-Ford Algorithm. Applied mathematics letter,1993 Vol. 6,Pagina 3–6

[Noto00] Noto Masato, Sato Hiroaki. A method for the shortest path search byextended Dijkstra algorithm, IEEE International Conference onSystems Man and Cybernetics 2000, Vol. 3, Pagina 2316 - 2320

Page 31: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -31-

[Pozo07] Pozo Barberá, J. Algoritmos meta-heurísticos aplicados al guiado encarreteras en mal estado. Implementación del algoritmo Ant-Px enJava. Doctorado en Electrónica, Universidad de Alcalá. 2007

[Vara03] J.V. Vara Rodríguez. Desarrollo de algoritmos de optimizaciónaplicados a redes de transporte ITS-UPM 2003

[Zhan96] Zhan F,B, Noon C.E. Shortest Path Algorithms: An EvaluationUsing Real Road Networks. Institute for Operations Research andthe Management Sciences,Transportation Sciencie, 1996. Vol. 32,

Page 32: I ÍNDICE · 2017-04-25 · Dijkstra dinámico implementado por Shan Lan, y los algoritmos ACO. ... ruta entre un origen y un destino es un avance que puede darse gracias a los ...

Mg. Wilbert Chávez Irazábal -32-

IX APÉNDICE

En la gráfica de la figura 7, se aprecia como al ir aumentando la densidad del

tráfico, la velocidad de los vehículos que transitan por dicho tramo disminuye

según una función polinómica descrita en [Affa08] Hasta un cierto nivel en el

que se mantiene prácticamente constante (estado de saturación de la vía).

Figura 7. Relación entra la velocidad y el coste con los datos de un día de tráfico intenso

Del mismo modo se puede esperar una relación entre la densidad en las

carreteras y el factor de coste estimado por la aplicación de información de

tráfico. Este factor de coste afecta de modo multiplicativo al tiempo de recorrido

en el tramo donde se encuentra el sensor. En la figura 8, se muestra como el

coste aumenta con la densidad en las carreteras.

Figura 8. Relación entre el coste y la densidad