i UNIVERSIDADE FEDERAL DE SANTA CATARINA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Marco Antonio Silveira de Souza Biblioteca de Aplicação Genérica de Algoritmos Genéticos Paralelos Distribuídos Dissertação submetida à Universidade Federal de Santa Catarina como parte dos requisitos para a obtenção do grau de Mestre em Ciência da Computação Prof. Dr. José Mazzucco Júnior. Florianópolis, Julho de 2003. ii Biblioteca de Aplicação Genérica de Algoritmos Genéticos Paralelos Distribuídos Marco Antonio Silveira de Souza Esta dissertação foi julgada adequada para a obtenção do título de Mestre em Ciência da Computação Área de Concentração Sistemas de Computação e aprovada em sua forma final pelo Programa de Pós-Graduação em Ciência da Computação. ____________________________ Raul S. Wazlawick, Dr. Coordenador do CPGCC Banca Examinadora ______________________________ José Mazzucco Júnior, Dr. Orientador ______________________________ Jovelino Falqueto, Dr. Membro ______________________________ Luiz Alfredo Soares Garcindo, Dr. Membro iii "A coisa mais nobre que podemos experimentar é o mistério. Ele é a emoção fundamental, paralela ao berço da verdadeira ciência." (Albert Einsten). "A matemática é bonita!" (João Batista Souza). iv Ao professor José Mazzucco Júnior, pela sua orientação e companheirismo. Ao Corpo Docente da Pós-Graduação em Ciência da Computação da Universidade Federal de Santa Catarina, que contribuiu para o meu aperfeiçoamento pessoal e profissional. À Unisul por seu apoio. Em especial: Aos meus pais e irmãos, pelos incentivos e empolgação. À minha esposa e minhas filhas, Juliana e Cristine que pacientemente suportaram minhas ausências. Por fim agradeço a Deus as oportunidades e por ter condições e capacidade de aproveitá-las. v Sumário 1 Introdução................................................................................................................1 2 Fundamentos de Computação Paralela e Distribuída............................................3 2.1 Considerações Iniciais.........................................................................................3 2.2 Arquiteturas de Máquinas Paralelas.....................................................................4 2.2.1 Classificação de Flynn..................................................................................5 2.2.2 Classificação baseada no acesso a memória..................................................6 2.2.3 Multicomputadores.......................................................................................6 2.3 Sistemas Computacionais Distribuídos..............................................................10 2.4 Considerações Finais.........................................................................................11 3 MPI.........................................................................................................................14 3.1 Considerações Iniciais.......................................................................................14 3.2 Origem..............................................................................................................14 3.3 Objetivos...........................................................................................................15 3.4 Características...................................................................................................15 3.5 Conceitos Básicos sobre MPI............................................................................16 3.5.1 Grupos, Contextos e Comunicadores..........................................................17 3.5.1.1 Gupos de processos..............................................................................17 3.5.1.2 Contextos de Comunicação..................................................................17 3.5.1.3 Comunicadores....................................................................................18 3.5.2 Topologia de Processos..............................................................................18 3.5.3 Comunicação Ponto-a-Ponto.......................................................................19 3.5.3.1 Comunicação Bloqueante e Não Bloqueante........................................19 3.5.3.2 Modos de Comunicação.......................................................................20 3.5.4 Mensagem..................................................................................................21 3.5.5 Tipo de dados MPI.....................................................................................22 3.4.5.1 Tipo de dados Básico...........................................................................22 3.4.5.2 Tipos Definidos Pelo Usuário..............................................................23 3.6 MPICH..............................................................................................................23 3.7 Considerações finais..........................................................................................25 4 Algoritmos Genéticos.............................................................................................26 4.1 Considerações Iniciais.......................................................................................26 4.2 Algoritmos Genéticos........................................................................................26 4.3 História.............................................................................................................27 4.4 Algoritmo Genético Tradicional........................................................................27 4.5 Avaliação de Aptidão........................................................................................29 4.6 Representação Cromossômica...........................................................................30 4.6.1 Esquemas...................................................................................................31 4.7 Operadores Genéticos........................................................................................32 4.7.1 Seleção.......................................................................................................32 4.7.1.1 Roleta Giradora (Roulette Wheel)........................................................33 4.7.1.2 Seleção por Classificação.....................................................................33 4.7.1.3 Seleção por Estado Fixo (Steady-State)................................................34 4.7.1.4 Seleção por Elitismo ou Torneio..........................................................34 4.7.2 Crossover...................................................................................................35 4.7.3 Mutação......................................................................................................36 4.8 Algoritmos Genéticos Paralelos.........................................................................36 vi 4.8.1 Paralelização Global...................................................................................38 4.8.2 Paralelização com Granularidade Grossa....................................................39 4.8.3 Paralelização com Granularidade Fina........................................................40 4.9 Considerações finais..........................................................................................42 5 Implementação e resultados ..................................................................................43 5.1 Considerações Iniciais.......................................................................................43 5.2 Modelo do Algoritmo Genético Paralelo............................................................43 5.3 Implementação da biblioteca.............................................................................44 5.3.1 Representação Interna.................................................................................45 5.3.2 Representação Binária................................................................................48 5.3.3 Interface com o usuário...............................................................................49 5.4 Exemplo de Aplicação.......................................................................................52 5.5 Considerações finais..........................................................................................57 6 Conclusão...............................................................................................................59 6.1 Trabalhos futuros..............................................................................................59 Referências Bibliográficas........................................................................................60 Anexos.......................................................................................................................65 Anexo A – Exemplo que otimiza a função x^2 descrita por Goldberg......................65 Anexo B – Exemplo de Maximização .....................................................................66 vii Lista de Figuras Figura 2.1 – Multicomputador.......................................................................................7 Figura 2.2 – Multicomputador baseado em barramento.................................................9 Figura 2.3 – Dispositivo crossbar................................................................................10 Figura 3.1 – Estrutura do MPI sobre o sistema Linux..................................................25 Figura 4.1 – Fluxograma de um AG............................................................................28 Figura 4.2 – Distribuição de aptidões de diversos cromossomos..................................33 Figura 4.3 – Situação antes da classificação................................................................34 Figura 4.4 – Situação após a classificação...................................................................34 Figura 4.5 – Operação de crossover sobre um ponto....................................................35 Figura 4.6 – Esquema de um AGP Global...................................................................38 Figura 4.7 – AG Distribuído........................................................................................39 Figura 4.8 – AG de Granularidade Fina.......................................................................41 Figura 4.9 – Um modelo Híbrido.................................................................................41 Figura 5.1 – Funcionamento interno da biblioteca.......................................................44 Figura 5.2 – Gráfico da equação (3)............................................................................52 viii Lista de Tabelas Tabela 3.1 – Rotinas de Comunicação Ponto a Ponto do MPI......................................21 Tabela 3.2 – Tipos de dados básicos em C ..................................................................23 Tabela 4.1 – Correspondência entre os termos natural e artificial................................27 Tabela 4.2 – Possíveis valores de string para um esquema simples..............................32 Tabela 5.1 – Valores padrão do AG.............................................................................55 Tabela 5.2 – Conjunto de funções de retorno...............................................................55 Tabela 5.3 – Funções de alteração do ambiente...........................................................56 Tabela 5.4 – Melhor fitness de cada implementação....................................................58 ix Resumo Neste trabalho apresentaremos o desenvolvimento de uma biblioteca de funções de Algoritmos Genéticos (AG) utilizando o paradigma da passagem de mensagens. Isto torna viável a sua utilização em sistemas distribuídos, mais especificamente em cluster de computadores. Algoritmos Genéticos são reconhecidos por sua eficiência na área de otimização e tem aplicações nas mais diversas áreas do conhecimento. O protótipo apresentado define uma interface de acesso ao usuário onde ele pode implementar suas aplicações e depois executá-las sobre um ambiente paralelo de forma fácil e transparente. Palavras-chave: Algoritmos Genéticos, computação paralela e distribuída, otimização. x Abstract In this work we will present the development of a library of functions of genetic algorithms (AG) using the paradigm of messages transmition. This makes possible its use in distributed systems, more specifically in cluster of computers. Genetic algorithms are recognized by efficiency in the its optimization area and it has applications in several areas of knowledge. The prototype presented defines an access interface to the user where he can implement its applications and then execute them on a parallel environment in an easy and transparent way. Key-words: Genetic algorithms, parallel computing, optimization.
Description: