4. MÉTODO DO FORMIGUEIRO (ANT COLONY OPTIMIZATION ACO) 4.. Analogia Comportamental: a busca de alimentos em um migueiro 4.2. A Tradução Matemática: o algoritmo básico ( versão discreta) 4.3. A Programação do Algoritmo 4.4. Exemplo Ilustrativo: O Problema do Caixeiro Viaante (PCV) 4. MÉTODO DO FORMIGUEIRO (ANT COLONY OPTIMIZATION) 4.. Analogia Comportamental : a busca de alimento em um migueiro. Figura Foto mostrando o aspecto cooperativo do trabalho de migas ao transportar uma folha para o migueiro. O método do migueiro (ant colony optimization ACO) é o método de otimização que tenta imitar o comportamento coletivo de migas quando saem à busca de alimentos. As migas, em um migueiro, executam tarefas coletivas e tomam decisões que requerem um alto grau de coordenação tais como: a construção do migueiro, a alimentação da ninhada, o armazenamento e busca de alimento e assim por diante. No experimento esquematizado na Figura 2, as migas descobrem de ma coletiva qual o menor caminho que separa o migueiro de uma fonte de alimento. Nos experimentos conduzidos com a espécie Linepithaema humile, um alimento é separado do migueiro por uma trilha com um bom e pioneiro trabalho sobre o assunto é o artigo de : Bonabeau, E., Dorigo, M. & Theraulaz, G. Inspiration optimization from social insect behaviour em NATURE, vol 46, páginas 39 a 42 de 6 de ulho de 2
2 dois ramos. O ramo maior é r vezes maior que o menor. No final do experimento todas as migas escolhem o menor caminho se r suficientemente elevado (no experimento se adotou r=2 ). Isto ocorre devido ao fato das migas, quando em movimento, secretarem no solo uma certa quantidade de feromônio. Este feromônio, por ser uma substância biologicamente muito ativa, funciona como chamariz para outras migas. No experimento da Figura 2, as primeiras migas a retornarem ao migueiro com o alimento são aquelas que percorreram o caminho mais curto duas vezes (na ida e na volta). Assim, quando novas migas se encontrarem nas duas bifurcações do caminho darão preferência ao caminho mais curto por ter uma maior concentração de feromônio. Figura 2 Diagrama mostrando as trilhas de feromônio que permitem às migas o armazenamento de alimentos com maior eficiência. Duas migas deixam o migueiro em um mesmo instante (diagrama superior), cada uma delas tomando um caminho diferente e marcando-o com feromônio. A miga que percorreu o caminho mais curto retorna ao migueiro antes da outra (diagrama inferior). Assim, a trilha mais curta está, neste instante, marcada com o dobro de quantidade de feromônio do que o caminho mais longo. Este fato faz com que o caminho mais curto atraia uma maior quantidade de miga do que o mais longo. O mesmo experimento foi refeito, tornando disponível às migas o caminho mais curto apenas após um determinado tempo. Neste caso, as migas não escolheram o caminho mais curto devido ao fato do caminho mais longo á estar marcado com feromônio quando o mais curto é disponibilizado. Entretanto, tal comportamento não seria deseável em algoritmos de otimização, quando é importante que o caminho mais curto sea sempre o preferencialmente selecionado mesmo se disponibilizado após transcorrido um certo tempo. A simulação deste comportamento poderia ser efetuada através da consideração de uma taxa de evaporação do feromônio, traduzindo assim a maior dificuldade de manutenção do traço de feromônio em trilhas mais longas. Nos experimentos com a miga Linepithaema humile, apesar do decaimento do traço de feromônio estar presente, ocorre a uma taxa tão baixa (ou vida média tão elevada) que não foi possível verificar tal comportamento.
3 A primeira versão do algoritmo ACO foi desenvolvida por Dorigo & Gambardella 2 para a resolução do Problema do Caixeiro Viaante, que é um problema de otimização combinatorial de busca em um espaço de permutação. Este algoritmo é fundamentado na distribuição de m migas em n cidades e em permitir que cada uma destas migas percorra um caminho fechado passando apenas uma vez por cada uma destas n cidades. As duas características fundamentais deste algoritmo são: i-) Seleção da Próxima Cidade: é a ma com que cada uma das migas estando em uma determinada cidade (cidade i) escolhe a próxima cidade (cidade ), excluindo em sua seleção todas as cidades á visitadas. Esta seleção é feita de uma ma aleatória em ma de roleta (ver item 3-7-a do curso!), associando-se a cada trilha de ligação com a cidade i a seguinte função densidade de probalidade: pi i = ( τ ) β α di n pik k = se a cidade se a cidade á foi visitada não foi ainda visitada Onde: τ i : intensidade da trilha de feromônio na trilha que liga a cidade i à cidade 3 (uma grandeza adimensional que expressa o valor relativo entre estas intensidades); d i : distância entre a cidade i e a cidade ( também uma grandeza adimensional que expressa o valor relativo entre estas distâncias); α e β parâmetros positivos que expressam a importância relativa da intensidade de feromônio e do tamanho da trilha i, respectivamente; 4 Para saber se a cidade á foi visitada, cada miga mantém um registro das cidades 2 Dorigo, M. & Gambardella, L.M. Ant Colonies the Tavelling Salesman Problem -Biosystems, Vol. 43, pp 73-8 (997). 3 No início do procedimento adota-se o valor de τ i = τ (>) para i 4 Note que se adotando α = a busca da próxima cidade independe totalmente da marcação de feromônio na trilha. Por outro lado, adotando-se β= apenas a intensidade de marcação de feromônio orienta a seleção da próxima cidade. A recomendação na literatura é para adotar os valores de α = e β=5.
4 anteriormente visitadas até o momento (este registro, que é atualizado cada vez que uma nova cidade é visitada, se chama de lista tabu). Após o cálculo de p i para todos os valores de, assim se procede: J J = = Fatia =; Fatia p para J=, 2, L, ( n -) i e Fatia n =; sorteia-se a seguir um número aleatório λ (de distribuição unime), a próxima cidade a ser visitada é a cidade J, sendo J o valor do índice da Fatia tal que : Fatia J < λ Fatia J. Para ilustrar este procedimento considera-se o caso de 5 cidades com as seguintes coordenadas: Cidade 2 3 4 5 ( cor correspondente no diagrama) Localização (;5) (2;) (2;5) (2;25) (25;5) (coordenadas) O diagrama abaixo mostra a localização de cada uma das cidades: 2 5 5 Desta am a matriz que traduz as distâncias entre as cidades é: d = 25 2 22.36 25 25 5 25 5.8 2 5 5 22.36 25.8 25 5.8 5.8
e a matriz que traduz a intensidade da marcação de feromônio em cada trilha (valores hipotéticos) é:.6.35.9.39.6..33.2 τ =.35..82.3.9.33.82.65.39.2.3.65 Uma miga tendo como ponto de partida a primeira cidade ( cidade vermelha), apresentaria as seguintes densidades de probalidade de escolher a cidade (adotando-se : α = e β = 5): p =.3.577.82.2 resultando nas fatias: fatia =.3.67.789 O número λ sorteado deu o valor:.28, fazendo assim com que a cidade 3 ( cidade verde) sea a escolhida. A mesma miga partindo da cidade 3 apresentaria as seguintes densidades de probalidade de escolher a cidade : p =..76.923 resultando nas fatias: fatia =...77 O número λ sorteado deu o valor:.682, fazendo assim com que a cidade 5 ( cidade amarela) sea a escolhida. A mesma miga partindo da cidade 5 apresentaria as seguintes densidades de probalidade de escolher a cidade : p =.32.968 resultando nas fatias: fatia =.32.32 O número λ sorteado deu o valor:.722, fazendo assim com que a cidade 4 ( cidade larana) sea a escolhida. Como, neste ponto, restou apenas uma cidade não visitada pela miga e sendo a mesma a cidade 2 ( cidade azul), esta é a última cidade visitada antes da miga retornar a seu ponto de partida. Desta ma o roteiro percorrido pela miga é : 3 5 4 2, roteiro este esquematizado no diagrama a seguir: 5
6 IV III I II V ii-) Vaporização e Reço da Marcação de Feromônio. A intensidade de marcação de feromônio em todas as trilhas ligando a cidade i às cidades passa por dos processos transmadores: (a) enfraquecimento da intensidade da marcação por vaporização, este processo é traduzido matematicamente pela simples expressão: NEW i, OLD i, τ ρ τ, onde ρ é um parâmetro entre e (um) escolhido pelo usuário, e os sobrescrito OLD e NEW representam a intensidade da marcação antes e depois da vaporização, respectivamente; (b) reço da intensidade da marcação por migas que percorreram a trilha i, isto é feito da seguinte ma: τi, reço se a = Q se a trilha i Ltotal trilha i não faz parte do roteiro total percorridopela miga faz parte do roteiro total percorridopela miga sendo L total o tamanho total do roteiro percorrido pela miga (até retornar a seu ponto de partida!) e Q: um parâmetro positivo escolhido pelo usuário. Os novos valores das intensidades de marcação em cada trilha i será a composição destes dois fatores, resultando assim em: NEW i, OLD i, reço i, τ ρ τ + τ. No exemplo ilustrativo acima adotando ρ =.9 e Q=, tem-se: L total = Q 2+5+.8+25+25=86.8, assim: =. 2, resultando no reço: Ltotal τ =.2.2.2.2.2.2.2.2.2.2 resultando, finalmente, no novo valor de τ:
7 τ =.63.323.72.348.63.92.37.9.323.92.735.292.72.37.735.6.348.9.292.6 Há diferentes mas distintas de atualizar os valores dos componentes de τ ao longo do caminho percorrido por cada miga, algumas destas mas são apresentadas no próximo item em que se detalham aspectos implementacionais do algoritmo. voltar para MÉTODO DO FORMIGUEIRO 4.2. A Programação do Algoritmo (versão discreta) Formalmente o algoritmo de busca do melhor caminho no problema do caixeiro viaante, usando o método do migueiro (ant-colony) pode ser resumido pelas etapas: Etapa Inicial (Iteração zero): Entre com n ( número de cidades), m ( número de migas) e N ( número de iterações) ; especifique os valores dos parâmetros: α, β, ρ e Q (explicados no item anterior). Especifique as coordenadas de localização de cada uma das n cidades [ armazenadas em uma matriz C de n linhas e 2 colunas; sendo as coordenadas da cidade i são (C i,, C i, )]; calcule a matriz D, matriz n x n em que: D i, 2 ( C C ) + ( C C ) 2 = i,, i,, para i, =,..., n. Especifique os valores iniciais da matriz τ cuo termo geral τ i, = τ,i é a intensidade de marcação de feromônio na trilha que liga a cidade i à cidade, no início do processo iterativo se adota: τi, valor não nulo (pequeno!) escolhido pelo usuário. = τ para i =, sendo τ um para i Calcule o valor: n n L min = D i,. i= = Etapa Principal Para iter=, 2,... N (número de iterações especificado) execute o procedimento: (a)-para k =,...m (m : número total de migas)-etapa de Busca do Melhor Percurso: busque o melhor caminho fechado para a miga k (segundo o procedimento descrito separadamente abaixo!) e armazene os resultados na matriz V, sendo: V i,k o índice
8 designativo da cidade visitada pela miga k em seu i ésimo trecho de seu percurso fechado (note que i varia de a n!) e escolhido pela miga k. V n +,k = Ltotal que é o tamanho total do percurso fechado (b)-faça : τ ρ τ (vaporização do feromônio depositado em todas as trilhas possíveis).etapa da Vaporização da Marcação de Feromônio. (c)-para k =,...m (m : número total de migas). Etapa de Reço da Marcação de Feromônio: Faça o reço da intensidade da marcação de feromônio em todas as trilhas percorridas pela Q miga k segundo o procedimento: para i =, 2,..n- faça : τ I,J τi,j + onde I = Ltotal V i,k e J = V i+,k ; além de I = V,k e J = V n,k (este último par de valores de I e J para assegurar o fechamentodo percurso!). (d)-para k =,...m (m : número total de migas). Etapa de Seleção do Melhor Percurso: Se L total < Lmin faça então : Etapa (e) Lmin L total e para i de a n faça cityi V i, k ; vá para Se Ltotal Lmin mantenha o valor de L min vá para Etapa (e). (e)-armazenamento dos Melhores Percursos em Cada Iteração. Armazene na matriz R i,iter = city i para i de a n e Melhor iter = L min. Etapa de Saída: Escreva os valores da matriz R e do vetor Melhor. FIM
Este procedimento foi utilizado no desenvolvimento do programa em MATHCAD, mostrado abaixo: 9 ACO_Global( N, m) := i.. n.. n τ i, τ d distancias trip R n n i = = iter.. N d i, k.. m v k Rota τ, d τ ρ τ Q v nk, I v ik, ( ) k.. m i.. n 2 I J v i+, k τ I, J τ I, J + τ J, I τ I, J v k, J v n, k τ I, J τ I, J + τ J, I τ I, J if v < nk, trip trip v nk,.. n city i.. n R i, city iter i R n, trip iter v k, A construção do melhor percurso para cada miga k é feita de acordo com o procedimento: (a) Inicialização do Percurso: Apague todos os registros existentes no Carnê em que se anota as cidades percorridas no percurso.
Sorteie aleatoriamente a cidade inicial do percurso e anote o índice designativo a esta cidade no topo do Carnê, isto é Tabu rnd(n); (b) Etapa Principal: para s de (um) a n, faça: (b-) Para i = a n, igual e p i ; para cada valor de i faça (b--) para de a s-, se i igual a Tabu faça igual e vá para (b--2); se i não igual a Tabu e = s- e vá para (b--2); se i não igual a Tabu e < s- vá para (b--) com o valor seguinte de ( se <s-). ( ) α τi,tabu s (b--2) se igual igual a faça: p i ( di,tabu ) β e volte para (b-)com o valor seguinte de i (se i <n) ; se igual não igual a volte para (b-)com o valor seguinte de i (se i <n) ; (b-2) Escolha da Próxima Cidade. s Faça : n p S p e a seguir p i i para i =, 2, L, n, a seguir faça : fatia ; S = i fatia n e fatiai p para i =, 2, L, n -; sorteie a seguir um número real = positivo λ entre e [λ rnd()], a próxima cidade é a cidade i * em que ocorre : fatia < λ < fatia ; escreva o valor desta cidade no carnê, isto é: Tabu s i *. i i (b-3) Escolha da Última Cidade a ser Visitada. Verifique em seu carnê qual a cidade que está faltando entre todas que devem ser visitadas, sendo esta i última deve se registrar: Tabu n i última (c) Etapa Final: cálculo do tamanho total do percurso. n Calcule: ( k) Ltotal DTabu,Tabu + DTabu,Tabu n i i+ i= Este procedimento foi utilizado no desenvolvimento do programa em MATHCAD, mostrado abaixo:
( ) := lista floor Rota τ, d v lista N n lista n rnd ( n) s.. n 2 i.. N igual p i if k.. s i lista < 6 k p igual break p τ i ( i, lista s ) α β d if igual i, lista s N i = fatia n p i p i.. N fatia i+ fatia + p i i λ δ λ rnd ( ) i.. N a λ fatia i+ crit a δ δ a if crit < v lista s s v sort ( v) lista N N lista i s break if i.. N i v > 6 i lista i N break lista d n lista, lista n lista ( ) + n 2 k = d lista k, lista k+ ( ) Há outras mas de atualizar (reçar e evaporar!) a intensidade da marcação de feromônio nas trilhas, uma delas é apresentada a seguir: Atualização Local e Global: neste procedimento ocorre uma Atualização Local ao término de
cada caminho fechado que uma miga k percorra. A intensidade de feromônio em toda a trilha i é então atualizada segundo: 2 τi, ( ρlocal ) ( ρlocal ) τ i, τi, + ρlocal se o trecho i não faz parte do caminho fechado τ i, se o trecho i faz partedo caminho fechado onde há duas mas de calcular τ 5 i, : (a) Modelo de densidade de miga (ant-density): i, τ = Q (constante); local (b) Modelo de quantidade de miga (ant-quantity): τi, = Qlocal di, Após todas as migas terem completado suas rotas, há também uma atualização da intensidade da marcação de feromônio com vaporização geral e o reço apenas na melhor rota (Atualização Global) segundo: τi, ( ρ ) global ( ρglobal ) τ τi, se o trecho i não faz parte da melhor rota Qglobal i, + ρglobal se o trecho i faz parte da melhor rota Lmin Onde os parâmetros: Q local, Q global, ρ local e ρ global são especificados pelo usuário. voltar para MÉTODO DO FORMIGUEIRO 5 Dorigo, M., Maniezzo, V. & Colorno, ª _ Ant System: Optimization by a Colony of Cooperating Agents IEEE Transactions on Systems, Man, and Cybernetics, Vol. 26, N o, pp. 29-4 (996)
3 4.3. Exemplo Ilustrativo O Problema do Caixeiro Viaante (PCV) Na ma clássica apresentada acima o ACO foi testado para o seguinte PCV, 6 cidades unimemente distribuídas segundo o diagrama: 4 4 C i, 2 2 4 C i, Sendo as coordenadas de cada uma destas cidades armazenadas na matriz: C := Os seguintes valores dos parâmetros do algoritmo am adotados: n := 6 m:= 8 N:= 2 α := β := 5 ρ :=.5 τ := 6 Q:= 2 2 2 2 3 3 3 3 Verificando-se visualmente a convergência ao percurso ótimo após iterações sendo este percurso o seguinte: 9 3 4 5 6 2 7 8 4 3 2 5 6, o que resulta em um comprimento total de L ótimo = 6 Esquematizado na figura abaixo: 2 3 2 3 2 3 2 3 4
4 4 4 C i, C ( m, k ) 2 2 4 ( ) C i,, C m, k 4 Na figura abaixo, é mostrada a variação do melhor comprimento total versus o índice designativo da iteração: R n, 8 R n, 6 6 5 5 5 2 K 2 Uma animação deste procedimento é mostrada no programa AVI : PCV_ACO_Global. O mesmo problema é resolvido para uma distribuição aleatória das 6 cidades (os parâmetros do algoritmo considerados são os mesmos do exemplo anterior), Esta distribuição é mostrada abaixo: 4 4 2 C i, Cuas coordenadas são: 2 4 C i, 4
5 cidade 2 3 4 5 6 7 8 9 2 3 4 5 6 x 22.48 33.7 32.8 26.84 6.39 8.5 4.26 2.97 22.32.43 28.66.63 4.66 28.85. 7.23 24.25 y 7.59 7.73 6.39 2.99 7.8.7 2.92 3.43.6 23.2 24.43 7.63 29.78 8.2 33.42.23 Verificando-se visualmente a convergência ao percurso ótimo após 8 iterações sendo este percurso o seguinte: 9 6 4 2 3 4 5 8 3 5 6 2 7 9, o que resulta em um comprimento total de L ótimo = 28. 384 Esquematizado na figura abaixo: 4 4 C i, C ( m, k ) 2 2 4 ( ) C i,, C m, k 4 Na figura abaixo, é mostrada a variação do melhor comprimento total versus o índice designativo da iteração: R n, 35 R n, 28.384 3 28 5 5 2 K 2 Uma animação deste procedimento é mostrada (com distribuição das cidades diferente da apresentada acima!) no programa AVI : PCV_Random_ACO_Global.
6 Em relação à esta aula os seguintes arquivos estão também disponíveis para Download: Nome do Arquivo Especificação Aula6.pdf Texto em pdf da aula virtual sobre o algoritmo do migueiro. Lista6.pdf Enunciados da Lista de Exercícios em pdf relativos à aula virtual sobre o algoritmo do migueiro ACO_Lenzi.exe Programa executável codificado em DELPHI do algoritmo do migueiro aplicado ao problema do caixeiro viaante (PCV) - Manual_ ACO_Lenzi.pdf Manual do Usuário em pdf do programa: ACO_Lenzi.exe PCV_ACO_Global.avi Animação do PCV com as cidades dispostas geometricamente. PCV_Random_ACO_Global.avi ACO_PCV_primeira versão.mcd ACO_PCV_primeira versão random.mcd ACO_PCV_segunda versão.mcd ACO_PCV_segunda versão random.mcd Animação do PCV com as cidades dispostas aleatoriamente. Programa em MATHCAD do PCV com apenas atualização global do feromônio 6 cidades dispostas geometricamente. Programa em MATHCAD do PCV com apenas atualização global do feromônio 6 cidades dispostas aleatoriamente. Programa em MATHCAD do PCV com atualizações local e global do feromônio 6 cidades dispostas geometricamente. Programa em MATHCAD do PCV com atualizações local e global do feromônio 6 cidades dispostas aleatoriamente. voltar para MÉTODO DO FORMIGUEIRO