• Nenhum resultado encontrado

Algoritmo evolutivo centrado nos genes

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmo evolutivo centrado nos genes"

Copied!
77
0
0

Texto

(1)

Universidade de Trás-Os-Montes e Alto Douro

Algoritmo evolutivo centrado nos genes

Dissertação de Mestrado em Engenharia Eletrotécnica e de Computadores

António André de Castro Fernandes

Sobre orientação do Professor Doutor

Paulo Alexandre Cardoso Salgado

(2)

1

Universidade de Trás-Os-Montes e Alto Douro

Algoritmo evolutivo centrado nos genes

Dissertação de Mestrado em Engenharia Eletrotécnica e de Computadores

António André de Castro Fernandes

Sobre orientação do Professor Doutor

Paulo Alexandre Cardoso Salgado

Composição do Júri:

Dr. João Agostinho Batista de Lacerda Pavão Dr. Getúlio Paulo Peixoto Igrejas

Dr. Paulo Alexandre Cardoso Salgado

(3)

2

Indicação sobre a responsabilidade pessoal das ideias

apresentadas

Certifico ser o único autor desta tese e que nenhuma parte desta tese foi publicada ou submetida para publicação.

Certifico ainda que, tanto quanto é do meu conhecimento, a minha tese não infringe os direitos autorais de ninguém nem viola quaisquer direitos de propriedade e que quaisquer ideias, técnicas, citações, ou qualquer outro material do trabalho de outras pessoas incluídas na minha tese, publicados ou de outro modo, são totalmente reconhecidos em conformidade com as normas de práticas de referência.

Declaro que a presente é cópia fiel da minha tese, incluindo quaisquer revisões finais, como aprovado pela minha comissão de tese e do escritório de Pós-Graduação, e que esta tese não foi submetida a um grau mais elevado de qualquer outra universidade ou instituição.

(4)

3

Agradecimentos

Em primeiro lugar aos meus pais, que me apoiaram financeiramente e emocionalmente e que sem eles, nada disto seria possível.

À minha irmã e ao meu cunhado por celebrarem as pequenas vitórias comigo mesmo que não fossem assim tão extraordinárias, mas que me ajudaram e motivaram a continuar a escrever a dissertação, encorajando-me até mesmo quando as coisas não corriam bem.

Ao meu grande amigo João Martins com quem sempre pude contar e que me ajudou em tudo o que podia nomeadamente, encorajamento, conselhos e nos processos burocráticos da tese. Tal se revelou ser fundamental dado me encontrar a estagiar no Porto na altura da concepção desta tese, sendo que o fato de poder ter contado com a ajuda dele facilitou o processo de entrega sem ter sido necessária a minha deslocação a Vila Real para o mesmo.

Agradeço à minha namorada Ana Sofia, que compreendeu o fato de haver momentos em que não podia estar com ela devido a ter de terminar a tese ou até mesmo devido ao fato de estar cansado após um dia de trabalho seguido de 2-3 horas a trabalhar na tese. Em todos os momentos soube motivar e ajudar em tudo o que julgou poder facilitar e proporcionar mais espaço e tempo para que eu pudesse finalizar este trabalho. Esteve assim sempre presente nos meus sucessos e nos meus fracassos, oferecendo sempre o seu apoio e amor.

Agradeço ao meu orientador pela sua postura amiga e paciente que possibilitou a interação necessária e o ambiente certo para descobrir o rumo a tomar para este estudo. Também me motivou e despertou o interesse em novos temas, tendo sempre em conta o fato de me encontrar a estagiar e de não possuir muito tempo para nos reunirmos em Vila Real, chegando mesmo a sugerir a possibilidade de se efetuarem reuniões por videoconferência.

Por último, gostaria de agradecer a todos os que ajudaram na execução desta dissertação por mais pequena que fosse essa ajuda agradeço-vos do fundo do coração.

(5)

4

Resumo

Todas as espécies biológicas, nas suas diferentes formas microbianas, animal ou vegetal, estão sujeitas a processos de evolução que resulta da luta continuada pela sobrevivência, na melhoria das suas capacidades de integração no seu ecossistema, no aperfeiçoamento das suas capacidades em se adaptar ao meio ambiente e às suas perturbações, por vezes na forma de cataclismos, mas também de assegurar a transmissão dos seus genes às gerações seguintes. O seu estado presente como espécie é fruto da evolução que nunca parou de acontecer desde que o elemento primário da vida se despoletou na Terra, aproximadamente entre 3,5 a 3,8 mil milhões de anos atrás.

A evolução é a mudança nas características hereditárias das populações biológicas ao longo das gerações sucessivas. Os processos evolutivos dão origem à biodiversidade em todos os níveis da organização biológica, incluindo os níveis de espécies, organismos individuais e moléculas.

A transposição deste mecanismo para o mundo dos computadores levou ao desenvolvimento do designado algoritmo genético (AG). Este algoritmo é do tipo meta-heurístico de inspiração no processo de seleção natural, fazendo parte de uma classe maior designada de algoritmos evolutivos (AE). Algoritmos genéticos são tipicamente usados para gerar soluções de alta qualidade para otimização e problemas de pesquisa, confiando em operadores de inspiração biológicos ligados à seleção e reprodução, como sejam a mutação, cruzamento e seleção.

Este trabalho tem como objetivo principal contribuir na linha dos algoritmos genéticos com o desenvolvimento de uma abordagem paralela em duas frentes: a evolução geracional dos indivíduos em multipopulações com a existência de processos migratórios e a evolução de genes, tomando-os como entidades passíveis de se envolverem num processo evolutivo. O paradigma norteador deste trabalho visa explorar a simultaneidade de um processo evolutivo focalizado em duas entidades no indivíduo e nos genes.

O foco secundário e complementar, por poder-se revelar computacionalmente eficiente, está na estrutura de paralelização, ou seja, o modelo de algoritmo genético paralelo. A arquitetura modelada é baseada nos conceitos de programação orientada a objetos e explora

(6)

5 o paralelismo de sistemas de multiprocessadores ao mesmo tempo que permite a distribuição através de uma rede de workstations.

O algoritmo genético paralelo está modelado segundo o conceito de populações cooperantes, coordenadas por um nó central. Nesse modelo, cada máquina é responsável por processar uma população com N indivíduos. A troca de informação genética entre populações é realizada através da migração de indivíduos, alocados fisicamente a cada máquina. Os indivíduos foram modelados como unidades autónomas com a responsabilidade da aplicação dos operadores de crossover e mutação. Cada indivíduo é também responsável pela determinação da sua aptidão. Esta perspetiva torna simples a exploração do paralelismo encontrado nos sistemas multiprocessados.

A hipótese defendida indica que um conjunto de populações cooperantes, executando em paralelo, equivale a uma grande população. Para avaliar o desempenho desta nova abordagem, foram realizados testes utilizando um algoritmo para simular o ambiente distribuído e o paralelismo dos sistemas multiprocessados, através de programação concorrente.

Foram usados dois exemplos de teste e validação do algoritmo. Os resultados obtidos evidenciam a virtude do paralelismo do algoritmo genético multipopulacional, na perspetiva da evolução conjunta e concorrente dos indivíduos e dos seus genes.

(7)

6

Abstract

All biological species, in their different microbial forms, animal or plant, subject to evolutionary processes that result from the continuous struggle for survival, in the improvement of their capacity of integration in their ecosystem, on the improvement of their capacities in adapting to the environment and their disruptions, sometimes in the form of cataclysms, but also to ensure a transmission of their genes to subsequent generations. Its state is the fruit of evolution that has never stopped happening since the primary element of life sprang on Earth, about 3.5 to 3.8 billion years ago.

Evolution is the change in the hereditary characteristics of biological populations over successive generations. Evolutionary processes give rise to biodiversity at all levels of the biological organization, including levels of species, individual organisms and molecules.

The transposition of this mechanism to the world of computers led to the development of the so-called genetic algorithm (GA). This algorithm is of the metaheuristic type of inspiration in the natural selection process, being part of a larger class called evolutionary algorithms (EA). Genetic algorithms are typically used to generate high-quality solutions for optimization and research problems, relying on biological inspiration operators linked to selection and reproduction, such as mutation, crossover, and selection.

The main objective of this work is to contribute with the development of a parallel approach on two fronts: the generational evolution of individuals in multipopulations with the existence of migratory processes; The evolution of genes, taking them as entities that can be involved in an evolutionary process. The guiding paradigm of this work aims to explore the simultaneity of an evolutionary process focused on two entities in the individual and genes.

The secondary and complementary focus, because it can be computationally efficient, is in the structure parallelization, that is, the parallel genetic algorithm model. The modeling architecture is based on the concepts of object-oriented programming and exploits the parallelism of multiprocessor systems while allowing distribution across a network of workstations.

(8)

7

The parallel genetic algorithm has modeled according to the concept of cooperating populations, coordinated by a central node. In this model, each machine is responsible for processing a population with N individuals. The exchange of genetic information among populations is accomplished through the migration of individuals, physically allocated to each machine. Individuals were modeled as autonomous units with responsibility for the application of crossover and mutation operators. Each individual is also responsible for determining their fitness. This perspective makes it simple to explore the parallelism found in multiprocessor systems.

The hypothesis advocated indicates that a set of cooperating populations, running in parallel, is equivalent to a large population. To evaluate the performance of this new approach, tests were performed using an algorithm to simulate the distributed environment and the parallelism of the multiprocessor systems, through concurrent programming.

Two tests and validation algorithm samples were used. The results obtained evidenced the virtue of the parallelism of the multipopulation genetic algorithm, in the perspective of the grouped and concurrent evolution of individuals and their genes.

(9)

8

Índice

1. Introdução ... 14 1.1 Computação evolutiva ... 14 1.2 Motivação ... 16 1.3 Objetivos ... 18 1.4. Estrutura da dissertação ... 19 1.5. Contributos ... 20

2. Algoritmo genético Multipopulacional ... 21

2.1 Algoritmo genético ... 21

2.2 Evolução com várias populações ... 23

2.3. Processamento paralelo ... 27 2.3.1 Paralelismo ... 27 2.3.1.2 Paralelismo Funcional ... 28 2.3.2 Ambiente Paralelo ... 29 2.3.3. Obstáculos do Paralelismo ... 30 2.4. Processamento paralelo do AG ... 31 2.4.1 Paralelização do algoritmo ... 31 2.4.2 Modelo de ilha ... 32

2.4.3 Análise temporal do AG paralelo multipopulacional ... 33

3. Processo evolutivo de indivíduos e genes ... 39

3.1 Evolução centrada nos genes versus indivíduos ... 39

3.1.1 Evolução centrada no indivíduo ... 39

3.1.2 Evolução centrada no Gene ... 40

3.2 Evolução combinada ... 41

3.2.1 Codificação Genética: Cromossoma e Gene ... 41

3.2.2 Geração e Seleção ... 41 3.2.3 Operadores Genéticos ... 42 3.2.3.1 Crossover ... 42 3.2.3.2 Mutação ... 43 3.2.4 Migração ... 45 3.2.5 Parâmetros evolutivos ... 46 3.2.5.1 Tamanho da População ... 47 3.2.5.2 Taxa de Cruzamento ... 47

(10)

9

3.2.5.3 Taxa de Mutação ... 47

3.2.5.4 Taxa de Substituição ... 47

3.2.5.5 Condição de paragem ... 47

3.3 O algoritmo AGMP ... 48

3.4 Teste do algoritmo AGMP em problemas de otimização ... 50

3.4.1 Teste do algoritmo AGMP ... 50

3.5 Análise de resultados ... 54

4. AGMP no planeamento de trajetória ... 56

4.1 Planeamento de trajetórias ... 56

4.2 Teste e validação do algoritmo no planeamento da trajetória ... 58

4.3 Análise de resultados ... 72

5. Conclusões ... 73

(11)

10

Índice de Figuras

Figura 1 - Estrutura de um AG segundo Michalewicz (1996) ... 22

Figura 2 - Topologia de migração sem restrições (topologia de rede completa) ... 25

Figura 3 - Esquema para a migração de indivíduos entre subpopulações ... 26

Figura 4 - Topologia de migração em anel... 26

Figura 5 - Topologia de migração por vizinhança (implementação 2-D) ... 27

Figura 6 - Processador executando as mesmas instruções sobre dados diferentes ... 28

Figura 7 - Comunicação entre processadores ... 29

Figura 8 - Tempo computacional despendido pelo AG quando executados em paralelos em vários núcleos, tomando como referencia a configuração de 1 núcleo. A linha a vermelho corresponderia à situação ótima teórica. ... 38

Figura 9 - Amostragem Estocástica Universal ... 42

Figura 10 - Cruzamento de dois indivíduos num algoritmo genético simples ... 43

Figura 11 – Representação gráfica da mutação de um indivíduo ... 44

Figura 12 – Representação gráfica da Migração de indivíduos entre populações ... 46

Figura 13 – Fluxograma do algoritmo proposto ... 49

Figura 14 - Valores estatísticos médios do desempenho dos indivíduos com nPop=1 e NI=100(Sem Evolução de genes). ... 52

Figura 15 - Valores estatísticos médios do desempenho dos indivíduos com nPop=1 e NI=100(Com Evolução de genes). ... 53

Figura 16 - Valores estatísticos médios do desempenho dos indivíduos com nPop=5 e NI=20(Sem Evolução de genes). ... 54

Figura 17 - Valores estatísticos médios do desempenho dos indivíduos com nPop=5 e NI=20(Com Evolução de genes). ... 54

Figura 18 - Segmentos de reta usados como obstáculos na simulação (no=6) ... 59

Figura 19 - Valores estatísticos médios do desempenho dos indivíduos com nPop=1 e NI=250 (Sem Evolução de genes). ... 60

Figura 20 - Caminhos resultantes da execução do algoritmo para o planeamento de trajetória com nPop=1 e NI=250 (Sem Evolução de genes). ... 61

Figura 21 - Valores estatísticos médios do desempenho dos indivíduos com nPop=1 e NI=250(Com Evolução de genes). ... 61

Figura 22 - Caminho resultante da execução do algoritmo para o planeamento de trajetória com nPop=1 e NI=250 (Com Evolução de genes). ... 62

Figura 23 - Valores estatísticos médios do desempenho dos indivíduos com nPop=10 e NI=25(Sem Evolução de genes). ... 63

Figura 24 - Caminhos resultantes da execução do algoritmo para o planeamento de trajetória com nPop=10 e NI=25(Sem Evolução de genes). ... 64

Figura 25 - Valores estatísticos médios do desempenho dos indivíduos com nPop=10 e NI=25(Com Evolução de genes). ... 64

Figura 26 - Caminhos resultantes da execução do algoritmo para o planeamento de trajetória com nPop=10 e NI=25(Com Evolução de genes). ... 65

Figura 27 - Segmentos de reta usados como obstáculos na simulação (no=10) ... 66

Figura 28 - Valores estatísticos médios do desempenho dos indivíduos com nPop=1 e NI=250(Sem Evolução de genes). ... 67

(12)

11 Figura 29 - Caminho resultante da execução do algoritmo para o planeamento de trajetória com nPop=1 e NI=250(Sem Evolução de genes). ... 67 Figura 30 - Valores estatísticos médios do desempenho dos indivíduos com nPop=1 e NI=250(Com Evolução de genes). ... 68 Figura 31 - Caminho resultante da execução do algoritmo para o planeamento de trajetória com nPop=1 e NI=250 (Com Evolução de genes). ... 68 Figura 32 - Valores estatísticos médios do desempenho dos indivíduos com nPop=10 e NI=25(Sem Evolução de genes). ... 69 Figura 33 - Caminhos resultantes da execução do algoritmo para o planeamento de trajetória com nPop=10 e NI=25 (Sem Evolução de genes). ... 70 Figura 34 - Valores estatísticos médios do desempenho dos indivíduos com nPop=10 e NI=25(Com Evolução de genes). ... 70 Figura 35 - Caminho resultante da execução do algoritmo para o planeamento de trajetória com nPop=10 e NI=25 (Com Evolução de genes). ... 71

(13)

12

Índice de Tabelas

Tabela 1 - Tempos associados às várias tarefas na execução do AG multipopulacional. ... 34 Tabela 2 - Parâmetros e funções usadas no AG ... 51

(14)

13

Lista de abreviaturas, siglas, símbolos ou acrónimos.

AE - Algoritmos Evolutivos AG - Algoritmos Genéticos

AGMP - Algoritmo Genético Multipopulacional PP - Processamento Paralelo

EG – Evolução de genes

MVP – Máquina Virtual Paralela

IPM - Interface de Passagem de Mensagens BPM - Biblioteca de Passagem de Mensagens UCP – Unidade Central de Processamento

(15)

14

1. Introdução

1.1 Computação evolutiva

Os problemas de otimização são baseados em três pontos principais: a codificação do problema, a função objetivo que se deseja otimizar e o espaço de soluções associado. Pode-se imaginar um problema de otimização como uma caixa preta com n botões ajustáveis, onde cada botão é um parâmetro/variável do problema, e uma saída de valor dependente dos valores dos botões na forma de função objetivo, indicando se um determinado conjunto de parâmetros é bom ou não para resolver este problema. De todos as combinações das variáveis de entrada, que formam o domínio de pesquisa, pressupõe-se que haverá uma ou mais valores dos botões em que a função será máxima, sendo a sua determinação o objetivo do processo de otimização. Para um espaço de pesquisa discreto este terá uma cardinalidade de valor igual à combinação das várias posições dos botões, que mesmo para problemas de complexidade modesta tipicamente terá valor extremamente elevado. Já para um espaço contínuo de pesquisa, mesmo que limitado, esse será de dimensão infinita, tal como sucede se os botões forem analógicos. Em qualquer um dos casos, mas também para a generalidade das situações práticas, os problemas de otimização subjacentes são do tipo NP-complexo, cuja solução nem sempre é passível de ser alcançada. Resta procurar soluções meta-heurísticas de pesquisa, que embora possam não devolver a solução ótima, assegurem quase sempre uma resposta suficientemente capaz.

Os algoritmos genéticos (AG’s), são uma família de modelos computacionais inspirados na evolução, que incorporam uma solução potencial para um problema específico numa estrutura semelhante à de um cromossoma onde são aplicados operadores de seleção e "crossover" a essas estruturas, de forma a preservar informações críticas relativas à solução do problema. Normalmente os AG's são vistos como otimizadores de funções, embora a quantidade de problemas para o qual os AG's possam ser aplicados, seja bastante abrangente. [M. Mitchell, (1996)].

Uma das vantagens de um algoritmo genético é a sua simplicidade funcional. Após uma adequada codificação do problema em cromossomas, a especificação de uma função de desempenho, não necessariamente derivável ou contínua, este algoritmo enriquecido com

(16)

15 variados operadores genéticos origina quase sempre uma solução quasi-ótima para problemas de otimização. Os AG's mais simples normalmente trabalham com descrições de entrada formadas por cadeias de bits de tamanho fixo. Outros tipos de AG's podem trabalhar com cadeias de bits de tamanho variável, como por exemplo AG's usados para Programação Genética. AG's possuem um paralelismo implícito decorrente da avaliação independente de cada indivíduo, mas também por vezes de uma dessas cadeias de bits, podendo-se nestes casos, avaliar a viabilidade de um conjunto de parâmetros para a solução do problema de otimização em questão. O AG é indicado para a solução de problemas de otimização complexos, NP-Completos, como o problema do "caixeiro viajante" [Muhlenbein, (1992)], que envolvem um grande número de variáveis e, consequentemente, espaços de soluções de dimensões elevadas. Além disso, em muitos casos onde outras estratégias de otimização tradicionais falham na busca de uma solução, os AG's convergem. Os AG's são numericamente robustos, ou seja, não são sensíveis a erros de arredondamento no que aos seus resultados finais diz respeito.

Usualmente os cromossomas são codificados em cadeiras de números, podendo estes serem do tipo: binária, inteira ou real. De acordo com a classe do problema numérico que se deseje resolver pode ser usado qualquer um dos três tipos, sem comprometer o resultado. Todavia, outras formas de codificação são passíveis de serem usadas, tais como letras, símbolos, matrizes, etc. A essa representação dá-se o nome de alfabeto do AG [H. Horner,(1996)].

Normalmente uma implementação de um algoritmo genético começa com uma população aleatória de cromossomas. Essas estruturas são, então, avaliadas e associadas a uma probabilidade de reprodução de tal forma que as maiores probabilidades são associadas aos cromossomas que representam uma melhor solução para o problema de otimização do que àqueles que representam uma solução pior. A aptidão da solução é tipicamente definida em relação à população corrente. Deste modo, uma das tarefas mais importantes dos AG’s prende-se com a melhor estratégia de seleção dos indivíduos que irão participar no processo reprodutivo geracional. [Linden, Ricardo (2008)]

A seleção de um indivíduo para o envolver no processo de reprodução está estatisticamente ligada ao seu desempenho, que em problemas de otimização serão mesuráveis a um valor numérico da função a otimizar. A função objetivo de um problema de otimização é construída a partir dos parâmetros envolvidos no problema, que estão

(17)

16 diretamente ou indiretamente relacionados com os elementos do cromossoma do indivíduo, pretensamente solução do problema. Ela fornece uma medida da proximidade da solução em relação a um conjunto de parâmetros. Os parâmetros podem ser conflituantes, ou seja, quando um aumenta o outro diminui. O objetivo é encontrar o ponto ótimo onde a função de desempenho permite o cálculo da aptidão bruta de cada indivíduo, que fornecerá o valor a ser usado para o cálculo da sua probabilidade de ser selecionado para reprodução. [Whitley,(1994)].

Apesar do grande sucesso da aplicação do AG em problemas de otimização nos domínios da engenharia, economia, gestão, investigação operacional, etc., a sua adequação a problemas complexos exige um continuado aperfeiçoamento das suas funções de seleção, cruzamento ou mutação, paralelamente à sua adequação estrutural ao problema a otimizar. Apesar do grande desenvolvimento ocorrido nesta classe de algoritmos, o campo proporcionado por outras leituras e descobertas da evolução das espécies abre novas perspetivas de aperfeiçoamento e de aplicação dos AG’s.

1.2 Motivação

A natureza impõe as suas regras de sobrevivência às espécies, reescrevendo-as diariamente, em direções nem sempre previsíveis. Neste desafio, as espécies interagem entre si definindo novos balanços e relações de interdependência e com elas impondo novas regras. Pela necessidade, usam diferentes estratégias para se posicionarem no campeonato da sobrevivência, na busca de alimento, na fuga à predação, na luta das doenças e das pragas, no afrontamento à dureza do ambiente e do clima, mas ao mesmo tempo na tentativa empenhada da sobrevivência da sua identidade genética, no esforço de propagar os seus genes para as gerações seguintes, num processo igualmente competitivo da reprodução. Nesta mecânica, que só se vê após varias gerações e em grandes números de indivíduos ou populações, são percetíveis de se observarem dinâmicas evolutivas que fazem sobressair o desempenho multifacetado dos indivíduos em cada geração. Neste campeonato da evolução das espécies, o

(18)

17 indivíduo apresenta-se pelo seu desempenho, marcando a sua posição pelo seu peso ou posição no ranking. Todavia, se nos abstraímos da entidade indivíduo como um todo, a sua identidade genética é divisível em parcelas hereditariamente independentes, designadas como genes. Se vistos como desprendidos do indivíduo, estes genes evoluem geracionalmente num idêntico e dinâmico processo evolutivo. Estes genes, que impõem determinados traços comportamentais, que executam tarefas específicas ou apenas influenciam valências estéticas, são frequentemente passíveis de serem avaliados em separado quanto ao seu desempenho. Embora sendo parte integrantes de indivíduos e participem por esta via no processo evolutivo, estes constituem-se como um ativo genético da espécie que, independentemente de outros processos em que se vejam envolvidos, participam igualmente num processo próprio de evolução competitiva entre genes.

Foi esta leitura da evolução, orientada pelo meu orientador, que motivou este trabalho. Tal como na evolução das espécies, este trabalho visa procurar novas soluções para problemas conhecidos, mas ainda não totalmente resolvidos, mormente em problemas de otimização.

Na recente literatura científica é proposto um variado número de algoritmos evolutivos e dentro destes os algoritmos genéticos, sendo quase todos eles centrados na entidade indivíduo, o agente único participativo no processo de evolução. Outros aperfeiçoamentos conduziram à construção de sistemas multipopulacionais, semifechados, premindo-se a sua interligação por processos migratórios. Esta variante trouxe uma maior riqueza evolutiva, permitindo-se a ramificação das espécies em famílias que evoluem separadamente, mas envoltas em migrações, processo esse que transporta genes entre populações.

Em todos estes casos, existem na literatura científica propostas de algoritmos genéticos multi--populacionais que tem em conta apenas o desempenho de cada cromossoma. A avaliação do desempenho de cada um dos seus genes não é realizada. Apenas a versão mais conservadora da ” Seleção Natural” apresentada por Charles Darwin (1809-1882) no seu trabalho acerca da evolução das espécies “The Origin of Species” é implementada.

Como motivação extra deste trabalho esteve a divulgação recente pelos principais meios de comunicação social Britânicos sobre o egoísmo do gene na teoria da Evolução (Jonathan Webb,2016) em contraponto ao altruísmo na evolução (BBC,2013). Na base desta controversa está o trabalho intitulado “Evolutionary instability of zero-determinant strategies demonstrates that winning is not everything”, publicado na nature communication

(19)

18 [https://www.nature.com/articles/ncomms3193], cujos autores referem que a evolução não é favorecida pelo traço do egoísmo, que poderia conduzir à extinção da espécie. Ainda de acordo com o professor Andrew Coleman da universidade de Leicester, no Reino Unido refere que este novo trabalho "travou as interpretações exageradas" da estratégia anterior, que propunha que estratégias manipuladoras e egoístas iriam evoluir. Nesse sentido afirmou: "O próprio Darwin ficou intrigado com a cooperação que você observa na natureza e ficou particularmente impressionado com insetos sociais".

"Você pode pensar que a seleção natural deve favorecer os indivíduos que são exploradores e egoístas, mas na verdade agora sabemos, após décadas de pesquisa, que esta é uma visão simplista das coisas, especialmente se você levar em conta a característica egoísta do gene da evolução.”

"Não são indivíduos que têm de sobreviver, seus genes e genes usam apenas organismos individuais - animais ou seres humanos - como veículos para se propagarem".

"Os genes egoístas", portanto, beneficiam de organismos cooperativos.

O desafio tomado neste trabalho, visou alargar a compreensão do processo evolutivo, tipicamente centrado no indivíduo, alargando-o também para uma visão evolutiva centrada nos genes, como entidades autónomas. Este trabalho insere-se na linha de investigação levadas a cabo pelo Prof. Paulo Salgado, resultando de trocas de ideias, sugestões e experiências. Para isso foram realizados estudos, implementados e testados sucessivos algoritmos genéticos que corporizam esta ideia mais alargada da evolução das espécies.

1.3 Objetivos

Este trabalho tem como objetivo alargar o paradigma inerente aos algoritmos genéticos, ampliando a sua aplicação ao trio de agentes interdependentes “indivíduos-genes-populações”. Visará, neste caminho, desenvolver um mecanismo de exploração do poder de processamento de máquinas dotadas de múltiplos processadores, para métodos baseados em Algoritmos Genéticos. O ponto central é a definição de uma estrutura capaz de explorar o paralelismo encontrado em máquinas multiprocessadas, ao mesmo tempo que permite a

(20)

19 distribuição numa rede de computadores para a exploração do paralelismo de máquina. Com esta estrutura, espera-se dar uma resposta mais capaz ao algoritmo apresentado.

Em seguida espera-se verificar que a solução de várias populações de pequeno e médio porte, evoluindo em paralelo, mas de forma não isoladas, dão um mesmo resultado que uma grande população. Averiguando ainda que da troca de informações – material genético – entre as populações conduz um melhor desempenho computacional do algoritmo, com significativas melhorias em termos de velocidade e convergência. Para esta estrutura de algoritmo, este trabalho pretende avaliar a poupança de tempo computacional quando sujeita à paralelização computacional, por exemplo com recurso a multiprocessadores. Por fim, propõe-se ainda a validar as soluções apresentadas na procura do melhor trajeto entre dois pontos em presença de obstáculos lineares.

1.4. Estrutura da dissertação

Este trabalho foi dividido em 5 capítulos:

O capítulo 1 faz uma introdução geral sobre a problemática em questão. Descreve os objetivos gerais e específicos do trabalho, os aspetos e elementos que motivaram a escolha do tema e os contributos deste trabalho.

No capítulo 2, é abordado o algoritmo genético e algumas aplicações/alternativas como o algoritmo genético multipopulacional (AGMP) e o processamento paralelo (PP), abrangendo os pontos essenciais do processamento paralelo e concorrente contribuindo para uma compreensão e utilização efetiva da computação paralela e da computação concorrente.

O capítulo 3 aborda a computação evolutiva como paradigma para a resolução de problemas considerados difíceis. Nesse capítulo é dada uma introdução ao processo evolutivo de indivíduos e ao processo evolutivo de genes e compara ambas as teorias baseadas, em parte, na evolução proposta por Charles Darwin no século XIX e o seu uso como padrão computacional de otimização. Por último, este capítulo cobre ainda os algoritmos genéticos, os seus operadores e a sequência típica de operações que os compõem, seguido do algoritmo usado neste trabalho.

(21)

20 O capítulo 4 enfoca o algoritmo genético multipopulacional no planeamento de trajetória, abrangendo os pontos essenciais do mesmo, numa vertente de teste e validação das soluções apresentadas. Também neste capítulo, é efetuada uma breve descrição da estrutura da plataforma computacional, seguida de três testes exemplos de complexidade crescente, que servem de validação do algoritmo utilizado no planeamento da trajetória, procedendo-se à análise e discussão dos resultados.

O capítulo 5 apresenta as considerações finais.

1.5. Contributos

Na procura incessante de novas abordagens para os algoritmos evolutivos que deem melhores respostas para problemas de solução complexa, espera-se que este trabalho contribua para uma interpretação mais alargada do processo evolutivo. Esse contributo resulta da implementação computacional dessas novas abordagens, mas principalmente do que advêm dos resultados práticos obtidos, na linha de investigação sobre orientação. Com esta visão novos algoritmos computacionais serão testados e com eles validados os pressupostos dos seus mecanismos.

Deste modo, norteado pela ideia do alargamento da perspetiva evolutiva das espécies à competição evolutivas dos genes constituídos, o principal contributo deste trabalho foi direcionado na implementação de um algoritmo genético envolvendo populações de indivíduos e população de genes, como entidades diferentes e participativas num mesmo processo evolutivo. Este novo paradigma evolutivo centra-se em três vertentes: no indivíduo, nos genes e nas populações, como vértices de triângulo de entidades participantes no processo evolutivo.

Como contributo de caráter mais prático ou aplicado, o algoritmo apresentado foi usado para resolver o problema de otimização de trajetórias, apresentando-se como um possível método, robusto e capaz de responder ao inerente problema de planeamento e otimização de robôs autónomo-móveis ou problemas de transporte. Mais se destaca neste trabalho o explorar da computação paralela neste tipo de problemas com algoritmos evolutivos multipopulacionais.

(22)

21

2. Algoritmo genético Multipopulacional

2.1 Algoritmo genético

Os algoritmos genéticos foram propostos por Holland e seus alunos na década de 1970. Holland estudou a evolução natural considerando que este é um processo robusto, simples e poderoso, que poderia ser adaptado para obtenção de soluções computacionais eficientes para problemas de otimização. O conceito de robustez relaciona-se ao fato de os AGs, independentemente da escolha dos parâmetros iniciais, produzirem em geral soluções de qualidade razoáveis (Goldberg, (1989, 2002)]. AG é uma meta-heurística inspirada no processo de seleção natural que pertence à classe maior dos algoritmos evolutivos. A principal característica dos AGs é a criação de descendentes pelo operador de recombinação [De Jong, (2006). Além desse facto, a utilização de operadores de mutação e recombinação equilibra dois objetivos aparentemente conflituantes: o aproveitamento das melhores soluções e a exploração do espaço de busca. O processo de busca é, portanto, multidimensional, preservando soluções candidatas e provocando a troca de informação entre as soluções exploradas [Michalewicz,(1996); VonZuben,2000)].

Segundo Michalewicz, (1996) os AG obedecem a uma estrutura sequencial e cíclica de passos, tal como esquematizado na figura 1, que resumidamente se apresentam em seguida:

• Durante a geração gen, também aqui designada por iteração, um AG mantém uma população de soluções potenciais:

P(gen) = {xgen 1 , . . . , xgen n };

• Cada indivíduo xgen i é avaliado, produzindo uma medida de aptidão;

• Um processo de seleção visa escolher os indivíduos de maior aptidão para a reprodução através da seleção de novos indivíduos gerados a partir de µ indivíduos da população atual;

(23)

22 • A reprodução de novos indivíduos com base no material genético existente através de processos denominados por recombinação e mutação, fazendo com que alguns indivíduos sofram alterações que potenciam a formação de novas soluções;

• De entre as soluções antigas e novas (µ+λ), são selecionados indivíduos (sobreviventes) para a geração seguinte (gen + 1). Este processo procede à eliminação (ou à morte) de indivíduos considerados esgotados para a população atual.

• Este processo é repetido iterativamente, de geração em geração, até que uma condição de paragem seja satisfeita. Essa condição de paragem pode obedecer a critérios como um número máximo de iterações ou, idealmente, um nível esperado de adequação das soluções.

(24)

23 Dada a forte dependência dos mecanismos de seleção dos AGs face ao valor de desempenho dos indivíduos, particularmente sobre os seus valores absolutos, frequentemente recorre-se, com vantagem, ao uso de fatores de ponderação sobre a aptidão bruta dos indivíduos. Deste modo, dá-se preferência ao uso da aptidão normalizada em detrimento da aptidão absoluta por esta permitir um melhor controlo do processo de seleção. Como critério de paragem do algoritmo, em geral e em complemento do anteriormente referido, é usada a aptidão do melhor indivíduo. O algoritmo termina quando houver um indivíduo que registe um desempenho superior a um valor considerado como desejado. Outros critérios podem envolver, por exemplo, um erro abaixo de um valor especificado pelo projetista para um determinado parâmetro do problema [Grefenstette, J.J. (1993)]

2.2 Evolução com várias populações

Os Algoritmos genéticos paralelos foram desenvolvidos para acelerar a computação, aproveitando o poder de computadores com arquitetura paralela. Existem três modelos diferentes para os algoritmos genéticos paralelos: o modelo global, o modelo de difusão e o modelo de migração [Nix,(1992)].

O modelo global emprega o paralelismo de tarefas inerente de algoritmos genéticos através de uma distribuição natural das tarefas que efetivamente podem ser executadas em paralelo, distribuindo-as pelas diferentes estruturas de processamento do sistema computacional. Tal distribuição de tarefas e de processamento, não acarreta qualquer alteração ao modelo funcional do AG.

O modelo de difusão distribui os indivíduos de uma única população pela estrutura paralela do sistema computacional. Porém, a operação de seleção considera apenas para o acasalamento, parceiros da mesma população ou da sua vizinhança, pelo que o processo de seleção e reprodução é tipicamente local. Porém decorre um processo de difusão de informações através da população raianas, isto é, de vizinhança em vizinhança.

O modelo de migração divide a população em várias subpopulações. Estas subpopulações evoluem de forma independente umas das outras por um determinado número

(25)

24

de gerações (tempo de isolamento). Após o tempo de isolamento, um número de indivíduos é distribuído entre as subpopulações (migração). O número de indivíduos trocados (taxa de migração), o método de seleção dos indivíduos para a migração e o esquema de migração, determinam o grau da diversidade genética que ocorre nas subpopulações e a troca de informações entre as subpopulações.

No que ressalta dos variados exemplos dispersos pela literatura, a implementação paralela do modelo de migração não só mostrou um aumento de velocidade no tempo de computação, como também necessita de menos avaliações da função objetivo quando comparada com um algoritmo de população única. Mesmo com o uso de um processador (one-core) de um computador, a implementação do algoritmo paralelo de uma forma multiplexada (pseudo-paralela) proporciona melhores resultados. Sucede que o algoritmo encontra a solução ótima com mais frequência ou com menos avaliações da função. Estes resultados vêm comprovar a maior adequação de execução dos AGs numa estrutura de execução (lógica) paralela [(Hwang, K. e Briggs, F. A. (1985)].

Para o modelo paralelo com migração, a seleção dos indivíduos sujeitos à migração pode ser:

• Aleatoriamente uniforme (seleciona indivíduos para a migração de forma aleatória); • Baseada na aptidão (seleciona os indivíduos mais aptos, para migração).

Existem várias possibilidades para a estrutura da migração de indivíduos entre subpopulações. Por exemplo, a migração pode ocorrer:

• Entre todas as subpopulações (rede completa de topologia de migração sem restrições), ver figura 2;

• Numa tipologia em anel, ver figura 4;

(26)

25

Figura 2 - Topologia de migração sem restrições (topologia de rede completa)

A estratégia de migração mais geral é a de migração sem restrições (topologia de rede completa). Aqui, os indivíduos podem migrar a partir de qualquer subpopulação para outra. Para cada subpopulação, um conjunto de potenciais imigrantes é construído a partir de outras subpopulações. Os indivíduos migrantes são determinados de um modo aleatório e uniforme a partir desse conjunto.

A Figura 3 apresenta uma descrição detalhada do esquema de migração sem restrições para quatro subpopulações com seleção baseada na aptidão. As subpopulações 2, 3 e 4 constroem um conjunto dos seus melhores indivíduos (migração baseada na aptidão). Um indivíduo é escolhido aleatoriamente, com igual probabilidade dos seus pares, a partir deste conjunto, indo substitui o pior indivíduo na subpopulação 1. Este ciclo é realizado para cada subpopulação. Deste modo é assegurado que nenhuma subpopulação irá receber indivíduos da sua própria população.

(27)

26

Figura 3 - Esquema para a migração de indivíduos entre subpopulações

O esquema de migração mais básico é o da topologia em anel, cuja estrutura está ilustrada no exemplo da Figura 4. Aqui os indivíduos são transferidos entre subpopulações vizinhas, direccionalmente adjacentes. Por exemplo, indivíduos da subpopulação 1 podem migrar unicamente para a subpopulação 6 enquanto a subpopulação 1 aceita apenas migrantes da subpopulação 2.

(28)

27

Uma estratégia semelhante à topologia em anel é a migração por vizinhança. Um esquema possível da sua implementação numa tipologia de vizinhança 2-D está representado na figura 5. Tal como a topologia em anel, a migração é feita apenas entre vizinhos mais próximos. No entanto, a migração pode ocorrer em ambos os sentidos entre as subpopulações vizinhas, podendo cada população ter mais que dois vizinhos. Os possíveis migrantes de cada subpopulação são escolhidos por um método de seleção local, podendo migrar para qualquer das subpopulações adjacentes.

Figura 5 - Topologia de migração por vizinhança (implementação 2-D)

2.3. Processamento paralelo

2.3.1 Paralelismo

O Paralelismo é uma estratégia utilizada em computação para se obter, mais rapidamente, resultados de tarefas grandes e complexas. Segundo esta estratégia, uma tarefa grande pode ser dividida em várias tarefas pequenas, que serão distribuídas entre vários processadores e executadas simultaneamente. Os processadores comunicam entre si para que haja sincronização entre as tarefas em execução.

(29)

28 Os principais objetivos do paralelismo são:

• Obter ganhos de desempenho (reduzindo o tempo) no processamento; • Resolver grandes desafios computacionais;

• Fazer uso de um sistema distribuído para resolução de tarefas;

Dentre as várias formas de classificar o paralelismo, levamos em consideração o objeto paralelizado, podendo este ser de dados ou funcional (das funções).

No Paralelismo de Dados, o processador executa as mesmas instruções sobre dados agregados em conjuntos diferentes, tal como se ilustra na figura 6. É usado, por exemplo, em programas que utilizam matrizes de grande dimensão e dispersas no cálculo de elementos finitos. Os exemplos mais comuns incidem sobre resolução de sistemas de equações, a multiplicação de matrizes ou a integração numérica.

2.3.1.2 Paralelismo Funcional

O processador executa instruções diferentes que podem ou não operar sobre o mesmo conjunto de dados. É aplicado em programas dinâmicos e modulados onde cada tarefa será um programa diferente.

Exemplos conhecidos do seu uso são: Paradigma Produtor-Consumidor, Simulação e Rotinas específicas para tratamento de dados [Sistemas Paralelos e Distribuídos, (2015)].

(30)

29

Figura 7 - Comunicação entre processadores

2.3.2 Ambiente Paralelo

Um ambiente paralelo possui vários processadores interligados em rede sobre uma plataforma para manipulação de processos paralelos. A plataforma deve possuir um sistema operativo que esteja habilitado a executar este tipo de processamento além de uma linguagem de programação que atenda as exigências de um modelo de programação paralela.

Os tipos de ambientes mais comuns são [Sistemas Paralelos e Distribuídos, (2015)]:

• Message Passing: é o método de comunicação baseado no envio e receção de mensagens através da rede seguindo as regras do protocolo de comunicação entre vários processadores que possuam memória própria. O programador é responsável pela sincronização das tarefas. São exemplos: a Máquina Virtual Paralela, MVP, (Geist et al. 1994); a Interface de Passagem de Mensagens Standard (Version 3.1; June 4, 2015), IPMS, a Interface de Passagem de Mensagens, IPM, (Ignácio & Filho 2002) e a Biblioteca de Passagem de Mensagens, BPM, (Soch & Tvrdik 1998).

• Data Parallel: é a técnica de paralelismo de dados, normalmente automática ou semiautomática, ou seja, é o método que se encarrega de efetuar toda a comunicação necessária entre os processos de modo a que o programador não necessite de entender

(31)

30 os métodos de comunicação. É exemplo de ambiente paralelo o High Performance Fortran, HPF, [Chapman & Mehrotra, (1998)] [Sarma, Zacharia & Miles, (1998)].

2.3.3. Obstáculos do Paralelismo

As tarefas executadas em paralelo, num determinado instante, aguardam a finalização mútua para coordenar os resultados ou trocar dados e reiniciar novas tarefas em paralelo. É necessário que haja a coordenação dos processos e da comunicação entre eles para evitar que o peso temporal da comunicação seja maior que o da diminuição do processamento e que, consequentemente haja uma queda no desempenho dos processos em execução.

Existem poucos compiladores e ferramentas prontas para paralelização automática que resolvam definitivamente o problema do paralelismo. Há um considerável tempo gasto do programador em analisar o código fonte para o paralelizar e o recodificar. Basicamente é necessário rever o programa sequencial, avaliar como será particionado, quais os pontos de sincronização, quais as partições que poderão ser executadas em paralelo e qual a forma de comunicação que será empregada entre as tarefas paralelas [Grama, Gupta, Karypis & Kumar (2003)].

É necessário que haja uma análise do algoritmo a ser paralelizado para que seja possível a paralelização nos dados ou nas suas funções, levando sempre em consideração a quantidade de comunicação em relação ao processamento [Jordan & Alaghband (2003)]. No processamento paralelo, o tempo de UCP quase sempre aumenta, no entanto pode-se reduzir o tempo total de processamento.

A programação paralela utiliza multiprocessadores com arquiteturas de comunicação entre os processadores baseados em memória compartilhada (shared memory) e memória distribuída (distributed memory). Os programas adaptados a arquitetura de comunicação entre os processadores baseado em memória compartilhada não podem ser executados em uma máquina com memória distribuída, pois não utilizam os mecanismos de troca de mensagens, impossibilitando assim a portabilidade. No caso inverso, memória distribuída para memória compartilhada, seria possível a portabilidade, porém o mecanismo de troca de mensagem seria ignorado, pois todos os dados já poderiam ser acedidos pelos processadores através da memória compartilhada, isto apenas traria um fluxo desnecessário de comunicação.

(32)

31 Os processos são distribuídos e executados em vários processadores simultaneamente, entretanto não existe uma forma eficiente de acompanhar passo-a-passo a alteração das variáveis durante a execução do processamento das diversas tarefas paralelas. [ Message Passing Interface, (1996]

2.4. Processamento paralelo do AG

2.4.1 Paralelização do algoritmo

Para aumentar o desempenho da procura por soluções dos algoritmos genéticos é interessante o uso de paralelismo, que seja simultaneamente dos dados e das funções. Uma alternativa bastante comum de paralelização de um algoritmo genético é a sua execução em várias máquinas. Quando um deles encontra um resultado espectável todos são interrompidos. Executar várias instâncias ao mesmo tempo, mesmo que seja de modo isolacionista, com a inoperância de comunicação, pode ser por si só interessante pelo aumento da probabilidade de poder haver uma evolução mais positiva, por vezes fora da média ou numa via evolutiva de caracter excecional. Por esta via, fica reduzida a probabilidade de estarmos presos a uma má evolução de uma única população. Além deste método mais comum de paralelização, existem outros modelos igualmente interessantes e elegantes na forma de paralelizar algoritmos genéticos, seja pela paralelização dos operadores ou pela separação da população [Almasi & GOTTLIEB, (1994)], tal como sucede com o modelo mestre-escravo, com o modelo da vizinhança ou com o modelo ilha.

O modelo mestre-escravo consiste em executar paralelamente em cada escravo as operações que dependem apenas de cada cromossoma, como por exemplo a mutação e a avaliação de aptidão, deixando para o mestre a execução da seleção e cruzamento. Como a comunicação é efetuada a cada nova geração, este modelo só é interessante em arquiteturas de memória compartilhada ou quando o tempo de mutação e avaliação é significativamente maior que o tempo de comunicação. O modelo de vizinhança é uma forma de paralelização onde cada cromossoma é processado paralelamente. Neste modelo a população é disposta em uma matriz de forma que as operações são efetuadas apenas entre os cromossomas vizinhos, e as boas soluções são propagadas pela grade. Este modelo é indicado para máquinas vetoriais,

(33)

32 mas também pode ser empregado em arquiteturas de memória compartilhada, sendo os cromossomas próximos agrupados e atribuídos aos processadores.

2.4.2 Modelo de ilha

Os problemas complexos quando resolvidos pelos algoritmos genéticos exigem quase sempre que se trabalhe com uma população de tamanho grande e cromossomas de dimensão elevada, o que aumenta substancialmente o custo computacional da execução do algoritmo. Nestes casos torna-se quase sempre vantajoso distribuir “geograficamente” esta população e a execução distribuída do algoritmo.

A ideia do modelo de ilha é dividir uma população grande em subpopulações que evoluirão separadamente, cada uma em sua ilha. O benefício desta estrutura de distribuição é fazer com que, pela migração de indivíduos de uma ilha para as outras, levem consigo a solução mais evoluída da ilha.

Uma desvantagem de se ter uma população única releva-se quando um indivíduo (cromossoma), com um desempenho relativo muito acima dos seus parceiros geracionais se “impõe”, sendo por isso quase sempre selecionado para o processo reprodutivo. Propaga assim e repetidamente a sua informação genética em sucessivas gerações, podendo ser de tal modo dominante que os seus genes estarão em poucas gerações presentes, na maioria dos cromossomas da população. Tal conduz ao domínio da informação genética da população por parte desse indivíduo com a inevitável redução da diversidade de “soluções” genéticas, enfraquecendo a cobertura no campo das possibilidades genéticas de se obter uma solução mais geral.

O modelo de ilha, por ter populações separadas que evoluem isoladamente por várias gerações, reduz este efeito. No entanto, o problema da uniformização da informação genética também pode ocorrer no modelo de ilha, principalmente se a velocidade de evolução das diversas ilhas for muito diferente. Neste caso, uma ilha de execução veloz que encontre logo um máximo local no espaço de soluções transmitirá os seus cromossomas às demais ilhas que, ainda não tendo evoluído suficientemente, multiplicarão a informação genética dos cromossomas imigrantes dentro de suas populações.

(34)

33 A migração é o principal operador do modelo de ilha que executa a função de transmitir os cromossomas emigrantes às demais ilhas, e receber os cromossomas imigrantes enviados por elas. Um dos principais parâmetros da migração prende-se com o número de cromossomas migrantes, como escolhê-los e se estes permanecerão ou serão removidos da população origem e qual a população destino. Em geral, a transmissão de cromossomas é feita após um número determinado de gerações, sendo este número escolhido pelo projetista do algoritmo genético, assim como a quantidade de cromossomas a serem enviados. Também é comum a escolha entre os melhores cromossomas de cada ilha populacional aqueles que emigrarão, procedendo no espirito de contribuir no enriquecimento genético da população de destino.

Mesmo parecendo incorreto à primeira vista, é importante para manter a diversidade genética, que os cromossomas emigrantes sejam removidos da população em que estavam. Vale lembrar que, mesmo sendo retirados, uma vez que tenham sido gerados naquele ambiente, podem ser gerados indivíduos semelhantes. Também é necessário evitar que um cromossoma imigrante recém-chegado a uma população ilha, seja imediatamente sujeito a uma nova imigração ou que seja prontamente eliminado por essa mesma população. Desta forma garante-se que a sua informação genética seja absorvida pela população destino.

2.4.3 Análise temporal do AG paralelo multipopulacional

A execução do código do AG, na versão multipopulacional e estrutura paralela em ilha, realizado com recurso a nc núcleos (“cores”) de processamento (ou “slaves”) de igual capacidade computacional, demorará um tempo T(nc). As exigências computacionais para os cálculos numéricos, nomeadamente nos tempos associados à sua execução por um único núcleo T(1) serão agora repartidos em igual valor pelos nc núcleos. O tempo decorrido será nestas circunstâncias, na melhor das hipóteses, de valor igual ao que decorreria se a execução fosse realizada por um único núcleo, T(1), dividido pelo número de núcleos nc, agora usados. Assim, o valor teórico será de:

𝑻(𝒏𝒄) =𝑻(𝟏) 𝒏𝒄

Todavia a repartição das tarefas, dados, código e comandos de execução e a necessária sincronização dos processos exige a comunicação entre os núcleos decorrendo daí um inevitável dispêndio de tempo de comunicação, Tcomunicação, valor esse geralmente não

(35)

34 desprezável. É na prática este tempo de comunicação que penaliza o processo de paralelização, sendo por isso não desprezável, peso este que será um limitador exógeno que degrada o desempenho computacional deste mecanismo.

Inevitavelmente tal degradação ocorre na paralelização do AG, mesmo quando se evita ao máximo a comunicação de dados pela alocação de uma população ilha em cada core ou, indistintamente, nó computacional. A análise que se segue avalia o tempo de execução computacional do AG para um número variável de núcleos tomando como referências tempos padrão de execução das sub-tarefas do AG, particularmente sobre as operações básicas como sejam a de inicialização da população, do calculo de desempenho, das operações de seleção, mutação e cruzamento, da migração bem como renovação da população. Esses tempos de execução são dependentes do problema e codificação do AG. Todavia esses valores são possíveis de serem obtidos pela incorporação no código de marcas temporais associadas a cada rotina ou procedimento ligadas ás tarefas atrás identificadas. Para quem usa o MATLAB, esta contabilização é fornecida pela execução em modo “Run and Time”.

A Tabela 1 resume os tempos associados às várias tarefas na execução da AG multipopulacional, sendo que parte delas podem funcionar em modo paralelo (ou em múltiplos-cores). Estes valores indicativos serviram para a simulação de soluções com um número variável de núcleos/populações, aferindo os benefícios do uso de mais núcleos na execução do AG.

Gerais Tempo Mutação Tempo

Tinit 0,1 Tmutacao 0,1

Tcomunicacao 0,05 Tmutacao_individual 0,01

Tdesempenho 0,01 pmut 0,2

Tdisplay_results 0,1

Selecção Tempo Migração Tempo

Tseleção 0,1 Tmigracao 0,1

Tselectindividual 0,01 Pmigr 0,05

pselect 0,5

Cruzamento Tempo Renovação Tempo

Tcruz 0,1 Trenov 0,1

Tcruz_individual 0,01 Trenov_individual 0,01

pcruz 0,2 prenov 0,5

(36)

35 Seja T(i) o tempo de execução do AG por i núcleos de processamento. Este tempo decorre da acumulativa dos tempos de execução das várias tarefas, em NG gerações. Contribuem para esse tempo as seguintes parcelas:

- O número de indivíduos de todas as populações é constante. Neste exemplo de tomado de valor de 1000 indivíduos que são repartidos em igual proporção pelas nc populações.

- Existem tantas populações (nPop) quanto o número de núcleo de processamento, ou seja: nPop = nc. Cada núcleo executa o AG na população local (ilha).

- O código do AG está espelhado pelos nc núcleos, todos apresentando as mesmas capacidades computacionais da qual decorre tempos de execução de valor iguais para códigos semelhantes.

- Um computador central (servidor) gere as comunicações, envio de dados e comando de controlo/execução entre os escravos (núcleos). Cada tarefa executada exige um tempo padrão constante de Tcomunicação.

- Cada núcleo necessita de um tempo inicial, Tinit, para inicializar as populações e as

variáveis. Este tempo é assumido constante, independentemente do número de núcleos nc.

- Tdesempenho é o tempo (em segundos) que demora a calcular o desempenho de cada

indivíduo.

- As operações de Seleção, Cruzamento e Mutação, exigem na sua execução e para cada geração decorrida de um tempo com duas parcelas proporcionais, na primeira, ao número de populações, nPop(nc) e, na segunda, ao produto entre o número de elementos envolvidos e o tamanho da população, PopSize. Os elementos envolvidos são um subconjunto variável da população da ilha associada aos valores de probabilidade pselect, pcruz e pmut, respetivamente de seleção, cruzamento e mutação.

Estes tempos são calculados para a totalidade das NG gerações de acordo com as seguintes expressões:

➢ Tempo associado à tarefa de Seleção:

TSel = (Tseleccao + Tselectindividual  pselect)  PopSize NG;

➢ Tempo associado à operação de cruzamento genética:

(37)

36 ➢ Tempo associado à operação de mutação genética:

Tmut = (Tmutacao + Tmut_indiv  pmut)  PopSize  NG;

- O tempo associado ao processo migratório é proporcional ao tamanho da população local (PopSize) e à probabilidade de ocorrer migração, pmigr. Envolve do outro lado

dois termos, um primeiro Tmigração, de valor constante, que reflete o tempo de seleção

dos migrantes e um segundo termo que decorre das comunicações estabelecidas entre núcleos (ilhas), de valor combinatório de nc2 :

Tempo associado à migração:

Tmigr = (Tmigracao + nc2  Tcomunicacão)  PopSize  pmigr  NG;

- A renovação das populações, tarefa realizada localmente, exige-se um tempo de ➢ Tempo associado à renovação da população:

Trenov = (Trenovacao + Trenov_indiv  prenov)  PopSize;

onde Trenovacao é o tempo necessário para selecionar os indivíduos a serem substituídos

e Trenov_indiv o tempo despendido a incluir um indivíduo na população local.

- Para uma configuração de mais de um núcleo é necessário haver comunicações entre os AG locais, com troca de informação e indivíduos migrantes, estabelecendo-se com a mediação do servidor. Deste modo é esperado um tempo de comunicação proporcional ao número de núcleos:

Tcom = Tcomunicacao  nc;

Em cada ciclo geracional do AG são necessários estabelecer duas ligações ao servidor, no início e no fim do ciclo.

- A apresentação dos resultados do AG exige um tempo computacional de Tdisplay.

O tempo total de execução do algoritmo é dependente do número de núcleos/ populações (ilhas) usadas, calculados do seguinte modo:

i) Para um único núcleo de processamento/uma População, nc =1, ter-se-á:

T(1) = Tinit + TdesempenhonPop + (TSel + Tcruz + Tmut + Tdesempenho + Trenov) nPop(1)NG +

(38)

37 Havendo uma única população, esta agrega todos os indivíduos, isto é:

nPop(1) = PopGlobal, a população global.

Nesta configuração não existe dispêndio de tempo em comunicações.

ii) Para a configuração de nc núcleos de processamento, acresce a exigências que decorre do processo migratório, Tmigracao, e das comunicações, Tcomunicacao. Porém, a polução de

cada núcleo será agora de nPop(nc) = PopGlobal/nc. Desta estrutura resulta um tempo de execução de:

T(nc) = Tinit + (Tdesempenho + (TSel + Tcruz + Tmut + Tdesempenho + Trenov)  NG) nPop(nc)

+…

… + 2 Pcom NG + Tdisplay;

Na figura 8 está representado num gráfico de barras o tempo despendido na execução do AG multi-populacional para configurações paralelas com número de núcleos, nc, de 1 a 10. A linha a vermelho, sobreposta à anterior figura, representa a curva de tempos para as condições ideais, reconhecidas anteriormente como de valor inversamente proporcionais a nc. Para melhor se proceder à comparação de resultados, particularmente com a configuração de um único núcleo, os tempos estão normalizados em relação à primeira configuração.

(39)

38

Figura 8 - Tempo computacional despendido pelo AG quando executados em paralelos em vários núcleos, tomando como referencia a configuração de 1 núcleo. A linha a vermelho corresponderia à situação ótima teórica.

Resulta da análise da figura que, tendo em conta os parâmetros da Tabela1, não haver vantagem acrescida no uso de mais de quatro núcleos. Esta conclusão diz apenas respeito aos tempos de execução do AG. Todavia, como referido em secções anteriores, o AG multi-populacional, naturalmente da sua forma de execução computacional paralela, goza de outros benefícios que são inerentes ao processo evolução em múltiplas e distintas populações.

(40)

39

3. Processo evolutivo de indivíduos e genes

3.1 Evolução centrada nos genes versus indivíduos

3.1.1 Evolução centrada no indivíduo

Darwin acreditava que a competição é característica do mundo vivo, acontecendo primariamente entre organismos vivos e não entre entidades de níveis superiores como grupos, espécies ou ecossistemas e a evolução operaria sobre os organismos vivos, seja favorecendo-os ou não [Darwin, (1859)]. Alheio à existência da hereditariedade, Darwin nem imaginava a possibilidade de poder ocorrer processos de seleção em níveis mais baixos, pois estava focado principalmente no indivíduo como objeto de estudo. O eventual desenvolvimento da Genética e da Etologia fez com que a evolução centrada no indivíduo pudesse ser questionada. Hoje estamos confrontados com outras sugestões, nomeadamente de que a seleção possa ocorrer em níveis mais baixos, que não têm em conta o desempenho absoluto dos indivíduos, em termos da sua sobrevivência ou destreza elementares, mas antes, avaliações de desempenhos parcelares e de caracter menos quantificável. Darwin não conseguia explicar alguns comportamentos em animais apenas pela seleção individual o que levou ao surgimento dessas questões. Segundo Elliot Sober e David Sloan Wilson (1994), tornou-se necessário, para explicar o altruísmo, definir a unidade de seleção entre o organismo e o grupo [Sober ,(1994)]

Nesta nova leitura interpretativa da evolução, Dawkins, R., em 1982, na sua publicação “The Extended Phenotype” [Dawkins, R., (1982)] defende uma visão da evolução centrada nos genes ou teoria do gene egoísta. Sustenta na sua ideia que a evolução ocorre através da sobrevivência diferencial de genes competidores. Esta teoria defende o mérito único do comportamento egoísta onde o que é valorizado é a “luta pela sobrevivência”. Nestas circunstâncias, o indivíduo aumenta as suas expectativas de vida à custa da diminuição das expectativas do outro. No entanto é muito comum ser observado na natureza comportamentos altruístas, nomeadamente, quando o indivíduo aumenta as expectativas de vida do outro à custa da diminuição da sua. Este fato comportamental merece ser estudado e devidamente entendido [ Haldane, 1932][ Hamilton, W. D. (1963)].

(41)

40 Mayr postulou que o indivíduo é o alvo de seleção, mas não a unidade de seleção [Sober E.,1984]. Templeton define a “unidade de seleção” como sendo o nível de organização genética que permite a previsão da resposta genética à seleção e “alvo de seleção” como o nível de organização biológica que vai exibir o fenótipo sob seleção. [ Wiley-Liss, 2006]

3.1.2 Evolução centrada no Gene

“Avisão da evolução centrada nos genesouteoria do gene egoístadefende que aevoluçãoocorre através da sobrevivência diferencial degenescompetidores, aumentando a frequência dealeloscujo efeitofenotípicopromova efetivamente a sua própria propagação”. [Dawkins,1976]

Richard Dawkins propôs a teoria do gene egoísta em 1976, incluindo pelo menos três níveis: gene, indivíduo e grupo. Ele definiu como “Um tipo de entidade que possuía a propriedade extraordinária de ser capaz de criar cópias de si mesmo”, replicador, e “máquinas de sobrevivência construídas pelos mesmos”, veículo [Dawkins, R. (1976)]. As principais respostas procuradas por diversos autores são: “(1) o modo como os veículos superiores são criados pela seleção natural entre veículos biológicos de níveis inferiores, e (2) dada a existência de múltiplos níveis de veículos, de que maneira a seleção natural em um nível afeta a seleção em níveis inferiores ou superiores” [Laurent Keller, (1999)].

Segundo Keller, veículos de nível superior são compostos de veículos de nível inferior, experimentando forças evolutivas de dois polos: a de atração e a de repulsão. A primeira referindo-se à tendência de cooperação entre parceiros do mesmo nível, e a segunda refletindo a competição entre os mesmos. Dawkins defendia que, devido às suas características de variabilidade, hereditariedade e reprodução diferencial, os genes seriam o elemento que efetivamente se reproduziria.

Ele explica a diferença entre genes e organismos, ao introduzir como unidade mais estável e mais apta para a sobrevivência e geração de descendência, o conceito de “replicador”, afirmando que as capacidades de longevidade, fecundidade e fidelidade da cópia são as prioritariamente selecionadas, portanto o replicador seria o nível de seleção por

Imagem

Figura 2 - Topologia de migração sem restrições (topologia de rede completa)
Figura 3 - Esquema para a migração de indivíduos entre subpopulações
Figura 5 - Topologia de migração por vizinhança (implementação 2-D)
Figura 6 - Processador executando as mesmas instruções sobre dados diferentes
+7

Referências

Documentos relacionados

dois gestores, pelo fato deles serem os mais indicados para avaliarem administrativamente a articulação entre o ensino médio e a educação profissional, bem como a estruturação

A prevalência global de enteroparasitoses foi de 36,6% (34 crianças com resultado positivo para um ou mais parasitos), ocorrendo quatro casos de biparasitismo, sendo que ,em

Alteração geométrica no teto a jusante de comporta do sistema de en- chimento e esvaziamento para eclusa de na- vegação: simulação numérica do escoamento e análise das pressões

We approached this by (i) identifying gene expression profiles and enrichment terms, and by searching for transcription factors in the derived regulatory pathways; and (ii)

4 - A presente comissão tem como missão verificar a conformação legal e corres- pondentes implicações orçamentais das políticas de gestão dos recursos humanos do Setor

a) A União Europeia constitui-se na atualidade como sendo o exemplo mais bem sucedido de integração econômica regional. Atualmente é composta por 27 países e

Portanto, a inclusão das metodologias ativas é uma alternativa eficaz para auxiliar o estudante a sanar as possíveis dúvidas no decorrer da disciplina e ao mesmo

3.7.7 Para candidatos que tenham obtido certificação com base no resultado do Exame Nacional do Ensino Médio - ENEM, do Exame Nacional para Certificação de Competências