Está en la página 1de 19

Anlisis y diseo de algoritmos II

Trabajo Especial de Promocin


Un algoritmo de colonia de hormigas para encontrar el mejor recorrido
en colectivo en Tandil.

Alumnos:
Luciano Gimenez

Nicols Rago

Profesora a cargo:

Mg. Laura Felice


ndice
1. Introduccin .............................................................................................................................. 3
2. Descripcin de la tcnica Colonia de Hormigas ...................................................................... 4
2.1. Algoritmo bsico (Ant System) ......................................................................................... 5
2.2. Ant Colony System ........................................................................................................... 8
3. Hacia una implementacin ................................................................................................. 10
3.1 Diseo de la implementacin ......................................................................................... 11
4. Implementacin ...................................................................................................................... 14
4.1. Estructuras de datos ....................................................................................................... 14
4.2. Ajuste de parmetros...................................................................................................... 14
4.3. Complejidad temporal ..................................................................................................... 15
4.4. Complejidad espacial...................................................................................................... 16
5. Gua de uso de la aplicacin .................................................................................................. 17
6. Conclusiones .......................................................................................................................... 18
6.1. Posibles mejoras. ........................................................................................................... 18
7. Bibliografa.............................................................................................................................. 19

2
1. Introduccin
En el presente trabajo se pretende desarrollar una herramienta que ayude a los usuarios de
colectivo de Tandil a elegir los colectivos y recorridos que optimicen sus viajes.

El objetivo de la herramienta es, dado un origen y un destino, encontrar el mejor recorrido


en colectivo entre ambos.

Para esto se va a desarrollar un algoritmo basado en la tcnica colonia de hormigas, en su


versin Ant colony System (ACS), que, usando una representacin de las seis lneas de
colectivos de Tandil en un grafo dirigido, buscar el camino de costo mnimo entre los
vrtices dados como origen y como destino. El grafo tendr como vrtices algunas esquinas
representativas de los recorridos y como arcos las conexiones entre estas esquinas usando
como costo del arco una aproximacin de la cantidad de cuadras que hay entre las
esquinas representadas por los vrtices.

La tcnica de colonia de hormigas fue propuesta por Marco Dorigo en 1992 y se basa en el
comportamiento de las hormigas cuando estas estn buscando un camino entre la colonia y
una fuente de alimentos.

3
2. Descripcin de la tcnica Colonia de Hormigas
La tcnica colonia de hormigas es una metaheurstica desarrollada a partir de la
observacin de las hormigas en nuestro mundo natural. Los algoritmos metaheursticos son
algoritmos aproximados de optimizacin y bsqueda de propsito general. Son
procedimientos iterativos que guan una heurstica subordinada combinando de forma
inteligente distintos conceptos para explorar y explotar adecuadamente el espacio de
bsqueda.

Las hormigas reales son capaces de encontrar el camino ms corto desde una fuente de
alimento a su colonia, sin usar ayuda visual, usando informacin de una sustancia qumica
que depositan a medida que realizan su recorrido denominada feromona.

Las hormigas inicialmente vagan de manera aleatoria, y una vez encontrada comida
regresan a su colonia dejando un rastro de feromonas. Ante una bifurcacin, las hormigas
eligen el camino a tomar teniendo en cuenta la cantidad de feromonas en los posibles
caminos. Esta eleccin no es exacta sino probabilstica, de hecho se asume que cuando
ciertos individuos eligen un camino que no es el que tiene mayor cantidad de feromonas
promueven el descubrimiento de nuevas rutas.

Al pasar el tiempo el rastro de feromonas comienza a evaporarse, reducindose as su


fuerza de atraccin. Cuanto ms tiempo le tome a una hormiga viajar por el camino y
regresar de vuelta otra vez, ms tiempo tienen las feromonas para evaporarse. Un camino
corto, en comparacin, es transitado ms frecuentemente, y por lo tanto la densidad de
feromonas se hace ms grande en caminos cortos que en los largos. La evaporacin de
feromonas tambin tiene la ventaja de evitar convergencias a ptimos locales. Si no hubiera
evaporacin en absoluto, los caminos elegidos por la primera hormiga tenderan a ser
excesivamente atractivos para las siguientes hormigas. En este caso, el espacio de
bsqueda de soluciones sera limitado.

Por tanto, cuando una hormiga encuentra un buen camino entre la colonia y la fuente de
comida, hay ms posibilidades de que otras hormigas sigan este camino y con una
retroalimentacin positiva se conduce finalmente a todas las hormigas a un solo camino.

La idea general del algoritmo se basa en abstraer el comportamiento observado y


representarlo artificialmente. Por un lado, se representa el camino de las hormigas con un
grafo donde cada nodo representa una bifurcacin, y donde cada arista contiene dos datos:
informacin heurstica e informacin de los rastros de feromona. La informacin heurstica
es informacin a priori y ayuda durante la ejecucin del algoritmo influenciando a la colonia
para que converja ms rpidamente, mientras que la informacin de los rastros de feromona
es un valor que se va acumulando con el transcurso del tiempo dependiendo de la calidad
de los caminos que se encuentren.

Por otro lado, las hormigas son agentes computacionales independientes unos de otros y
construyen soluciones tomando decisiones en cada interseccin teniendo en cuenta la
informacin mencionada anteriormente. Cada hormiga representa una solucin completa
del problema. En la variante clsica cuando las hormigas finalizan su recorrido se evala la
calidad de las soluciones obtenidas y en base a estos resultados se deposita mayor o

4
menor cantidad de feromona. Se desarrollaron distintas variantes de esta metaheurstica y
sus diferencias principales radican en cmo se deposita la feromona, ya sea durante el
recorrido o al finalizarlo, en base a la cantidad de hormigas que se tomarn en cuenta para
realizar el depsito, o bien el tratamiento especial que se le dar a la feromona depositada
por la mejor hormiga.

2.1. Algoritmo bsico (Ant System)


En 1992, Marco Dorigo propone el primer algoritmo de colonia de hormigas de la literatura
para la resolucin del TSP (Travelling salesman problem o Problema del viajante), al que
nombra como ant system (AS).

El siguiente Algoritmo muestra el esqueleto general de un algoritmo AS:

procedure AS {

InicializarDatos
while(not CriterioFin) {
ConstruirSoluciones
BusquedaLocal
ActualizarFeromonas

}
}

ALGORITMO 1 - ESQUEMA AS

Inicializacin (InicializarDatos):

En esta fase se introducen los datos del problema y se inicializan los parmetros del
algoritmo, por lo que es dependiente del problema que se pretende resolver y tambin del
tipo de ACO (Optimizacin por colonia de hormigas) que se implemente.

En primer lugar, se leen los valores que definen la instancia del problema y se manipulan
los datos para obtener la informacin necesaria para la resolucin, como puede ser la
informacin heurstica.

En cuanto a los parmetros, se debe definir el nmero de hormigas(H) que formar la


colonia e inicializarla, teniendo en cuenta que incrementar su tamao supone aumentar la
exploracin del espacio de soluciones, pero tambin un coste de memoria y tiempo de
computacin.

Tambin se inicializa la informacin relacionada con las feromonas(ij), con un valor


inicial(0) homogneo para no decantar la bsqueda; el factor de evaporacin (), que tiene
la funcin de reducir la intensidad de los rastros de feromonas; y los parmetros que
ponderan la influencia de las feromonas() y de la informacin heurstica ().

5
Construccin de soluciones (ConstruirSoluciones)

Aqu cada hormiga artificial construye una solucin al problema(sh). La eleccin se lleva a
cabo mediante una regla proporcional aleatoria, donde a cada elemento posible se le asigna
una probabilidad que depende del rastro de feromonas acumuladas y de la informacin
heurstica asociada de acuerdo a la siguiente frmula:


[ ] [ ]


= { [ ] [ ]

FRMULA 1 - ASIGNACIN DE PROBABILIDAD AS



Donde es la probabilidad que la hormiga escoja el componente j en la decisin i,
representa la intensidad del rastro de feromona en la opcin j de la decisin i, es la
influencia de las feromonas, es el parmetro con la informacin heurstica del
componente j en la decisin i, la influencia de la informacin heurstica y es el conjunto
de componentes que se pueden aadir en la decisin i de la hormiga h.

El factor informacin heurstica permite guiar la bsqueda hacia aquellas zonas del espacio
de soluciones ms prometedoras segn las caractersticas del problema. Por otro lado, las
feromonas inducen la bsqueda hacia soluciones de calidad ya visitadas. Los parmetros
y son los que permiten ajustar el peso especfico de ambos factores en el clculo de la
probabilidad.

Bsqueda Local (BusquedaLocal)

Los algoritmos de optimizacin por colonia de hormigas tambin pueden incorporar un


proceso de bsqueda local al procedimiento para la mejora de las soluciones generadas.

La idea bsica de la bsqueda consiste en obtener mejores soluciones mediante la


exploracin iterativa del vecindario, es decir, mediante la aplicacin de pequeos cambios
sobre la solucin actual.

La efectividad de la bsqueda local depende, en la gran mayora de casos, de la calidad de


la solucin de partida. Por lo tanto, los algoritmos ACO son buenos candidatos a incorporar
una bsqueda local porque producen buenas soluciones iniciales que no tienen porqu ser
ptimas localmente.

La implementacin es dependiente del problema que se est resolviendo, ya que en


algunos casos la bsqueda es demasiado costosa, en trminos de tiempo de proceso, o
que, simplemente, no tiene capacidad de mejorar las soluciones.

6
Actualizacin de feromonas (ActualizarFeromonas)

Una vez que cada una de las hormigas ha construido una solucin y ha finalizado el
proceso de bsqueda local, se actualiza el rastro de feromonas a partir de las soluciones
obtenidas.

En primer lugar, se realiza la evaporacin de feromonas en todos los elementos del rastro,
simulando el proceso que ocurre en la naturaleza, de acuerdo a la siguiente frmula:

= (1 ). (, )

FRMULA 2 - EVAPORACIN DE FEROMONAS

Aunque para los insectos no es crucial a la hora de formar los rastros, s lo es cuando
tratamos con hormigas artificiales, porque favorece la atenuacin de los depsitos iniciales,
realizados normalmente por soluciones de baja calidad.

Tras esto, el siguiente paso es el depsito de feromonas. Cada hormiga artificial deposita
una cantidad de feromonas en cada uno de los elementos del rastro que forman la solucin,
aumentando as la intensidad del rastro. El depsito se realiza de acuerdo a la siguiente
frmula:



= + (, )
=1

FRMULA 3 - DEPSITO DE FEROMONAS



El aumento es funcin de la calidad, as que mejores soluciones depositan mayor
cantidad, de manera que en iteraciones posteriores la bsqueda tienda hacia las zonas
donde se han encontrado esas soluciones. Este aumento se calcula de acuerdo a la
siguiente frmula:

1 (, )

= {
0 (, )

FRMULA 4 - INCREMENTO DE FEROMONAS

Donde sh es la solucin construida por la hormiga h y Lh es el costo de dicha solucin.

7
Criterios de finalizacin (CriterioFin)
En el AS optaron nicamente por fijar un nmero de iteraciones de la colonia de hormigas,
aunque se puede aplicar cualquiera de los siguientes criterios de finalizacin:

un lmite de tiempo de proceso.


un nmero mximo de iteraciones del algoritmo.
un nmero mximo de iteraciones sin mejora de la solucin actual
un valor umbral a partir del cual se considera la solucin actual de suficiente calidad.

2.2. Ant Colony System


Este algoritmo fue propuesto por Dorigo y Gambardella en 1997. El cambio ms significativo
respecto del AS se produce en la regla de eleccin de la fase constructiva. Usa una regla
proporcional pseudo-aleatoria, que escoge la decisin segn la siguiente ecuacin:


{ [ ] } 0
={
> 0

FRMULA 5 - REGLA DE ELECCIN PSEUDO-ALEATORIA ACS

Donde es una variable uniformemente distribuida entre [0,1], 0 (001) es un parmetro


y J es la decisin seleccionada segn la regla de eleccin del AS (Frmula 1) con =1. Con
esta regla, se escoge, con probabilidad 0, la mejor opcin posible segn la informacin del
rastro y heurstica. Con probabilidad (10), se escoge segn una regla pseudo-aleatoria
como en AS. Ajustando 0, se puede centrar la bsqueda alrededor de la mejor solucin
encontrada aproximando su valor a 1, o dispersar la bsqueda, disminuyndolo.

En este tipo de ACO, slo evapora y deposita feromonas en el rastro la hormiga con la
mejor solucin encontrada hasta el momento de acuerdo a la siguiente frmula:


= (1 ) + (, )

FRMULA 6 - ACTUALIZACIN DE FEROMONA GLOBAL ACS

Con esta frmula se logra ponderar el nuevo valor del rastro entre el valor antiguo y la
cantidad de feromona depositada.

Adems de la actualizacin del rastro de feromonas global, se aplica una actualizacin local
cada vez que una hormiga hace una eleccin de acuerdo a la siguiente frmula:

= (1 ) + 0

FRMULA 7 - ACTUALIZACIN DE FEROMONA LOCAL ACS

8
Donde (0<<1) es un parmetro del algoritmo y 0 es el valor de inicializacin del rastro de
feromonas.

El efecto de la actualizacin local es disminuir la cantidad de feromonas sobre la eleccin,


de manera que se disminuye su probabilidad asociada, favoreciendo que el resto de
hormigas construyan soluciones diferentes y, por lo tanto, diversificadas.

ACS no tiene fase de exploracin, sino que se centra en explotar desde el principio la mejor
solucin encontrada a partir de pequeas variaciones de sta, estableciendo un valor
elevado de 0. Gracias a la actualizacin local de las feromonas, se favorece la exploracin
de las elecciones menos visitadas. La convergencia de este tipo de ACO es rpida, debido
a la poca exploracin que hace del espacio de soluciones.

9
3. Hacia una implementacin
Para comenzar a atacar el problema utilizando la tcnica, primero definimos el grafo que
vamos a utilizar. Creamos un grafo cuyos vrtices son nmeros enteros que representan
algunas esquinas representativas para los recorridos de los colectivos, y en los arcos
usamos como costo una aproximacin de la cantidad de cuadras entre los vrtices (ya que
los colectivos hacen un recorrido distinto de ida y de vuelta). Creamos un vrtice para cada
lnea de colectivo en las esquinas elegidas, y para saber rpidamente a que lnea pertenece
el vrtice utilizamos la siguiente distribucin de los nmeros utilizando aritmtica mdulo 7:

Los nmeros pertenecientes a la clase de congruencia del 0 (es decir todos aquellos
cuyo mdulo 7 da 0) pertenecen al recorrido de la Lnea 500 (colectivos amarillos).
Los nmeros pertenecientes a la clase de congruencia del 1 pertenecen al recorrido de
la Lnea 501 (colectivos rojos).
Los nmeros pertenecientes a la clase de congruencia del 2 pertenecen al recorrido de
la Lnea 502 (colectivos blancos).
Los nmeros pertenecientes a la clase de congruencia del 3 pertenecen al recorrido de
la Lnea 503 (colectivos azules).
Los nmeros pertenecientes a la clase de congruencia del 4 pertenecen al recorrido de
la Lnea 504 (colectivos verdes).
Los nmeros pertenecientes a la clase de congruencia del 5 pertenecen al recorrido de
la Lnea 505 (colectivos marrones).
Dejamos los nmeros pertenecientes a la clase de congruencia del 6 libres por si en
un futuro se desea representar esquinas donde no pasa ningn colectivo, para
modelar lugares a donde solo se puede acceder caminando.

El grafo final es el siguiente:

10
Para representar la posibilidad de cambiar de una lnea de colectivo a otra en el recorrido,
conectamos todos los nodos pertenecientes a la misma esquina entre s (un arco de ida y
uno de vuelta). El costo asignado a estos arcos se va a discutir en la seccin 4.1.

Cada hormiga va a comenzar en el nodo origen dado, y utilizando la regla de transicin


pseudoaleatoria va a construir un camino hasta el nodo de destino.

Debido a que cada nodo representa una lnea de colectivo en un lugar y el objetivo de la
herramienta es encontrar el mejor recorrido entre dos lugares (es responsabilidad de la
herramienta elegir la mejor lnea), creamos una abstraccin para el usuario del grafo
anteriormente descripto, donde se juntan todos los nodos de las diferentes lneas de una
esquina en un solo nodo. De esta abstraccin el usuario va a elegir el nodo de origen y
destino deseado. El grafo con los nodos generales es el siguiente:

Como heurstica para el algoritmo utilizamos una funcin inversa al costo asociado al grafo
(es decir 1/Distancia al prximo nodo).

3.1 Diseo de la implementacin


Como grafo utilizamos el implementado como trabajo prctico durante la cursada de la
ctedra.

El mismo utiliza como estructura de almacenamiento interno un mapa, que asocia cada
vrtice (int) con la lista de los arcos que salen de ste. Todas las funciones del grafo se ven
reflejadas en el siguiente diagrama de clases:

11
DIAGRAMA 1 - CLASE GRAFO

La estructura de nuestro algoritmo es la siguiente:

InicializarFeromonas
InicializarVisitados
for n veces
list<camino> Soluciones= ConstruirSoluciones(Grafo, Inicio, Final, Feromonas, Visitados)
camino MejorSolucionLocal=CalcularMejorSolucion(Soluciones)
if (MejorSolucionLocal<MejorSolucionGlobal)
MejorSolucionGlobal=MejorSolucionLocal
ActualizarFermonasGlobal(MejorSolucionGlobal)
end for

ALGORITMO 2 - ESTRUCTURA DEL ALGORITMO

12
La funcin ConstruirSoluciones tiene la siguiente estructura:

NodoActual=Inicio
int i=1
int Costo=0
list<int> NodosVisitados
list<camino> Soluciones
while (i<=Cantidad de Hormigas && HayCamino)
while (not LlegoAlfinal(NodoActual, Final) && HayCamino)
VerticeSiguiente= SeleccionarEstado(Grafo,NodoActual,Feromonas,Visitados)
if NoHayVerticeSiguiente
if (VerticeActual!=Inicio) ||
(VerticeActual==Inicio&&QuedanAdyacentesPorVisitar(Grafo,Inicio,Visitado)) //An se pueden
explorar otros caminos
Costo=Costo-UltimoCostoAadido
NodoActual=AnteUltimoNodoVisitado
NodosVisitados.eliminarUltimo()
else
NoHayCamino
else // Hay vrtice siguiente
Visitado[VerticeSiguiente]=true
Costo=Costo+Costo(NodoActual,VerticeSiguiente)
NodosVisitados.agregarUltimo(VerticeSiguiente)
NodoActual=VerticeSiguiente
end while
if (LlegoAlFinal(NodoActual,Final))
NodosVisitados.agregarUltimo(VerticeSiguiente)
ActualizarFeromonasLocal(Feromonas,NodosVisitados,Costo)
Soluciones.agregar(nuevoCamino(Costo,NodosVisitados))
end if
NodoActual=Inicio
NodosVisitados.vaciar()
Costo=0
Visitados[nodo]=false nodos del grafo
end while
return Soluciones

ALGORITMO 3 - ESTRUCTURA CONSTRUIRSOLUCIONES

La funcin SeleccionarEstado devuelve el prximo nodo siguiendo la regla de eleccin


pseudoaleatoria (Frmula 5). En caso de que no haya un posible nodo siguiente indica
NoHayVerticeSiguiente.

13
4. Implementacin
4.1. Estructuras de datos
Como ya se mencion, el grafo con los recorridos se almacena en un mapa de listas.

Para una mayor comodidad, definimos una estructura para almacenar los caminos, la cual
encapsula una lista de enteros (los nodos que forman el camino) junto a un entero (el costo del
camino).

Para almacenar las feromonas utilizamos un matriz dinmica de floats.

Para saber si un nodo ya fue visitado o no usamos un arreglo (tambin dinmico) de booleans.

Ya que los nmeros de los nodos no son consecutivos por el hecho de usar la aritmtica mdulo
7 para cada lnea y de que no hay la misma cantidad de nodos de cada lnea (por ejemplo los
nodos 72 y 63 no existen, pero existen nodos ms grandes que ellos), para no tener en la matriz
de feromonas y en el arreglo de visitados celdas vacas que pertenecen a nodos que no existen,
creamos la matriz y el arreglo con un tamao igual a la cantidad de nodos del grafo y para
direccionar los nodos en stas estructuras usamos un arreglo de indirecciones (arreglo de
enteros) que tiene como tamao el mximo nmero de nodo (ste arreglo s queda con espacios
vacos de los nodos que no existen), el cual guarda para cada nodo la direccin que usa en la
matriz de feromonas y el arreglo de visitados.

Para juntar los nodos de una misma esquina en un nodo general, usamos un array que guarda
en cada posicin la lista de nodos (lista de enteros) que pertenecen a ese nodo general.

4.2. Ajuste de parmetros.


Basndonos en el trabajo realizado por Dorigo y Gambardella (Dorigo & Gambardella, Ant
colony system: a cooperative learning approach to the traveling salesman problem, 1997) y
realizando varias ejecuciones para probar distintos valores, usamos los siguientes valores
empricos para el algoritmo:

Influencia de heurstica y feromonas ( y ): Fijamos un valor a (feromonas) de 1 y a


(heurstica) de 0,5, ya que observamos que la informacin heurstica (cantidad de
cuadras al prximo nodo o el costo de cambiar de colectivo, segn sea el caso) no
aporta demasiado y hace que las soluciones tiendan a tratar de mantener la misma lnea
de colectivo en los casos en que es mejor cambiar.
Disminucin de feromonas global y local ( y ): Al igual que en el trabajo referenciado,
usamos para ambos parmetros de disminucin de feromonas un valor de 0,1.
Probabilidad en regla de transicin (q0): Fijamos un valor de 0,8 para tener un valor
considerable (20%) de probabilidades de realizar una exploracin, lo cual puede llevar a
encontrar una buena solucin.
Costo cambio de lnea: Inicialmente definimos un nico costo de cambio de colectivo,
pero notamos que en los casos en que el costo de seguir en la misma lnea de colectivo
era muy bajo con respecto al costo de cambiar de lnea eran muy pocas las veces en
que se elega el cambio, lo que llevaba a no encontrar la mejor solucin. Por este motivo
definimos un costo de cambio de lnea para los nodos cuyo costo para seguir en la
misma lnea es menor a 10, y un costo para los otros nodos. Estos costos son de 30 y
45, respectivamente.

14
Cantidad de hormigas y condicin de corte: De igual forma que en el trabajo de Dorigo,
fijamos una cantidad de 10 hormigas en cada iteracin (cada hormiga genera un
camino), y la cantidad de iteraciones del algoritmo igual a la cantidad de nodos del grafo.

4.3. Complejidad temporal


La complejidad temporal del algoritmo viene dada por la cantidad de iteraciones que se realizan
(en nuestro caso es igual a la cantidad de nodos del grafo = V) y por lo que se hace en cada
iteracin. Antes de estas iteraciones se deben inicializar la matriz de feromonas (O(V2)) y los
arreglos de nodos visitados e indirecciones (O(V)), pero estas complejidades se ven superadas
por la de las iteraciones.

A continuacin, se brinda un anlisis de la complejidad de cada una de las partes de cada


iteracin:

ConstruirSoluciones: Para analizar la complejidad de esta funcin se debe comparar las


siguientes complejidades (se desprecia para el clculo de complejidad el hecho de que
en cada iteracin se buscan 10 soluciones secuencialmente, ya que es un nmero
pequeo de iteraciones):
o Para encontrar una solucin se llama a la funcin SeleccionarEstado hasta llegar
al nodo final. Cada solucin puede como mximo tener una cantidad de vrtices
igual al total de vrtices del grafo, pero ya que puede suceder que no se
encuentre un prximo estado a partir de un estado actual, y por esto se debe
volver a un estado anterior para continuar por otro camino, la complejidad de
esta parte no O(V) sino a O(V2).
La funcin SeleccionarEstado recorre la lista de vrtices adyacentes al
actual, pero ya que en nuestro grafo como mximo cada nodo tiene de
adyacente a las otras 5 lneas de colectivo y el prximo nodo de su misma
lnea, consideramos la complejidad de esta funcin como O(1).
o Actualizar feromona local: Luego de encontrar una solucin se actualizan las
feromonas utilizadas en la misma, por lo que se accede a la matriz de feromonas
una cantidad de veces igual a la cantidad de nodos que tiene la solucin (que
puede ser en el peor de los casos el tamao total del grafo). Por esto, la
complejidad de esta parte O(V).
Consecuentemente, la complejidad de esta funcin O(V2).
Clculo de mejor solucin: Ya que solo recorre la lista de 10 soluciones para elegir la
mejor tiene una complejidad O(1)
Actualizacin de feromonas global: Debido a que recorre la matriz de feromonas entera
para evaporar las feromonas tiene una complejidad O(V2)

Por lo tanto, la complejidad total del algoritmo queda determinada ya sea por la actualizacin de
feromonas global o por la construccin de las soluciones, y por las n iteraciones. En
consecuencia O(V3).

15
4.4. Complejidad espacial
Con respecto al espacio utilizado por el algoritmo, se necesita considerar lo siguiente (siendo n
la cantidad de nodos del grafo):

Un mapa que asocia un entero con una lista de enteros para almacenar el grafo.
Una matriz de floats de tamao n x n para almacenar las feromonas.
Un arreglo de booleans de tamao n para almacenar el estado de los nodos (visitado/no
visitado).
Un arreglo de int que tiene como tamao el mximo valor en el grafo para el arreglo de
indirecciones
Una matriz de booleans de tamao n x n que se utiliza en la actualizacin global de
feromonas para marcar las feromonas que fueron actualizadas por pertenecer a la mejor
solucin global (para que no vuelvan a ser actualizadas).

16
5. Gua de uso de la aplicacin
1. Considerando los puntos del mapa mostrado, se debe seleccionar el punto de bsqueda
de origen y destino.
2. Luego se debe hacer clic en el botn buscar.
3. La solucin obtenida aparecer en el cuadro de texto de la parte inferior derecha de la
aplicacin.

17
6. Conclusiones
Se logr implementar un algoritmo que, siguiendo la tcnica Colonia de Hormigas encuentra el
mejor camino entre dos puntos de un grafo con una complejidad temporal no tan elevada
(O(V3)). Utilizando este algoritmo se logr construir utilizando Qt una herramienta simple que
permite a los usuarios encontrar las mejores lneas y recorridos para el viaje en colectivo que
desean hacer.

Aunque se obtuvo una buena complejidad temporal, sta se ve superada por la del algoritmo de
Dijkstra: O(|V|2+|A|) = O(|V|2) sin utilizar cola de prioridad, O((|A|+|V|) log |V|) = O(|A| log |V|)
utilizando cola de prioridad (por ejemplo un montculo).

6.1. Posibles mejoras.


A la solucin propuesta se le podra integrar las siguientes mejoras:

Incluyendo en el grafo un nodo por cada esquina (todas las esquinas de los recorridos
de colectivos y nodos en las esquinas donde no hay colectivos disponibles que
representen la opcin de ir caminando, ponindole un costo asociado a esa opcin) se
podra obtener el recorrido completo que debera hacer un usuario para ir desde
cualquier esquina de la ciudad a cualquier otra, incluyendo el trayecto que debera hacer
caminando.
La heurstica usada se podra mejorar guardando para cada esquina sus coordenadas
en el mapa, y calculando cada vez que se elige el prximo nodo la distancia de Euclides
entre la posible eleccin y el nodo final, direccionando la bsqueda hacia los nodos que
tengan una menor distancia.

18
7. Bibliografa
Aparicio Guirao, D. (2012). Aplicacin de los algoritmos de hormigas para la resolucin de un
problema de equilibrado de lneas de montaje con robotizados. Escola Tcnica Superior
d'Enginyeria Industrial de Barcelona, Trabajo final de carrera Enginyeria Industrial.

Dorigo, M. (1992). Optimization, learning and natural algorithms. Ph. D. Thesis, Politecnico di
Milano, Italy.

Dorigo, M., & Gambardella, L. M. (1997). Ant colony system: a cooperative learning approach to
the traveling salesman problem. IEEE Transactions on evolutionary computation, 53-66.

Soifer, A. (2015). Algoritmos de Colonia de Hormigas para el Problema del Viajante de Comercio
por Familias y para el problema de Ruteo de Vehculos por Familias. Buenos Aires:
Tesis presentada para optar al ttulo de Licenciado en Ciencias de la Computacin,
Universidad de Buenos Aires - Facultad de Ciencias Exactas y Naturales.

Swarm Algorithms - Ant Colony System. (2012). En J. Brownlee, Clever Algorithms: Nature-
Inspired Programming Recipes.

19

También podría gustarte