• Nenhum resultado encontrado

3.3 Computação Evolucionária

3.3.3 Coevolução

O termo coevolução apareceu pela primeira vez na literatura no trabalho A Mathematical Model for the Co-evolution of obligate Parasites and their Hostsde C. J. Mode em 1958 no periódico Evolution. Posteriormente, o termo passou a ser di- fundido na literatura, representando as interações entre espécies que convivem em um mesmo ambiente e que, de alguma forma, influenciam a evolução e com- portamento de outras espécies na tentativa de adaptação ao meio em que vivem.

Essa interação entre espécies pode ser positiva ou negativa. Na primeira, os termos mutualismo e simbiose, utilizados por biólogos, são exemplos de re- presentantes, uma vez que a coadaptação das espécies ocorre de uma maneira mutuamente benéfica. No segundo tipo, podem ser citados o predatismo e o parasitismo como exemplos, haja vista que uma espécie interfere de forma ne- gativa na sobrevivência de outra.

Um algoritmo coevolucionário é um algoritmo evolucionário, que envolve normalmente mais de uma população, no qual a aptidão de cada indivíduo de- pende de sua interação com os outros indivíduos. Por conseguinte, as popula- ções possuem superfícies de aptidão e trajetórias evolucionárias acopladas umas às outras, sendo que alterações genéticas de um grupo ocasionam variações em outros grupos.

A abordagem coevolucionária proporciona (Paredis, 1995):

• a descoberta de soluções complexas sempre que soluções complexas são requeridas;

• a manutenção da diversidade entre os indivíduos;

• uma boa alternativa para implementação de algoritmos em ambientes pa- ralelos.

A coevolução pode ser dividida em duas classes: competitiva e cooperativa. Na coevolução competitiva, as espécies presentes no mesmo ecossistema com- petem entre si, de forma que o ganho de uma espécie em sua evolução acarreta em perda de uma outra espécie (Eiben e Smith, 2003). Assim, o sucesso de um lado deve ser sentido como um risco que precisa ser respondido à altura para evitar possível extinção (Coelho, 2004).

A seguir, a coevolução cooperativa será apresentada com mais detalhes, uma vez que, na construção de comitês, diversidade e cooperação entre seus compo- nentes são requisitos importantes (Ando, 2007; Thomason e Soule, 2007), con- forme discutido na Seção 2.3.

3.3.3.1 Coevolução cooperativa

Modelos coevolucionários cooperativos, nos quais um diferente número de es- pécies, cada uma representando parte de um determinado problema, cooperam

Algoritmo 9 Coevolução cooperativa

t=0

Inicializar cada sub-população Pi(t)

Avaliar indivíduos de cada sub-população

Escolher o representantes Ri(t)de cada sub-população Repetir

t=t+1

Para cada sub-população faça

Selecionar indivíduos pais para recombinação Aplicar operadores de recombinação e obter a prole Aplicar operadores de mutação na prole

Avaliar aptidão da prole

Escolher os representantes Ri(t)de cada sub-população Substituir membros de Pi(t−1)pela prole para obter Pi(t)

Fim Para

até condição de término for satisfeita

de forma a obter uma solução conjunta para um problema de grande complexi- dade, têm sido bastante estudados (Eiben e Smith, 2003). Uma importante carac- terística desta abordagem é, então, a decomposição de um problema em partes menores e mais fáceis de serem tratadas, atendendo o princípio de dividir-para- conquistar.

O objetivo de cada indivíduo de uma dada espécie (sub-população) passa a ser duplo: otimizar a tarefa delegada à sua espécie e cooperar com os indiví- duos de outras espécies de forma a obter os indivíduos que formam o melhor conjunto.

O Algoritmo 9 apresenta o pseudo-código da coevolução cooperativa apre- sentada por Potter (1997). Como na natureza, as espécies são geneticamente isoladas (isoladas em sub-populações), os indivíduos só podem se reproduzir com outros indivíduos da mesma espécie. A avaliação dos indivíduos de cada espécie é realizada por meio do desempenho da colaboração formada pelo indi- víduo i de uma certa sub-população com indivíduos representantes das outras espécies (Fig. 3.4). Segundo Wiegand et al. (2001), há três métodos para avaliar os indivíduos de uma sub-população:

• otimista: a aptidão do indivíduo é determinada pela colaboração de me- lhor avaliação realizada por ele;

• média: a aptidão do indivíduo é definida como a avaliação média entre suas colaborações;

• pessimista: associa-se ao indivíduo a avaliação de sua pior colaboração. Em Wiegand et al. (2001), os testes realizados com o modelo otimista al- cançaram melhores resultados do que o modelo pessimista e o de média. Uma outra escolha a ser feita é como escolher os representantes de uma espécie. O método mais utilizado é escolher o melhor indivíduo da geração anterior. Pode- se escolher o melhor e o pior indivíduo da geração anterior ou, ainda, adi- cionar um indivíduo aleatoriamente como mais um representante. A escolha do número de colaboradores é de grande relevância no desempenho do algoritmo, porém, com o aumento do número de colaboradores, o custo computacional também aumenta (Wiegand et al., 2001). Como a escolha a priori do número de espécies pode não ser adequada ao problema, devido à falta de conheci- mento prévio do mesmo, Potter e Jong (2000) propuseram uma metodologia na qual novas espécies são introduzidas dinamicamente quando ocorrer uma estagnação na aptidão de todo ecossistema.

Ademais, além do fato da coevolução cooperativa estimular a diversidade entre as espécies, possibilitar o processamento paralelo do algoritmo, reduzindo o custo computacional, torna-se possível a utilização de espécies bastante dis- tintas uma vez que nenhuma troca genética é realizada entre as sub-populações. Funções de aptidão inspiradas em coevolução foram suficientes para geração de componentes diversos como apresentado no trabalho de (Gagné et al., 2007). Portanto, a construção de máquinas de comitê, alvo deste trabalho, pode se be- neficiar dessas características inerentes aos algoritmos coevolucionários.

3.4 Computação Evolucionária na Construção de Má-