Universidade de Brasília
|
|
|
- Raul Aleixo Nunes
- 10 Há anos
- Visualizações:
Transcrição
1 Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciência da Computação Mecanismo de Comunicação Assíncrona para Alinhamento Múltiplo de Sequências com Algoritmo Genético Multi-Ilha Luíza da Silva Jaques Monografia apresentada como requisito parcial para conclusão do Bacharelado em Ciência da Computação Orientadora Prof. a Dr. a Alba Cristina M. A. De Melo Brasília 2011
2 Universidade de Brasília UnB Instituto de Ciências Exatas Departamento de Ciência da Computação Bacharelado em Ciência da Computação Coordenador: Prof. Dr. Marcus Vinicius Lamar Banca examinadora composta por: Prof. a Dr. a Alba Cristina M. A. De Melo (Orientadora) CIC/UnB Prof. a Dr. a Aletéia Patrícia Favacho de Araújo CIC/UnB Prof. Dr. Gerson Henrique Pfitscher ENE/UnB CIP Catalogação Internacional na Publicação Jaques, Luíza da Silva. Mecanismo de Comunicação Assíncrona para Alinhamento Múltiplo de Sequências com Algoritmo Genético Multi-Ilha / Luíza da Silva Jaques. Brasília : UnB, p. : il. ; 29,5 cm. Monografia (Graduação) Universidade de Brasília, Brasília, computação em cluster, 2. alinhamento múltiplo de sequências, 3. algoritmo genético CDU Endereço: Universidade de Brasília Campus Universitário Darcy Ribeiro Asa Norte CEP Brasília DF Brasil
3 Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciência da Computação Mecanismo de Comunicação Assíncrona para Alinhamento Múltiplo de Sequências com Algoritmo Genético Multi-Ilha Luíza da Silva Jaques Monografia apresentada como requisito parcial para conclusão do Bacharelado em Ciência da Computação Prof. a Dr. a Alba Cristina M. A. De Melo (Orientadora) CIC/UnB Prof. a Dr. a Aletéia Patrícia Favacho de Araújo CIC/UnB Prof. Dr. Gerson Henrique Pfitscher ENE/UnB Prof. Dr. Marcus Vinicius Lamar Coordenador do Bacharelado em Ciência da Computação Brasília, 28 de Janeiro de 2011
4 Dedicatória Dedico este trabalho à minha família, em especial aos meus pais, que com carinho e dedicação sempre me deram o apoio necessário em todas as minhas atividades. i
5 Agradecimentos Agradeço à minha orientadora, professora Alba, pela atenção dedicada à minha orientação neste trabalho. Agradeço aos meus amigos, pelo apoio e companheirismo sempre demonstrados. Agradeço à minha família por sempre estar ao meu lado. ii
6 Resumo O potencial de aprendizagem sobre estrutura e função das móleculas possibilitado pelo Alinhamento Múltiplo de Sequências (MSA) é enorme, sendo por isso um dos problemas mais importantes da Bioinformática. O MSA é um problema computacionalmente complexo, no entanto. Por esse motivo, diversas heurísticas têm sido propostas a fim de encontrar soluções aceitáveis com um custo limitado. Dentre os algoritmos utilizados, destacam-se os Algoritmos Genéticos (AGs). Os AGs são meta-heurísticas que combinam escolhas aleatórias e conhecimentos obtidos por resultados prévios para se guiarem no espaço de soluções em problemas de otimização e busca. AGs, no entanto, têm um alto custo computacional. Uma maneira de reduzir esse custo é a utilização de AGs na forma paralela. Em [24], é proposto um modelo de AG paralelo com a utilização da técnica chamada Injeção de Ilhas para o problema MSA. Em comparação a outros modelos, como AGs sequencial e tradicional de Ilha, o modelo apresentado obteve ganhos significativos na qualidade dos alinhamentos. Os ganhos de tempos de execução, no entanto, não foram considerados ideais. O presente trabalho de graduação visa a continuar o projeto descrito em [24], propondo, implementando e avaliando um mecanismo de comunicação assíncrona para a estratégia proposta, com o objetivo de reduzir o tempo de execução do procedimento. Testes demonstraram que a estratégia modificada proposta obteve ganhos consideráveis de tempo em comparação à estratégia original e a outras abordagens, como AGs sequencial e tradicional de Ilha. Palavras-chave: computação em cluster, alinhamento múltiplo de sequências, algoritmo genético iii
7 Abstract The potential for learning about structure and function of molecules by Multiple Sequence Alignment (MSA) is huge, thus it is one of the most important problems of Bioinformatics. MSA is a computationally complex problem though. Therefore, several heuristics have been proposed to find acceptables solutions with a limited cost. Among the used algorithms, Genetic Algorithms (GA) stand out. GAs are metaheuristics which combine random choices and knowledge obtained by prior results to guide themselves in the solution space of optimization and search problems. GAs have a high computational cost though. One way to reduce this cost is the use of GAs in parallel. In [24], a parallel GA model using the technique called Island Injection is proposed for the MSA problem. Compared to other models, such as sequential and island traditional GAs, the presented model achieved significant gains in alignment quality. However, the gains in run time were not considered ideal. This work aims to continue the project described in [24], proposing, implementing and evaluating an asynchronous communication mechanism for the strategy, aiming to reduce the procedure s run time. Tests demonstrated that the proposed modified strategy achieved considerable gains in run time compared to the original strategy and other approaches such as sequential and island traditional GAs. Keywords: cluster computing, multiple sequence alignment, genetic algorithm iv
8 Sumário 1 Introdução 1 2 Algoritmos Genéticos Visão Geral Representação dos Indivíduos Escolha dos parâmetros População Inicial Avaliação e Seleção Geração dos Filhos Operador de Recombinação (Crossover) Operador de Mutação Critério de Parada Algoritmos Genéticos Paralelos Alinhamento Múltiplo de Sequências Visão Geral Tipos de Alinhamentos Alinhamento Dois-a-Dois Algoritmo Needleman-Wunsch Algoritmo Smith-Waterman Alinhamento Múltiplo Função de Avaliação Sum-of-Pairs (SP) Weighted Sum-of-Pairs (WSP) Classes de Algoritmos para MSA Métodos Progressivos Métodos Iterativos Alinhamento Múltiplo de Sequências com Algoritmo Genético Multi- Ilha Visão Geral Algoritmo Genético Multi-ilha Estratégia Paralela Multi-Ilha para o problema de MSA Super Ilha de Alta Resolução Super Ilha de Baixa Resolução Algoritmo Genético Base Análise dos Resultados Obtidos v
9 5 Mecanismo de Comunicação para Alinhamento Múltiplo com Algoritmo Genético Multi-Ilha Deficiências do Mecanismo de Comunicação Original Gargalo nos Intervalos de Migração dos AGBs Gargalo nos Intervalos de Migração Externa Arquitetura da Comunicação Proposta Combatendo o Gargalo nos Intervalos de Migração dos AGBs Combatendo o Gargalo nos Intervalos de Migração Externa Resultados Experimentais Ambiente de Implementação e Testes Comparativo entre as diferentes estratégias após as modificações Comparativo entre as implementações original e modificada Discussão Conclusão e Trabalhos Futuros 56 Referências 58 vi
10 Lista de Figuras 2.1 Fluxograma de um Algoritmo Genético Típico Exemplo de crossover de um ponto: (a) Dois indivíduos são selecionados. (b) Um ponto de corte é escolhido. (c) São recombinadas as subdivisões, gerando dois novos indivíduos Modelo de população única mestre/escravo [15] Modelo de população única refinada [15] Modelo de múltiplas populações não-refinadas [15] Modelos Híbridos de AG. (a) Organização externa em Modelo de Ilha e interna em Modelo de População Única Refinada (b) Organização externa em Modelo de Ilha e interna em Modelo mestre/escravo [15] Comparação das sequências AGCTAGGA e GACTAGGC utilizando o Método Matricial Escalar. A diagonal revela a subsequência CTAGG, presente nas duas cadeias. Retirado de [26] Modelo Sum-of-pairs utilizado na avaliação de um MSA. Três colunas de um alinhamento múltiplo entre cinco sequências são representadas. O método SP de cálculo é representado no diagrama por um grafo que ilustra todas as combinações entre as bases. Linhas pontilhadas representam caracteres iguais e linhas sólidas representam caracteres diferentes. O cálculo utiliza a matriz de substituição BLOSUM62. Adaptado de [26] Alinhamento progressivo. Sequências são representadas nas folhas da árvore evolutiva por ordem de similaridade, sendo alinhadas primeiramente as sequências mais próximas. Esse processo gera os galhos internos, que representam um ancestral, até que se chegue no nó raiz, que representa o MSA completo. Adaptado de [26] Etapas para produção do alinhamento múltiplo de sequências utilizando o método T-Coffee. Adaptado de [30] Etapas do algoritmo SAGA. (a) População inicial (G 0 ). (b) Ciclo realizado em uma geração (G n ). O método continua até que uma condição de parada seja alcançada. As caixas P1 n até Pm n representam os pais na geração n e C1 n+1 até Cm n+1 representam os seus descendentes. As caixas em negrito correspondem aos alinhamentos selecionados para permanecerem inalterados de uma geração para a seguinte. OP representa um operador escolhido aleatoriamente. Adaptado de [29] Estratégia de paralelização descrita em [33] Estratégia de paralelização descrita em [24] vii
11 4.3 Algoritmo do Módulo de Alta Resolução retirado de [24] Algoritmo do Módulo de Baixa Resolução retirado de [24] Algoritmo Genético Base retirado de [24] Estratégias utilizando Algoritmos Genéticos descritas em [24] Gargalos no mecanismo de comunicação original Combate aos gargalos no mecanismo de comunicação original Speedups relativos das implementações original e modificada da estratégia i2, na base 1ac5, com uma população total de 180 indivíduos, para 5000 gerações Speedups relativos das implementações original e modificada da estratégia i2, na base ttkrsyedq, com uma população total de 180 indivíduos, para 5000 gerações Speedups relativos das implementações original e modificada da estratégia i2, na base virul fac, com uma população total de 180 indivíduos, para 5000 gerações viii
12 Lista de Tabelas 3.1 Matriz DP resultante do cálculo do algoritmo Needleman-Wunsch no alinhamento das sequências AGTC e AGTAC, com g = -2, s(x i, y j ) = 1 para x i = y j e s(x i, y j ) = 1 para x i y j. O caminho para obtenção do alinhamento ótimo global obtido está em destaque Matriz DP resultante do cálculo do algoritmo Smith-Waterman no alinhamento das sequências AGTC e AGTAC, com g = -2, s(x i, y j ) = 1 para x i = y j e s(x i, y j ) = 1 para x i y j. O caminho para obtenção do alinhamento ótimo local obtido está em destaque Disposição dos Processos das estratégias i1, i2, p9, p3 e seq nos testes realizados em [24] Sequências utilizadas para a realização dos testes descritos em [24] Resultados dos testes realizados na base real 1ac5 no Cluster-IE para 5000 gerações descritos em [24] Resultados dos testes realizados com as diferentes abordagens após as modificações. Foi testada a base 1ac5, com uma população total de 180 indivíduos, para 5000 gerações, utilizando OpenMPI Resultados dos testes realizados com as diferentes abordagens após as modificações. Foi testada a base ttkrsyedq, com uma população total de 180 indivíduos, para 5000 gerações, utilizando OpenMPI Resultados dos testes realizados com as diferentes abordagens após as modificações. Foi testada a base virul fac, com uma população total de 60 indivíduos, para 5000 gerações, utilizando OpenMPI Resultados dos testes realizados com as implementações original e modificada da estratégia i2, na base 1ac5, com uma população total de 180 indivíduos, para 5000 gerações, utilizando Mpich Resultados dos testes realizados com as implementações original e modificada da estratégia i2, na base ttkrsyedq, com uma população total de 180 indivíduos, para 5000 gerações, utilizando Mpich Resultados dos testes realizados com as implementações original e modificada da estratégia i2, na base virul fac, com uma população total de 180 indivíduos, para 5000 gerações, utilizando Mpich ix
13 Capítulo 1 Introdução Nas últimas décadas, uma enorme quantidade de organismos teve sequenciado seu material genético. Para que seja possível a obtenção de propriedades e características das sequências produzidas, é necessária a utilização de técnicas de análises que podem envolver áreas diversas, como biologia, computação, dentre outras. O campo interdisciplinar envolvendo biologia, ciência da computação, matemática e estatística com o objetivo de prover ferramentas e algoritmos para análise de sequências biológicas, de suas funções e de suas estruturas macromoleculares, é chamado Bioinformática [26]. Uma das mais importantes descobertas da biologia molecular foi a de que frequentemente proteínas de diferentes organismos estão relacionadas. Através do alinhamento simultâneo de várias dessas sequências, é possível a detecção de padrões conservados entre elas ou de possíveis mutações sofridas. O potencial de aprendizagem sobre estrutura e função das móleculas possibilitado pelo Alinhamento Múltiplo de Sequências (MSA) [26] é enorme, sendo por isso um dos problemas mais importantes tratados pela Bioinformática. O MSA é o alinhamento de três ou mais sequências biológicas, normalmente realizado para encontrar alguma relação evolutiva entre elas, podendo servir para identificar algum ancestral comum ou alguma região de código genético similar. No MSA, resíduos homólogos em um conjunto de sequências são alinhados em colunas, através da inserção de lacunas (gaps) no meio ou nas extremidades das sequências [13]. O problema de alinhamento múltiplo de sequências é um problema computacionalmente complexo, tendo sido provado NP-difícil para o método utilizando o cálculo por Sum-of-pairs [37]. Por esse motivo, diversas heurísticas têm sido propostas a fim de encontrar soluções aceitáveis com um custo limitado de memória e processamento. Os algoritmos de solução para o problema de MSA são frequentemente divididos em classes, sendo uma delas baseada em Algoritmos Genéticos (AGs) [23]. Os AGs são metaheurísticas que utilizam técnicas inspiradas pelo modelo da teoria da evolução de Darwin para achar soluções aproximadas em problemas de otimização e busca. Eles utilizam uma combinação de escolhas aleatórias e de conhecimentos obtidos por resultados prévios para se guiarem no espaço de soluções. AGs constituem uma boa estratégia na busca por uma solução aceitável para problemas para os quais não existe um algoritmo determinístico de tempo polinomial conhecido. Algoritmos Genéticos, no entanto, têm um alto custo computacional, já que precisam percorrer boa parte do espaço de soluções em busca de uma aceitável. Uma maneira de reduzir esse custo, acelerando a obtenção de resultados e até melhorando os resultados alcançados, é a utilização de AGs na forma paralela. 1
14 Em [24], a autora propõe a utilização de um modelo de Algoritmo Genético paralelo para a resolução do problema do Alinhamento Múltiplo de Sequências. A estratégia utilizada é chamada Multi-Ilha (ou Injeção de Ilhas), utilizando o modelo de paralelização em Ilhas em níveis. O nível mais externo é constituído por três Super Ilhas de processamento, sendo cada uma delas em um nível interno constituída por três Micro Ilhas, nas quais é executado um Algoritmo Genético Base. Em intervalos pré-definidos, as Ilhas trocam os melhores elementos com seus pares, contribuindo para que o processamento convirja para uma solução melhor com um menor custo. Em uma das Super Ilhas, o AG é implementado de forma a obter soluções melhores com um cálculo de aptidão mais demorado (alta resolução). Nas outras duas Super Ilhas, o cálculo de aptidão implementado é mais leve (de baixa resolução). A estratégia de Injeção de Ilhas proposta obteve ganhos significativos no que se refere à qualidade dos alinhamentos obtidos se comparada a outras abordagens, como as estratégias sequencial e de paralelização simples pelo modelo de Ilha. No que diz respeito aos tempos de execução, no entanto, os resultados não foram considerados ideais. Para um dos testes realizados, por exemplo, a estratégia de Injeção de Ilhas, que conta com nove nós AG, obteve um resultado em metade do tempo da estratégia sequencial, que conta com apenas um nó de processamento. A hipótese levantada para que os ganhos no tempo de execução não tenham sido considerados satisfatórios é que a comunicação entre os nós esteja se realizando de forma síncrona e blocante, causando um overhead de comunicação no modelo. Essa sincronização na comunicação não é necessária, já que a estratégia utilizando AGs é heurística e não-determinística, podendo ser utilizadas funções que realizem comunicação assíncrona, enquanto continua-se a evoluir as populações das ilhas. Quando os dados forem totalmente recebidos, estes podem ser incorporados à população, paralisando a evolução somente quando a comunicação for concluída. O presente trabalho de graduação visa continuar o projeto realizado em [24], propondo, implementando e avaliando um mecanismo de comunicação assíncrona para a estratégia Multi-Ilha proposta, com o objetivo de reduzir o tempo de execução do procedimento, não considerado ideal. Essa evolução tem a intenção de diminuir o custo atribuído à troca de elementos entre os nós de processamento, de forma a reduzir o overhead de comunicação. Em um dos casos de teste, foi conseguida uma redução de tempo na estratégia com o mecanismo implementado neste trabalho de graduação de 21m08s para 8m08s, um ganho de 61,5%. Detalhes de projeto, implementação e testes serão apresentados posteriormente. Este trabalho de graduação está organizado em capítulos. Os Capítulos 2 e 3 se concentram na exposição dos conceitos básicos, como Algoritmos Genéticos e Alinhamento Múltiplo de Sequências. No Capítulo 4, será detalhada a estratégia Multi-ilha para o problema de MSA apresentada em [24], que serve de base para este projeto. O Capítulo 5 apresenta as deficiências percebidas no modelo original de comunicação, detalhando os gargalos encontrados, para em seguida propor uma arquitetura de comunicação não blocante. No Capítulo 6, são apresentados e analisados os resultados dos testes realizados com as implementações original e modificada do algoritmo. Finalmente, o Capítulo 7 apresenta a conclusão e as sugestões de trabalhos futuros. 2
15 Capítulo 2 Algoritmos Genéticos O processo de resolução de um problema pode ser visto como a busca pela melhor solução dentre todas as potenciais soluções para este problema. Para um espaço limitado de soluções candidatas, um método de busca exaustivo pode ser suficiente. Para espaços de busca maiores, nos quais a verificação de todas as soluções possíveis seria extremamente ineficiente, heurísticas podem ser empregadas para que se chegue em uma solução satisfatória em um tempo viável. Algoritmos Genéticos [23] estão entre essas heurísticas, sendo frequentemente utilizados na solução de problemas NP-difíceis [31]. 2.1 Visão Geral Algoritmos Genéticos (AGs) são uma família de modelos computacionais que utilizam algoritmos estocásticos (não determinísticos) para achar soluções aproximadas em problemas de otimização e busca, utilizando para isso métodos que modelam fenômenos naturais [23]. São uma classe particular de programas evolutivos que utilizam técnicas inspiradas por dois princípios básicos: transmissão hereditária das características de um organismo a seus filhos, proposto por Gregor Mendel [9], e seleção natural dos mais aptos, proposto por Charles Darwin [10]. Os Algoritmos Genéticos realizam escolhas aleatórias, utilizando conhecimentos obtidos por resultados prévios, para se guiarem através do espaço de busca de soluções. O método consiste em testar várias das soluções de forma a encontrar uma que se aproxime da solução ótima. O problema de otimização pode ser modelado por uma função objetivo, que obedece a um conjunto de restrições, e a procura por uma solução equivale a procurar um ponto extremo (de máximo ou de mínimo) da função. A resposta para o problema de otimização, ou seja, o ótimo global, será o ponto do domínio que possuir o maior (ou o menor) valor possível para a função objetivo (maior ou menor imagem). O algoritmo de otimização deve tomar cuidado, no entanto, com os chamados ótimos locais, elementos onde a imagem é maior que a imagem dos elementos vizinhos, mas que não são o ótimo global. As heurísticas devem criar procedimentos que evitem uma parada prematura nesses pontos de máximo ou mínimo locais, proporcionando melhores resultados. Uma das estratégias utilizadas pelos AGs para conseguir fugir de ótimos locais é manter uma população de soluções potenciais e não somente um único ponto de busca no espaço [23]. 3
16 Os Algoritmos Genéticos foram concebidos e fundamentados por Holland [21], sendo popularizados por Goldberg [16]. A idéia por trás do algoritmo é fazer o que a natureza faz, simulando o processo de evolução dos seres vivos, com os indivíduos mais aptos tendo mais chances de sobreviver, reproduzir-se e passar o seu material genético, mais adaptado, para as futuras gerações. Uma implementação do algoritmo genético inicia com um conjunto de soluções candidatas (no vocabulário emprestado da genética, indivíduos da população ou indivíduos), que são avaliadas através do cálculo de seu nível de aptidão. Um subconjunto desses indivíduos é selecionado para dar origem a uma nova geração, em teoria mais apta que a geração anterior. Esses indivíduos selecionados são então combinados e modificados pela ação de operadores genéticos, como a recombinação e a mutação, e então é formada uma nova geração, que é avaliada novamente. Esse processo é repetido até que se atinja um resultado satisfatório ou até que algum outro critério de parada pré-estabelecido seja atingido. As etapas de um algoritmo genético típico estão representadas na figura 2.1. Figura 2.1: Fluxograma de um Algoritmo Genético Típico 2.2 Representação dos Indivíduos Os Algoritmos Genéticos mantêm uma população de indivíduos, tal que cada um destes representa uma solução potencial para o problema em questão. Um fator de extrema relevância em AGs é a forma com que os indivíduos são representados. Embora boa parte das soluções utilize a representação na forma de strings binárias, não existe uma representação genérica que atenda a todos os problemas. A representação dos indivíduos na forma de bits pode ser difícil e não natural para alguns problemas, sendo às vezes necessária a utilização de estruturas de dados mais complexas, como números inteiros ou reais [23]. Um grande desafio dos AGs é modelar de forma mais adequada possível o problema e suas soluções, devendo ser possível o armazenamento do máximo possível de informações 4
17 específicas do problema dentro do modelo escolhido. Além disso, a forma de representação das soluções afeta diretamente o progresso de um AG, já que os operadores genéticos têm de ser projetados de forma apropriada para lidar com a estrutura escolhida para a representação dos indivíduos. 2.3 Escolha dos parâmetros Além da forma como os indivíduos são representados, há outros parâmetros que devem ser levados em conta para obter os melhores resultados possíveis do AG. O tamanho da população, por exemplo, afeta diretamente seu desempenho e sua eficiência. Se tomarmos uma população pequena, teremos uma cobertura reduzida do espaço de busca. Uma população muito grande, por sua vez, gera um esforço computacional também muito grande. Tamanho da população, número de gerações, probabilidade de aplicação dos operadores genéticos e critério de parada são alguns dos fatores que influenciam no desempenho do algoritmo e que devem ser adaptados de acordo com as características particulares da classe de problema que está sendo tratada [23]. A determinação do valor apropriado para cada um destes parâmetros é um processo experimental, existindo na literatura apenas indicações de intervalos apropriados. 2.4 População Inicial A população inicial é uma amostra do conjunto de todas as soluções possíveis, podendo ser gerada aleatoriamente ou por algum outro método. A escolha da população inicial deve ter a preocupação de refletir o conjunto de soluções como um todo, representando a diversidade existente entre os indivíduos, de forma a evitar que o algoritmo seja levado a uma convergência prematura (ótimo local). Uma forma de viabilizar isto seria gerar a população inicial procurando selecionar, dentro do espaço de busca, soluções com intervalos uniformes entre si. Uma outra técnica utilizada a fim de encontrar melhores resultados é o seeding, que consiste em utilizar resultados previamente encontrados por outros algoritmos de otimização como entrada para o AG, direcionando o algoritmo para os pontos ótimos. 2.5 Avaliação e Seleção A etapa de avaliação consiste em medir a proximidade do indivíduo com o resultado procurado, ou seja, sua aptidão. Para isso, é projetada uma função de avaliação que faz o papel de ambiente, dando uma maior pontuação às soluções mais aptas. Essa medição objetiva é o critério que permite ao algoritmo evoluir, indicando quais são as melhores soluções para o problema em questão. A rotina de avaliação é utilizada pela próxima etapa, a seleção. A seleção deve guiar o processo de busca, escolhendo os indivíduos que participarão da etapa seguinte, de geração de filhos. Na seleção, é dada preferência aos indivíduos mais aptos, já que a idéia é que 5
18 eles possam passar suas características para a próxima geração, mas os indivíduos menos adaptados não são descartados, não desconsiderando-se, dessa forma, a sua diversidade. Essa diversidade é de extrema importantância para o AG, pois permite a exploração de diversos pontos do espaço, evitando a convergência prematura e a estagnação do processo evolutivo. Um algoritmo bem popular para a seleção é o da roleta [22], onde são atribuídas probabilidades de serem escolhidos aos indivíduos de acordo com a sua aptidão. Às soluções indicadas pela etapa de avaliação como mais aptas são atribuídas probabilidades maiores de serem escolhidas que às soluções consideradas não tão boas. Esse processo se assemelha ao processo de seleção natural, onde normalmente os mais aptos sobrevivem e se reproduzem, mas existe uma chance de que os mais fracos venham a se reproduzir também e passar suas características adiante. Outras formas de seleção são o torneio, o sorteio e a seleção elitista [17, 5]. 2.6 Geração dos Filhos Os indivíduos selecionados na etapa anterior são combinados e modificados de forma a produzir uma nova geração de indivíduos, potencialmente mais evoluídos que os da população anterior. A geração dos indivíduos filhos é obtida aplicando-se operadores que simulam os processos de evolução natural, ditos operadores genéticos. Os dois processos mais utilizados para gerar os novos indivíduos são a mutação e a recombinação (crossover), que ao mesmo tempo que favorecem a diversidade da população, mantém o progresso já conquistado. Os operadores genéticos devem ser projetados de forma a lidar da melhor maneira possível com o modelo de representação de soluções escolhido, devendo passar informações relevantes do indivíduo pai para o filho ao mesmo tempo em que incorpora modificações significativas para permitir a evolução. Esses dois componentes (representação e operadores) influenciam um ao outro diretamente, devendo ser analisados em conjunto. Além da geração dos filhos, é importante analisar como se dará a formação da próxima geração de indivíduos. Essa nova geração pode ser formada totalmente pelos novos indivíduos, por uma simples substituição dos N indivíduos pais pelos N indivíduos filhos ou ainda pode-se analisar o conjunto de indivíduos pais e filhos como um todo, selecionando N indivíduos desse conjunto mais amplo. Essas duas estratégias podem provocar uma alteração bastante significativa de uma geração para a outra, tendendo a diminuir conforme a execução do algoritmo. Existem outras estratégias, como o steady-state e o elitismo, que realizam a substituição dos indivíduos de maneira menos radical. O steady-state mantém a população original, com exceção de alguns poucos indivíduos menos adaptados, que são substituídos pelos descendentes mais aptos. No elitismo ocorre o oposto, os melhores indivíduos da população atual são mantidos na nova geração, sem sofrer modificações, enquanto os outros são substituídos pelos novos indivíduos. Uma preocupação do algoritmo deve ser com os limites do domínio de soluções possíveis. Existem variadas formas de lidar com um descendente que não esteja dentro desses limites, soluções ditas infactíveis. Embora em uma primeira olhada descartar essas so- 6
19 luções pareça o lógico a fazer, não é normalmente o procedimento realizado pelos AGs. Esses indivíduos infactíveis, mesmo fora do domínio, podem estar próximos a uma região interna ao espaço de busca e sua diversidade pode vir a ser utilizada pelo algoritmo para chegar a outras soluções possíveis [23]. Uma possível forma para lidar com esses indivíduos é o uso de penalidades. O uso dessa estratégia deve ser feito com cautela, no entanto, já que uma escolha ruim no grau dessas penalidades pode levar o processo a convergir sem encontrar o melhor indivíduo. Se o procedimento incorporar uma penalidade muito alta dentro da rotina de avaliação e o risco de produzir um indivíduo infactível também for alto, pode-se correr o risco de criar um AG que passa boa parte do seu tempo avaliando soluções ilegais ou ainda que, ao encontrar uma solução válida, convirja pra ela, já que caminhos possíveis para outras soluções passariam por indivíduos ilegais. Por outro lado, se o algoritmo incorporar penalidades mais moderadas, o procedimento pode gerar indivíduos que violem as restrições mas que ainda assim sejam considerados mais aptos, já que o resto da função de avaliação pode ser melhor satisfeita aceitando a restrição do que a evitando [23] Operador de Recombinação (Crossover) O operador de recombinação realiza a etapa que corresponde à reprodução sexuada na natureza: os descendentes recebem em seu código genético parte do material genético do pai e parte do material genético da mãe. A recombinação normalmente envolve duas etapas, seleção de indivíduos dois a dois para formarem um par de reprodução e escolha de como ocorrerá a divisão do "material genético"para ser recombinado no indivíduo filho. Essas etapas são realizadas de maneira aleatória ou fazendo uso de heurísticas. A probabilidade de o operador de crossover ser aplicado a um par de soluções é chamada taxa de crossover. Essa taxa é predominante na etapa de reprodução, sendo escolhido um valor bem maior do que o da taxa de mutação. A escolha desse valor, no entanto, deve ser feita com cautela. Quanto maior for essa taxa, mais rapidamente novos indivíduos serão introduzidos na população. Se esta for alta demais, a população sofrerá alterações muito grandes a cada geração, podendo ocorrer perda de estruturas com alto grau de aptidão. Por outro lado, se for uma taxa muito baixa, a evolução do algoritmo pode tornar-se muito lenta. Como já mencionado, a representação escolhida para os indivíduos da população afeta diretamente a modelagem dos operadores. No caso de os indivíduos serem representados por cadeias binárias ou por strings, um dos métodos de implementação do operador mais conhecidos é o crossover de N-pontos [24]. Neste método, são escolhidas aleatoriamente n posições onde serão particionados os indivíduos (pontos de corte). Dois indivíduos filhos são gerados permutando-se as subdivisões dos indivíduos pais. Esse processo pode ser usado para 1 ou mais pontos de corte, sendo os crossovers de 1, 2 e 4 pontos os mais comuns. Outra estratégia bastante comum é o uso do crossover uniforme [34]. No caso de indivíduos representados por números reais, outros operadores de crossover são geralmente utilizados, tais como o crossover de média [11] e o crossover linear [39]. 7
20 Figura 2.2: Exemplo de crossover de um ponto: (a) Dois indivíduos são selecionados. (b) Um ponto de corte é escolhido. (c) São recombinadas as subdivisões, gerando dois novos indivíduos Operador de Mutação O operador de mutação é o responsável pela variabilidade genética da população. Alterando de forma pontual o indivíduo, fornece meios para a introdução de novos elementos bem distintos no conjunto de análise. A mutação assegura a possibilidade de se alcançar qualquer ponto do espaço de busca, contornando também o problema de convergência em ótimos locais, já que é capaz de alterar a direção da busca. A probabilidade de aplicação do operador é dada pela taxa de mutação, geralmente inferior à taxa de crossover por se tratar de uma operação que destrói a informação existente, substituindo-a por uma nova. No caso de indivíduos binários, o operador atua fazendo uma inversão simples do valor lógico dos bits escolhidos aleatoriamente, de 1 para 0 ou de 0 para 1. Caso os indivíduos sejam números reais, os operadores mais comuns são mutação uniforme [23] e mutação de limite [23]. 2.7 Critério de Parada As condições de parada do Algoritmo Genético devem ser previamente determinadas. Em geral, esses critérios avaliam se o algoritmo chegou a uma solução com grau de aptidão aceitável ou se o algoritmo se estabilizou, ou seja, atingiu algum ponto de convergência em que nenhuma melhora significativa é conseguida com o passar das gerações, não fazendo sentido continuar. Também é normalmente definido um número máximo de gerações para assegurar que o algoritmo não entre em um processamento infinito. Essas condições garantem o fim do procedimento. 2.8 Algoritmos Genéticos Paralelos Algoritmos Genéticos são uma ferramenta muito poderosa para a solução de problemas de otimização, sendo uma boa estratégia na busca de uma solução ótima para problemas para os quais não existe um algoritmo determinístico polinomial conhecido. Esses métodos, no entanto, têm um alto custo computacional, já que percorrem boa parte do domínio de soluções em busca de uma boa aproximação para a solução ótima. Boa parte desse esforço computacional, contudo, é realizado em etapas de processamento independentes, como a rotina de avaliação, por exemplo. Essas etapas indepen- 8
21 dentes sendo processadas serialmente podem se tornar um gargalo para a evolução do algoritmo, sendo interessante se pensar na possibilidade de realizá-las em linhas de execução simultâneas. Além disso, um AG observa diferentes regiões do espaço de busca de uma só vez, realizando escolhas que visam a evolução contínua da população como um todo, procedimento que pode ser replicado, sem perda no processo, para rodar em mais de uma linha de execução paralela, tal que a evolução conseguida por cada um dos diferentes processos fosse compartilhada com os demais. Dessa forma, por conta de seu alto custo computacional, da independência de algumas de suas etapas e de sua alta escalabilidade, os AGs apresentam um grande potencial em ser empregados em ambientes distribuídos, podendo ser considerados uma estratégia paralela por natureza [23]. A técnica utilizada em sua forma paralela tem como objetivo, além da redução de tempo de processamento, também a obtenção de soluções de melhor qualidade. Existem variadas formas de implementação do paralelismo em AGs, dependendo de alguns elementos a serem considerados: Estrutura de representação dos indivíduos, modelagem dos operadores e rotina de avaliação de aptidão. Utilização de uma única população compartilhada ou divisão desta em sub-populações. No caso de subdivisão da população, escolha do método para troca de informações. Escolha do método de seleção da geração seguinte, global ou local. De acordo com Cantú-Paz [7, 8], as estratégias de paralelização do AG podem ser divididas em três categorias: 1. População única mestre/escravo (global single-population master-slave): Neste modelo, uma única população é mantida centralizada e a rotina de avaliação é realizada de forma paralela. O processador mestre se comporta como um AG sequencial, diferenciando-se apenas no cálculo de aptidão, etapa na qual distribui os filhos para serem analisados pelos processadores escravos. Os escravos realizam o cálculo de aptidão devolvendo o resultado ao mestre, que dará continuidade à sua execução. Essa estratégia também é conhecida como modelo de AG Global. A Figura 2.3 ilustra o modelo. 2. População única refinada (single-population fine-grained): Neste modelo também é mantida uma população única, mas esta é distribuída espacialmente entre os nós participantes do sistema. Cada nó é responsável pela evolução de uma determinada parcela da população, podendo no entanto haver interação entre os processos através do compartilhamento de indivíduos com os nós vizinhos. O modelo pode ser visualizado como uma matriz, em que cada elemento é um nó de processamento, podendo enxergar apenas os elementos vizinhos. A Figura 2.4 ilustra o modelo. 3. Múltiplas populações não-refinadas (multiple-population coarse-grained): Nesta estratégia, também conhecida como modelo de Ilha, a população é particionada e distribuída entre os nós de processamento (ilhas de processamento). Cada ilha realiza a evolução de sua subpopulação separadamente e, em intervalos pré-definidos 9
22 Figura 2.3: Modelo de população única mestre/escravo [15]. Figura 2.4: Modelo de população única refinada [15]. (chamados intervalos de migração), trocam indivíduos com as ilhas vizinhas compartilhando o progresso obtido. A comunicação entre os nós é um ponto chave desse método, já que é uma etapa mais lenta que as outras computações, deve ser projetada de modo a não constituir um gargalo no processo. O número de ilhas e a topologia dessas ilhas também são elementos que devem ser analisados com cautela. A Figura 2.5 ilustra o modelo. Figura 2.5: Modelo de múltiplas populações não-refinadas [15]. Além dessas três, existem ainda estratégias híbridas, que utilizam mais de um modelo de paralelização, sendo capazes de obter resultados ainda melhores que modelos individu- 10
23 ais, muitas vezes. Ao modelo de Ilha pode ser incorporado tanto o modelo mestre/escravo, quanto o modelo de população única refinada, realizando o processamento interno de cada ilha com uma dessas estratégias. Figura 2.6: Modelos Híbridos de AG. (a) Organização externa em Modelo de Ilha e interna em Modelo de População Única Refinada (b) Organização externa em Modelo de Ilha e interna em Modelo mestre/escravo [15]. 11
24 Capítulo 3 Alinhamento Múltiplo de Sequências A descoberta, pela biologia molecular, de que proteínas de diferentes organismos estão frequentemente relacionadas, constituiu um passo muito importante para o entendimento do processo evolutivo. Padrões conservados podem ser identificados em proteínas de espécies distantes, muitas vezes desempenhando funções parecidas ou até idênticas. Em outros casos, esses padrões podem ter se alterado durante o processo de seleção natural, desempenhando outras funções. Através do alinhamento simultâneo de várias sequências, é possível a análise de padrões conservados entre elas ou de possíveis mutações sofridas [26]. O Alinhamento Múltiplo de Sequências [26] é uma importante ferramenta no estudo das proteínas, sendo de grande auxílio aos biólogos nas análises das suas estruturas e funcionalidades. Os biólogos são capazes de produzir alinhamentos manualmente, utilizando seus conhecimentos específicos sobre a evolução das cadeias protéicas, mas esse alinhamento manual pode ser enfadonho e muitas vezes complexo [13]. Por esse motivo, métodos automatizados de alinhamento múltiplo são um tópico extensivamente pesquisado na área de Bioinformática. 3.1 Visão Geral Alinhamento Múltiplo de Sequências (Multiple Sequence Alignment - MSA) é o alinhamento de três ou mais sequências biológicas tal que cada coluna do alinhamento é uma tentativa de representar as mudanças evolutivas ocorridas naquela posição da sequência [26]. Em um MSA, resíduos homólogos em um conjunto de sequências são alinhados em colunas [13]. Isso é possível através da inserção de lacunas (gaps) nas sequências. À princípio, o alinhamento múltiplo pode parecer apenas como uma generalização do alinhamento de duas sequências e, na prática, muitas vezes o processo de alinhar três ou mais sequências passa pelo alinhamento dois-a-dois. A utilização do MSA pode, no entanto, ter aplicações bastante distintas do alinhamento entre um par de sequências. O alinhamento dois-a-dois é capaz de revelar a existência de uma relação funcional ou evolutiva entre um par de sequências, já o alinhamento entre três ou mais sequências pode revelar similaridades entre uma família de proteínas [26]. Estas similaridades podem ser fracas ou se encontrar dispersas, muitas vezes não ficando aparentes no comparativo entre duas sequências mas ficando claras ao comparar-se um conjunto de cadeias relacionadas [18]. 12
25 O MSA constitui uma ferramenta para detecção e representação das similaridades entre um conjunto de sequências. Estas similaridades são capazes de revelar o histórico do processo evolutivo, revelar também importantes padrões conservados em aminoácidos ou estruturas moleculares comuns, ou dar indícios sobre cadeias que tenham funções biológicas em comum [18]. Também são utilizadas para caracterizar famílias ou superfamílias de proteínas, sendo utilizadas na busca por outros membros em uma base de dados. Famílias de proteínas podem ser representadas em função da comparação entre sequências desta família, sendo possível, a partir de um alinhamento múltiplo, especificar um perfil que traduza a frequência com que cada caracter ocorre em uma dada coluna. Os perfis são muitas vezes chamados de matrizes de peso (weight matrices), sendo bastante úteis na comparação entre conjuntos de sequências. Uma vez que tenha sido encontrado um alinhamento múltiplo adequado, o número ou o tipo de alterações nos resíduos alinhados podem ser utilizados para uma análise filogenética das sequências [26]. Cada coluna do alinhamento é capaz de predizer as mudanças que ocorreram em uma posição da sequência durante a evolução de uma família de proteínas. Essas mudanças podem envolver inserções, remoções ou substituições de bases. Algumas vezes a posição é tão importante para a funcionalidade da cadeia que não são observadas modificações. Em outros casos, a posição é menos importante, podendo ter ocorrido substituições em uma parcela dos aminoácidos, ditos não-críticos, sem que se tenha um efeito destrutivo na proteína ou em sua funcionalidade [18]. O problema de alinhamento múltiplo de sequências é um problema computacionalmente complexo. Para o alinhamento entre duas sequências, já foram demonstradas diversas técnicas com complexidade quadrática de tempo capazes de produzir um alinhamento ótimo. A extensão desses algoritmos para o alinhamento de mais duas sequências, no entanto, é extremamente custosa em termos de tempo e espaço, não sendo na maioria das vezes viável para um grande número de sequências. Em uma tentativa de minimizar estes custos, a maioria dos programas estudados para alinhamento múltiplo fazem uso de heurísticas. 3.2 Tipos de Alinhamentos Os alinhamentos podem ser de dois tipos básicos: global ou local [26]. No alinhamento global, a cadeia inteira de aminoácidos é considerada, sendo importante para o reconhecimento de sequências protéicas que podem ter se conservado em quase sua totalidade através do processo evolutivo, em diferentes organismos. Padrões conservados localmente podem ser identificados através de métodos de alinhamento locais, que alinham regiões localizadas das cadeias. Os dois tipos de alinhamento, global e local, se aplicam tanto ao alinhamento de apenas duas sequências quanto a alinhamentos de três ou mais sequências. 3.3 Alinhamento Dois-a-Dois O alinhamento global entre duas sequências foi definido como [18]: Um alinhamento global de k = 2 palavras S = {S 1,..., S k } é a associação ordenada de cada elemento de uma sequência com um elemento na outra sequência, po- 13
26 dendo ser um elemento em branco. Ao final do alinhamento, as sequências possuem comprimento igual, l, devido a inserção de elementos em branco. Como resultado é obtida uma tabela de k linhas e l colunas, onde o elemento na posição i da palavra S v está na linha v e coluna i. O alinhamento local pode ser definido como [18]: Um alinhamento local de k = 2 palavras S = {S 1,..., S k } é obtido a partir da seleção de uma subpalavra S i de cada S i S. Em seguida, é realizado um alinhamento global entre essas subpalavras. O alinhamento de cadeias dois-a-dois pode ser realizado utilizando três métodos básicos [26]: Métodos Matriciais Escalares (Dot-Matrix Methods): Estes métodos exibem graficamente possíveis alinhamentos como diagonais da matriz. São capazes de revelar inserções, remoções e repetições de padrões de uma maneira mais clara que outros métodos automatizados. Uma limitação do método, no entanto, é que ele não mostra o alinhamento das sequências propriamente dito, apenas os pontos de similaridade. Alinhamentos locais são observados facilmente através da utilização deste método. Em uma possível implementação de Método Matricial Escalar, uma das sequências é colocada na primeira linha e a outra na primeira coluna de uma matriz bidimensional. As posições onde os caracteres combinam são marcadas na matriz. Gráficos de sequências fortemente relacionadas aparecerão como uma única linha diagonal na matriz. A figura 3.1 ilustra o alinhamento entre as sequências AGCTAGGA e GACTAGGC utilizando este método. Figura 3.1: Comparação das sequências AGCTAGGA e GACTAGGC utilizando o Método Matricial Escalar. A diagonal revela a subsequência CTAGG, presente nas duas cadeias. Retirado de [26] 14
27 Métodos de Programação Dinâmica: Os algoritmos de programação dinâmica comparam cada par de elementos das duas sequências, gerando um alinhamento. Já foi demonstrado matematicamente que o alinhamento produzido por estes algoritmos é um alinhamento ótimo. O algoritmo básico de programação dinâmica pode ser adaptado tanto para alinhamento global quanto para alinhamento local, sendo os algoritmos Needleman-Wunsch [27] e Smith-Waterman [38] projetados respectivamente para alinhar globalmente e localmente duas sequências. Por fornecerem uma solução ótima, a utilização desses algoritmos torna-se bem interessante. Estes métodos serão detalhados nas seções e O sistema de pontuação escolhido para avaliar o alinhamento afeta diretamente o resultado obtido. O alinhamento encontrado é ótimo sempre considerando o sistema adotado. Mais de um alinhamento ótimo para o mesmo conjunto de entradas pode existir, ficando a cargo do programa implementado identificar ou não as diferentes possibilidades. O programa Lalign [26], por exemplo, é capaz de fornecer vários alinhamentos diferentes. O alinhamento ótimo fornece informações importantes aos biólogos, fornecendo meios para que sejam inferidas similaridades funcionais, estruturais e evolutivas entre as sequências. A idéia por trás do método de programação dinâmica é resolver o problema a partir da resolução de instâncias menores deste problema. A técnica implementa uma solução tipicamente recursiva de uma forma mais eficiente, armazenando os resultados parciais, possivelmente em uma tabela ou matriz, de forma a evitar repetições de cálculos. A Programação Dinâmica pode ser aplicada também ao alinhamento múltiplo. No entanto, o número de sequências que este método é capaz de alinhar otimamente é limitado, já que o número de passos computacionais e a quantidade de memória requeridos crescem exponencialmente com o número de sequências sendo analisadas. Métodos K-Tupla (K-Tuple Methods ou Word Methods): Estes métodos são capazes de alinhar rapidamente duas sequências fazendo a busca primeiramente por trechos idênticos entre elas e em seguida juntando estes trechos em um alinhamento, através de programação dinâmica. Os algoritmos FASTA [32] e BLAST [3] fazem uso deste método Algoritmo Needleman-Wunsch O algoritmo Needleman-Wunsch [27] é utilizado para produzir alinhamentos globais ótimos entre pares de sequências biológicas. O alinhamento global é conseguido através da inserção de espaços em branco em posições arbitrárias das sequências [26]. A única restrição é que um espaço em branco inserido em uma das sequências não pode estar pareado com outro espaço inserido na outra sequência. Ao final do procedimento, as duas sequências alinhadas terão o mesmo tamanho, considerando possivelmente espaços em branco nas suas extremidades. Para o problema de alinhamento de sequências, considere a produção deste alinhamento em etapas, começando com um alinhamento inicial entre o primeiro par de caracteres e adicionando em seguida outros pares até completar o alinhamento total. Em 15
28 cada etapa, o pareamento é feito de modo a se obter o melhor alinhamento possível até aquele ponto. O alinhamento total derivado desse processo necessariamente será o melhor alinhamento possível [26]. Três escolhas são possíveis em cada etapa de adição de pares ao alinhamento das substrings: combinar os dois próximos caracteres das strings, combinar o próximo caracter de uma das strings com um espaço em branco na outra ou combinar o próximo caracter da outra string com um espaço vazio na primeira. A escolha entre essas três possibilidades é realizada de forma a maximizar o alinhamento até aquela posição. Considere duas sequências A = a 1 a 2...a n e B = b 1 b 2...b m. Uma implementação típica do programa de alinhamento dois-a-dois utiliza uma matriz de programação dinâmica DP, indexada por i e j, onde DP (i, j) é o valor do melhor alinhamento até as posições i da sequência A e j da sequência B. O algoritmo pode ser representado pela equação 3.1: DP (i 1, j 1) + s(a i, b j ) DP (i, j) = max DP (i 1, j) g DP (i, j 1) g (3.1) onde s(a i, b j ) é a pontuação pela combinação dos caracteres nas posições i e j e g é a penalidade imposta pela inserção de espaços em branco. Pode ser utilizada uma matriz de substituição para fornecer os valores para combinação entre dois caracteres, bem como podem ser utilizadas diferentes penalidades por abrir um espaço em branco no alinhamento ou apenas prolongá-lo. Essas questões variam de acordo com a implementação. Antes de iniciar a obtenção dos valores de similaridade utilizando o algoritmo representado pela Equação 3.1, é necessário que seja feita a inicialização da matriz. Isto é feito atribuindo-se o valor de i g a todas as células da coluna zero da matriz, DP (i, 0), e j g a todas as células da linha zero, DP (0, j). Esse processo contabiliza a possibilidade de haver espaços em branco inseridos no início das sequências. Para preencher uma determinada célula da matriz, três outras células são levadas em consideração (Equação 3.1). O algoritmo pode escolher acrescentar o pareamento entre os dois caracteres seguintes das strings ao alinhamento já formado, cujo valor pode ser encontrado na célula diagonal, DP (i 1, j 1). Uma outra opção é alinhar um espaço ao caracter de uma das sequências, que é realizado somando-se o valor contido em uma das células vizinhas, DP (i, j 1) ou DP (i 1, j) ao custo de inserir um espaço. Durante a execução do algoritmo, todas as possibilidades são consideradas, sendo escolhida aquela que proporcionar um alinhamento de maior valor. Uma vez preenchida toda a matriz de programação dinâmica, a pontuação do melhor alinhamento entre as duas sequências pode ser encontrado no elemento DP (n, m). A partir da matriz de similaridade, é possível determinar o alinhamento ótimo entre as sequências com a utilização de um procedimento de traceback. Uma matriz de traceback é utilizada para armazenar quais posições da matriz de similaridade contribuíram para a pontuação ótima encontrada. Começando pelo último elemento calculado, DP (n, m), o traceback busca qual das possíveis coordenadas anteriores foi utilizada para obter aquela pontuação, e assim decide se alinha os valores dos caracteres ou de um dos caracteres com um espaço em branco. O procedimento é repetido até que atinja o primeiro elemento, DP (0, 0). 16
29 - A G T A C A G T C A G T A C A G T - C Tabela 3.1: Matriz DP resultante do cálculo do algoritmo Needleman-Wunsch no alinhamento das sequências AGTC e AGTAC, com g = -2, s(x i, y j ) = 1 para x i = y j e s(x i, y j ) = 1 para x i y j. O caminho para obtenção do alinhamento ótimo global obtido está em destaque. O algoritmo de Needleman-Wunsch possui complexidade O(mn) de tempo, que é o custo da etapa de preenchimento da matriz m por n, etapa mais lenta do processo, já que o custo para se obter o alinhamento após este preenchimento é linear. Para sequências de tamanhos semelhantes, este custo pode ser traduzido por O(n 2 ). A tabela 3.1 ilustra o procedimento realizado pelo algoritmo Needleman-Wunsch para alinhar as sequências AGTC e AGTAC Algoritmo Smith-Waterman O algoritmo Smith-Waterman [38] é utilizado para produzir alinhamentos locais entre pares de sequências biológicas. Nos alinhamentos locais, o foco é a busca por regiões com grande similaridade, sendo dada maior prioridade a elas do que em estender o alinhamento para incluir mais pares vizinhos de aminoácidos. Alinhamentos locais podem muitas vezes ser mais significativos pelo fato de representarem padrões conservados entre as sequências. Podem ser usados para sequências que tenham uma região em comum que represente apenas uma pequena parcela de seus tamanhos, ou ainda para sequências com tamanhos bastante diferentes. O algoritmo Needleman-Wunsch (Seção 3.3.1) pode ser modificado de maneira a fornecer um alinhamento local ótimo entre duas sequências. As regras para o cálculo da matriz de similaridade são bem parecidas com as do Needleman-Wunsch, diferindo em dois pontos básicos. O sistema de pontuação deve pontuar negativamente uma comparação entre dois caracteres diferentes e se o valor de alguma célula se tornar negativo, a este deve ser atribuído o valor zero, de forma a terminar qualquer alinhamento anterior. Isto permite que, ao encontrar uma região similar, as diferenças encontradas até aquele ponto não prejudiquem a pontuação a ponto de mascarar um alinhamento menor. O algoritmo modificado pode ser representado pela equação 3.2: 17
30 - A G T A C A G T C A G T A G T Tabela 3.2: Matriz DP resultante do cálculo do algoritmo Smith-Waterman no alinhamento das sequências AGTC e AGTAC, com g = -2, s(x i, y j ) = 1 para x i = y j e s(x i, y j ) = 1 para x i y j. O caminho para obtenção do alinhamento ótimo local obtido está em destaque. DP (i, j) = max DP (i 1, j 1) + s(a i, b j ) DP (i 1, j) g DP (i, j 1) g 0 (3.2) Essa modificação faz também com que a matriz de similaridade seja inicializada de uma forma diferente, o valor das células da primeira linha e da primeira coluna da matriz terão o valor zero. Isto faz com que o alinhamento possa ter um número arbitrário de espaços em seu início. A segunda etapa do algoritmo, a etapa de traceback, também é diferenciada. O alinhamento é produzido começando com a célula que contiver o maior valor de similaridade, seguindo pelas células que originaram esse valor, até uma célula que contenha o valor zero. O algoritmo Smith-Waterman é capaz de produzir mais de um alinhamento local, tendo a mesma complexidade do Needleman-Wunsch, O(n 2 ), onde n é o tamanho das sequências. A tabela 3.2 ilustra o procedimento realizado pelo algoritmo Smith-Waterman para alinhar as sequências AGTC e AGTAC. 3.4 Alinhamento Múltiplo As definições de MSA são bem parecidas com as enunciadas para alinhamentos doisa-dois. Gusfield definiu MSA global e local como [18]: Um alinhamento global múliplo de k > 2 palavras S = {S 1,..., S k } é uma generalização natural do alinhamento de duas palavras. Espaços são inseridos dentro (ou em uma das extremidades) de cada uma das k palavras, tal que as palavras resultantes tenham o mesmo comprimento, definido como l. Então as palavras são arrumadas em k linhas de l colunas cada, tal que cada caracter e espaço de uma palavra está em uma única coluna. 18
31 Dado um conjunto de k > 2 palavras S = {S 1,..., S k }, um alinhamento local múltiplo de S é obtido selecionando uma subpalavra S i de cada palavra S S e alinhando globalmente estas subpalavras. Alguns exemplos de programas que implementam MSA globais são ClustalW [35], T- Coffee [30], SAGA [29] e Dialign [25]. Gibbs [28] e Chaos/Dialign [6] são exemplos de programas que produzem MSA locais. 3.5 Função de Avaliação O esquema de pontuação utilizado pelo algoritmo de alinhamento tem grande influência no resultado obtido. A escolha de uma função de avaliação que reflita objetivamente a importância biológica do alinhamento encontrado é fundamental. Para alinhamentos dois-a-dois, alguns métodos comuns e bem aceitos são distância de edição e similaridade [18]. Para alinhamentos múltiplos, funções de avaliação comumente utilizadas são sum-of-pairs (SP), weighted sum-of-pairs (WSP), funções por consenso (consensus functions) e funções baseadas em árvores (tree-based functions) [18]. De acordo com Gusfield [18], um alinhamento convincente deve incluir uma série de colunas nas quais a maioria das sequências tenham o mesmo aminoácido ou um aminoácido biologicamente equivalente. Quase todos os métodos de avaliação assumem que as colunas de um alinhamento são estatisticamente independentes [13]. Uma função de pontuação poderia ser escrita então como: S(m) = G + i S(m i ) (3.3) onde m i é a coluna i do alinhamento múltiplo m, S(m i ) é a pontuação para a coluna i e G é uma função de penalização pelos espaços em brancos (gaps) que aparecerem no alinhamento Sum-of-Pairs (SP) O método SP fornece um meio de avaliar um MSA somando as pontuações de todas as combinações de aminoácidos em uma coluna. A pontuação atribuída a cada combinação de bases é dada normalmente por uma matriz de substituição, que fornece uma medida objetiva para avaliar correspondências ou não entre aminoácidos ou entre aminoácidos e espaços em branco. Matrizes de substituição bastante conhecidas são a PAM [12] e a BLOSUM [19]. A pontuação dada pelo SP para a coluna i de um alinhamento m pode ser definida por [13]: S(m i ) = k<l s(m k i, m l i) (3.4) onde a função s representa a pontuação retornada pela matriz de substituição sendo utilizada e os elementos m k i e m l i representam os caracteres da coluna i das sequências 19
32 identificadas por k e l, respectivamente. O somatório leva em conta todos os pareamentos entre os elementos de uma coluna do alinhamento. Este método assume um modelo de mudanças evolutivas no qual qualquer uma das sequências poderia ser ancestral da outra. A figura 3.2 ilustra o modelo de avaliação SP. Figura 3.2: Modelo Sum-of-pairs utilizado na avaliação de um MSA. Três colunas de um alinhamento múltiplo entre cinco sequências são representadas. O método SP de cálculo é representado no diagrama por um grafo que ilustra todas as combinações entre as bases. Linhas pontilhadas representam caracteres iguais e linhas sólidas representam caracteres diferentes. O cálculo utiliza a matriz de substituição BLOSUM62. Adaptado de [26] Como observado por Durbin et al. [13], não existe uma justificação probabilística para o Sum-of-Pairs. Cada sequência é pontuada como se descendesse das outras N 1 sequências ao invés de ter apenas um ancestral. Os eventos evolutivos são contabilizados diversas vezes, um problema que aumenta conforme o número de sequências aumenta. Um esquema para contornar este problema foi proposto por Altschul et. al. [2], o Weighted Sum-of-Pairs, que será apresentado na seção O problema de computar o alinhamento múltiplo ótimo com o SP pode ser resolvido através de programação dinâmica. O custo para o cálculo de um alinhamento entre k strings de tamanho n seria Θ(n k ), no entanto, o que na prática o torna viável apenas para um número limitado de sequências. O problema de alinhamento SP exato foi provado NP-difícil [37], existindo na literatura sugestões de técnicas de speedup para aumentar o número de strings que podem ser alinhadas otimamente na prática usando SP. 20
33 3.5.2 Weighted Sum-of-Pairs (WSP) Altschul et. al. estenderam o cálculo SP atribuindo um peso a cada par de sequências. Este método é chamado de Weighted Sum-of-Pairs (WSP) [2]. O peso de cada par é determinado a partir da construção de uma árvore filogenética montada com todas as sequências e tem o objetivo de não deixar o alinhamento tendencioso se existirem mais sequências de uma mesma família participando do procedimento. O método fornece um meio de ponderar a informação extraída da comparação dos pares de sequências, de maneira a diminuir a influência de informações redundantes [2]. No cálculo utilizando esta ponderação, é especificado um método para atribuir pesos aos pares de sequências alinhados e então cada um destes pesos é multiplicado pela pontuação obtida no alinhamento dois-a-dois. A pontuação do alinhamento total é composta pela soma destes alinhamentos ponderados. 3.6 Classes de Algoritmos para MSA Alinhamentos múltiplos de sequências são computacionalmente difíceis de serem produzidos, mas dada sua importância biológica, diversas abordagens têm sido propostas a fim de encontrar soluções que levem a resultados aceitáveis utilizando uma quantidade limitada de memória e processamento. Os algoritmos de solução para o problema de MSA são frequentemente divididos em classes, como métodos progressivos, métodos iterativos, métodos probabilísticos, dentre outros Métodos Progressivos Os métodos de alinhamento progressivo utilizam programação dinâmica (DP) para construir o MSA começando com sequências mais relacionadas entre si e progressivamente adicionando sequências menos relacionadas ao alinhamento [26]. Inicialmente, duas sequências são escolhidas e alinhadas utilizando um algoritmo de alinhamento dois-a-dois. Em seguida, uma terceira sequência é escolhida e alinhada ao alinhamento das duas primeiras. Este processo é repetido até que todas as sequências estejam alinhadas. A ordem com que as sequências são escolhidas para participar do procedimento varia de acordo com cada implementação. O algoritmo geral utiliza a heurística de alinhar os pares de sequências mais similares primeiro, sendo que maioria dos programas modela estas relações entre as sequências através de árvores evolutivas. Nestas árvores, as folhas representam as sequências e os nós interiores são construídos através de alinhamento utilizando DP, e representam um ancestral evolutivo. O nó raiz representa o MSA completo. A figura 3.3 ilustra o procedimento realizado. O método utilizado para construir a árvore é similar ao método utilizado para construir árvores filogenéticas [13, 26]. O alinhamento progressivo é composto por diversas heurísticas, sendo um algoritmo eficiente e que produz resultados aceitáveis na maior parte das vezes [13]. ClustalW [35], T-Coffee [30] e Feng-Doolittle [14] são exemplos de programas que implementam métodos progressivos de MSA. 21
34 Figura 3.3: Alinhamento progressivo. Sequências são representadas nas folhas da árvore evolutiva por ordem de similaridade, sendo alinhadas primeiramente as sequências mais próximas. Esse processo gera os galhos internos, que representam um ancestral, até que se chegue no nó raiz, que representa o MSA completo. Adaptado de [26] ClustalW ClustalW [35] é uma implementação largamente utilizada de algoritmo progressivo para alinhamento múltiplo. O método é uma versão recente do Clustal [20], programa que vem sendo utilizado desde O programa fornece um alinhamento adequado para um grande número de sequências relacionadas, além de possibilitar a criação de uma árvore filogenética após o alinhamento ser formado [26]. O algoritmo do ClustalW inclui três passos [13, 35]: Uma matriz de distâncias representando as divergências entre cada um dos N(N 1)/2 pares de sequências é construída através de programação dinâmica e o alinhamento dois-a-dois entre todas as sequências é realizado. Uma árvore filogenética é produzida através da avaliação dos alinhamentos produzidos na etapa anterior. As sequências são alinhadas progressivamente, na ordem decrescente de similaridade, utilizando programação dinâmica e as relações filogenéticas indicadas pela árvore construída no passo anterior. A distância genética entre duas sequências é calculada pelo número de posições com elementos diferentes dividido pelo número de posições onde houve correspondência. Elementos combinados com espaços vazios não são contabilizados. O alinhamento inicial utilizado para construção da árvore filogenética pode ser obtido por um método k-tupla (Seção 3.3), útil para alguns conjuntos de sequências, ou por um método puramente de programação dinâmica, mais lento [26]. O peso das sequências para o MSA é determinado de forma a compensar a presença de famílias no conjunto de análise. Sequências similares são representadas por ramos adjacentes na árvore, de forma que a pontuação do alinhamento entre elas receba um peso menor, afetando menos o MSA. O oposto acontece para sequências menos similares, que são colocadas em ramos mais distantes, de forma que o seu alinhamento receba um peso 22
35 maior, tendo maior influência sobre o MSA [26]. O resultado desse cálculo ponderado é que o alinhamento total refletirá de forma mais precisa as mudanças ocorridas no processo evolutivo T-Coffee O T-Coffee (Tree-Based Consistency Objective Function for alignment Evaluation) é um programa de alinhamento progressivo que utiliza duas fontes heterogêneas de dados, criando inicialmente uma biblioteca com todos os alinhamentos ótimos dois-a-dois do conjunto de sequências. Essa biblioteca é gerada utilizando os programas ClustalW, para gerar os alinhamentos globais, e Lalign, para gerar os alinhamentos locais. As informações constantes na bibioteca permitem que todas as sequências sejam consideradas durante um passo do procedimento de alinhamento progressivo, e não somente aquelas sendo alinhadas no momento [30]. O programa atribui um peso a cada um dos pares alinhados de resíduos gerados pelos algoritmos ClustalW e Lalign. Esses alinhamentos ponderados formam a biblioteca primária. Nesta etapa, a biblioteca já poderia ser utilizada para gerar um alinhamento múltiplo. No entanto, pode-se melhorar ainda mais as informações da tabela através da análise de consistência entre os pares de resíduos dos alinhamentos. Este processo de checagem de consistência cria uma versão estendida da biblioteca. A etapa que constitui o alinhamento progressivo propriamente dito é semelhante aos três passos do algoritmo ClustalW descritos na Seção As etapas principais do algoritmo T-Coffee podem ser observados na Figura Métodos Iterativos Um problema com os métodos de alinhamento progressivos é que eles não permitem que um realinhamento seja feito [13]. Uma vez que um conjunto de sequências tenha sido escolhido e alinhado, esse alinhamento não é mais alterado. Dessa forma, possíveis erros nos alinhamentos iniciais são propagados para o MSA, o que é mais grave quando os alinhamentos iniciais acontecem com sequências mais distantes biologicamente. Os métodos iterativos tentam corrigir esse problema realinhando repetidas vezes subgrupos de sequências e então alinhando estes subgrupos a um alinhamento global com todas as sequências [26]. O objetivo dos algoritmos iterativos é otimizar a pontuação do alinhamento múltiplo total. Os métodos iterativos podem ser determinísticos ou estocásticos, sendo que esta última categoria engloba os algoritmos para alinhamento múltiplo baseados em Algoritmos Genéticos [24]. Uma variedade de algoritmos iterativos diferentes foram implementados e disponibilizados em diversos programas, como o Dialign [25] e o SAGA [29], que serão discutidos nas próximas seções. Nos métodos determinísticos, após o alinhamento inicial ser gerado, uma ou mais sequências são escolhidas e retiradas do conjunto para serem utilizadas na etapa de realinhamento. Estas sequências retiradas são então realinhadas a um perfil gerado do conjunto remanescente, com o objetivo de encontrar um alinhamento geral melhor que 23
36 Figura 3.4: Etapas para produção do alinhamento múltiplo de sequências utilizando o método T-Coffee. Adaptado de [30] o anterior. Esse procedimento é repetido até não sejam mais percebidas melhorias na avaliação do alinhamento ou até que um número pré-definido de iterações seja atingido. Nos métodos estocásticos baseados em Algoritmos Genéticos, a população é evoluída de uma forma similar ao que acontece na evolução natural, melhorando a qualidade do alinhamento com o passar das gerações de alinhamentos produzidas. Esta melhoria é obtida otimizando uma função de avaliação da qualidade do alinhamento, portanto, biologicamente, o sucesso do método depende de se escolher uma função que modele adequadamente essa aptidão. 24
37 Dialign A idéia básica do Dialign [25] é formar o alinhamento através da comparação de segmentos ininterruptos de resíduos das sequências, ao invés de comparar resíduos individualmente. Pares de sequências são alinhadas de forma a encontrar regiões de similaridades, não incluindo espaços em branco. Esse processo se assemelha muito à localização de diagonais nos métodos dot-matrix (Seção 3.3), por isso as regiões de similaridade são muitas vezes referidas como diagonais. O algoritmo prossegue então atribuindo pesos, determinados através de análises probabilísticas, às diagonais. Estas são então agrupadas de maneira a formar conjuntos consistentes de acordo com algum critério matemático. O conjunto com maior soma de pesos é escolhido. O resultado é o alinhamento das sequências baseado no alinhamento das diagonais encontradas SAGA O método proposto pelo SAGA (Sequence Alignment by Genetic Algorithm) [29] segue as mesmas etapas de um alinhamento genético típico, descrito no Capítulo 2. O procedimento utiliza uma população de soluções que evolui aos moldes da seleção natural. O primeiro passo é gerar aleatoriamente uma população de indivíduos que são Alinhamentos Múltiplos. O tamanho desta população é uma escolha arbitrária da implementação, sendo mantido constante com o passar das gerações. Na etapa seguinte, a população é avaliada e, a partir dos índices de aptidão, são gerados valores que indicam o número de filhos esperados (expected offspring - EO) para cada indivíduo. Na etapa de produção de uma nova geração, a metade considerada mais apta pela função de avaliação é selecionada para ser mantida inalterada, como se sobrevivesse à seleção natural. A outra metade é criada a partir da seleção de elementos da população anterior para servirem de pais da nova geração. Os indivíduos são selecionados utilizando o EO como índice de probabilidade. A nova geração de indivíduos é produzida a partir da aplicação de operadores aos indivíduos escolhidos, existindo operadores que utilizam um ou dois elementos pais. A escolha do operador a ser aplicado ao(s) pai(s) é feita de acordo com uma probablidade pré-determinada para cada operador ser utilizado. O algoritmo não permite alinhamentos idênticos em uma mesma geração, caso isso venha a ocorrer, os alinhamentos repetidos são descartados e são gerados outros elementos até que complete a metade da população restante. A nova população é então avaliada e o procedimento é repetido até que se atinja um critério de parada estabelecido. O método não dá garantias de atingir o alinhamento global ótimo, logo a decisão de parada é uma escolha arbitrária baseada em heurísticas. O SAGA opta por parar o procedimento quando a busca não foi capaz de obter melhorias por um número específico de gerações, tipicamente cem gerações [29]. O método é interessante por ser capaz de fornecer alinhamentos tão bons ou ainda melhores que outros métodos bastante utilizados. O algoritmo mostrou-se lento, no entanto, para mais de vinte sequências [26]. As etapas realizadas pelo algoritmo SAGA podem ser observadas na Figura
38 Figura 3.5: Etapas do algoritmo SAGA. (a) População inicial (G 0 ). (b) Ciclo realizado em uma geração (G n ). O método continua até que uma condição de parada seja alcançada. As caixas P1 n até Pm n representam os pais na geração n e C1 n+1 até Cm n+1 representam os seus descendentes. As caixas em negrito correspondem aos alinhamentos selecionados para permanecerem inalterados de uma geração para a seguinte. OP representa um operador escolhido aleatoriamente. Adaptado de [29]. 26
39 Capítulo 4 Alinhamento Múltiplo de Sequências com Algoritmo Genético Multi-Ilha 4.1 Visão Geral Como já discutido no Capítulo 3, o Alinhamento Múltiplo de Sequências (MSA) é um procedimento muito importante para os biólogos no estudo de proteínas, sendo de grande auxílio nas análises de suas estruturas e funcionalidades. A partir do MSA, é possível encontrar padrões conservados entre sequências de espécies distintas, sendo possível inferir propriedades ou funções comuns realizadas por essas regiões similares. É possível também utilizar o MSA para identificar regiões onde possivelmente ocorreram mutações, permitindo que seja inferido o histórico do processo evolutivo. Pelo fato de ser um problema NP-difícil, diversas heurísticas têm sido propostas para encontrar uma solução com custo viável. Em [24] é proposto um modelo para resolução de Alinhamentos Múltiplos baseado em uma técnica chamada Injeção de Ilhas. A idéia é utilizar uma estratégia de Algoritmo Genético paralelo para solucionar o problema de Alinhamento Múltiplo de Sequências. O modelo propõe a utilização da estratégia de paralelização em Ilhas (Seção 2.8) em dois níveis. O nível mais externo é constituído por ilhas ou nós de processamento que se constituem também por um AG paralelizado pelo modelo de Ilhas. Cada uma das ilhas internas roda um Algoritmo Genético Base e compartilha suas evoluções com as demais, contribuindo para que o processamento convirja para uma solução idealmente melhor com um menor custo de tempo. A abordagem proposta em [24] tem embasamento na estratégia Multi-Ilha proposta em [33] para a resolução do problema de gerência de recursos hídricos. Essa estratégia também utiliza um AG paralelizado pelo modelo de Ilhas, mas em cada uma das ilhas é processado um AG paralelizado pelo modelo mestre/escravo (Seção 2.8). No estudo realizado, a abordagem mestre/escravo foi considerada mais adequada pelos autores pelo fato do cálculo de aptidão no problema de gerência de recursos hídricos demandar uma alta carga de processamento, podendo ser realizado pelos processos escravos a fim de diminuir o gargalo desta etapa no processamento final. De acordo com o estudo, a economia no tempo de computação da aptidão compensa o custo adicional de comunicação entre os processos [33]. A seção a seguir discutirá o modelo proposto em [33] e depois será analisado o modelo proposto em [24], sobre o qual serão propostas as modificações deste trabalho. Este 27
40 capítulo foi baseado quase que inteiramente na dissertação contida em [24], muitas vezes não referenciada explicitamente a fim de evitar repetições. 4.2 Algoritmo Genético Multi-ilha Em [33], Babbar et al. propuseram um modelo de estratégia de AG paralelo para melhorar o desempenho de um Algoritmo Genético Sequencial na resolução do problema de gerência de recursos hídricos. Segundo os autores, o modelo apresentado direcionaria o algoritmo para soluções melhores em um tempo mais curto. Como já mencionado, a estratégia Multi-Ilha combina duas estratégias de paralelização: de ilha e mestre/escravo (Seção 2.8). No modelo proposto, as possíveis soluções são evoluídas em gerações, tal como em um Algoritmo Genético tradicional, até que se atinja o critério de parada. A busca por uma solução aceitável, no entanto, ocorre em vários nós de processamento, nas chamadas Ilhas. São criadas três ilhas no modelo, cada uma delas com um AG mestre/escravo. Em uma das ilhas, o AG é implementado de forma a obter soluções melhores com um cálculo de aptidão mais demorado (alta resolução). Nas outras duas ilhas, o cálculo de aptidão implementado é mais leve (de baixa resolução). Os nós que processam os AGs mais leves trocam entre si os melhores indivíduos de tempos em tempos, enviando também seus melhores elementos para o nó que processa o AG mais pesado. Dentro de cada uma das três ilhas, o processo mestre executa as etapas de um AG comum, com a exceção da etapa de cálculo de aptidão, que é realizada pelos processos escravos. Nesta etapa, os elementos são enviados pelo mestre para serem avaliados pelos escravos e os resultados dessa avaliação são então retornados para serem utilizados nas etapas seguintes do AG. Em [33], a estratégia Multi-Ilha foi referida como Algoritmo Genético de Injeção de Ilhas (Island Injection Genetic Algorithm). De acordo com o modelo abstrato construído pelos autores, conjectura-se que a estratégia proposta é capaz de obter indivíduos melhores que a estratégia sequencial. A Figura 4.1 ilustra o modelo proposto. Figura 4.1: Estratégia de paralelização descrita em [33] 28
41 4.3 Estratégia Paralela Multi-Ilha para o problema de MSA Pensando na possibilidade de encontrar melhores resultados utilizando o modelo descrito em [33], em [24] foi proposto um modelo parecido para o problema do MSA. A estratégia utiliza a mesma organização externa, com um AG paralelizado pelo modelo de Ilha. Como o modelo em [33], também são utilizadas três ilhas na organização externa, uma Super Ilha de Alta Resolução (SIAR) e duas de Baixa Resolução (SIBR), que trocam elementos entre si em intervalos pré-determinados. Essas ilhas são chamadas de Super Ilhas para diferenciar das outras ilhas presentes no algoritmo. Diferente do modelo utilizado como base, dentro dessas Super Ilhas é implementado um AG paralelizado também pela estratégia de Ilha, e não pela estratégia mestre/escravo. As ilhas internas de cada Super Ilha são chamadas Micro Ilhas e também compartilham elementos entre si de tempos em tempos. O modelo é ilustrado na figura 4.2. Figura 4.2: Estratégia de paralelização descrita em [24] Como no modelo base, existem diferenças na forma com que é realizada a evolução dos indivíduos nas Super Ilhas de Alta e Baixa Resolução. A SIAR executa um Algoritmo Genético convencional de ilha, evoluindo as soluções candidatas como um todo. Nas SIBR, cada solução candidata é dividida em partes, através de um operador genético específico, e os conjuntos de partes são evoluídos separadamente por cada uma das Micro Ilhas. Conjectura-se que o algoritmo da SIBR tenda a obter melhoras de forma mais precisa, já que a maior parte dos operadores genéticos trabalha com blocos do alinhamento, e os operadores estão sendo aplicados a partes menores. De tempos em tempos, chamados intervalos de Migração Externa, as Super Ilhas enviam seus melhores indivíduos às demais, compartilhando assim a evolução obtida. A SIAR é dividida em um Módulo de Alta Resolução (MAR) e três Micro Ilhas. O MAR é o responsável pelas etapas de geração da população inicial e distribuição dos alinhamentos em subgrupos que serão enviados para cada uma das Micro Ilhas. Cada Micro Ilha executa um Algoritmo Genético Base (AGB), evoluindo a sua subpopulação. 29
42 Nos intervalos de Migração Externa, o MAR recebe os melhores indivíduos de cada uma das Micro Ilhas, selecionando os melhores entre eles para que sejam enviados às Super Ilhas de Baixa Resolução. No mesmo intervalo, o MAR recebe os melhores indivíduos das SIBR, juntando-os à população e fazendo a seleção dos mais aptos para serem enviados às Micro Ilhas. As Micro Ilhas da SIAR também compartilham elementos entre si. Em intervalos pré-definidos, chamados de Intervalos de Migração Interna, cada Micro Ilha envia os seus melhores indivíduos para a sua vizinha à direita, recebendo da sua vizinha à esquerda os melhores indivíduos dela. Esses indivíduos recebidos são inseridos na população de acordo com seu grau de aptidão, sendo utilizados nas etapas seguintes de evolução da população do AGB. As SIBR são semelhantes à SIAR, sendo divididas em um Módulo de Baixa Resolução e três Micro Ilhas. Assim como o MAR, o MBR também é o responsável pela geração da população inicial e pela distribuição das subpopulações que serão evoluídas por cada Micro Ilha. A diferença é que essas subpopulações não serão formadas por subdivisões da população inicial, mas sim por conjuntos de pedaços dos alinhamentos originais. Cada elemento i da população gerada é cortado em x partes, sendo x o número de Micro Ilhas. O conjunto de partes obtido pelo primeiro corte dos alinhamentos é enviado à Micro Ilha 1, o conjunto seguinte à Micro Ilha 2 e assim por diante. O algoritmo executado nas Micro Ilhas da SIBR é o mesmo Algoritmo Genético Base, com a diferença que, nos Intervalos de Migração Interna, os elementos não são enviados para as Micro Ilhas vizinhas, mas para o MBR. Além disso, não só os elementos mais aptos são retornados, mas toda a subpopulação da Micro Ilha. Isso acontece porque as partes cortadas anteriormente serão reunidas, de forma que os alinhamentos gerados sejam válidos. O MBR seleciona então os elementos mais aptos dentre os alinhamentos gerados por esse processo, particionando-os e enviando os conjuntos de partes para serem evoluídos nas Micro Ilhas novamente. Os intervalos de Migração Externa são semelhantes aos da SIAR, os alinhamentos reagrupados mais aptos são enviados às outras Super Ilhas e os alinhamentos mais aptos destas são recebidos pelo MBR, que realiza o processo de particionar e distribuir a população. Todo o processo é repetido até que um número máximo de gerações seja atingido pelos AGB das Micro Ilhas. Na ultima geração, as Micro Ilhas das SIBR enviam toda sua população para o MBR e terminam a execução. Os MBR juntam as partes divididas em alinhamentos válidos, enviando os elementos mais aptos para a SIAR e, por sua vez, terminam a execução. Na SIAR, o MAR recebe os elementos mais aptos de cada uma das Micro Ilhas e das SIBR, juntando-os a sua população. O indivíduo mais apto da população total é o resultado final do procedimento. As Super Ilhas de Alta e Baixa Resolução e o Algoritmo Genético Base apresentados serão descritos com mais detalhes nas seções 4.3.1, e a seguir Super Ilha de Alta Resolução Nessa seção serão descritas as etapas presentes no algoritmo da Super Ilha de Alta Resolução. Na primeira etapa do algoritmo, é realizada a inicialização da população pelo Módulo de Alta Resolução (MAR), de forma que não existam elementos repetidos. Essa população é então dividida em grupos, que são enviados às Micro Ilhas. As Micro Ilhas 30
43 são as responsáveis por verificar se o algoritmo atingiu algum dos intervalos de migração. A cada Intervalo de Migração Interna, que é constituído por um número pré-determinado de gerações, ocorre um compartilhamento dos j elementos mais aptos de cada ilha com uma de suas vizinhas. O algoritmo realizado pelas Micro Ilhas será descrito com mais detalhes na Seção A cada Intervalo de Migração Externa, que é constituído por um número maior de gerações que os Intervalos Internos, o MAR recebe os j melhores indivíduos de cada uma das Micro Ilhas, que comporão uma população de i indivíduos, e os envia às SIBR. No mesmo intervalo, são recebidos os i indivíduos mais aptos de cada SIBR, que são incorporados à população. O algoritmo aplica então um operador de seleção, que escolhe os i melhores alinhamentos para serem redistribuídos entre as Micro Ilhas. O procedimento é repetido até que um critério de parada seja atingido. Nesse momento, o MAR recebe os melhores indivíduos das Micro Ilhas e das Super Ilhas de Baixa Resolução e o melhor indivíduo entre todos é selecionado como saída do procedimento. As etapas do algoritmo realizado pelo Módulo de Alta Resolução estão representados na Figura 4.3. Figura 4.3: Algoritmo do Módulo de Alta Resolução retirado de [24] População Inicial A população inicial é gerada a partir do grupo de sequências que serão alinhadas. As sequências são dispostas em linhas, de acordo com a ordem de entrada, formando um alinhamento inicial base, com espaços em branco terminais. Em seguida, é aplicado ao alinhamento base um operador que insere um número arbitrário de espaços em branco em posições arbitrárias do alinhamento, gerando uma nova solução candidata. Essa solução é avaliada com a função de cálculo de aptidão Sum-of-Pairs (Seção 3.5.1). Se já existir um alinhamento com a mesma aptidão, este alinhamento é descartado. O processo é repetido até que o número estipulado de elementos da população seja atingido Divisão da População O algoritmo tenta dividir igualmente a população entre as Micro Ilhas existentes. Caso o tamanho da população não seja divisível pelo número de Micro Ilhas, os elementos restantes são atribuídos às primeiras ilhas. O procedimento tenta levar em conta a 31
44 aptidão dos alinhamentos na distribuição, tentando distribuir uma quantidade parecida de elementos muito aptos, médio aptos e pouco aptos a cada uma das Micro Ilhas Critério de Parada O critério de parada do MAR é função do número de gerações executadas pelos AGBs das Micro Ilhas. Um número máximo de gerações é previamente estipulado de forma arbitrária, bem como as quantidades de gerações que formarão os intervalos de migração internos e externos. Esses parâmetros têm grande importância e influência nos resultados obtidos, sendo necessária, na maioria das vezes, a realização de testes para determinar os melhores valores Super Ilha de Baixa Resolução Nessa seção serão descritas as etapas presentes no algoritmo da Super Ilha de Baixa Resolução. Na primeira etapa do algoritmo, é realizada a inicialização da população pelo Módulo de Baixa Resolução (MBR), de forma que não existam elementos repetidos. Cada indivíduo da população é então dividido em n partes, onde n é igual ao número de Micro Ilhas presentes na Super Ilha. Os conjuntos de partes de alinhamentos são distribuídos entre as Micro Ilhas, que são as responsáveis por checar se o algoritmo atingiu algum dos intervalos de migração. Cada Micro Ilha executará um AGB, evoluindo essas frações dos alinhamentos, descrito com mais detalhes na Seção Nos Intervalos de Migração, tanto Interno quanto Externo, as populações das Micro Ilhas, que são constituídas pelos conjuntos de partes dos alinhamentos, são retornados ao MBR. O MBR recebe essas subpopulações e aplica o operador de junção de partes projetado, montando novos alinhamentos válidos com elas. Os novos indivíduos são avaliados pelo cálculo SP e são escolhidos os melhores. Na Migração Interna, esses indivíduos são divididos em partes e distribuídos novamente às Micro Ilhas. Na Migração Externa, primeiro ocorre um procedimento semelhante ao realizado pelo MAR, os i elementos mais aptos da população são enviados às outras Super Ilhas, que enviam os seus i melhores indivíduos. Só após essa troca é realizado o procedimento de particionamento e distribuição da população às Micro Ilhas. O procedimento é repetido até que um critério de parada seja atingido. Nesse momento, o MBR recebe os conjuntos de partes das Micro Ilhas, reagrupa-os em alinhamentos válidos e envia os mais aptos para a SIAR, para que seja determinado o melhor alinhamento produzido entre todos os módulos do algoritmo. As etapas do algoritmo realizado pelo Módulo de Baixa Resolução estão representados na Figura População Inicial A população inicial é gerada do mesmo modo realizado pela SIAR (Seção 4.3.1). Usando como base o conjunto de sequências a serem alinhadas, é aplicado um operador de inserção de espaços em branco de forma a gerar novos indivíduos, que são inseridos na população se já não houver algum alinhamento com mesma aptidão. O tamanho da população é determinado previamente. 32
45 Figura 4.4: Algoritmo do Módulo de Baixa Resolução retirado de [24] Divisão da População Na divisão da população, cada indivíduo é particionado, de maneira que cada pedaço resultante desse corte possa ir para uma Micro Ilha para ser evoluído. Na primeira etapa de corte, é contado o número de caracteres da primeira sequência, dividindo-o pelo número de Micro Ilhas. O resultado dessa conta é utilizado para realizar os cortes no primeiro indivíduo. Os indivíduos seguintes são cortados de modo que a i-ésima parte deles tenha o mesmo número de caracteres da i-ésima parte do primeiro indivíduo. Na etapa seguinte, o ponto de corte é realizado da seguinte maneira: ponto_corte = ponto_anterior - caracteres/2*(numero_micro_ilhas), onde o ponto_anterior é o ponto de corte prévio, caracteres é o número de caracteres da primeira sequência e numero_micro_ilhas é o número de AGBs da SIBR [24]. Esse procedimento tem o objetivo de não cortar os alinhamentos sempre na mesma posição, a fim de realizar a busca por um espaço maior de indivíduos. A junção das partes foi realizada de forma simples, reconectando as partes que haviam sido separadas de um indivíduo, formando como resultado alinhamentos válidos novamente Critério de Parada Assim como na SIAR, o critério de parada do MBR também é função do número de gerações executadas pelos AGBs das Micro Ilhas. Um número máximo de gerações é previamente estipulado de forma arbitrária, bem como as quantidades de gerações que formarão os intervalos de migração internos e externos. 33
46 4.3.3 Algoritmo Genético Base Nessa seção, será descrito o modelo do Algoritmo Genético implementado em cada uma das Micro Ilhas, chamado de Algoritmo Genético Base (AGB). O algoritmo executado pelo AGB é inspirado no algoritmo SAGA (Seção ), tendo sido feitas algumas modificações para se adequar ao modelo Multi-Ilha proposto. Uma das principais mudanças foi a inserção de etapas de migração, onde os melhores indivíduos são trocados com outros módulos, compartilhando assim as evoluções obtidas. Na implementação realizada em [24], alguns operadores foram implementados de forma simplificada e novos operadores propostos foram postos em prática. As etapas do algoritmo realizado pelo AGBs estão representados na Figura 4.5. Inicialmente, o AGB recebe uma população inicial e a avalia com um cálculo de aptidão SP. O algoritmo testa então os critérios de parada, se algum deles tiver sido satisfeito, os melhores elementos da população são enviados a um nó destino pré-estabelecido. Esse nó destino é o MAR no caso das Micro Ilhas da SIAR e o MBR no caso das Micro Ilhas da SIBR. Se não tiver atingido os critérios de parada, o algoritmo testa se o número de gerações atingiu algum dos intervalos de migração. Se tiver atingido, o algoritmo entra na etapa de migração, enviando os seus i melhores elementos para um outro nó destino pré-determinado e os substituindo por i novos indivíduos que serão recebidos. No caso da SIAR, esse nó destino pode ser uma Micro Ilha vizinha, para o caso de ser um intervalo de migração interna, ou o MAR, se for um intervalo de migração externa. Para o SIBR, esse nó é necessariamente o MBR, tanto na migração externa quanto na interna, e todos os indivíduos da população são enviados, não só os melhores. Figura 4.5: Algoritmo Genético Base retirado de [24] A etapa seguinte é a de geração de filhos. Essa etapa é praticamente idêntica à etapa de produção de uma nova geração do algoritmo SAGA. Inicialmente, a metade 34
47 considerada mais apta pela função de avaliação é selecionada para ser mantida inalterada na geração seguinte, como se sobrevivesse à seleção natural. Após isso, o AGB entra em um processo de gerar a outra metade dos indivíduos que comporão a nova população. Os indivíduos da população corrente que serão utilizados na geração dos novos indivíduos são escolhidos através do método da Roleta. A nova geração é produzida a partir da aplicação de operadores de crossover e mutação aos indivíduos pais escolhidos. A escolha do operador a ser aplicado ao(s) pai(s) é feita de acordo com uma probablidade prédeterminada para cada operador ser utilizado. Se o filho gerado por esse procedimento já existir na população, ele é descartado. O processo é repetido até que a população esteja completa. Assim que estiver, é realizada novamente a avaliação dessa população e é verificado novamente se o critério de parada já foi atingido. O procedimento se repete até que o critério de parada seja alcançado População Inicial A etapa de geração da população inicial não é feita pelo AGB. Ela é recebida do MAR, no caso da SIAR, ou do MBR, no caso da SIBR Avaliação O cálculo de aptidão implementado em [24] foi o SP (Seção 3.5.1), com a função de custo de espaços em branco (natural affine gap cost) e a matriz de substituição PAM250 [12] Geração de Filhos Os operadores implementados em [24] foram operadores de crossover de 1 e 2 pontos e operadores de mutação deriva de blocos, pesquisa por blocos, remover coluna de espaços em branco e inserção de espaço em branco. Também foram utilizados outros operadores propostos. 4.4 Análise dos Resultados Obtidos Em [24], são descritos testes realizados sobre a implementação do modelo de Alinhamento Múltiplo de Sequências proposto. A implementação descrita no trabalho foi realizada em ANSI C, utilizando o compilador GCC versão , no sistema operacional GNU/Linux Kernel O padrão MPI foi utilizado para a comunicação entre os processos, sendo utilizada a biblioteca MPICH na versão Os testes foram realizados em dois clusters. Os primeiros testes foram feitos no Cluster- MP, composto por 8 máquinas com dois processadores cada. Cada máquina contava com: processador Core 2 Duo Intel(R) Xeon(TM) 3,00 GHz, com 2 MB de memória cache, 2GB de memória RAM e 80GB de disco rígido. A conexão entre as máquinas foi realizada através de uma rede Gigabit Ethernet não dedicada. Para os testes seguintes, foi utilizado um segundo cluster, o Cluster-IE, composto por 4 máquinas também com 2 processadores cada. Cada máquina contava com: processador AMD Athlon(TM) MP , 60GHz, com 256 KB de memória cache, 1 GB de memória RAM e 40 GB de disco rígido. A conexão entre as máquinas foi realizada através de uma rede Gigabit Ethernet dedicada. 35
48 Para efeito de comparação, além da estratégia proposta, foram testadas mais três estratégias de Alinhamento Múltiplo utilizando Algoritmos Genéticos. Duas delas eram estratégias paralelas e uma sequencial. Ao todo foram implementados e testados 5 modelos: Injeção de Ilhas one-way (i1), Injeção de Ilhas two-way (i2), Paralela 9 ilhas (p9), Paralela 3 Ilhas (p3) e Sequencial (seq). A figura 4.6 ilustra as diferentes estratégias implementadas. Figura 4.6: Estratégias utilizando Algoritmos Genéticos descritas em [24] As duas estratégias de Injeção de Ilhas são variações do modelo descrito na Seção 4.3, com diferenças quanto às trocas de elementos nos Intervalos de Migração Externa. Na estratégia one-way (i1), ocorre o envio dos melhores elementos somente das Super Ilhas de Baixa Resolução para a de Alta Resolução, enquanto na estratégia two-way (i2), a de Alta Resolução também envia os seus melhores indivíduos às de Baixa Resolução, e estas também trocam entre si os seus melhores alinhamentos. As estratégias p3 e p9 são implementações diretas do modelo de Ilha apresentado na Seção 2.8, com 3 e 9 ilhas de processamento, respectivamente. Nesse modelo, o nó Coordenador é o responsável pela criação da população inicial, que é então dividida e distribuída entre os nós de processamento. Cada ilha executa o Algoritmo Genético Base, realizando a evolução da sua subpopulação separadamente e, em intervalos pré-definidos (intervalos de migração), troca elementos com as ilhas vizinhas. O processo continua até que seja atingido o critério de parada, quando as Ilhas retornam seus melhores elementos para o nó Coordenador, que seleciona o melhor entre todos para que seja o resultado. A estratégia sequencial (seq) é uma implementação comum de Algoritmo Genético Sequencial, sem nenhum mecanismo de paralelização. Ela executa o Algoritmo Genético Base, realizando a evolução da população como um todo, até que seja atingido um dos critérios de parada. 36
49 Estratégia Máquinas Processos Disposição dos Processos i1 e i MAR e 2 nós AGB são alocados na máquina 1. MBR e mais 2 nós AGB são alocados na máquina 2. 2 nós AGB são alocados na máquina 3. Segundo MBR e 3 nós AGB são alocados na máquina 4. p MAR e 3 nós AGB são alocados na máquina 1. Nas outras máquinas, são alocados 2 nós AGB em cada. p processos são alocados em cada máquina. seq 1 1 Só existe um processo rodando em uma máquina. Tabela 4.1: Disposição dos Processos das estratégias i1, i2, p9, p3 e seq nos testes realizados em [24] Base de Dados Conjunto Número de Tamanho Médio de Testes Sequências das Sequências BAliBASE [36] 1ac PFAM [4] ttkrsyedq PFAM [4] virul fac Tabela 4.2: Sequências utilizadas para a realização dos testes descritos em [24] A Tabela 4.1 descreve a distribuição pelas máquinas dos processos de cada abordagem nos testes realizados nos clusters. O MPI fornece meios de controlar como é feita essa disposição dos processos através de arquivos de configuração e flags que podem ser passados como parâmetros na inicialização do procedimento. Nos testes realizados, a disposição escolhida foi uma alocação sequencial dos processos nos nós. Os testes foram realizados utilizando conjuntos de sequências reais, escolhidos de forma que pudessem ser avaliados diferentes aspectos de implementação dos algoritmos, como tendência a convergir para ótimos locais, velocidade de melhoria dos alinhamentos, alinhamento de sequências grandes, entre outros. As bases utilizadas estão descritas na Tabela 4.2. Foi escolhido o conjunto de sequências 1ac5 [36] pelo seu alto grau de complexidade, que direciona algoritmos heurísticos para ótimos locais, o que é útil para verificar se os algoritmos convergem prematuramente para algum máximo local. As bases de ttkrsyedq [4] foram escolhidas por serem um conjunto de sequências similares, de fácil alinhamento, o que se mostra útil para avaliar o quão rápido o algoritmo consegue convergir para um resultado próximo do esperado. O conjunto de teste virul fac [4] é formado por um número maior de sequências, e o tamanho médio destas também é maior que as bases anteriores, o que é útil para se avaliar como os algoritmos se comportam para um volume de dados maior. As estratégias de Injeção de Ilhas i1 e i2 propostas alcançaram resultados muito bons se comparados aos outros modelos no que se refere à qualidade dos alinhamentos obtidos. 37
50 Estratégia Processos Processos AGB Pop Pop/ AGB Tempo (s) Aptidão Inicial Aptidão Final i i p p seq Tabela 4.3: Resultados dos testes realizados na base real 1ac5 no Cluster-IE para 5000 gerações descritos em [24]. Em quase todos os testes realizados, um dos modelos i1 ou i2 alcançou a melhor aptidão final. A Tabela 4.3 ilustra o teste realizado com a base real 1ac5 no Cluster-IE, para 5000 gerações. Pode-se observar que a estratégia i2 obteve um resultado final de aptidão bem superior às demais estratégias, 23,48% melhor que i1, 24,96% melhor que seq, 29,48% melhor que p3 e 31,11% melhor que p9. A estratégia i1 obteve o segundo melhor resultado, mas foi mais próximo aos outros modelos. Na Tabela 4.3 podem ser vistos também os resultados referentes aos tempos de execução dos 5 modelos. As estratégias i1 e i2 possuem tempos próximos, 3127 e 3232 segundos, respectivamente, inferiores às demais estratégias. Com relação à seq, i1 e i2 são em média 2 vezes mais rápidos, o que representa um ganho, mas ainda está aquém do que pode ser considerado ideal, considerando-se que a mesma população está sendo evoluída em 9 nós de processamento, contra apenas 1 nó de seq. Uma possível causa para que os tempos de execução não estejam ideais pode ser atribuída à estratégia de migração adotada, que paralisa a evolução nos nós AGBs enquanto são realizadas as trocas de elementos. A utilização de primitivas blocantes para a realização dos envios e recebimentos de dados torna a comunicação entre os nós síncrona, podendo acarretar em um overhead de comunicação. A situação de p3 e p9 pode ser considerada ainda mais crítica, já que nos testes realizados essas abordagens foram algumas vezes mais lentas que a estratégia sequencial. O modelo de migração também pode ter sido uma das causas para os seus altos tempos, sendo que p3 ainda tem o agravante de ter apenas 3 nós de processamento, contra 9 das estratégias p9, i1 e i2, o que pode explicar os tempos maiores que p9. Suspeita-se que o gargalo na comunicação entre os nós de processamento seja o responsável pelos tempos 5 e 10 vezes piores das estratégias p9 e p3, respectivamente, se comparadas ao tempo médio de i1 e i2. Como já mencionado na Seção 2.8, a utilização de Algoritmos Genéticos na sua forma paralela tem por objetivo além da obtenção de soluções melhores, uma redução no tempo de processamento. A fim de que sejam alcançados resultados melhores com relação ao tempo de execução, neste trabalho serão propostas modificações no modelo de migração adotado em [24], tentando diminuir o tempo atribuído a troca de elementos, mas mantendo os bons resultados alcançados em termos de aptidão. Os gargalos de comunicação da estratégia original, bem como as modificações propostas serão discutidas no Capítulo 5. 38
51 Capítulo 5 Mecanismo de Comunicação para Alinhamento Múltiplo com Algoritmo Genético Multi-Ilha No Capítulo 4 foi descrita a estratégia paralela para alinhamento múltiplo de sequências proposta em [24], sendo apresentados os resultados obtidos nos testes realizados com a implementação original do algoritmo. Como discutido, a estratégia proposta obteve ganhos significativos quanto à aptidão do alinhamento final alcançado se comparada a outras estratégias de alinhamento, como as abordagens sequencial e de paralelização simples pelo modelo de Ilha. No que diz respeito ao tempo de execução, no entanto, os ganhos não foram tão expressivos. A hipótese é de que o modelo adotado de comunicação entre as ilhas realiza a troca de elementos de uma forma blocante, causando um overhead no tempo de comunicação nas estratégias paralelas. Neste capítulo, será descrito em detalhes o mecanismo de comunicação implementado em [24], sendo apontadas as deficiências e os gargalos percebidos na evolução realizada pelo modelo. Em seguida, será proposto um novo modelo de comunicação, de forma a tentar maximizar os ganhos possibilitados pela computação paralela, de modo que o tempo total de processamento seja reduzido, sem que haja perdas na melhoria dos alinhamentos obtidos. 5.1 Deficiências do Mecanismo de Comunicação Original Para confirmar a hipótese de que os elevados tempos das estratégias paralelas têm relação com a troca de elementos de forma síncrona entre as ilhas, foi realizado um estudo do mecanismo de comunicação original. Nessa análise, foram identificadas algumas deficiências no mecanismo, relacionadas com a comunicação síncrona implementada nos intervalos de migração, possivelmente responsáveis pelos tempos não satisfatórios das estratégias paralelizadas por um modelo simples de Ilha (p3 e p9) e das estratégias de Injeção de Ilhas (i1 e i2), apresentadas na Seção 4.4. Essa sincronização na comunicação não é necessária, já que a estratégia proposta utilizando Algoritmos Genéticos é heurística e não-determinística, podendo ser utilizadas funções que realizem comunicação assíncrona, 39
52 enquanto continua-se a evoluir as populações das ilhas que rodam o AGB (Seção 4.3.3). Os dados trocados na migração podem ser incorporados à população a medida em que são recebidos, paralisando a evolução apenas no momento em que de fato a comunicação for concluída. A Figura 5.1 representa os gargalos identificados no modelo de migração. O primeiro problema identificado ocorre nos Intervalos de Migração das estratégias paralelas p3 e p9 e na Migração Interna da Super Ilha de Alta Resolução de i1 e i2 (Figura 5.1a). A cada um desses intervalos, a evolução nos nós AGB é interrompida para realizar a troca de elementos entre as Micro Ilhas vizinhas. Isso pode causar um gargalo dependendo da velocidade de processamento de cada Micro Ilha. Ainda que esteja rodando em um ambiente homogêneo, com todos os nós rodando a uma velocidade similar, cada Micro Ilha precisa paralisar sua evolução a espera dos dados enviados pela vizinha, de modo a incorporar esses novos indivíduos à sua população e continuar a evolução. Dependendo da forma com que esse mecanismo seja implementado, o custo dessa comunicação pode ser proporcional ao número de ilhas utilizado, limitando portanto os ganhos que poderiam ser conseguidos com mais linhas de execução em paralelo. O segundo problema foi identificado nos intervalos de Migração Externa das estratégias i1 e i2 (Figura 5.1c). Durante esses intervalos, todas as Micro Ilhas enviam seus indivíduos para o nó Coordenador, ficando a espera de novos dados retornados pelo Coordenador para continuar a evolução. O nó Coordenador realiza a troca dos melhores indivíduos com as demais Super Ilhas e só então retorna os dados para as Micro Ilhas. Dependendo do número de Super e Micro Ilhas utilizadas e da capacidade de processamento do nó Coordenador, esse procedimento pode ocasionar um gargalo na evolução do algoritmo no nó Coordenador. Esse modelo também limita a capacidade de processamento individual de cada Super Ilha, já que, sincronizando as gerações, a Super Ilha de pior desempenho determinará o ritmo de evolução das demais. Essa sincronização não é necessária, já que a evolução realizada pelas Super Ilhas poderia continuar enquanto a troca de elementos entre elas é realizada de forma assíncrona. Foi identicado ainda um terceiro gargalo, durante os Intervalos de Migração Interna nas Super Ilhas de Baixa Resolução (Figura 5.1b). Esse problema é similar ao anterior, ocorrendo um gargalo no nó Coordenador a cada intervalo de migração. Como cada uma das Micro Ilhas envia todos os seus elementos para serem processados pelo Coordenador, a capacidade de processamento deste pode afetar a evolução da Super Ilha como um todo, já que as Micro Ilhas ficam paradas sem ter o que processar enquanto não recebem os conjuntos de partes de alinhamentos de volta. Esse problema é inerente ao modelo de paralelização adotado nas SIBR, que particiona os alinhamentos para serem evoluídos pelas Micro Ilhas e precisa que cada pedaço seja unido às outras partes correspondentes para poder formar alinhamentos válidos novamente. Dessa forma, as Micro Ilhas não teriam como continuar a evolução enquanto ocorre a junção das partes divididas anteriormente, não sendo possível a modificação para uso de primitivas assíncronas. O mecanismo de comunicação original era formado basicamente pela utilização de duas primitivas básicas da biblioteca MPI, uma para envio e outra para recebimento blocante de mensagens: MPI_Send: executa um envio blocante padrão. Protótipo em C: int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) 40
53 (a) Gargalo nos Intervalos de Migração Internos da SIAR. (b) Gargalo nos Intervalos de Migração Internos da SIBR. (c) Gargalo nos Intervalos de Migração Externos Figura 5.1: Gargalos no mecanismo de comunicação original. A rotina bloqueia a execução até que a mensagem contida em buf seja enviada ao processo destino indicado por dest com identificador descrito em tag ou que algum erro seja identificado. MPI_Recv: executa um recebimento blocante padrão. Protótipo em C: int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) A rotina bloqueia até que o buffer de recebimento buf contenha a mensagem a ser recebida do processo source com identificador descrito em tag. O tamanho da mensagem a ser recebida deve ser menor ou igual ao tamanho do buffer de recebimento passado em count, caso contrário um código de erro indicando que a mensagem foi truncada é retornado. Além destas, foram utilizadas algumas primitivas não-blocantes, mas que, como utilizadas em conjunto com primitivas blocantes, acabaram não servindo ao propósito de realizar uma comunicação assíncrona. Algumas das primitivas não-blocantes do MPI serão detalhadas na Seção 5.2. Os detalhes das duas primeiras deficiências mencionadas serão descritos nas seções a seguir. 41
54 5.1.1 Gargalo nos Intervalos de Migração dos AGBs Pode ser entendido também como gargalo nas Migrações Internas da SIAR. Nos Intervalos de Migração Interna da SIAR, cada Micro Ilha envia seus melhores alinhamentos para a próxima Micro Ilha e espera receber os melhores alinhamentos da Micro Ilha anterior para que sejam incorporados à sua população e que a evolução do AGB continue. Essa troca de elementos de forma blocante pode ser custosa, se considerarmos que a evolução proposta pelo AGB é interrompida à espera da troca de informações entre as Micro Ilhas, que pode ser demorada dependendo do volume de dados trocados e da velocidade de evolução das demais Micro Ilhas. Se implementada de forma totalmente síncrona, o custo da comunicação é proporcional ao número de ilhas, desperdiçando as vantagens que poderiam ser obtidas por vários nós de processamento e não alcançando os ganhos de desempenho desejados. A implementação realizada nas Micro Ilhas em [24] foi a de um modelo híbrido, utilizando primitivas não-blocantes para que todos os nós requisitassem inicialmente o envio de seus dados e primitivas blocantes para o recebimento de dados, de forma a sincronizar a troca de elementos. A forma com que foi pensada a implementação minimiza os riscos de deadlocks na comunicação, já que não corre o risco de todos os nós ficarem bloqueados esperando para receber ou enviar os dados ao mesmo tempo. Além disso, o tempo de Migração é reduzido, pois se fosse implementada totalmente com primitivas blocantes, o primeiro nó precisaria esperar por todas as trocas para receber os seus dados, tornando a demora na comunicação proporcional ao número de Micro Ilhas. Ainda assim, uma melhoria poderia ser realizada modificando-se esse procedimento de forma que tanto o envio quanto o recebimento de dados ocorressem de forma não blocante. Essa sincronização nas trocas de elementos entre as Micro Ilhas limita também a capacidade de processamento individual de cada nó, já que em um possível ambiente heterogêneo, a Micro Ilha com pior desempenho determinaria o ritmo de evolução de todas as outras Gargalo nos Intervalos de Migração Externa Pode ser entendido também como gargalo no nó Coordenador. Nos Intervalos de Migração Externa, as Micro Ilhas enviam seus melhores elementos, no caso da SIAR, ou toda sua subpopulação, no caso das SIBR, ao nó Coordenador. O Coordenador é o responsável por reagrupar a população, escolher os melhores indivíduos produzidos até aquele momento e enviá-los às outras Super Ilhas, enquanto espera receber os melhores indivíduos destas. Enquanto essa troca acontece, os nós Ilhas ficam parados, esperando que os novos indivíduos sejam recebidos pelo Coordenador e que os melhores sejam retornados a eles. Essas esperas, tanto no Coordenador quanto nas Micro Ilhas, limitam a capacidade de evolução dos AGBs, que se torna diretamente dependente da capacidade de processamento do Coordenador, da evolução das outras Super Ilhas e do tempo de comunicação entre os nós. A cada Intervalo de Migração Externa, o processo Coordenador precisa acumular os dados enviados por todas as Micro Ilhas, processá-los e realizar as trocas de elementos com as outras Super Ilhas. No caso da SIAR, esse processamento se resume a reagrupar a população e escolher os melhores indivíduos. No caso da SIBR, antes desse procedimento, o Coordenador precisa juntar as partes dos alinhamentos divididas anteriormente, de 42
55 maneira a formar alinhamentos válidos e aí sim escolher os melhores indivíduos. Quando o processo Coordenador recebe os dados das outras Super Ilhas, o procedimento inverso ocorre. São escolhidos os melhores alinhamentos, que serão utilizados na geração seguinte. Na SIBR, esses alinhamentos são particionados, enquanto na SIAR, os alinhamentos são divididos em grupos e então esses conjuntos são enviados às Micro Ilhas. É fácil notar o quanto a capacidade do Coordenador de realizar todas essas funções afeta diretamente o algoritmo, já que enquanto todos esses passos acontecem, as Micro Ilhas estão paradas. A sincronização no processamento imposta nos Intervalos de Migração Externa limita a capacidade de evolução de cada Super Ilha, já que o desempenho global seria limitado pela Super Ilha de processamento mais lento. Como os procedimentos realizados pela SIAR e pela SIBR são diferentes, é bem provável que as suas evoluções não ocorram no mesmo ritmo, mesmo em um ambiente homogêneo. Com o modelo utilizado, possivelmente existirão períodos que uma delas não estará processando a espera de que a outra alcance a sua geração. 5.2 Arquitetura da Comunicação Proposta Para minimizar os problemas apontados na Seção 5.1, foi projetado um novo modelo de comunicação, utilizando primitivas assíncronas de comunicação e lista de requisições ativas, com o objetivo de diminuir o overhead causado pela troca de dados. Durante o estudo de como poderia ser feita a mudança, foram cogitadas as opções de utilizar múltiplas linhas de execução (threads) para realizar a comunicação ou continuar utilizando o MPI, com primitivas não-blocantes. Por uma questão de facilidade de adaptação do código já existente e da própria facilidade que a interface do MPI nos fornece para comunicação ponto a ponto, optou-se pelo MPI com primitivas não blocantes. O modelo de comunicação proposto tem por objetivo atacar os gargalos na evolução identificados, utilizando para tanto primitivas assíncronas que permitam a continuidade da evolução enquanto são processadas as trocas de dados. Foram utilizadas as primitivas MPI_Irecv e MPI_Isend para recebimento e envio não-blocante de dados, respectivamente, em conjunto com as primitivas MPI_Test e MPI_Waitall, utilizadas para checar o status da comunicação e esperar pela finalização de múltiplas comunicações: MPI_Isend: executa um envio não-blocante padrão. Protótipo em C: int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request) A rotina inicia um envio não-blocante dos dados contidos em buf ao processo dest, associando a requisição ao manipulador representado pelo parâmetro request. Esse manipulador da requisição pode ser utilizado posteriormente para checar o status da comunicação ou esperar que seja concluída. O processo que está enviando não deve acessar o buffer de envio até que a operação seja concluída. MPI_Irecv: executa um recebimento não-blocante padrão. Protótipo em C: int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request) 43
56 A rotina faz uma requisição, não blocante, de recebimento de dados, que serão recebidos em buf do processo source, associando a requisiçao ao manipulador representado por request. Assim como em MPI_Isend, esse manipulador pode ser utilizado posteriormente para checar o status da comunicação ou esperar que seja concluída. Uma chamada de recebimento não-blocante indica que o sistema pode começar a escrever dados no buffer de recebimento. O processo que está recebendo, no entanto, não deve acessar o buffer até que o procedimento termine. MPI_Test: Testa se uma requisição específica de envio ou recebimento de dados foi concluída. Protótipo em C: int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) Uma chamada a MPI_Test retorna em flag se a operação identificada por request foi concluída. Se flag retornar verdadeiro, status é preenchido com informações sobre a operação finalizada. MPI_Waitall: Aguarda a finalização de todas as requisições passadas como parâmetro. Protótipo em C: int MPI_Waitall(int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses) A rotina bloqueia até que as count requisições em aberto associadas com os manipuladores em array_of_requests sejam completadas. O parâmetro array_of_statuses retorna as informações das operações finalizadas. Além da modificação com relação às primitivas de envio e recebimento utilizadas, em alguns casos foi necessária a utilização de listas de pedidos em aberto. Cada elemento da lista é constituído pelo manipulador da requisição em aberto, do tipo de requisição (se envio ou recebimento) e de uma referência para o buffer de envio ou recebimento em uso. Essa lista é necessária pois não temos a certeza que uma requisição será finalizada antes de atingir o intervalo em que a próxima será feita e não podemos dispor do buffer até que o status da comunicação indique que esta foi finalizada. A cada geração, a lista é percorrida checando-se se algum pedido terminou de ser processado. Quando uma requisição para recebimento de dados é finalizada, o algoritmo entra em um procedimento que incorpora os novos elementos à população, selecionando os mais aptos para serem utilizados na geração seguinte. Para o envio de dados, não é necessário nenhum procedimento especial, somente liberar o buffer em uso. Com a mudança para tornar a troca de dados assíncrona, foi questionada a possibilidade de o algoritmo não alcançar resultados tão bons em termos de aptidão quanto utilizando comunicação síncrona, já que novos elementos possivelmente melhores só viriam a ser incorporados à população gerações a frente. Mas como se trata de uma abordagem não determinística, espera-se que essas alterações não afetem o desempenho global do algoritmo em termos de aptidão, já que o resultado é dependente também de outros elementos randômicos, como população inicial e escolhas na produção de novas gerações. As modificações realizadas para tentar minimizar os gargalos discutidos nas Seções e estão representadas na Figura 5.2 e serão detalhadas a seguir. 44
57 (a) Mecanismo assíncrono implementado nos Intervalos de Migração Internos da SIAR. (b) Mecanismo assíncrono implementado nos Intervalos de Migração Externos. Figura 5.2: Combate aos gargalos no mecanismo de comunicação original Combatendo o Gargalo nos Intervalos de Migração dos AGBs Com o objetivo de minimizar o gargalo discutido na Seção 5.1.1, foi implementado nas Micro Ilhas da SIAR um mecanismo de comunicação assíncrona para Migração Interna utilizando primitivas não blocantes e lista de requisições. O modelo híbrido anterior que contava com um misto de primitivas blocantes e não blocantes foi modificado para utilizar somente primitivas não blocantes. Os pedidos de envio de dados são feitos com a utilização da primitiva MPI_Isend e os de recebimento com MPI_Irecv, que não bloqueiam o processamento, permitindo que outras etapas sejam realizadas enquanto a troca de dados é processada. As novas requisições, tanto de envio quanto de recebimento, são inseridas em uma lista de requisições em aberto, para serem completadas assim que a comunicação terminar de ser processada. A cada geração, os manipuladores de requisição contidos nos elementos da lista são verificados com a utilização da função MPI_Test e, se a flag retornada indicar que a comunicação terminou, o procedimento de recebimento incorpora os novos indivíduos recebidos à população e o de envio libera o buffer que continha a população sendo enviada. Com isso, é inserida uma nova etapa no procedimento, que é o percorrimento da lista e 45
58 checagem de cada manipulador de requisição em aberto. Supõe-se que a perda por essa etapa a mais no procedimento não supere os ganhos obtidos pela troca pelo mecanismo assíncrono de comunicação. Com a mudança proposta, espera-se que seja minimizado o gargalo decorrente da troca de elementos entre Micro Ilhas vizinhas nos Intervalos de Migração Interna da SIAR, já que cada Micro Ilha continuaria evoluindo a sua população no seu ritmo, incorporando novos elementos a medida em que fossem recebidos, deixando de depender do ritmo de evolução das demais Micro Ilhas. Essa mudança também pôde ser aplicada às Micro Ilhas das estratégias p3 e p9, que sofriam do mesmo gargalo Combatendo o Gargalo nos Intervalos de Migração Externa Com o objetivo de minimizar o gargalo discutido na Seção 5.1.2, foi modificado o mecanismo de comunicação das Super Ilhas durante os intervalos de Migração Externa. Assim como no gargalo anterior, o modelo híbrido de troca de dados que existia na implementação original foi alterado para utilizar apenas primitivas não blocantes, com o auxílio de listas de requisições em aberto. O objetivo das modificações é manter a evolução nas Super Ilhas enquanto o procedimento de troca de dados entre estas ocorre. Os elementos recebidos das demais Super Ilhas são incorporados à população ao finalizar a troca dos dados, mantendo o compartilhamento das evoluções e não bloqueando o procedimento de evolução durante a comunicação. Nas Micro Ilhas da SIAR, o procedimento de comunicação modificado trabalha de uma forma similar ao inserido na Migração Interna. Os pedidos de envio e recebimento de dados do MAR são feitos com as primitivas assíncronas MPI_ISend e MPI_Irecv, e os manipuladores de cada requisição em aberto são inseridos em uma lista que é checada a cada geração produzida. Enquanto a comunicação é processada, os AGBs das Micro Ilhas continuam o seu processamento. O MAR utiliza a primitiva não blocante MPI_Irecv para fazer as requisições de recebimento de dados das Micro Ilhas ao mesmo tempo, utilizando a MPI_Waitall para só prosseguir quando todas tiverem finalizado. Esse procedimento visa reduzir o custo atribuído a realizar os pedidos de forma sequencial. Um procedimento semelhante ocorre para realizar os pedidos de envio e recebimento de dados das outras Super Ilhas e para retornar os elementos selecionados às Micro Ilhas. Todas as requisições são iniciadas de forma não blocante e processadas de uma vez, após o retorno de MPI_Waitall. O Algoritmo Genético das SIBR evolui a população de uma forma diferente. A cada intervalo de Migração, tanto Interno quanto Externo, as Micro Ilhas enviam toda a sua população para ser agrupada e particionada novamente pelo MBR. Como dito anteriormente, essa etapa síncrona de comunicação entre as Micro Ilhas e o MBR é intrínseca ao modelo e não pôde ser modificada para utilizar totalmente primitivas não blocantes. O que pôde ser melhorado foi a etapa de troca de elementos durante a Migração Externa com as demais Super Ilhas. Durante essa etapa, as requisições para troca de dados feitas pelo MBR foram alteradas para utilizar primitivas assíncronas, de modo que seja possível o MBR processar outras etapas do procedimento enquanto a comunicação é realizada. Dessa forma, enquanto a troca de indivíduos com as outras Super Ilhas acontece, o MBR pode continuar realizando os passos de receber as populações das Micro Ilhas, reagrupar as partes recebidas em alinhamentos válidos, selecionar os melhores, particionar os 46
59 alinhamentos e redistribuir as partes às Micro Ilhas. A modificação tem por objetivo continuar a evolução realizada pelo MBR e pelas Micro Ilhas durante a Migração Externa, incorporando os novos elementos pelo MBR assim que a troca for realizada. Com as mudanças propostas, espera-se que seja reduzido o gargalo decorrente da troca de elementos entre as Super Ilhas, continuando a evolução realizada pelos AGBs enquanto a comunicação acontece. 47
60 Capítulo 6 Resultados Experimentais Para verificar se os tempos de execução dos modelos propostos em [24] foram reduzidos com o mecanismo assíncrono proposto, foram realizados testes com o algoritmo genético sequencial, os AGs tradicionais de Ilha e com as implementações original e modificada do modelo de Injeção de Ilhas. Neste capítulo, será feita a contextualização dos ambientes onde foram realizados a implementação e os testes, sendo apresentados e analisados em seguida os resultados obtidos. 6.1 Ambiente de Implementação e Testes Os binários para teste com as implementações dos algoritmos descritos na Seção 4.4 foram gerados em ANSI C, utilizando o compilador GCC na versão 4.3.3, no sistema operacional GNU/Linux kernel O padrão MPI foi utilizado para a comunicação entre os processos, sendo utilizadas as bibliotecas MPICH, na versão 1.2.7, e OpenMpi, na versão 1.3.2, para diferentes testes. Os testes foram realizados no Laboratório de Informática do Departamento de Ciência da Computação da UnB (LINF), sendo utilizadas ao todo 30 máquinas. As máquinas contam com processadores Intel(R) Core(TM)2 Duo 2.93GHz, com 3MB de cache, 4GB de memória RAM e 160GB de disco rígido. Os computadores são interligados por uma rede Gigabit Ethernet não dedicada. Foram realizadas duas etapas de testes com finalidades diferentes. A primeira segue os moldes dos testes descritos em [24], utilizando as cinco abordagens descritas na Seção 4.4 (seq, p3, p9, i1 e i2) para fazer um comparativo de seus desempenhos. O objetivo deste primeiro teste é verificar se as alterações realizadas conseguiram melhorar os tempos das estratégias paralelas em comparação à estratégia sequencial, que não tinham sido considerados bons. A segunda etapa de testes tem o objetivo de verificar se as alterações de fato melhoraram os tempos de execução com relação à implementação original. A abordagem de Injeção de Ilhas two-way (i2) foi testada em suas versões original e modificada a fim de verificar se o speedup da versão modificada obteve melhores resultados em comparação ao da versão original. Durante uma análise inicial do desempenho dos algoritmos, percebeu-se que a implementação do OpenMpi fornecia um desempenho muito superior ao da implementação do Mpich no que se refere ao tempo total de execução para o algoritmo modificado. A tentativa de utilizar o OpenMpi também na implementação original do algoritmo não foi bem 48
61 sucedida, no entanto. O programa original executando com o OpenMpi sempre entrava em deadlock em um ponto específico do código, o mesmo não acontecendo executando com o Mpich. Especula-se que isso pode ser consequência das diferentes implementações das primitivas de envio e recebimento blocantes das versões do MPI. Não foi conseguida uma solução que resolvesse o problema e, como em [24] a implementação utilizada é de fato o Mpich, nos testes comparativos entre as implementações original e modificada foi utilizado também o Mpich. Para os testes comparativos entre as abordagens, em que somente foi utilizada a versão modificada do algoritmo, foi utilizado o OpenMpi por ter um melhor desempenho para essa implementação. As sequências utilizadas para os testes foram as mesmas utilizadas em [24], as bases reais 1ac5, ttkrsyedq e virul fac. Os parâmetros utilizados para os AGs foram determinados com base nos testes realizados em [24]. O número total de gerações utilizado foi de 5000 gerações, sendo escolhidas para os Intervalos de Migração Interna e Externa 10 e 50 gerações, respectivamente. O tamanho da população foi escolhido de maneira que todas as abordagens tivessem a mesma população total para processar, o que daria uma melhor base para comparação dos tempos de execução e das aptidões obtidas nas mesmas condições. Os testes realizados, bem como os resultados obtidos, serão descritos a seguir. 6.2 Comparativo entre as diferentes estratégias após as modificações Os testes apresentados nessa seção foram realizados com as cinco abordagens de Algoritmos Genéticos para Alinhamento Múltiplo de Sequências descritas na Seção 4.4. As abordagens utilizando estratégias de injeção de ilhas (i1 e i2) foram modificadas para utilizar a comunicação assíncrona proposta no Capítulo 5, sendo utilizada a mesma estrutura modificada para reimplementar as estratégias paralelizadas pelo modelo simples de ilha (p3 e p9). A estratégia sequencial (seq) utilizada nos testes foi a mesma utilizada em [24]. Os resultados dos testes realizados com a base 1ac5 são apresentados na Tabela 6.1. A estratégia i2 obteve resultados melhores tanto no tempo total de execução quanto nos valores de aptidão alcançados com relação às outras estratégias. Em termos de aptidão final, i2 (-308,65) foi 5,58% melhor que o segundo melhor resultado, seq (-326,88), e 9,44% melhor que o pior, i1 (-340,91). Em termos de tempo de execução, i1 (273,44s) e i2 (253,35s) foram bastante superiores às outras estratégias, sendo i2 quase 2 vezes melhor que p9 (504,6s), 3,3 vezes melhor que p3 (831,61s) e 16,9 vezes melhor que seq (4285,52s). Em comparação a seq, p3 e p9 também tiveram ganhos mais compatíveis se comparado aos resultados obtidos em [24], sendo p3 5,2 vezes mais rápido que seq e p9 8,5 vezes mais rápido. A Tabela 6.2 apresenta os resultados dos testes realizados com a base ttkrsyedq. Nesse teste, a abordagem que alcançou o melhor alinhamento final foi seq (192,26), seguida por i2 (168,27), p3 (166,49), p9 (142,89) e i1 (127,05). Quanto ao tempo de execução, no entanto, seq (7675,55s) teve um desempenho 21 vezes pior que i2 (364,48s), 19,8 vezes pior que i1 (387,11s), 11 vezes pior que p9 (696,69s) e 6,5 vezes pior que p3 (1176,76s). Dada a grande diferença de tempo, supõe-se que para um número maior de gerações, as estratégias paralelas poderiam alcançar níveis de aptidão próximos ou até melhores que seq para um tempo de execução igual ou menor. 49
62 Estratégia Processadores Tempo (s) Aptidão Inicial Aptidão Final i ,35-442,87-308,65 i ,44-435,24-340,91 p ,6-438,17-331,98 p ,61-449,73-330,54 seq ,52-482,75-326,88 Tabela 6.1: Resultados dos testes realizados com as diferentes abordagens após as modificações. Foi testada a base 1ac5, com uma população total de 180 indivíduos, para 5000 gerações, utilizando OpenMPI. Estratégia Processadores Tempo (s) Aptidão Inicial Aptidão Final i ,48-187,72 168,27 i ,11-164,81 127,05 p ,69-147,45 142,89 p ,76-102,31 166,49 seq ,55-278,8 192,26 Tabela 6.2: Resultados dos testes realizados com as diferentes abordagens após as modificações. Foi testada a base ttkrsyedq, com uma população total de 180 indivíduos, para 5000 gerações, utilizando OpenMPI. A Tabela 6.3 apresenta os resultados dos testes realizados com a base virul fac. Nesse teste, a estratégia que alcançou o melhor resultado em termos de aptidão foi seq (-704,73), seguida por i2 (-705,84), p9 (-715,24), p3 (-732,93) e i1 (-734,38). Com relação ao tempo de execução, os melhores resultados foram das estratégias i2 (2208,64s) e i1 (2546,64), muito menores que as demais estratégias. A diferença entre os resultados obtidos por seq e i2 foi pequena em termos de aptidão, mas enorme no tempo, o que nos faz acreditar que para um número maior de gerações, i2 poderia facilmente ultrapassar o melhor alinhamento alcançado por seq. Estratégia Processadores Tempo (s) Aptidão Inicial Aptidão Final i ,64-825,96-705,84 i ,64-861,98-734,38 p ,39-715,24 p ,05-826,04-732,93 seq ,11-815,97-704,73 Tabela 6.3: Resultados dos testes realizados com as diferentes abordagens após as modificações. Foi testada a base virul fac, com uma população total de 60 indivíduos, para 5000 gerações, utilizando OpenMPI. 50
63 6.3 Comparativo entre as implementações original e modificada A segunda parte dos testes foi realizada com a abordagem i2, nas versões original e após a implementação do mecanismo assíncrono. Para avaliação do possível ganho de desempenho da versão modificada, foram realizados testes em que foram medidos os tempos totais de execução das duas versões, para um número progressivo de processadores. Dessa forma, foi possível medir-se os speedups relativos, ou seja, a razão entre o tempo para um processador e para n processadores, das duas versões. Essa medida é capaz de nos dar uma idéia do ganho de desempenho obtido por cada versão conforme aumentase o número de processadores. No caso ideal, o speedup é linear, igual ao número de processadores utilizados. Para o algoritmo de injeção de ilhas, que conta com 12 processos, foram realizados testes com 1, 2, 4, 8 e 12 processadores. A Tabela 6.4 apresenta os resultados dos testes realizados com a base 1ac5. Em todos os casos, a versão modificada e assíncrona do algoritmo obteve melhores tempos que a versão original e síncrona. Os ganhos variaram entre 16,3% para 1 processador e 61,5% para 4 processadores, o que representa uma diminuição no melhor caso de 21m08s para 8m08s. Quanto aos resultados de aptidão, os melhores alinhamentos alcançados foram de -324,13 para a versão original executando em 8 processadores e de -326,98 para a versão modificada executando em 4 processadores. No geral, não se pode afirmar que uma versão obteve melhores resultados em termos de aptidão do que a outra, já que observa-se pelos dados da tabela uma variação típica da estratégia heurística. Processadores Implementação Tempo (s) Ganho (%) Aptidão Inicial Aptidão Final 12 Original 641,3 36,1-446,54-329,73 Modificada 409,45-444,09-331,34 8 Original 1017,37 56,2-437,27-324,13 Modificada 445,57-450,44-331,67 4 Original 1267,93 61,5-433,81-341,06 Modificada 487,73-445,4-326,98 2 Original 1786,47 55,2-433,67-333,54 Modificada 799,83-447,59-335,5 1 Original 2068,02 16, ,98 Modificada 1730,62-453,92-337,38 Tabela 6.4: Resultados dos testes realizados com as implementações original e modificada da estratégia i2, na base 1ac5, com uma população total de 180 indivíduos, para 5000 gerações, utilizando Mpich. A partir dos dados da Tabela 6.4, foram calculados os speedups relativos das duas versões de i2, representados na Figura 6.1. Pode-se constatar pelo gráfico que a implementação modificada, apesar de ainda um pouco distante do desempenho ideal representado pelo speedup linear, obteve um ganho bastante significativo se comparado à implementação original do algoritmo. A Tabela 6.5 apresenta os resultados dos testes realizados com a base ttkrsyedq. Para todos os casos a versão modificada obteve ganhos no tempo final de execução, mas em alguns dos cenários os resultados foram muito próximos. No pior caso, para 8 processa- 51
64 12 11 Original Modificada Linear Speedup Processadores Figura 6.1: Speedups relativos das implementações original e modificada da estratégia i2, na base 1ac5, com uma população total de 180 indivíduos, para 5000 gerações. dores, o ganho foi de apenas 0,5%, de 10m52s para 10m49s. O melhor resultado ocorreu para 2 processadores, obtendo-se um ganho de 33,3%, de 28m21s para 18m54s. No que diz respeito aos alinhamentos obtidos, os melhores resultados ocorreram para 4 processadores, em que a implementação original obteve uma aptidão de 194,48, executando por 19m04s, e a modificada 170,4, executando por 12m43s. Dada a significativa diferença no tempo, especula-se que seria possível obter resultados de aptidão próximos ou melhores com o algoritmo modificado executando com mais gerações em um tempo menor do que o conseguido com o algoritmo original. A partir dos dados da Tabela 6.5, foram calculados os speedups relativos das duas versões de i2, representados na Figura 6.2. Para até 4 processadores, a implementação modificada obteve ganhos significativos se comparada à original, ficando mais próxima do desempenho ideal. De 8 processadores em diante os desempenhos foram muito similares, estando a versão modificada um pouco acima. A Tabela 6.6 apresenta os resultados dos testes realizados com a base virul fac. Nesse teste, a versão modificada teve um desempenho pior do que a original para execução em 1 processador, sendo melhor para os outros casos. O melhor desempenho foi obtido com 12 processadores, em que o tempo total foi reduzido de aproximadamente 2h45m para 2h25m21s, um ganho de 11,9%. Quanto aos resultados de aptidão final, os melhores alinhamentos alcançados foram de -629,8 para a versão original executando em 8 processadores e de -634,1 para a versão modificada executando em 4 processadores. As versões se alternaram no que diz respeito aos melhores resultados em termos de aptidão, portanto 52
65 Processadores Implementação Tempo (s) Ganho (%) Aptidão Inicial Aptidão Final 12 Original 630,8 4,5-122,16 163,16 Modificada 602,43-188,33 138,24 8 Original 652,2 0,5-166,4 170,23 Modificada 648,67-94,53 166,91 4 Original 1143,5 33,2-102,01 194,48 Modificada 763,43-154,77 170,4 2 Original 1701,25 33,3-140,46 111,02 Modificada 1134,4-154,47 119,59 1 Original 2343,7 8,3-152,71 145,6 Modificada 2150,33-160,83 160,64 Tabela 6.5: Resultados dos testes realizados com as implementações original e modificada da estratégia i2, na base ttkrsyedq, com uma população total de 180 indivíduos, para 5000 gerações, utilizando Mpich Original Modificada Linear Speedup Processadores Figura 6.2: Speedups relativos das implementações original e modificada da estratégia i2, na base ttkrsyedq, com uma população total de 180 indivíduos, para 5000 gerações. no geral não se pode afirmar que uma versão obteve melhores resultados que a outra. A partir dos dados da Tabela 6.6, foram calculados os speedups relativos das duas versões de i2, representados na Figura 6.3. Pode-se constatar pelo gráfico que a implementação modificada, apesar de ainda distante do desempenho ideal representado pelo speedup linear, obteve ganhos se comparada à implementação original do algoritmo. 53
66 Processadores Implementação Tempo (s) Ganho (%) Aptidão Inicial Aptidão Final 12 Original 9899,7 11,9-843,08-663,96 Modificada ,19-650,28 8 Original 10230,31 9,8-820,85-629,8 Modificada Original 10718,22 7,2-836,61-669,24 Modificada 9951,23-832,06-634,1 2 Original 17267,86 4,8-806,67-654,15 Modificada 16435,67-836,66-666,96 1 Original 30568,99-20,3-846,34-635,96 Modificada 38365,12-835,94-638,84 Tabela 6.6: Resultados dos testes realizados com as implementações original e modificada da estratégia i2, na base virul fac, com uma população total de 180 indivíduos, para 5000 gerações, utilizando Mpich Original Modificada Linear Speedup Processadores Figura 6.3: Speedups relativos das implementações original e modificada da estratégia i2, na base virul fac, com uma população total de 180 indivíduos, para 5000 gerações. 6.4 Discussão Neste capítulo, foram realizados testes para verificar se os tempos de execução dos modelos propostos em [24] seriam reduzidos após a implementação do mecanismo assíncrono proposto no presente trabalho. Esperava-se que os bons resultados de aptidão obtidos com os modelos de injeção de ilhas não fossem afetados após as alterações no modelo de troca de dados. 54
67 Na primeira parte dos testes, as abordagens i2, i1, p3, p9 e seq foram comparadas para determinar se as alterações nas estratégias paralelas resultariam em melhoras no tempo total de execução. Como resultado, foram verificados ganhos significativos nos tempos das estratégias paralelas em relação à estratégia sequencial e das estratégias de injeção de ilhas em relação às estratégias paralelizadas pelo modelo de ilha. A estratégia i2 foi capaz de obter resultados próximos ou até melhores em termos de aptidão para tempos muitas vezes menores que outras estratégias. Nos dois testes em que seq obteve melhores alinhamentos que i2, o algoritmo sequencial precisou de aproximadamente 17 e 21 vezes mais tempo. Para esses casos, especula-se que poderiam ser obtidos alinhamentos tão bons ou até melhores para um tempo menor de execução de i2. Na segunda parte dos testes, foram comparadas as implementações original e modificada de i2 para determinar se o mecanismo implementado possibilitou uma melhora de desempenho. Para medir os desempenhos das duas versões, foram calculados os speedups relativos para 1, 2, 4, 8 e 12 processadores. Em todos os casos, a implementação modificada obteve ganhos nos speedups alcançados, sendo o caso mais expressivo o teste realizado para o conjunto de bases 1ac5, onde o ganho no tempo chegou a 61,5%, o que representa uma redução de 21m08s para 8m08s para o teste com 4 processadores. Apesar das melhorias apresentadas, os speedups da versão modificada ainda ficaram longe de um speedup linear, que seria considerado ideal. Uma possível justificativa para esse fato seria a própria arquitetura do modelo, que não permitiu a implementação total de um mecanismo assíncrono nos Intervalos de Migração Interna das Super Ilhas de Baixa Resolução. Como já discutido na Seção 5.1, esse gargalo é inerente ao modelo de paralelização adotado nas SIBR, que particiona os alinhamentos para serem evoluídos pelas Micro Ilhas e precisa que cada pedaço seja unido às outras partes correspondentes para poder formar alinhamentos válidos novamente. Esse gargalo certamente contribuiu para a perda de desempenho apresentada pelo modelo quando testado para mais processadores. Foi interessante notar ainda a diferença nos resultados obtidos variando-se a implementação do MPI utilizada. Em testes realizados com a estratégia i2, utilizando a base 1ac5, executando em 12 processadores, a implementação modificada rodando com Mpich executou em 6m50s contra 4m13s da implementação executando com OpenMpi. Em termos de aptidão, também foram obtidos resultados melhores, -331,34 executando com Mpich contra -308,65 executando com OpenMpi. O mesmo comparativo pode ser traçado com os testes com a base ttkrsyedq. Para 12 processadores, a versão com Mpich executou em 10m02s, obtendo aptidão final de 138,24, contra 6m05s e aptidão final de 168,27 da versão executando sobre OpenMpi. Não está no escopo deste trabalho fazer um comparativo entre as diferentes implementações do MPI, mas para os testes realizados com o modelo modificado proposto, o OpenMPI obteve resultados significativamente melhores que os obtidos pelo Mpich. 55
68 Capítulo 7 Conclusão e Trabalhos Futuros Neste trabalho de graduação, foi proposto e implementado um mecanismo de comunicação assíncrona para a estratégia de Alinhamento Múltiplo de Sequências com Algoritmo Genético Multi-Ilha, proposta em [24]. O mecanismo foi implementado utilizando primitivas não blocantes do padrão MPI e listas de requisições em aberto. Esse modelo de comunicação assíncrona foi projetado com o objetivo de alcançar melhores resultados nos tempos totais de execução das estratégias de Injeção de Ilhas propostas e também nas abordagens paralelizadas pelo modelo de Ilha utilizadas nos testes comparativos. Esperava-se que os resultados de aptidão alcançados não fossem prejudicados com as mudanças, já que se trata de uma heurística. Os resultados experimentais obtidos em um cluster com 12 processadores, alinhando as sequências reais 1ac5, ttkrsyedq e virul fac, mostraram ganhos significativos de tempo nos comparativos com a implementação original e entre as diferentes abordagens de Algoritmos Genéticos. Em todos os testes realizados, o speedup da implementação modificada ficou acima do speedup original. Além disso, todos os testes comparativos entre as abordagens demonstraram ganhos mais consistentes das estratégias de Injeção de Ilhas em comparação às estratégias de Ilha e sequencial e das estratégias de Ilha em comparação à sequencial. Os resultados de aptidão dos alinhamentos não demonstraram ter havido uma perda no processo de obtenção de uma solução aceitável na estratégia utilizando comunicação assíncrona, tendo sido constatada apenas uma variação natural de um processo heurístico. Testes realizados com a base 1ac5 para as implementações original e modificada de i2 mostraram um ganho de 61,5% no tempo total de execução para o melhor caso, reduzindo o tempo total para 4 processadores de 21m08s para 8m08s. Em testes realizados com as diversas abordagens utilizando a mesma base 1ac5, o tempo de execução de i2 foi 16,9 vezes melhor que seq, quase 2 vezes melhor que p9 e 3,3 vezes melhor que p3. Além disso, o OpenMPI se mostrou muito mais interessante para a execução do algoritmo modificado do que o Mpich. Para o mesmo caso de teste, com a base 1ac5, com a implementação modificada de i2 executando em 12 processadores, o OpenMPI conseguiu um tempo 38,29% e uma aptidão 6,85% melhores que executando com o Mpich. Como trabalhos futuros são sugeridos: Avaliar o desempenho da comunicação dos processos utilizando MPI com ferramentas específicas, como por exemplo o mpip [1]. Dessa forma, seria possível mensurar os tempos gastos com a comunicação e o tempo gasto com a evolução do algorimo. 56
69 Avaliar a estratégia modificada com um número maior de nós de processamento e com um número maior de sequências, também de tamanhos maiores, possibilitando uma melhor avaliação de sua escalabilidade. Realizar testes comparativos com outras estratégias mais estudadas, como o SAGA [29], para determinar as possíveis melhorias introduzidas pela estratégia proposta em [24] e modificada no presente trabalho. 57
70 Referências [1] mpip: Lightweight, scalable mpi profiling. Available at net/. 56 [2] S. F. Altschul, R.J. Carroll, and D. J. Lipman. Weights for data related by a tree. Journal of Molecular Biology, 207: , , 21 [3] S. F. Altschul, W. Gish, W. Miller, E. W. Myers, and D. J. Lipman. Basic local alignment search tool. Journal of Molecular Biology, 215(3): , [4] A. Bateman, E. Birney, L. Cerruti, R. Durbin, L. Etwiller, S. Eddy, S. Griffiths- Jones, K. Howe, M. Marshall, and E. Sonnhammer. The Pfam Protein Families Database. Nucleic Acids Research, 30(1): , January Available at http: // 37 [5] T. Blickle and L. Thiele. A comparison of selection schemes used in evolutionary algorithms. Evolutionary Computation, 4(4): , [6] M. Brudno, Chapman M., B. Göttgens, S. Batzoglou, and B. Morgenstern. Fast and sensitive multiple alignment of large genomic sequences. BMC Bioinformatics, 4:66, [7] E. Cantú-Paz. A survey of parallel genetic algorithms. Calculateurs Parallèles, Réseaux et Systèmes Répartis, 10(2): , [8] E. Cantú-Paz. Implementing fast and flexible parallel genetic algorithms. Pratical Handbook of Genetic Algorithms, 3:65-84, [9] A. Corcos and F. Monaghan. Gregor Mendel s experiments on plant hybrids: a guided study. Masterworks of Discovery. Rutgers University Press, [10] C. Darwin. A Origem das Espécies e a Seleção Natural. Hemus, [11] L. Davis. Handbook of Genetic Algorithms. Van Nostrand Reinhold, [12] M. O. Dayhoff and R. M. Schwartz. Chapter 22: A model of evolutionary change in proteins. In in Atlas of Protein Sequence and Structure, , 35 [13] R. Durbin, S. Eddy, A. Krogh, and G. Mitchison. Biological sequence analysis: probabilistic models of proteins and nucleic acids. Cambridge Univ, , 12, 19, 20, 21, 22, 23 58
71 [14] D. F. Feng and R. F. Doolittle. Progressive sequence alignment as a prerequisite to correct phylogenetic trees. J. Mol. Evol., 25(4): , [15] W. Stach; Group for Intelligent Processing of Data Seminar Series. Speeding up genetic algorithms: parallel approach. University of Alberta, vii, 10, 11 [16] D. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison-Wesley, [17] D. Goldberg and K. Deb. A comparative analysis of selection schemes used in genetic algorithms. In Proceedings of Foundations of Genetic Algorithms, p , [18] D. Gusfield. Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. Cambridge University Press, , 13, 14, 18, 19 [19] S. Henikoff and J. G. Henikoff. Amino acid substitution matrices from protein blocks. Proceedings Of The National Academy Of Science USA, 89(22): , [20] D. Higgins and P. Sharp. Clustal: a package for performing multiple sequence alignment on a microcomputer. Gene, 73(1): , [21] J. Holland. Adaptation in Natural and Artificial Systems. University of Michigan Press, [22] K. A. De Jong. An analysis of the behavior of a class of genetic adaptive systems. PhD thesis, Computer and Communication Sciences, University of Michigan, [23] Z. Michalewicz. Genetic Algorithms + Data Structures = Evolution Programs. Springer-Verlag, , 3, 4, 5, 7, 8, 9 [24] L. Miranda. Estratégia paralela para alinhamento múltiplo de sequências com algoritmo genético multi-ilha. Master s thesis, Departamento de Ciência da Computação, UnB, iii, iv, vii, viii, ix, 2, 7, 23, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 42, 48, 49, 54, 56, 57 [25] B. Morgenstern, K. Frech, A. Dress, and T. Werner. Dialign: finding local similarities by multiple sequence alignment. Bioinformatics, 14: , , 23, 25 [26] D. W. Mount. Bioinformatics: Sequence and Genome Analysis. Cold Spring Harbor Laboratory Press, vii, 1, 12, 13, 14, 15, 16, 20, 21, 22, 23, 25 [27] S. B. Needleman and C. D. Wunsch. A general method applicable to the search for similarities in the amino acid sequence of two proteins. Journal of Molecular Biology, 48: , [28] A. Neuwald and J. Liu. Gibbs motif sampling: detection of bacterial outer membrane protein repeats. Protein Science, 4: , [29] C. Notredame and D. G. Higgins. Saga: sequence alignment by genetic algorithm. Nucleic Acids Res., 24(8): , vii, 19, 23, 25, 26, 57 59
72 [30] C. Notredame, D.G. Higgins, and J. Heringa. T-coffee: A novel method for fast and accurate multiple sequence alignment. Journal of Molecular Biology, 302: , vii, 19, 21, 23, 24 [31] C. Papadimitriou. Computational Complexity. Addison-Wesley, [32] W. R. Pearson and D. J. Lipman. Improved tools for biological sequence comparison. Proceedings Of The National Academy Of Science USA, 85(8): , [33] E. Sinha and B. Minsker. Multiscale island injection genetic algorithms for groundwater remediation. Advances in Water Resources, 30(9): , vii, 27, 28, 29 [34] G. Sywerda. Uniform crossover in genetic algorithms. In Proceedings of the third international conference on Genetic algorithms, pages 2 9. Morgan Kaufmann Publishers Inc., [35] J. Thompson, D. Higgins, and T. Gibson. CLUSTAL W: improving the sensitivity of progressive multiple sequence alignment through sequence weighting, positionspecific gap penalties and weight matrix choice. Nucleic Acids Research, 22: , , 21, 22 [36] J. Thompson, F. Plewniak, and O. Poch. Balibase: a benchmark alignment database for the evaluation of multiple alignment programs. Bioinformatics, 15(1):87 88, Available at html. 37 [37] L. Wang and T. Jiang. On the complexity of multiple sequence alignment. Journal of computational biology : a journal of computational molecular cell biology, 1(4): , , 20 [38] M. S. Waterman and T. F. Smith. Identification of common molecular subsequences. Journal of Molecular Biology, 147: , , 17 [39] K. Yan and Y. Lu. Sidelobe reduction in array-pattern synthesis using genetic algorithm. Antennas and Propagation, IEEE Transactions, 45(7): ,
Algoritmos Genéticos
UNIVERSIDADE PRESBITERIANA MACKENZIE Laboratório de Computação Natural LCoN I ESCOLA DE COMPUTAÇÃO NATURAL Algoritmos Genéticos Rafael Xavier e Willyan Abilhoa Outubro/2012 www.computacaonatural.com.br
Complemento IV Introdução aos Algoritmos Genéticos
Complemento IV Introdução aos Algoritmos Genéticos Esse documento é parte integrante do material fornecido pela WEB para a 2ª edição do livro Data Mining: Conceitos, técnicas, algoritmos, orientações e
ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA
136 ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA FILITTO, Danilo 1 Resumo: Os algoritmos Genéticos inspiram-se no processo de evolução natural e são utilizados para resolver problemas de busca e otimização
INF 1771 Inteligência Artificial
Edirlei Soares de Lima INF 1771 Inteligência Artificial Aula 04 Algoritmos Genéticos Introdução Algoritmos genéticos são bons para abordar espaços de buscas muito grandes e navegálos
CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves
CAP 254 CAP 254 Otimização Combinatória Professor: Dr. L.A.N. Lorena Assunto: Metaheurísticas Antonio Augusto Chaves Conteúdo C01 Simulated Annealing (20/11/07). C02 Busca Tabu (22/11/07). C03 Colônia
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem
ALGORITMOS GENÉTICOS
ALGORITMOS GENÉTICOS INTRODUÇÃO São métodos adaptativos que podem ser usados para resolver problemas de busca e otimização. Na natureza a combinação de boas características provenientes de diferentes indivíduos
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Balanceamento de Carga
40 4. Balanceamento de Carga Pode-se entender por balanceamento de carga uma política a ser adotada para minimizar tanto a ociosidade de utilização de alguns equipamentos quanto a super utilização de outros,
PLANEJAMENTO DA MANUFATURA
58 FUNDIÇÃO e SERVIÇOS NOV. 2012 PLANEJAMENTO DA MANUFATURA Otimizando o planejamento de fundidos em uma linha de montagem de motores (II) O texto dá continuidade à análise do uso da simulação na otimização
2 Atualidade de uma base de dados
2 Atualidade de uma base de dados Manter a atualidade de uma base de dados é um problema que pode ser abordado de diferentes maneiras. Cho e Garcia-Molina [CHO] definem esse problema da seguinte forma:
Analise filogenética baseada em alinhamento de domínios
Analise filogenética baseada em alinhamento de domínios Moléculas biológicas e evolução Como já foi comentado anteriormente sabemos que o DNA de qualquer espécie de ser vivo sofre mutações ao longo do
4 Segmentação. 4.1. Algoritmo proposto
4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças
Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu
1 Programação Não Linear Aula 25: Programação Não-Linear - Funções de Uma única variável Mínimo; Mínimo Global; Mínimo Local; Optimização Irrestrita; Condições Óptimas; Método da Bissecção; Método de Newton.
Algoritmos e Estrutura de Dados III. Árvores
Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas
Arquiteturas RISC. (Reduced Instructions Set Computers)
Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina
2 Diagrama de Caso de Uso
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa
Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste
Unidade VI Validação e Verificação de Software Teste de Software Profa. Dra. Sandra Fabbri Conteúdo Técnicas de Teste Funcional Estrutural Baseada em Erros Estratégias de Teste Teste de Unidade Teste de
A Otimização Colônia de Formigas
A Otimização Colônia de Formigas Estéfane G. M. de Lacerda Departamento de Engenharia da Computação e Automação UFRN 22/04/2008 Índice A Inspiração Biológica O Ant System Aplicado ao PCV O Ant System Aplicado
COMO EXPLORAR OS BENEFÍCIOS DOS INDICADORES DE DESEMPENHO NA GESTÃO DE UM CSC. Lara Pessanha e Vanessa Saavedra
COMO EXPLORAR OS BENEFÍCIOS DOS INDICADORES DE DESEMPENHO NA GESTÃO DE UM CSC Lara Pessanha e Vanessa Saavedra A utilização de indicadores de desempenho é uma prática benéfica para todo e qualquer tipo
Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão [email protected]
Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão [email protected] Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão
Introdução à genética quantitativa usando os recursos do R
Introdução à genética quantitativa usando os recursos do R Marisa R. Cantarino 1 Julia M. P. Soler (orientadora) 2 1 Introdução Um dos principais desafios da pesquisa genética atualmente é estabelecer
4 Arquitetura básica de um analisador de elementos de redes
4 Arquitetura básica de um analisador de elementos de redes Neste capítulo é apresentado o desenvolvimento de um dispositivo analisador de redes e de elementos de redes, utilizando tecnologia FPGA. Conforme
Capítulo 2 Endogamia. Acasalamentos Preferenciais. Introdução
Capítulo 2 Endogamia Acasalamentos Preferenciais Introdução No capítulo anterior foi demonstrado que se os acasalamentos forem aleatórios, as populações têm proporções genotípicas equivalentes às calculadas
ESTUDO PRELIMINAR SOBRE A ESCALABILIDADE DE UM ALGORITMO GENÉTICO PARALELIZADO COM OPENMP. Mateus Fontoura Gomes da Rosa Márcia C.
ESTUDO PRELIMINAR SOBRE A ESCALABILIDADE DE UM ALGORITMO GENÉTICO PARALELIZADO COM OPENMP Mateus Fontoura Gomes da Rosa Márcia C. Cera Roteiro Introdução Problema de Roteamento de Veículos Objetivos da
Árvores Binárias de Busca
Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda
Busca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.
1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às
Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto
Gerenciamento de Projetos Modulo II Ciclo de Vida e Organização do Projeto Prof. Walter Cunha [email protected] http://waltercunha.com PMBoK Organização do Projeto Os projetos e o gerenciamento
1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP
1 INTRODUÇÃO Devido ao crescimento da Internet, tanto do ponto de vista do número de usuários como o de serviços oferecidos, e o rápido progresso da tecnologia de comunicação sem fio (wireless), tem se
Notas da Aula 17 - Fundamentos de Sistemas Operacionais
Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.
Pesquisa Sequencial e Binária. Introdução à Programação SI2
Pesquisa Sequencial e Binária Introdução à Programação SI2 3 Contexto Diferentes estratégias para pesquisa (busca) de um elemento específico em um conjunto de dados. Lista, array, coleção Operação importante,
Pós-Graduação em Gerenciamento de Projetos práticas do PMI
Pós-Graduação em Gerenciamento de Projetos práticas do PMI Planejamento do Gerenciamento das Comunicações (10) e das Partes Interessadas (13) PLANEJAMENTO 2 PLANEJAMENTO Sem 1 Sem 2 Sem 3 Sem 4 Sem 5 ABRIL
Inteligência Computacional Aplicada a Engenharia de Software
Inteligência Computacional Aplicada a Engenharia de Software Estudo de caso III Prof. Ricardo de Sousa Britto [email protected] Introdução Em alguns ambientes industriais, pode ser necessário priorizar
Pisa 2012: O que os dados dizem sobre o Brasil
Pisa 2012: O que os dados dizem sobre o Brasil A OCDE (Organização para Cooperação e Desenvolvimento Econômico) divulgou nesta terça-feira os resultados do Programa Internacional de Avaliação de Alunos,
Engenharia de Software III
Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf ([email protected]) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,
Sistemas Operacionais
Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário
Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão [email protected]
Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução Prof. Humberto Brandão [email protected] aula disponível no site: http://www.bcc.unifal-mg.edu.br/~humberto/ Universidade Federal de
O DNA é formado por pedaços capazes de serem convertidos em algumas características. Esses pedaços são
Atividade extra Fascículo 2 Biologia Unidade 4 Questão 1 O DNA é formado por pedaços capazes de serem convertidos em algumas características. Esses pedaços são chamados de genes. Assinale abaixo quais
Busca Estocástica Baseada em Planejamento para Maximizar Metas em Jogos de RTS
Busca Estocástica Baseada em Planejamento para Maximizar Metas em Jogos de RTS Autor:Thiago França Naves 1, Orientador: Carlos Roberto Lopes 1 1 Programa de Pós-Graduação em Ciência da Computação Universidade
CHECK - LIST - ISO 9001:2000
REQUISITOS ISO 9001: 2000 SIM NÃO 1.2 APLICAÇÃO A organização identificou as exclusões de itens da norma no seu manual da qualidade? As exclusões são relacionadas somente aos requisitos da sessão 7 da
MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior
MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de
ISO/IEC 12207: Gerência de Configuração
ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que
SISTEMAS DISTRIBUÍDOS
SISTEMAS DISTRIBUÍDOS Comunicação coletiva Modelo Peer-to-Peer Slide 6 Nielsen C. Damasceno Introdução Os modelos anteriores eram realizado entre duas partes: Cliente e Servidor. Com RPC e RMI não é possível
3 ALGORITMOS GENÉTICOS : CONCEITOS BÁSICOS E EXTENSÕES VINCULADAS AO PROBLEMA DE MINIMIZAÇÃO DE PERDAS
3 ALGORITMOS GENÉTICOS : CONCEITOS BÁSICOS E EXTENSÕES VINCULADAS AO PROBLEMA DE MINIMIZAÇÃO DE PERDAS 3.1 - Conceitos Básicos Entendemos como algoritmo um conjunto predeterminado e bem definido de regras
Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados
Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados Prof. Humberto Brandão [email protected] Universidade Federal de Alfenas Departamento de Ciências
Pesquisa Etnográfica
Pesquisa Etnográfica Pesquisa etnográfica Frequentemente, as fontes de dados têm dificuldade em dar informações realmente significativas sobre a vida das pessoas. A pesquisa etnográfica é um processo pelo
Como Selecionar Projetos Seis Sigma
Como Selecionar Projetos Seis Sigma Cristina Werkema Etapas do processo de seleção A definição dos projetos a serem desenvolvidos pelos Black Belts e Green Belts é uma das atividades mais importantes do
Arquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Uma visão de Intratabilidade, Classes P e NP - redução polinomial - NP-completos e NP-difíceis Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com
SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA
SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis
1. Introdução. 1.1 Introdução
1. Introdução 1.1 Introdução O interesse crescente dos físicos na análise do comportamento do mercado financeiro, e em particular na análise das séries temporais econômicas deu origem a uma nova área de
)HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR
6LPXODomR GH6LVWHPDV )HUUDPHQWDV &RPSXWDFLRQDLV SDUD 6LPXODomR #5,6. Simulador voltado para análise de risco financeiro 3RQWRV IRUWHV Fácil de usar. Funciona integrado a ferramentas já bastante conhecidas,
CONCURSO PÚBLICO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI ANALISTA DE GESTÃO RESPOSTAS ESPERADAS PRELIMINARES
CELG DISTRIBUIÇÃO S.A EDITAL N. 1/2014 CONCURSO PÚBLICO ANALISTA DE GESTÃO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI RESPOSTAS ESPERADAS PRELIMINARES O Centro de Seleção da Universidade Federal de Goiás
Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho
20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam
AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário
3 Classificação. 3.1. Resumo do algoritmo proposto
3 Classificação Este capítulo apresenta primeiramente o algoritmo proposto para a classificação de áudio codificado em MPEG-1 Layer 2 em detalhes. Em seguida, são analisadas as inovações apresentadas.
6 Construção de Cenários
6 Construção de Cenários Neste capítulo será mostrada a metodologia utilizada para mensuração dos parâmetros estocásticos (ou incertos) e construção dos cenários com respectivas probabilidades de ocorrência.
MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS
MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS Quando falamos em arquitetura, normalmente utilizamos esse termo para referenciar a forma como os aplicativos computacionais são estruturados e os hardwares
Problemas Multi-modais e Distribuições Espaciais em Algoritmos Genéticos.
Problemas Multi-modais e Distribuições Espaciais em Algoritmos Genéticos. Thiago da Mota Souza Coordenação de Pós-Graduação e Pesquisa de Engenharia Centro de Tecnologia Universidade Federal do Rio de
Árvores Binárias Balanceadas
Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos os links vazios
Memória Cache. Prof. Leonardo Barreto Campos 1
Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.
Abordagem de Processo: conceitos e diretrizes para sua implementação
QP Informe Reservado Nº 70 Maio/2007 Abordagem de Processo: conceitos e diretrizes para sua implementação Tradução para o português especialmente preparada para os Associados ao QP. Este guindance paper
ESTRUTURAS DE DADOS II
ESTRUTURAS DE DADOS II Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Conteúdo Programático 1. Introdução
Uma Heurística para o Problema de Redução de Padrões de Corte
Uma Heurística para o Problema de Redução de Padrões de Corte Marcelo Saraiva Limeira INPE/LAC e-mail: [email protected] Horacio Hideki Yanasse INPE/LAC e-mail: [email protected] Resumo Propõe-se um
DESENVOLVIMENTO DE UM SOFTWARE NA LINGUAGEM R PARA CÁLCULO DE TAMANHOS DE AMOSTRAS NA ÁREA DE SAÚDE
DESENVOLVIMENTO DE UM SOFTWARE NA LINGUAGEM R PARA CÁLCULO DE TAMANHOS DE AMOSTRAS NA ÁREA DE SAÚDE Mariane Alves Gomes da Silva Eliana Zandonade 1. INTRODUÇÃO Um aspecto fundamental de um levantamento
Quadro de consulta (solicitação do mestre)
Introdução ao protocolo MODBUS padrão RTU O Protocolo MODBUS foi criado no final dos anos 70 para comunicação entre controladores da MODICON. Por ser um dos primeiros protocolos com especificação aberta
ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10
ORGANIZAÇÃO DE COMPUTADORES MÓDULO 10 Índice 1. A Organização do Computador - Continuação...3 1.1. Memória Primária - II... 3 1.1.1. Memória cache... 3 1.2. Memória Secundária... 3 1.2.1. Hierarquias de
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:
Projeto Incubadora no SecondLife
Projeto Incubadora no SecondLife Motivação do Projeto Ilhas de produção de conteúdo de qualidade no Second Life Um dos problemas encontrados atualmente na Internet é a enorme quantidade de conteúdos de
Introdução a Gerenciamento de Projetos Prof. MSc. Fábio Assunção
Introdução a Gerenciamento de Projetos Prof. MSc. Fábio Assunção Um projeto é um esforço temporário realizado para criar um produto ou serviço único. Ou seja, é desenvolvido a partir de uma ideia, progredindo
Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em um projeto.
Discussão sobre Nivelamento Baseado em Fluxo de Caixa. Item aberto na lista E-Plan Podemos encontrar uma figura interessante no PMBOK (Capítulo 7) sobre a necessidade de organizarmos o fluxo de caixa em
SUMÁRIO. Introdução... 3
SUMÁRIO Introdução..................................... 3 1 Consultas por Similaridade e Espaços métricos............. 5 1.1 Consultas por abrangência e consultas aos k-vizinhos mais próximos... 5 1.2
Gerenciamento de Riscos do Projeto Eventos Adversos
Gerenciamento de Riscos do Projeto Eventos Adversos 11. Gerenciamento de riscos do projeto PMBOK 2000 PMBOK 2004 11.1 Planejamento de gerenciamento de riscos 11.1 Planejamento de gerenciamento de riscos
IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI [email protected]
IA: Problemas de Satisfação de Restrições Prof. Msc. Ricardo Britto DIE-UFPI [email protected] Introdução Um PSR é definido por um conjunto de variáveis X 1, X 2,..., X n, e por um conjunto de restrições,
Organização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números
Simulação Transiente
Tópicos Avançados em Avaliação de Desempenho de Sistemas Professores: Paulo Maciel Ricardo Massa Alunos: Jackson Nunes Marco Eugênio Araújo Dezembro de 2014 1 Sumário O que é Simulação? Áreas de Aplicação
MÓDULO 6 INTRODUÇÃO À PROBABILIDADE
MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para
BARRAMENTO DO SISTEMA
BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade
Análise e Projeto de Software
Análise e Projeto de Software 1 Mundo Real Modelagem Elicitação Análise Problemas Soluções Gap Semântico Mundo Computacional Elicitação de Requisitos Análise de Requisitos Modelagem dos Requisitos 2 Projeto
PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA. 09/abril de 2014
PÓS GRADUAÇÃO EM CIÊNCIAS DE FLORESTAS TROPICAIS-PG-CFT INSTITUTO NACIONAL DE PESQUISAS DA AMAZÔNIA-INPA 09/abril de 2014 Considerações Estatísticas para Planejamento e Publicação 1 Circularidade do Método
MUDANÇAS NA ISO 9001: A VERSÃO 2015
MUDANÇAS NA ISO 9001: A VERSÃO 2015 Está em andamento o processo de revisão da Norma ISO 9001: 2015, que ao ser concluído resultará na mudança mais significativa já efetuada. A chamada família ISO 9000
Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Sistemas de Gestão Ambiental O QUE MUDOU COM A NOVA ISO 14001:2004
QSP Informe Reservado Nº 41 Dezembro/2004 Sistemas de Gestão O QUE MUDOU COM A NOVA ISO 14001:2004 Material especialmente preparado para os Associados ao QSP. QSP Informe Reservado Nº 41 Dezembro/2004
2. Representação Numérica
2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos
ANÁLISE DOS RESULTADOS DOS PROGRAMAS DE APOIO ÀS PMEs NO BRASIL Resumo Executivo PARA BAIXAR A AVALIAÇÃO COMPLETA: WWW.IADB.
ANÁLISE DOS RESULTADOS DOS PROGRAMAS DE APOIO ÀS PMEs NO BRASIL Resumo Executivo PARA BAIXAR A AVALIAÇÃO COMPLETA: WWW.IADB.ORG/EVALUATION ANÁLISE DOS RESULTADOS DOS PROGRAMAS DE APOIO ÀS PMEs NO BRASIL
a 1 x 1 +... + a n x n = b,
Sistemas Lineares Equações Lineares Vários problemas nas áreas científica, tecnológica e econômica são modelados por sistemas de equações lineares e requerem a solução destes no menor tempo possível Definição
Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi
Metodologias de Desenvolvimento de Sistemas Analise de Sistemas I UNIPAC Rodrigo Videschi Histórico Uso de Metodologias Histórico Uso de Metodologias Era da Pré-Metodologia 1960-1970 Era da Metodologia
Projeto de Sistemas I
Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:[email protected] Requisitos: base para todo projeto, definindo o
Introdução às Redes Neurais Artificiais
Introdução às Redes Neurais Artificiais Treinamento via Algoritmos Genéticos Prof. João Marcos Meirelles da Silva http://www.professores.uff.br/jmarcos Departamento de Engenharia de Telecomunicações Escola
Planejamento - 7. Planejamento do Gerenciamento do Risco Identificação dos riscos. Mauricio Lyra, PMP
Planejamento - 7 Planejamento do Gerenciamento do Risco Identificação dos riscos 1 O que é risco? Evento que representa uma ameaça ou uma oportunidade em potencial Plano de gerenciamento do risco Especifica
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.
Computação Paralela Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Desenvolvimento de Aplicações Paralelas Uma Metodologia
Modelagem e Simulação Material 02 Projeto de Simulação
Modelagem e Simulação Material 02 Projeto de Simulação Prof. Simão Sirineo Toscani Projeto de Simulação Revisão de conceitos básicos Processo de simulação Etapas de projeto Cuidados nos projetos de simulação
Qualificação de Procedimentos
Qualificação de Procedimentos Os equipamentos em geral são fabricados por meio de uniões de partes metálicas entre si empregando-se soldas. Há, portanto a necessidade de se garantir, nestas uniões soldadas,
Decidir como medir cada característica. Definir as características de qualidade. Estabelecer padrões de qualidade
Escola de Engenharia de Lorena - EEL Controle Estatístico de Processos CEP Prof. MSc. Fabrício Maciel Gomes Objetivo de um Processo Produzir um produto que satisfaça totalmente ao cliente. Conceito de
Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14
1 Introdução O termo "roteamento de veículos" está relacionado a um grande conjunto de problemas de fundamental importância para a área de logística de transportes, em especial no que diz respeito ao uso
Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido
Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura
4 Avaliação Econômica
4 Avaliação Econômica Este capítulo tem o objetivo de descrever a segunda etapa da metodologia, correspondente a avaliação econômica das entidades de reservas. A avaliação econômica é realizada a partir
