• Nenhum resultado encontrado

Algoritmo de agrupamento de formiga melhorado

Para melhorar a qualidade do grupo apresentado na Figura 20 existem três mudanças propostas por Vizine et al (2005), apresentadas na Seção 1.2.1 que são:

1. Decaimento da taxa de ;

2. Aumento no campo de visão do agente ao chegar a um grupo grande;

3. Programar uma matriz de feromônio, para estimular os agentes a pegar e deixar os itens em determinadas regiões.

Uma segunda versão do algoritmo foi criada usando as duas primeiras mudanças propostas com o objetivo de diminuir a fragmentação dos grupos.

Para implementar a primeira mudança é necessário acumular a quantidade de passos de formiga por iteração, e quando a mesma for maior que N, então decrementar o valor de .

O código usado para desenvolver a mudança é semelhante ao apresentado:

... double currentK1 = K1; while(currLoop <= nLoopsTotal) { if (qtdPassosFormiga > N) { currentK1 = currentK1 * 0.98; if (currentK1 < 0.001) {

currentK1 = 0.001; //valor minimo aceito }

qtdPassosFormiga = 0; }

...

qtdPassosFormiga = qtdPassosFormiga + numeroAnt; }

...

A segunda mudança se localiza onde é realizado o cálculo da equação ( ) e consiste em verificar o valor a ser retornado pela equação. A princípio o cálculo é realizado nas células mais próximas do agente, em uma área de 3x3 posições na arena, caso esse valor seja menor que , então o campo de visão do agente aumenta para 5x5 posições na arena e o cálculo de ( ) é realizado novamente. A área considerada está representada na Figura 21.

41

Figura 21: Campo de visão do agente, sendo a área verde, sempre analisada pela Equação ( ) e a

área vermelha, analisada somente quando o agente está diante de um grupo de dados

Quanto menor o valor da função ( ), mais próximo é o item que ele está analisando para pegar ou deixar com os demais de sua região. O valor usado para durante os testes foi de 0,8.

Com essas mudanças foram realizados dois novos testes para cada implementação do algoritmo. Os valores dos parâmetros usados foram propositalmente idênticos ao primeiro teste do algoritmo de agrupamento de formiga simples, para análise do tempo de execução com as mudanças e alteração nos grupos formados. Os parâmetros são:

 Tamanho da arena horizontal: 80 posições;  Tamanho da arena vertical: 60 posições;  Quantidade de iterações: 80.000;

 Quantidade de agentes: 250;  K1: 0,8;

 K2: 0,25.

Foram usados 850 itens na arena divididos em três grupos de 250, 280 e 320 itens. As Figuras 22 e 23 mostram como os dados estavam distribuídos depois da execução do segundo teste realizado usando as linguagens C/CUDA e C.

Figura 22: Distribuição dos dados após o processo de agrupamento realizado pelo algoritmo ACA

melhorado, usando a placa de vídeo

Figura 23: Distribuição dos dados após o processo de agrupamento realizado pelo algoritmo ACA melhorado, usando o processador

43

A Tabela 3 mostra o tempo de execução dos algoritmos em segundos.

Tabela 3: Tempo de execução do algoritmo ACA melhorado nas linguagens C e C/CUDA com um conjunto de dados pequeno

Número do teste Linguagem C Linguagem C/CUDA Tempo total (segundos) Tempo total (segundos)

1ª Execução 3,354 13,346

2ª Execução 3,515 13,325

Média 3,4345 13,335

Nessa etapa de testes, os resultados indicaram que o processador do computador foi em média 4x mais rápido que a placa de vídeo, mas as melhorias desenvolvidas no algoritmo se mostraram mais robustas sobre a placa de vídeo. Com uma quantidade pequena de agentes a diferença no tempo de execução médio da placa de vídeo foi de 0,268 segundos e do processador foi de 0,7675 segundos comparando a Tabela 3 com a Tabela 1.

Também foi realizado um novo teste, com um volume de dados maior que a primeira execução, com o mesmo valor dos parâmetros usados no segundo teste do algoritmo de agrupamento de formiga simples. Os parâmetros são:

 Tamanho da arena horizontal: 2.000 posições;  Tamanho da arena vertical: 1.000 posições;  Quantidade de iterações: 150.000;

 Quantidade de agentes: 30.000;  K1: 0,8;

 K2: 0,25.

A quantidade de itens em cada grupo foi de 80.000, 100.000 e 120.000, somando 300.000 itens na arena.

A Tabela 4 mostra o tempo de execução dos algoritmos em segundos.

Tabela 4: Tempo de execução do algoritmo ACA melhorado nas linguagens C e C/CUDA com um conjunto de dados grande

Número do teste Linguagem C Linguagem C/CUDA Tempo total (segundos) Tempo total (segundos)

1ª Execução 1046,346 258,633

2ª Execução 1010,685 262,164

Analisando a amostra de testes realizada e comparando com a Tabela 2, o tempo médio gasto na execução do algoritmo, tanto no processador como na placa de vídeo, houve um aumento de 100 segundos com as mudanças realizadas. No tempo total de execução, a placa de vídeo foi aproximadamente 4 vezes mais rápida quando comparada com o processador.

Outro teste realizado foi variando apenas o parâmetro de quantidade de agentes, que é o número de threads criadas em uma iteração no código em C/CUDA. Os valores dos parâmetros usados foram:

 Tamanho da arena horizontal: 800 posições;  Tamanho da arena vertical: 600 posições;  Quantidade de iterações: 50.000;

 K1: 0,8;  K2: 0,25.

A quantidade de itens na arena para cada grupo foi de 28.000, 34.000 e 38.000, totalizando 100.000 itens.

A Figura 24 exibe um gráfico com a escalabilidade do algoritmo ACA melhorado usando a solução baseada em um processador gráfico para sua execução.

Figura 24: Tempo de execução do algoritmo ACA melhorado usando a placa de vídeo e o processador em função do parâmetro de número de agentes

Enquanto uma solução tradicional apresenta um aumento de tempo linear na execução do algoritmo em decorrer da variável de número de agentes, a implementação usando a placa

5000 agentes 10000 agentes 15000 agentes 20000 agentes 25000 agentes 30000 agentes Placa de vídeo 53,864 62,894 69,969 71,192 72,864 73,248 Processador 59,567 93,008 120,856 150,384 177,925 205,561 0 50 100 150 200 250 Tem p o (e m se gu n d o s)

Execução do algoritmo usando o processador e a placa de

vídeo

45

de vídeo para processamento geral mostrou-se escalável considerando que o número de agentes dobrou de 15.000 para 30.000 e o tempo de execução praticamente não se alterou.

Verificamos dessa forma que o algoritmo ACA executado paralelamente, apresenta um tempo menor de execução quando o volume de dados é grande. Considerando que o ambiente de teste possuí recursos limitados e que um conjunto de dados real pode ser muitas vezes maior que o usado, o ganho de tempo com a melhora no algoritmo é significativo, sendo em alguns casos 5 vezes mais rápido que o algoritmo tradicional.

CONSIDERAÇÕES FINAIS

As empresas nos últimos anos passaram a coletar e processar um volume de dado muito maior que há uma década atrás. Nesse curto espaço de tempo as soluções de SGBD se tornaram mais complexas e o campo de pesquisa da mineração de dados atualmente pode fazer o uso dessas informações como aliadas. Outro fator importante para o trabalho é que a quantidade de núcleos de processamento tende somente a aumentar, já que é muito complexo e ineficiente fabricar um processador com apenas um núcleo e com uma freqüência alta a ponto de trazer uma melhora de desempenho considerável nas aplicações.

Esse trabalho segue uma tendência do mercado de construir aplicações que aproveitam melhor o hardware disponível fornecendo a ela a capacidade de divisão do processamento, para diminuir seu tempo de execução e apresentar os mesmos resultados que o modelo tradicional.

Diante dos estudos, levantamentos, análise e elaboração do projeto apresentado ao longo dos capítulos, consideramos que o objetivo proposto de diminuir o tempo de processamento do algoritmo de agrupamento de formiga usado no agrupamento de informações foi atingido. A melhora de desempenho foi real e notável transmitindo maior robustez e escalabilidade ao algoritmo ACA adotado no estudo.

Outro fator avaliado foi se essa melhora de desempenho afetaria a qualidade do grupo formado, uma vez que, com esse novo modelo de algoritmo, existem também fatores de concorrência na arena onde os itens e agentes estão. Nesse caso, as mudanças não alteraram as características e definição do grupo.

No algoritmo ACA, desenvolvido durante a realização do trabalho, os cinco comportamentos que um sistema de inteligência de enxames apresenta foram preservados, mantendo a identidade do algoritmo padrão.

Também é possível destacar que o algoritmo, por utilizar os conceitos de colônia e comportamento coletivo apresentou-se com poucas necessidades de adaptações ao modelo tradicional, uma vez que os agentes são elementos individuais e capacitados a realizar sua função, por mais que ela seja simples.

Para o desenvolvimento de trabalhos futuros pode-se propor a otimização de tempo de execução em outros tipos de algoritmos utilizando a linguagem CUDA com os conceitos de paralelismo de processamento e, além disso, também sugere-se o estudo da distribuição dos dados pela arena do algoritmo ACA e melhorias na implementação do mesmo com o objetivo de diminuir a sua fragmentação dos grupos apresentados pelo algoritmo.

47

REFERÊNCIAS BIBLIOGRÁFICAS

CASTRO, Leandro Nunes de. Fundamentals of Natural Computing: Basic Concepts, Algorithms, and App, Chapman & Hallo, 2006.

DENEUBOURG, J.-L. et al. The self-organizing exploratory pattern of the argentine ant.

Journal of Insect Behavior, v. 76, p. 159-168, 1990.

GONÇALVES, André Ricardo. Inteligência de Enxames. disponível em: <http://www.dca.fee.unicamp.br/~andreric/arquivos/pdfs/enxames.pdf> acesso em: 08/09/2011.

INSTITUTO BRASILEIRO DE OPINIÃO PÚBLICA E ESTATÍSTICA. Internet em

domicílios continua a crescer no Brasil. Disponível em <http://www.ibope.com.br/pt-

br/relacionamento/imprensa/releases/Paginas/Internet-em-domicilios-continua-a-crescer-no- Brasil.aspx> acesso em: 18/12/2012.

JAFAR, O.A. Mohamed; SIVAKUMAR, R. Ant-based Clustering Algorithms: A Brief Survey, v. 2, nº 5, p. 787-796, 2010.

LAURO, André Luís. Agrupamento de dados utilizando algoritmo de colônia de

formigas. 2008. 84f (Mestrado em Engenharia Civil) – Universidade federal do Rio de

Janeiro, Rio de Janeiro.

MÖGLICH, M. et al. Tandem Calling: A New Kind of Signal in Ant Communication. Science, v. 186, p 1046-1047, 1974.

OLIVEIRA, Tatyana Bitencourt Soares de. Clusterização de dados utilizando técnicas de

redes complexas e computação bioinspirada. 2008. 112f (Mestrado em Ciências da

Computação e Matemática Computacional) – Universidade de São Paulo, São Carlos.

SERAPIÃO, Adriane Beatriz de Souza. Fundamentos de otimização por inteligência de enxames: uma visão geral, v.20, p. 271-304, 2009.

VIZINE, André L. et al. Improving clustering ants: an adaptive ant clustering algorithm. Informatica, v. 29, p. 143-154, 2005.

Documentos relacionados