• Nenhum resultado encontrado

No AntNet, formigas tornam-se pacotes de controle que fluem através da rede de maneira semelhante aos pacotes de dados regulares. Formigas e pacotes de dados compartilham da mesma rede, mas são roteados de acordo com políticas diferentes, os pacotes de dados usam tabelas de roteamento diferentes das formigas para irem de suas fontes até seus destinos. Em cada nó da rede, uma tabela de roteamento é mantida além de uma tabela adicional contendo estatísticas sobre as características de tráfego na rede e uma tabela de feromônio. O AntNet usa dois conjuntos homogêneos de agentes móveis, chamados de formigas forward e formigas backward [20,22,75].

As formigas forward são criadas regularmente em todos os nós e envidas para todos os possíveis nós de destino. Elas compartilham as mesmas filas com os pacotes de dados, de modo que experimentam as mesmas dificuldades de tráfego. Cada formiga, individualmente, é associada a um par de nós origem-destino e seguem do nó de origem até o nó de destino ar- mazenando informações dos tempos associados a cada trecho da rede. Cada formiga backward faz exatamente o caminho inverso de uma formiga forward, atualizando as tabelas de feromô- nios em cada nó de seu percurso até o seu destino (origem da formiga forward). Dorigo & DiCaro propuseram duas diferentes versões do AntNet [77]. Em sua segunda versão, também chamada de AntNet-FA, as formigas backward não compartilham as mesmas filas que os paco-

tes de dados, ao invés disto, usam uma fila de alta prioridade na entrada dos nós, para serem mais rápidas que os outros pacotes, já que devem propagarem rapidamente as informações acumuladas pelas formigas forward para as tabelas de roteamento. O AntNet-FA mostra um desempenho bem melhor que o AntNet original, que foi praticamente abolido, de modo que doravante referir-se-á ao AntNet-FA simplesmente por AntNet.

Recrutamento – Em intervalos regulares, e concomitantemente com o tráfego de dados

de cada nó da rede, agentes móveis são assincronamente lançados (formigas forward ) e destinados a nós escolhidos aleatoriamente. A probabilidade psd de criar, no nó s, uma

formiga forward para o nó de destino d é mostrada na Eq.5.3.

psd =

fsd

PN

i=1fsi

, (5.3)

onde fij representa uma medida do fluxo de dados entre os nós i e j, e N é o número de

nós na rede.

Escolha de caminhos – Cada formiga se move nó-a-nó (hop-by-hop) no sentido de seu nó de

destino. Em cada nó intermediário, uma função estocástica de política ambiciosa é aplicada à escolha no próximo nó para onde seguir. A política faz uso de (i) informações geradas e mantidas localmente; (ii) informações de heurísticas dependentes do problema em questão, e; (iii) informações privativas à formiga. Em cada nó i, cada formiga seleciona o nó j para seguir com probabilidade Pijd, mostrada na Eq.5.4.

Pijd=

τijd+ αηij

1 + α(| Ni| −1)

, (5.4)

onde τijrepresenta a soma normalizada do feromônio depositado no nó i para cada destino

d e que tenha escolhido j como próximo nó; ηij representa uma função heurística que leva

em consideração o comprimento da fila i − j, como na Eq. 5.5; α pondera a importância da heurística na escolha dos caminhos, e; Ni representa o conjunto de vizinhos do nó i, e

| Ni| a cardinalidade deste conjunto.

ηij = 1 −

qij

P|Ni|

l=1qil

, (5.5)

Uso de memória – Enquanto as formigas se movem na rede, elas armazenam em sua memó-

ria as informações sobre as rotas que escolheram e os tempos observados para cada trecho de seu percurso Oiddesde o nó i até o destino d ser atingido.

Detecção e eliminação de laços (loops – Se uma formiga forward passa pelo mesmo nó duas

vezes antes de chegar ao seu destino, um laço é detectado, então a informação do laço é apagada da memória da formiga e ela deve seguir por um caminho distinto. Caso o laço dure mais que o tempo de vida de uma formiga, isto é, se o tempo despendido no laço é maior que metade da idade da formiga, a formiga é destruída.

Transição forward para backward – Quando uma formiga forward atinge o seu nó destino,

ocorre a sua conversão em uma formiga backward, que carrega consigo, em sua memória, as informações de tráfego acumuladas no percurso origem-destino. Esta formiga utilizará sua memória para fazer exatamente o percurso inverso ao feito anteriormente, agora será destino-origem.

Percurso de volta pela rota escolhida e modificação das tabelas de modelo de tráfego – Durante a viagem de volta ao seu nó de origem, enquanto refaz em sentido inverso o

caminho anteriormente traçado, a formiga backward é responsável por atualizar as tabelas de modelo de tráfego em cada um dos nós de seu percurso. A tabela de modelo de tráfego de um nó i carrega estatísticas do tráfego experimentado pelas formigas para cada par i − d. Logo, a média dos tempos de viagens observados entre i e d, computada no instante k (µid[k]), onde d representa os possíveis destinos, a variância destas medidas (σ2id[k]) e, o

tamanho da janela de tempo na qual as observações são consideradas, Wid.

µid[k] = µid[k − 1] + δ(Oid− µid), (5.6)

σid2[k] = σ2id[k − 1] + δ(Oid− µid)2− σ2), (5.7)

onde δ pondera a importância das amostras mais recentes.

Atualização das tabelas de feromônios e de roteamento de dados – As medidas de inten-

sidade do feromônio, presentes na tabela de feromônio de cada nó i, servem como pro- babilidades para o roteamento probabilístico1. O depósito e a evaporação do feromônio

1A tabela de roteamento ℜ para os pacotes de dados pode alternativamente ser obtida através do remapeamento da tabela

associado a cada par v − d, aumenta ou diminui, respectivamente, as chances do nó v servir como próximo nó para pacotes que chegam endereçados a d. Se uma formiga chega em um nó i proveniente de um nó vizinho v, uma formiga backward com destino d atualiza a concentração de feromônio Tivd[k], presente na tabela de feromônio do nó i conforme a

Eq.5.8.

Tivd[k] = Tivd[k − 1] + r(1 − Tivd[k − 1]), (5.8)

onde r é uma função da conformidade dos tempos observados nas viagens i − v, estimado a partir da tabela de modelo de tráfego. r é adimensional, r ∈ (0; 1].

Uma vez que as concentrações de feromônio no AntNet representam probabilidades para o roteamento das formigas, os valores de Tij[k], com j 6= v i.e. para outros vizinhos, devem

ser ajustados para satisfazerem a Eq. 5.9.

|Nk| X

j=1

Tij[k] = 1. (5.9)

Evaporação – Feromônios Tivd[k] associados ao destino d e a qualquer outro nó j da vizi-

nhança no instante k, j ∈ Ni, j 6= v, evaporam implicitamente na normalização realizada

de acordo com a Eq.5.10.

Tivd[k] = Tivd[k − 1] − r(Tivd) (5.10)

Eliminação das formigas – Depois de alcançado o nó de origem, a formiga backward é

eliminada.

Tempo de vida (TTL -Time-to-live) das formigas – Se uma formiga não alcança seu destino

em um tempo inferior ao assinalado como seu máximo tempo de vida, a formiga é eliminada [78]. O tempo de vida pode também ser associado a um número máximo de saltos (hops) que a formiga pode realizar.

5.4.1 O emprego do conhecimento global no AntNet

Ao contrário do que se poderia esperar, o AntNet e a maioria dos ANTRALs também são dependentes de informações globais que não estão disponíveis em situações práticas do mundo real. No AntNet proposto por Dorigo e Di Caro [17], os nós possuem uma tabela de

roteamento global, com entradas para todos possíveis destinos da rede, e também sincronismo global [79]. Estes aspectos não têm sido explicitados, e não são considerados no AntNet, uma vez que não são tão cruciais para o roteamento em redes IP cabeadas, onde relógios “pratica- mente” sincronizados são comuns [78]. O carregamento inicial da tabela de roteamento e o sincronismo dos nós podem ser vistos como exemplos de ações daemon do AntNet, de acordo com a definição destas ações.

Conforme discutido anteriormente, o uso de informações globais não é uma caracterís- tica desejável nos ANTRALs, sobretudo quando se está interessado no roteamento de redes dinâmicas. Diversas idéias para a construção de ANTRALs dependente apenas de informa- ções locais surgiram com os algoritmos projetados para as redes móveis ad hoc (Mobile Ad hoc Networks), ou MANETs [78], [80].

5.4.2 Pseudo-Código do AntNet

O pseudo-código genérico do AntNet é mostrado no Algoritmo3. A rotina prevê o pro- cessamento das formigas geradas no próprio nó ou recebidas dos nós adjacentes. Tal pro- cessamento envolve a escolha do próximo salto e atualização das tabelas de feromônio, caso as formigas não sejam destinadas ao nó onde estão sendo processadas, ou a eliminação, que no caso das formigas forward, envolvem a transferência de memória para uma nova formiga backward, que fará o trajeto inverso de acordo com a memória recebida.

Documentos relacionados