• Nenhum resultado encontrado

CONCLUSÕES E TRABALHOS FUTUROS

No documento 2010.1MonografiaJoaquimRanyere (páginas 60-65)

Foi apresentado neste trabalho o AG on FPGA, uma proposta de estrutura de avaliação dinâmica da função aptidão para um algoritmo genético simples executado em FPGA. O AG on FPGA conseguiu aliar a vantagem de um AG executado diretamente no hardware com a manutenção da flexibilidade de uma implementação em software, o qual permite receber como parâmetro a própria função a ser avaliada.

O AG on FPGA tem sua estrutura como um pipelining do AGC com modificações em algumas características e adição de outras que a diferenciam e aumentam o desempenho (ciclos de relógio) em comparação ao AG em pipelining proposto por (SCOTT, 1994). Os resultados dos testes realizados verificaram a corretude na funcionalidade do AG, bem como sugeriram que a estrutura desenvolvida proporciona o uso de um AG implementado em

hardware para uma boa variedade de funções de avaliação que um usuário queira otimizar.

O trabalho pode ser estendido em duas vertentes, tanto na ampliação das funcionalidades colocadas no hardware, como nas técnicas utilizadas para realizar toda a metodologia do AG. Ampliações no hardware do AG on FPGA podem ser feitas ao paralelizar alguns módulos do sistema de forma a aproveitar melhor a estrutura em pipelining, assim como diminuir alguns gargalos inerentes ao AG. Provavelmente aumentará também a complexidade e, com esta, os requisitos de controle do fluxo de informações do AG.

Outro desenvolvimento que pode ser feito é a construção de módulos aritméticos que efetuem operações em ponto flutuante, o que modifica a taxa de erro e a margem de valores que podem ser representados nos 32 bits que é trabalhado no AG on FPGA.

Outra expansão a ser feita é implementação das demais operações aritméticas possíveis para que também venham a ser utilizadas, basta que se crie módulos individuais para cada uma das operações. Há várias técnicas que podem ser utilizadas nesses módulos através de métodos numéricos específicos para cada cálculo, tais como o CORDIC para operações trigonométricas e o algoritmo de raiz quadrada sem restauração. Outra possibilidade é o uso de look-up tables para as funções trigonométricas.

A implementação de outras formas de realização dos operadores do AG, como cruzamento multi-point e inversão; de outros tipos de operadores de seleção; de estratégias de substituição da população, como o elitismo; podem ser feitas como extensão do AG utilizado, ampliando as possibilidades de melhoria de desempenho e de usabilidade. A seleção de qual técnica em cada operador genético utilizar seria passado como um parâmetro do AG on FPGA.

REFERÊNCIAS

APORNTEWAN, C.; CHONGSTITVATANA, P. A hardware implementation of the compact genetic algorithm. IEEE Congress on Evolutionary Computation. p.27-30, 2001.

BELLMAN, R. E. Dynamic Programming. New Jersey: Princeton University Press, 1957.

BERTIN, P.; RONCIN, D.; VUILLEMIN, J. Programmable active memories: A performance assessment. Technical report. Digital Equipment Corporation PParis Research Laboratory, Cedex France,1993.

BROWN S.; ROSE J. Architecture of FPGA and CPLDs: a tutorial. Toronto: University of Toronto, 1996.

CARVALHO, D. B. Projeto de Filtros Equalizadores de fase utilizando o erro de simetria

da resposta ao impulso via algoritmo genético modificado. 2002. Tese (Doutorado em

Engenharia Elétrica)–Universidade Federal de Santa Catarina. Florianópolis, 2002.

DANTAS, M. Computação distribuída de alto desempenho - redes, clusters e grids computacionais. 2 Ed. Rio de Janeiro: Axcel Books, 2005.

DESCHAMPS, J.P.; BIOUL, G.J.A.; SUTTER, G.D. Synthesis of Arithmetic Circuits:

FPGA, ASIC and Embedded Systems, Wiley-Interscience, New Jersey, 2006

DORIGO, M.; MARIA, G. Ant colony system: a cooperative learning approach to the traveling salesman problem. IEEE Trans. Evol. Comput. v. 1, p. 53–66, 1997.

GOLDBERG, D. E. Genetic Algorithms in Search, Optimization and Machine Learning. New York: AddisonWesley, 1989.

GRAHAM, P.; NELSON, B. Genetic algorithms in software and in hardware -- A performance analysis of workstation and custom computing machine implementations. In

Proceedings of IEEE Workshop on FP- GAs for Custom Computing Machines, J. Arnold

and K. Pocek, Eds., p. 216-225, 1996.

GRANT, V. The Evolutionary Process. New York: Columbia University Press, 1985.

GREFENSTETTE, J. J. Optimization of control parameters for genetic algorithm. IEEE

Transactions on Systems, Man, and Cybernetics, v. 16, n. 1, p. 122–128, 1986.

HAUPT, R. L.; HAUPT, S. E. Pratical genetic algorithms. 2. ed. New Jersey: John Wiley & Sons, Inc., 2004. 276p.

HOLLAND, J. H. Genetic Algorithms. Scientific American, v. 267, p. 66-72, 1992-a.

HOLLAND, J.H. Adaptation in natural and artificial systems. Boston: MIT Press Cambridge, 1992-b.

HORTENSIUS, P.D.; CARD, H.C.; MCLEOD, R.D. Parallel random number generation for VLSI using cellular automata. IEEE Transactions on Computers, v. 38, p. 1466-1473, 1989.

IKEDA, P. A. Introdução aos Algoritmos Genéticos. 2009. Disponível em:

<www.ime.usp.br/~gold/cursos/2009/mac5758/PatriciaGenetico.pdf>. Acesso em 29 ago.

2010.

KIRKPATRICK, S.; GELATT JR, C. D.; VECCHI M. P. Optimization by simulated annealing. Science 220:671–680, 1983.

NATIONAL INSTRUMENTS. Introduction to FPGA Technology: Top Five Benefits. 2007. Disponível em: <ftp://ftp.ni.com/pub/devzone/pdf/tut_6984.pdf>. Acesso em 28 ago. 2009.

NASH, S. G.; SOFER, A. Linear and Nonlinear Programming. New York: McGrawHill Companies Inc., 1996.

NOWOSTAWSKI, M.; POLI, R. Parallel genetic algorithm taxonomy. In: Third International Conference on Knowledgebased Intelligent Information Engineering Systems 1999 - Adelaide. Proceedings... p. 8892, 1999.

PARSOPOULOS, K. E.; VRAHATIS, M.N. Recent approaches to global optimization problems through particle swarm optimization. Natural Computing. Netherlands, Kluwer Academic, p. 235–306, 2002.

PITANGA, M. Computação em Cluster: o estado da arte da computação. 1. ed. Rio de Janeiro: Brasport, 2003.

REDUSINO, A. C. E. Aplicações de Algoritmos Genéticos. Disponível em: <www.fsma.edu.br/si/edicao3/aplicacoes_de_alg_geneticos.pdf>. Acesso em 29 jul. 2010

RIDLEY, M. Evolução. 3. ed. Porto Alegre: Artmed, 2006.

SCHAFFER, J.D.; ESHELMAN, L.J. On crossover as an evolutionary viable strategy. In: Fouth International Conference on Genetic Algorithm 1991 – San Francisco. Morgan Kaufmann Proceedings, p. 61-68, 1991.

SCOTT, S. D. HGA: A hardware based genetic algorithm. Master's thesis, University of Nebraska Lincoln, August 1994.

SCOTT, S. D.; SAMAL, A.; SETH, S. A synthesizable VHDL coding of a Genetic

Algorithm. Technical Report. University Nebraska, Licoln. 1997.

SCHWEFEL, H. Evolution and optimum seeking. New York: Wiley, 1995.

SEDRA, A S.; SMITH, K. C. Microeletrônica. 4. ed. Rio de Janeiro: Pearson Makron Books, 2005.

SERRA, M. et al. The analysis of one-dimensional linear cellular automata and their properties, IEEE Transactions on Computer-Aided Design of Integrated Circuits and

Systems, v. 9, p. 767-778, 1990.

TANENBAUM, A. S. Sistemas operacionais modernos. 2. ed. Rio de Janeiro: Prentice Hall do Brasil, 2005. 695p

TANENBAUM, A. S. Organização estruturada de computadores. 5. ed. São Paulo: Prentice Hall Brasil, 2006.

TANOMARU, J. Motivação, Fundamentos e Aplicações de Algoritmos Genéticos. In: II Congresso Brasileiro de Redes Neurais, 1995, Curitiba. Anais do II Congresso Brasileiro

de Redes Neurais, 1995.

THOMAS, D. E. MOORBY’S, P. R. The Verilog Hardware Description Language. 5. ed. Norwell: Kluwer Academic Publishers, 2002.

VHDL REFERENCE 2007. Disponível em: <http://vega.unitbv.ro/~nicula/asd/resources/ vhdl_ref.pdf> Acesso em 29 jul. 2010.

WAIN, R.; BUSH, I.; GUEST, M.; DEEGAN, M.; KOZIN, I.; KITCHEN, C.; An overview of FPGA and FPGA programming. 2006. Disponível em: <http://www.cse.clrc.ac.uk/disco/publications/FPGA_overview_2.0.pdf>. Acesso em 03 ago. 2009.

WIDROW, B.; LEHR, M.A. Noise Canceling and Channel Equalization in Handbook of

Brain Theory and Neural Networks, M.A. Arbib, 3. ed., pp.648-650, MIT Press, 1995.

WOLFRAM, S. Universality and complexity in cellular automata, Physica, v. 10D, p. 1- 35, 1984.

GLOSSÁRIO

Cruzamento - é um processo no qual a combinação em partes de cada um de dois cromossomos gera um novo descendente.

Lookup-tables – São estruturas de dados, geralmente uma matriz, utilizada como tabelas para

pesquisa, substituindo um cálculo em tempo de execução por uma simples operação de consulta.

Mutação – é a modificação aleatória ocasional (de baixa probabilidade) do valor de um alelo da cadeia que representa um indivíduo do Algoritmo Genético.

Pipelining – é uma operação num modo semelhante a uma linha de produção. Operações

globais são divididas em estágios e cada estágio realiza uma operação mais simples. Cada estágio recebe resultados do estágio anterior e operam sincronamente. É possível realizar várias operações simultaneamente, cada uma em um estágio em um dado momento, sendo que o ciclo de operação é ditado pelo estágio mais lento.

Pipelining de granularidade grossa - A granularidade é algo que mede o tamanho das partes

divididas de um processo maior. Ela é dita grossa quando as partes são grandes e de difícil paralelização. O pipelining de granularidade grossa é, portanto, o pipelining onde os estágios das operações são relativamente grandes quando relacionados à operação completa.

Seleção – é um processo no qual cada cadeia do cromossomo é copiada levando em conta os valores da função de aptidão.

Time-to-market – é o tempo de colocação de um produto no mercado, sem que afete o nível

de demanda e oferta do mesmo. É o tempo de projeto e concepção de um produto ou serviço até a disposição deste produto para o consumidor final.

APÊNDICE A - FUNCIONAMENTO DO ALGORITMO COM AS REGRAS 90 E 150 UTILIZADOS PELO GNR

Código dos estados do GNR que geram o número aleatório. estados de comunicação com demais módulos

...

active: Begin

//Etapa inicial da criação da semente.

Rn2[rngSize-1] = 0 ^ Rn[rngSize-1] ^ Rn[rngSize-2];

Rn2[rngSize-2] = Rn[rngSize-1] ^ Rn[rngSize-2] ^ Rn[rngSize-3]; //flag pra saber se 90 ou 150 graus

Evenodd = 0;

i = rngSize-3; //valor do controle inicial do loop StateCurrent = activeFor;

end

activeFor: begin if (i > 0) begin

Rn2[i] = Rn[i+1] ^ Rn[i-1]; // regra dos 150

if(Evenodd) begin Rn2[i] = Rn2[i] ^ Rn[i]; end

i = i-1;

// inverte a regra no proximo nó Evenodd = !Evenodd; end else begin // Se 90 graus Rn2[0] = Rn[1] ^ 0; // Se 150 graus if (Evenodd) begin Rn2[0] = Rn2[0] ^ Rn[0]; end

// Ao término, envia ao buffers e coloca o numero obtido como semente Rn = Rn2;

... end ...

estados de envio da semente e retorno

bit7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

‘0’ ‘0’ Operação OU Exclusivo Número Aleatório Semente

bit7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Numero gerado torna-se a semente para o novo número

No documento 2010.1MonografiaJoaquimRanyere (páginas 60-65)

Documentos relacionados