Capítulo II: AntNet y su aplicación al MMS
2.2 AntNet
2.2.2 Descripción del algoritmo AntNet
Los pasos que se describen a continuación detallan el comportamiento del algoritmo AntNet según aparece en (Caro and Dorigo, 1998):
1- A intervalos regulares Δt, de cada nodo s de la red, un agente móvil (hormiga forward) es
lanzado hacia un nodo destino d para descubrir un camino factible de bajo costo hacia ese nodo y para investigar el estado de carga de la red. Estos agentes comparten las mismas colas que los paquetes de datos que viajan por la red, por lo que experimentan la misma carga de tráfico. Los destinos son seleccionados localmente de acuerdo con el diseño del tráfico de datos generado por la carga de trabajo local. Si
f
sd es una medida (en bits o número de paquetes) del flujo de datos del nodo s al nodo destino d, entonces la probabilidad de crear un agente móvil de s a des:∑
==
N d sd sd df
f
p
1 ' ' (3)De esta forma, las hormigas adaptan su actividad de exploración a la distribución variable del tráfico de datos.
2- Mientras viajan hacia sus nodos destinos, los agentes mantienen en memoria los caminos seguidos y las condiciones de tráfico encontradas. El identificador de cada nodo visitadok y el tiempo transcurrido desde el lanzamiento del agente hasta su arribo al k-ésimo nodo se sitúan en la pila de memoria
S
s→d( )k
.3- En cada nodo k, cada agente viajero con destino hacia d selecciona el nodo n a moverse, escogiendo entre los vecinos que no ha visitado, o sobre todos los vecinos, en caso de que todos hayan sido visitados previamente. El vecino n es seleccionado con una probabilidad
'
nd
P
, calculada como la suma normalizada de la entrada probabilísticaP
nd de la tabla de enrutamiento, con un factor de corrección heurísticol
n tomando en cuenta el estado (lalongitud) del n-ésimo enlace de la cola del nodo actual k.
(
1)
1 ' − − + = k n nd nd N l P Pα
α
(4)La corrección heurística 0 ≤
l
n ≤ 1 es un valor normalizado proporcional a la longitudq
n (en bits esperando a ser enviados) de la cola del enlace que conecta el nodo k con su vecino n:∑
=−
=
k N n n n nq
q
l
1 ' '1
(5)El valor α pesa la importancia de la corrección heurística con respecto a los valores de probabilidad almacenados en la tabla de enrutamiento.
l
n refleja el estado instantáneo de lascolas de los nodos y asume que el proceso de consumo de la cola es casi estacionario o lentamente variable.
l
n brinda una medida cuantitativa asociada con el tiempo de espera en lacola.
Los valores de la tabla de enrutamiento son el resultado de un proceso continuo de aprendizaje y captura del estado actual y pasado de la red entera, como es vista por el nodo local. Corregir estos valores con el valor
l
n, permite que el sistema sea más reactivo, evitando al mismo tiempo todas las fluctuaciones de la red. Las decisiones de los agentes son tomadas sobre la base de la combinación de un proceso de aprendizaje a término largo y una predicción heurística instantánea.La corrección introducida es un mecanismo efectivo. Dependiendo de las características del problema, el mejor valor a asignar al peso
α
puede variar pero si 0.2≤α
≤0.5el rendimientono varía de forma considerable. Para valores menores el efecto de
l
n desaparece, mientrasque para valores mayores, la tabla de enrutamiento resultante oscila y en ambos casos el rendimiento se degrada.
4- Si se detecta un ciclo, esto es, si una hormiga es forzada a retornar a un nodo ya visitado, los nodos del ciclo son extraídos de la pila de nodos visitados de la hormiga y toda la memoria relacionada con este proceso es eliminada. Si el último ciclo es mayor que el tiempo de vida de la hormiga antes de entrar al ciclo (si el ciclo es mayor que la mitad de la edad de la hormiga) la hormiga se destruye. En este caso, el agente desperdició mucho tiempo probablemente debido a una secuencia equivocada de toma de decisiones y no a la congestión de los estados y no resulta productivo usar esta información en el proceso de actualización de las tablas de enrutamiento.
5- Cuando se alcanza el nodo destino d, el agente
F
s→d transfiere toda su memoria al agented s
B
→ (hormiga backward) y muere.6- El agente
B
s→d toma el mismo camino de su correspondienteF
s→d pero en dirección opuesta. En cada nodo k a lo largo del camino, lee su pilaS
s→d( )k
para saber el próximo nodo a saltar.Los agentes
B
s→d , (hormigas que recorren los caminos obtenidos en dirección opuesta) no comparten la misma cola de enlace que los paquetes de datos; utilizan colas de prioridad superior, pues su tarea es propagar rápidamente la información acumulada por los agentesd s
F
→ a las tablas de enrutamiento.7- Arribando al nodo k, desde un nodo vecino
f
, el agenteB
s→d actualiza las dos estructuraspara todas las entradas correspondientes con el nodo destino. Tomando algunas precauciones, la actualización está representada también en las entradas correspondientes a todo nodo '
k
que pertenece aS
s→d, tal que k≠den los subcaminos seguidos por la hormigad s