• Nenhum resultado encontrado

Estudos Preliminares

N. Fanouts Corte

2.4. Computação Evolucionária

A computação evolucionária é uma área de pesquisa da ciência da computação que tem como principal fonte de inspiração o processo de evolução natural. Nesse processo, um ambiente com recursos limitados é ocupado com uma população de indivíduos que lutam para sobreviver e para reproduzir. Cada indivíduo possui uma

aptidão que é determinada pelo ambiente. Nesse cenário, a seleção natural é inevitável. Indivíduos mais aptos têm mais chances de obterem sucesso em seus objetivos, ou seja, têm mais chances de sobreviver e de se multiplicar. Desta forma, a aptidão da população tende a ser crescente.

Dois pontos são fundamentais para as bases do sistema evolucionário. O primeiro são os operadores de variação que são responsáveis por criar a diversidade necessária dentro da população, e o segundo são os operadores de seleção que forçam o aumento na qualidade das soluções na população.

Para qualquer algoritmo evolucionário, um número de componentes, procedimentos e operadores devem ser indicados (EIBEN e SMITH, 2003): a representação do indivíduo, a função de avaliação, a população, os mecanismos de seleção dos pais, os operadores de variação e os mecanismos de seleção de sobreviventes.

Um dos modelos computacionais clássicos inspirados no paradigma da computação evolucionária são os algoritmos genéticos (LINDEN, 2006) que, baseados na teoria da evolução de Darwin, incorporam soluções potenciais para problemas específicos numa estrutura semelhante à de um cromossomo e aplicam operadores de seleção, recombinação e mutação a essas estruturas, de forma a preservar informações críticas relativas à solução do problema. Outros modelos, que constituem um novo ramo da inteligência artificial, são os algoritmos baseados em inteligência de enxame (BONABEAU E, 1999), que consistem em um conjunto de técnicas baseadas no comportamento coletivo de sistemas autodistribuídos, autônomos, flexíveis e dinâmicos. Um desses modelos é a colônia artificial de abelhas que se baseia no comportamento inteligente observado em colônias de abelhas, mais especificamente o forrageamento.

O algoritmo genético e a colônia artificial de abelhas foram utilizados no desenvolvimento dos métodos de mapeamento tecnológicos propostos nesta tese. As seções seguintes apresentam as noções básicas dessas abordagens.

2.4.1. Algoritmos Genéticos

Os algoritmos genéticos (GAs) são métodos de busca e otimização inspirados na teoria de seleção natural proposta por Darwin. Esses algoritmos são inspirados nos processos genéticos de organismos biológicos para procurar soluções ótimas ou

subótimas. Desta forma, os sistemas baseados em algoritmo genético têm sido utilizados na solução de problemas complexos ou com espaço de busca extenso.

Nos algoritmos genéticos, cada solução é codificada como um cromossomo composto de uma cadeia de bits ou símbolos. A esses cromossomos, dá-se o nome de indivíduos. Os indivíduos evoluem ao longo das gerações e, de acordo com os princípios de seleção natural, os indivíduos mais aptos tem mais chance de sobrevivência. O conjunto de indivíduos do sistema é denominado de população.

Os indivíduos são submetidos a um processo de evolução que envolve avaliação, seleção, recombinação e mutação. Após alguns ciclos de evolução, a população será composta dos indivíduos mais aptos. Para avaliar quão bom é um indivíduo em relação à população, ao mesmo é atribuído um valor de aptidão.

Durante o processo, os indivíduos mais aptos tem maior probabilidade de se reproduzirem mediante a recombinação com outros indivíduos da população. A mutação, por sua vez, permite que indivíduos com novas características sejam introduzidos na população. O pseudocódigo do procedimento básico de um GA é ilustrado Figura 18.

Figura 18. Pseudocódigo do algoritmo genético

O processo começa com a criação aleatória dos indivíduos que formarão a população inicial (linha 2). Enquanto a condição de término não é satisfeita (linha 4), a população é avaliada (linha 5) e a cada indivíduo é atribuído um valor de aptidão. Em seguida, a partir de um processo de seleção baseado em aptidão, são escolhidos os indivíduos para serem os pais na fase de reprodução (linha 6). Uma nova população é criada a partir da utilização de um conjunto de operadores genéticos (linha 7). Os pais são selecionados e se recombinam em pares. Os filhos oriundos da recombinação sofrem mutação e são avaliados (linha 8). A população que compõe a nova geração é

1: Algoritmo Genético{

2: Inicialização da população P(0); 3: t = 0;

4: Enquanto ( condição de termino não é satisfeita ) { 5: Avaliação da população P(t); 6: P’ = Seleciona_Pais P(t); 7: P’ = Recombinação e mutação P’ ; 8: Avalia População P’; 9: P(t+1) = Selecione Sobreviventes P(t), P’; 10: t = t + 1; 11: } 12: }

definida a partir de um processo de seleção (linha 9) empregado para determinar, entre os indivíduos da população atual e da população criada a partir dos operadores, quais irão sobreviver.

2.4.2. Algoritmos Evolucionários Multiobjetivos

Nesta seção, são apresentadas quatro estratégias de algoritmos genéticos multiobjetivos consolidadas na literatura. Para cada uma das estratégias estudadas serão apresentados os princípios básicos e o pseudocódigo. Ao final da seção, será apresentado um estudo comparativo das técnicas avaliadas.

2.4.2.1.

NPGA

O algoritmo NPGA (Niched Pareto Genetic Algorithm) é outra abordagem baseada em algoritmos genéticos, proposto por Horn et al. (HORN, NAFPLIOTIS e GOLDBERG, 1994), e apresenta um mecanismo de seleção por torneio baseado na dominância do Pareto. O pseudocódigo do NPGA é ilustrado na Figura 19. O NPGA depende do ajuste de dois parâmetros, o share, que define a região de densidade, e o tdom, que define o tamanho da subpopulação a ser relacionada no torneio. Os parâmetros share e tdom são definidos pelo usuário, o que requer um conhecimento prévio para definir os melhores valores para cada problema. O valor de share representa o raio da região de densidade confome mostra a Figura 20. O cálculo de densidade em torno da solução desejada é feito atravpes da contagem do número de soluções conidas naquela região. Inicialmente, a população inicial é criada (linha 1) é avaliada (linha 2), em seguida, para cada geração se repetem as ações: Seleção por torneio (linhas 5 a 13), cruzamento de um ponto (linha 14), mutação (linha 15) e avaliação da nova população (linha 16). Durante o torneio, dois indivíduos são selecionados aleatoriamente e comparados com uma subpopulação de tamanho pré- definido. Se somente o candidato 1 é dominado (linha 6), o candidato 2 vence o torneio (linha 7). Da mesma forma, se somente o candidato 2 é dominado (linha 8), o candidato 1 é o vencedor (linha 7) . Se ambos ou nenhum candidato domina a subpopulação, então o vencedor é escolhido baseado no contador de nicho (linhas 10 a 12). O contador de nicho faz a contagem do número de soluções vizinhas que estão próximas da solução que está sendo analisada. Sendo portanto, uma forma de avaliar a densidade de soluções

próximas, de forma que a região de densidade de uma solução possa ser utilizada como critério de seleção de indivíduos da população.

Figura 19. Pseudocódigo do NPGA (Adaptado de (COELLO, LAMONT e VELDHUIZEN, 2007))

.

Figura 20. Cálculo de densidade baseado em

O NPGA depende do ajuste de dois parâmetros, o , que define a região de densidade, e o , que define o tamanho da subpopulação a ser selecionada no torneio. Os parâmetros e são definidos pelo usuário, o que requer um conhecimento prévio para definir os melhores valores para cada problema. O valor de

representa o raio da região de densidade conforme mostra a Figura 20. O cálculo

de densidade em torno da solução desejada é feito através da contagem do número de soluções contidas naquela região.

Em comparação a abordagens mais recentes de algoritmos evolucionários multiobjetivos, o NPGA tem se mostrado inferior. Numa comparação envolvendo seis

Z1 Z2 1: NPGA{ 2: Inicialização da população; 3: Avaliação da população; 4: Para cada geração faça {

5: Seleção por torneio baseado na dominância do pareto