4.3 Roteamento baseado em ACO
4.3.1 Roteamento EAS
4.3.1.4 Fun¸c˜ao de sele¸c˜ao
Durante a constru¸c˜ao do percurso, uma formiga seleciona uma sequˆencia de n´os da rede, desde a chave de origem at´e a de destino. A escolha por qual n´o ser´a o pr´oximo do percurso ´e feita pela fun¸c˜ao proximo eas(), cuja estrutura ´e apresentada pelo Algoritmo 8. As etapas principais da fun¸c˜ao de sele¸c˜ao s˜ao: definir a carga vista por um pacote; calcular a probabilidade de escolha das quatro dire¸c˜oes; selecionar uma dire¸c˜ao; retornar o pr´oximo n´o e o custo associado.
Dado o n´o atual na constru¸c˜ao do percurso, a fun¸c˜ao proximo eas() define inicialmente quais s˜ao os quatro n´os adjacentes - Norte, Sul, Leste e Oeste. A an´alise da matriz carga indica qual ser´a o atraso sofrido pelo n´o atual em cada uma das poss´ıveis op¸c˜oes de escolha. Trˆes condi¸c˜oes de atraso podem ser caracterizadas, listadas a seguir:
Condi¸c˜ao 1 - Atraso na origem. Um mesmo n´o ´e a origem de mais de um pacote, onde cada pacote possui uma origem diferente. Se estes pacotes selecionam o mesmo canal de sa´ıda da chave, ent˜ao o segundo pacote s´o iniciar´a sua transmiss˜ao ap´os todos os flits do primeiro pacote serem enviados.
4.3 Roteamento baseado em ACO 68
Algoritmo 8 Fun¸c˜ao de sele¸c˜ao proximo eas() Entrada Parˆametros da rede e do EAS
1: {C´alculo da carga vista no n´o atual}
2: Define os quatro n´os vizinhos;
3: Parap = 1 → 4 Fa¸ca {Os quatro n´os vizinhos}
4: Para g = 1 → Grupo Fa¸ca
5: Se g = percurso atual Ent˜ao
6: carga vista(1, g) ← F + tL; 7: carga vista(2, g) ← F + tL; 8: carga vista(3, g) ← F + tL; 9: carga vista(4, g) ← F + tL; 10: Sen˜ao 11: SeCondi¸c˜ao 1 Ent˜ao
12: carga vista(p, g) ← num phits(g); 13: Sen˜ao SeCondi¸c˜ao 2 Ent˜ao
14: carga vista(p, g) ← num phits(g) − (flits do pacote g enviados); 15: Sen˜ao SeCondi¸c˜ao 3 Ent˜ao
16: carga vista(p, g) ← 0; 17: Fim Se 18: Fim Se 19: Fim Para 20: Fim Para 21:
22: carga ef etiva ← (soma de todas as colunas de carga vista); 23:
24: {C´alculo das probabilidades dos n´os vizinhos} 25: Parai = 1 → 4 Fa¸ca
26: Se tabu(atual)=1 Ent˜ao
27: atratividade(i) ← 0; 28: Sen˜ao
29: N(i) ← carga ef etiva1 (i);
30: atratividade(i) ← τ(i)α· N(i)β;
31: Fim Se
32: Fim Para
33: Parai = 1 → 4 Fa¸ca
34: P rob(i) ← atratividade(1)+atratividade(2)+atratividade(3)+atratividade(4)atratividade(i) ;
35: Fim Para
36:
37: {Escolha do pr´oximo n´o} 38: proximo ← roleta(P rob); 39: Se P rob(proximo) = 0 Ent˜ao
40: proximo ← (0, 0); 41: Fim Se
42: F out ← carga efetiva(proximo); 43:
4.3 Roteamento baseado em ACO 69
Condi¸c˜ao 2 - Atraso em um n´o intermedi´ario. Um pacote A em uma chave seleciona como sa´ıda um canal que j´a se encontra em uso por outro pacote B. O canal s´o estar´a livre para uso por A ap´os B encerrar sua transmiss˜ao. O atraso sofrido por A ocasionado por B ´e definido pela quantidade total de flits de B menos a quantidade de flits j´a transmitidos pelo canal no instante que A chega a chave.
Condi¸c˜ao 3 - Sem atraso. O canal de sa´ıda selecionado n˜ao foi usado por nenhum outro pacote, ou foi usado por um pacote que j´a encerrou sua transmiss˜ao. Nesta situa¸c˜ao, o atraso ´e nulo.
Estas trˆes situa¸c˜oes podem ser descritas pela Figura 26. Em (a), o n´o D transmite trˆes pacotes distintos para os n´os A, B e C. O n´o B s´o receber´a seu pacote ap´os o envio para A; j´a o n´o dever´a aguardar a transmiss˜ao para os n´os A e B. Em (b), trˆes n´os A, B e C transmitem pacotes distintos para os n´os D, E e F . Contudo, todos os trˆes necessitam atravessar um mesmo canal de comunica¸c˜ao. Por ´ultimo, (c) mostra a situa¸c˜ao em que quatro pacotes atravessam uma mesma chave, mas nenhum sofre atraso, por estarem todos usando canais de comunica¸c˜ao diferentes.
B
D
A
C
(a) Conflito na chave de origem.
B
D
A
C
F
E
(b) Conflito em uma chave inter- medi´aria.
B
D
A
C
(c) Transmiss˜ao sem conflito.
Figura 26: Condi¸c˜oes de conflito poss´ıveis em uma chave.
Dada as condi¸c˜oes de atraso que o pacote observa no n´o atual, a fun¸c˜ao proximo eas() cria internamente a matriz carga vista, de tamanho 4 ×Grupo. Cada linha representa o atraso em uma dire¸c˜ao, enquanto que cada coluna indica a qual pacote este atraso est´a referenciado. O atraso total ser´a aquele ocasionado por todos os pacotes; desta forma, a matriz carga ef etiva ser´a a soma de todas as colunas de carga vista. Este ser´a um vetor de quatro elementos, cada um indicando o atraso associado a cada dire¸c˜ao. Como o valor do atraso ser´a utilizado na
4.3 Roteamento baseado em ACO 70
composi¸c˜ao de F , o valor atual do custo ´e somado a cada elemento de carga ef etiva, bem como o custo de um passo, tL.
De posse de carga ef etiva, ´e necess´ario em seguida calcular a probabilidade de escolha de cada dire¸c˜ao. Como mostrado na Se¸c˜ao 3.3.1.4, a probabilidade de sele¸c˜ao de uma dada dire¸c˜ao (dentro de um conjunto de dire¸c˜oes poss´ıveis) ´e fun¸c˜ao da visibilidade e do feromˆonio em cada dire¸c˜ao, e dos parˆametros α e β. Para o TSP, a visibilidade foi definida como o inverso da distˆancia entre duas cidades. No problema de roteamento, a visibilidade ηi ser´a o inverso
da carga na dire¸c˜ao i (Equa¸c˜ao 29). Assim, quanto maior ´e a carga em uma dire¸c˜ao, menos vantajosa esta ser´a para a formiga atual.
ηi=
1 carga ef etivai
(29)
Embora a visibilidade tenha influˆencia na sele¸c˜ao do n´o seguinte, a atratividade de uma dire¸c˜ao ´e fun¸c˜ao tamb´em do feromˆonio do n´o nesta mesma dire¸c˜ao. A vari´avel atratividade representa o quanto cada caminho ´e interessante de ser seguido. Seu valor ´e definido pela Equa¸c˜ao 30. O parˆametro α define o quanto o feromˆonio em uma dada dire¸c˜ao i ´e importante. J´a β representa a importˆancia da visibilidade nesta mesma dire¸c˜ao.
Atratividadei= τiα· η β
i (30)
Com o valor da atratividade de cada dire¸c˜ao, ´e poss´ıvel calcular a probabilidade de sele¸c˜ao de uma dire¸c˜ao espec´ıfica, conforme a Equa¸c˜ao 31.
P robi = Atratividadei 4 P j=1 Atratividadej (31)
A sele¸c˜ao de uma entre as quatro dire¸c˜oes poss´ıveis ´e feita usando o m´etodo da roleta
viciada. Este ´e um m´etodo amplamente usado em algoritmos gen´eticos na sele¸c˜ao de indiv´ıduos
com base em sua aptid˜ao (GOLDBERG, 1989). Seu funcionamento ´e inspirado no funcionamento da roleta de jogos de azar. Neste m´etodo, cada dire¸c˜ao ´e representada em uma roleta conforme sua probabilidade. A roleta ´e dividida em quatro regi˜oes, com a ´area de cada regi˜ao sendo proporcional `a probabilidade de escolha de uma dire¸c˜ao, como visto na Figura 27. Ao girar a roleta, a regi˜ao de maior ´area ter´a mais chances de ser escolhida. Contudo, as demais regi˜oes ainda podem eventualmente ser escolhidas.
A sele¸c˜ao por roleta ´e baseada na gera¸c˜ao de um n´umero aleat´orio. A probabilidade das quatro dire¸c˜oes ´e somada, obtendo-se o valor S. Um valor aleat´orio R ´e gerado no intervalo [0, S], seguindo uma distribui¸c˜ao uniforme. Os valores das probabilidades s˜ao somados indivi- dualmente at´e que se obtenha um valor maior que R. A dire¸c˜ao corrente ´e ent˜ao selecionada.
4.3 Roteamento baseado em ACO 71 1 2 4 3 P o n to d e se le çã o Sentido de rotação
(a) Quatro dire¸c˜oes com probabi- lidades de sele¸c˜ao diferentes.
1
2 4
3
(b) Com probabilidades iguais.
Figura 27: Sele¸c˜ao por roleta.