• Nenhum resultado encontrado

Algoritmo de otimização

No documento Universidade do Estado do Rio de Janeiro (páginas 78-82)

5 IMPLEMENTAÇÃO

5.1.1 Algoritmo genético

O algoritmo genético (doravante, AG) é um algoritmo bioinspirado de busca direta – isto é, foi baseado na teoria da evolução natural, na qual os indivíduos mais aptos tornam-se mais frequentes em uma população. Ele é denominado “de busca direta” porque se baseia em avaliações diretas da função objetivo, e não de sua derivada, como no método de Newton e nos demais baseados em gradientes.

A premissa básica do AG é que o indivíduo de maior aptidão em seu meio – o de maior fitness – irá ser o mais fecundo. Essa lógica natural trouxe soluções elegantes para problemas de engenharia enfrentados pelos seres vivos, e quando traduzida para linguagem computacional por Goldberg e Holland (1988) deu origem a métodos de otimização bastante versáteis cujas variações até hoje encontram uso.

Cada indivíduo em seu meio compete com uma população de outros para levar seus genes à geração seguinte. Na natureza, estes genes codificam atributos que os dotam de uma probabilidade maior ou menor de reproduzirem-se na geração seguinte. Ao conjunto de genes e seu respectivo conjunto de atributos associados, denominam-se genótipo e fenótipo. Esta é uma distinção importante pois, embora a pressão evolutiva aja sobre os atributos – o fenótipo – são os genes quem são repassados adiante e trabalhados no AG.

Da mesma forma que cada indivíduo possui um código genético próprio, no AG as soluções também são codificadas. Sendo a função a ser maximizada do tipo , o argumento de entradas é geralmente uma string ou vetor com valores armazenados em binário (implementação mais comum) ou em decimal. Como nos seres vivos, para o genótipo se expressar, deve ser transcrito: no AG esse papel é desempenhado pela função que traduz o genótipo em valores avaliáveis pela fitness:

geralmente uma função que converte a string (ou vetor, de acordo com a implementação) de binário para decimal.

Uma vez que cada indivíduo tenha sua própria aptidão avaliada, é possível passar à fase seguinte do AG: a criação de uma nova população. Na natureza, os mais aptos são aqueles que serão os mais fecundos. No AG, esse comportamento será copiado ao se dar maiores chances de reprodução aos indivíduos com maior avaliação de função objetivo.

O AG é, portanto, um algoritmo populacional. Sua convergência se dá quando todas as soluções de sua população passam a exibir valor similar e/ou todos os indivíduos possuem genótipos convergentes. A nova população é gerada a cada iteração do algoritmo, e o número de indivíduos da mesma é um parâmetro inicialmente especificado.

Na natureza, a luta pela sobrevivência garante que apenas os organismos mais adaptados às circunstâncias propaguem adiante seus genes. No AG, as circunstâncias às quais os indivíduos-solução devem se adaptar é se tornarem a solução ótima de um problema de maximização. Isso é realizado através do operador de seleção: esta operação é a responsável por fazer a triagem de quais os indivíduos que terão seus genes copiados para as gerações seguintes.

Esquemas comuns de seleção incluem: roleta viciada (indivíduos de maior fitness tem maior chance de serem selecionados para serem pais dos indivíduos que serão gerados), N melhores (um dos pais sempre será um dos N indivíduos de melhor fitness da geração anterior, e o outro um aleatório).

Na roleta viciada, é realizado um rankeamento da população de acordo com sua fitness. Então, a probabilidade de que o indivíduo seja escolhido como um pai para criação de indivíduos-filho para a próxima geração é dada por:

Onde é a fitness do indivíduo e ∑ seja o somatório da fitness de todos os indivíduos. Assume-se neste método que a função fitness seja não- negativa. Sendo geradas as probabilidades , são sorteados indivíduos 2 a 2 para geração de novos descendentes via cruzamento – o crossover.

No método N melhores, são destacados da população um subgrupo dos N indivíduos mais aptos; para obter 2 a 2 os pais que serão usados na geração de novos descendentes, são sorteados um indivíduo do grupo dos N melhores e um do restante da população. O número N é determinado a priori no algoritmo, e quanto menor, mais rápida a convergência do algoritmo. Problemas difíceis, que exigem uma maior procura no espaço de busca, podem usar um N maior (geralmente, o tamanho máximo adotado para N é 10% da população).

∑ (272)

5.1.2 Criação de novas soluções dentro de Algoritmos Genéticos

Na reprodução eucariótica, 50% do genótipo do indivíduo filho vêm do pai e 50% da mãe. Por meio de um processo conhecido como crossover [cruzamento], trechos de código genético de ambos os pais são combinados de forma a gerar um novo descendente. Devido às diversas maneiras pelas quais esses genes podem ser doados de cada um e combinados (diferentes pontos de cruzamento), os mesmos pais podem ter filhos com códigos genéticos muito distintos, inclusive com cada pai respondendo por frações diferentes de 50% de genes. Vide Figura 7:

Figura 7 – O crossover de 2 genótipos

Fonte: BRASIL, [s.d.]

Para cada indivíduo criado, são necessários dois progenitores da geração anterior. A escolha destes é baseada na fitness que estes possuem. Escolhidos dois indivíduos, o código genético destes é embaralhado via crossover e são gerados novos membros da nova geração. Aplica-se então o operador de mutação, que introduz uma mudança aleatória no genótipo e amplia o espaço de busca do algoritmo.

Na implementação binária, a mutação é realizada da seguinte forma: define- se no início do algoritmo uma taxa de mutação (geralmente da ordem de 5%). Cada vez que um indivíduo é criado, sorteia-se um número real aleatório no intervalo 0,1 para cada alelo. Caso este número seja menor que a taxa de mutação, muda-se o número binário de 0 pra 1 ou vice-versa. Repete-se este processo em todos os alelos até que todo o genótipo tenha sido percorrido pelo operador de mutação.

5.1.3 Convergência de soluções dentro de Algoritmos Genéticos

O processo de seleção e criação de indivíduos é realizado até que a população esteja completa. O fato de que indivíduos de maior aptidão – que são as boas soluções – propagarem mais seus genes faz com que as melhores soluções encontradas sejam mantidas no algoritmo e refinadas. Nesta dinâmica, a tendência é que ao longo das iterações a população convirja para a solução. Caso a função objetivo seja multimodal e os múltiplos ótimos possuam mesmo valor de fitness, pode acontecer um fenômeno de clusterização espontânea dos indivíduos ao longo de sua evolução. Desta forma, o algoritmo atinge seu objetivo: a localização de um (ou múltiplos) ótimo global.

No documento Universidade do Estado do Rio de Janeiro (páginas 78-82)

Documentos relacionados