Professional Documents
Culture Documents
Genéticos
Índice
Evolução 3
Seleção Natural 4
Histórico 6
Introdução 7
Quando Utilizar um Algoritmo Genético? 9
Algoritmo Genético Básico 10
Tipos de Codificações para os Algoritmos Genéticos 11
Codificação Real X Clássica (Binária) 11
Inicialização 13
Cálculo da aptidão 13
Codificação Binária 13
Codificação Real 14
Seleção dos indivíduos 14
Cruzamento 16
Codificação Binária 16
Codificação Real 18
Mutação 20
Codificação Binária 20
Codificação Real 21
Elitismo 22
Parâmetros genéticos 23
Aplicações 24
Bibliografia 26
3
Evolução
Figura 1: População composta por girafas de pescoço curto e pescoço comprido (à esquerda); Girafas de
pescoço curto sofrendo extinção natural (ao centro); População composta apenas por girafas de pescoço longo
(à direita).
Seleção Natural
Figura 2: Borboleta clara é camuflada pela superfície de árvores e construções já a borboleta escura é alvo dos
predadores (à direita). Com a industrialização a superfície foi alterada, favorecendo as mariposas escuras (à
esquerda) colocando as mariposas brancas na mira dos predadores.
Histórico
Introdução
quais a função a ser minimizada (ou maximizada) tem valores relativamente baixos (ou
altos). Para realizar o processo são utilizados valores estatísticos.
Apesar de aleatórios, eles não são caminhadas aleatórias não direcionadas, pois
exploram informações históricas para encontrar novos pontos de busca onde são esperados
melhores desempenhos. Isto é feito através de processos iterativos, onde cada interação é
chamada de geração.
Durante cada iteração, os princípios de seleção e reprodução são aplicados a uma
população de candidatos que pode variar, dependendo da complexidade do problema e dos
recursos computacionais disponíveis.
A vantagem principal dos AG’s ao trabalharem com o conceito de população, ao
contrário de muitos outros métodos que trabalham com um só ponto, é que eles encontram
segurança na quantidade. Tendo uma população de pontos bem adaptados, a possibilidade
de alcançar um falso ótimo torna-se menor. Os AG’s conseguem grande parte de sua
amplitude simplesmente ignorando informação que não constitua parte do objetivo,
enquanto outros métodos apóiam-se fortemente nesse tipo de informação e, em problemas
nos quais a informação necessária não está disponível ou se apresenta de difícil acesso,
estes outros métodos falham.
O conceito de máximo local (ou falso ótimo) acontece quando o algoritmo converge
para uma solução local e a explora até que encontre seu melhor valor, ignorando, porém o
restante do espaço de busca.
A Figura 3 retrata um exemplo onde o AG encontrou um máximo local, também
conhecido como falso ótimo. O algoritmo convergiu para a região em vermelho, que
representa um máximo local, visto que para aquela região ela é a melhor solução, porém
não é melhor solução dentro do espaço de busca. A melhor solução do espaço de busca é
representada pela figura em azul. O fato do ótimo local ocorre pois o algoritmo tende a
buscar aquele ponto, ignorando as demais regiões pois as soluções mais próximas são
piores (são os vales laterais ao pico, que representa a melhor solução local).
Os AG’s são ditos métodos de busca cega, pois não tem conhecimento específico do
problema a ser resolvido, tendo como guia apenas a função objetivo. São métodos
codificados, pois não trabalham diretamente com o domínio do problema e sim com
representações dos seus elementos. Apresentam ainda características estocásticas
9
Pesquisas realizadas sobre os AG’s descrevem uma vasta gama de aplicações nas
quais estas técnicas obtiveram pleno sucesso, mas existem também inúmeros casos onde a
performance dos AG’s não conseguiu obter bons resultados. Como podemos fazer para
verificar se um problema pode ou não ser resolvido através dos AG’s?
Normalmente (na maioria das vezes), os AG’s têm sido mais usados para solução de
funções de otimização, nas quais eles vêm se mostrando bastantes eficientes e confiáveis.
Porém, como é de se esperar, nem todos os problemas podem ter resultados satisfatórios ou
mesmo ser representados adequadamente para o uso de técnicas de AG. Geralmente é
necessário levantar as seguintes características relativas ao problema a ser resolvido, antes
de se tentar utilizar os AG’s:
• O espaço de busca (possíveis soluções) do problema em questão deve estar
delimitado dentro de uma certa faixa de valores.
10
• Deve ser possível definir uma função de aptidão (fitness) que nos indique quão boa
ou ruim é uma determinada resposta. Função esta que servirá de métrica para a solução do
problema.
• As soluções devem poder ser codificadas de uma maneira que resulte relativamente
fácil a sua implementação no computador.
A literatura geralmente cita que os AG’s podem ser utilizados para praticamente
todo tipo de problema, porém é sempre interessante considerar as características citadas
acima para que o desenvolvimento do processo não seja inviável ou mesmo atingir soluções
consideradas ruins.
Figura 4: representação de um AG básico (segundo GOLDBERG, 1989) contendo os passos presentes dentro
do processo.
Inicialização
Cálculo da aptidão
Neste passo são calculados os valores de aptidão para cada um dos n indivíduos da
população. É comum que esta aptidão seja calculada através da função objetivo, que
depende diretamente das especificações do projeto. Após o cálculo os indivíduos são
ordenados conforme sua aptidão.
Codificação Binária
Caso o projetista esteja trabalhando com strings binárias é necessária à
transformação do valor binário obtido em numérico, a fim de obter o valor do fitness. A
Equação 1 pode ser utilizada para calcular o mapeamento de um gene binário inteiro em
um intervalo dos reais de ponto fixo a fim de realizar o cálculo do fitness.
14
b10
I x = min + ∗ (max − min) (1)
2L −1
onde:
min: menor valor real no intervalo de mapeamento;
max: maior valor real no intervalo de mapeamento;
b10: valor binário a ser mapeado convertido para base decimal;
L: no de bits utilizados no cromossomo binário.
Codificação Real
Caso o projetista esteja trabalhando com a Codificação real não há a necessidade de
transformar os valores para que seja realizado o cálculo da função de aptidão.
O método é considerado simples, pois consiste em criar uma roleta na qual cada
cromossomo possui um segmento proporcional à sua aptidão. Para um melhor
entendimento, será utilizado um exemplo de uma população com 7 cromossomos cuja
aptidão é dada pela conversão de binário para decimal. Como pode ser visto na tabela 1.
Com os valores percentuais obtidos na quarta coluna da Tabela 1, bem como a
terceira coluna da Tabela 2, é possível construir uma roleta constante, conforme a Figura
5. Esta roleta será girada o número de vezes necessárias à seleção a fim de que seja
composta a população auxiliar que será utilizada na propagação da espécie; neste caso a
roleta será girada sete vezes. Os indivíduos com fitness maior possuem uma área maior na
roleta, acarretando maior probabilidade de seleção aos elementos mais aptos de cada
geração.
É interessante observar que a tabela abaixo se utilizada da codificação clássica.
Pode-se verificar a presença das cadeias de strings que representam os indivíduos. Nota-se
que o campo da tabela chamado aptidão é obtido através da aplicação da Equação 1 aos
elementos do campo string (que representam cada um uma possível solução para o
problema). Neste caso, o valor de aptidão é simplesmente a transformação das cadeias
binárias em valores decimais.
Caso estivéssemos trabalhando com a codificação real esta representação (por
tabela) seria um pouco diferente. O campo string seria desnecessário e o campo aptidão
seria composto apenas do valor de cada indivíduo. Como representado na Tabela 2.
16
Cruzamento
Codificação Binária
O processo de cruzamento é utilizado após a realização da seleção. Nesta fase
ocorre a troca de segmentos entre “pares” de cromossomos selecionados para originar os
novos indivíduos que virão a formar a população da geração seguinte.
17
Codificação Real
Segundo SANTA CATARINA (2004), utilizam-se operadores de cruzamento
aritméticos para realizar o cruzamento dos cromossomos. Alguns exemplos de operadores
aritméticos são: média, média geométrica, aritmético e heurístico.
O tipo de cruzamento mais simples dentro da codificação real é o cruzamento
simples, onde são escolhidos aleatoriamente dois indivíduos de uma geração e estes geram
os dois novos cromossomos. Funciona como o cruzamento de um ponto, porém com
valores reais, onde o ponto de cruzamento é escolhido aleatoriamente (desde que não sejam
os pontos extremos do cromossomo). Cada novo cromossomo possuirá metade dos genes
de cada pai. Por exemplo, temos dois cromossomos pais cada um com 10 genes diferentes.
Então é obtido um valor aleatório da posição de cruzamento. Digamos que esta posição seja
5, então, o primeiro filho terá os genes 1, 2, 3, 4 e 5 do primeiro pai e os genes 6, 7, 8, 9 e
10 do segundo pai. Já o segundo filho terá os genes de 1 a 5 provenientes do segundo pai e
o restante dos genes do primeiro pai.
19
( P1 + P2 )
Média Simples C1 = (2)
2
C = P1 + β ( P2 − P1 ) (6)
20
Mutação
A mutação é geralmente vista como um operador de "background", responsável pela
introdução e manutenção da diversidade genética na população (HOLLAND, 1975). Ela
trabalha alterando arbitrariamente um ou mais componentes de uma estrutura escolhida
entre a descendência, logo após o cruzamento, fornecendo dessa forma meios para a
introdução de novos elementos na população. Assim, a mutação assegura que a
probabilidade de se chegar a qualquer ponto do espaço de busca nunca será zero.
Codificação Binária
O operador de mutação é aplicado aos indivíduos com uma probabilidade dada por
uma taxa de mutação definida pelo projetista. O cromossomo tem todos seus genes
percorridos. Caso a taxa de mutação seja maior que o valor sorteado pelo gene então este
sofrerá mutação. Geralmente esta taxa é bastante baixa, sendo os valores comumente
21
usados dentro da faixa de 0,01 a 0,001. A Figura 7 exibe um exemplo de mutação, onde o
terceiro gene apresentou um valor inferior à taxa de mutação e, portanto, sofrerá a mutação.
Neste exemplo apenas para o terceiro gene o valor sorteado foi inferior ao valor da taxa de
mutação.
Pode acontecer de um cromossomo possuir vários genes alterados pela mutação ou
mesmo não apresentar nenhuma alteração, caso o valor sorteado seja sempre maior que a
taxa de mutação fornecida pelo projetista.
Codificação Real
Segundo SANTA CATARINA (2004), existem diversas formas de se realizar a
mutação quando a codificação real está sendo utilizada, tais como mutação uniforme,
mutação gaussiana, creep, mutação não uniforme e não-uniforme múltipla.
HERRERA, LOZANO e VERDEGAY (1996) em seu trabalho propuseram a
mutação randômica que é bastante simples. Os genes do novo cromossomo são obtidos
aleatoriamente de uma distribuição uniforme obtida de um intervalo determinado.
Conforme o mesmo autor a mutação uniforme é efetuada através da substituição do
gene selecionado do cromossomo por outro gene gerado aleatoriamente, segundo uma
distribuição uniforme, entre os limites mínimo e máximo permitidos. Nesta distribuição
uniforme todos os números possuem a mesma probabilidade de ocorrer, assim como em um
dado, onde qualquer dos valores possui uma probabilidade de 1/6 de ser obtido.
Já a mutação gaussiana é realizada substituindo-se o gene selecionado por outro
gerado a partir de uma distribuição N(pi, σ2), onde pi é igual ao valor de gene a ser
substituído e a variância é definida pelo próprio pesquisador. Pesquisadores citam que o
22
valor da variância pode ser iniciado próximo de 0,5 e de acordo com o aumento no número
de gerações ele pode ser diminuído.
Na mutação creep, acrescenta-se ou subtrai-se um pequeno número aleatório obtido
de uma distribuição N(0, σ2) onde a variância assume um valor pequeno. Segundo o mesmo
autor, esta mutação é utilizada para explorar o espaço de busca localmente.
A mutação não-uniforme consiste na simples substituição de um gene por um
número extraído de uma distribuição não-uniforme, onde os valores possuem uma
probabilidade diferente de ocorrerem. A mutação não-uniforme múltipla consiste em
aplicar a mutação não-uniforme em todos os genes do cromossomo selecionado.
A mutação Discreta modal é apresentada pelas Equações 7 e 8:
π
γ = ∑ α K BMK
K =0 (7)
onde,
log(rang )
π = min
log( B m) (8)
Elitismo
Porém caso sejam utilizados muitos elementos dentro do elitismo o algoritmo pode
convergir precocemente e alcançar assim um máximo local.
O elitismo é utilizado da mesma forma, tanto na codificação real quanto na
codificação clássica.
Parâmetros genéticos
questão, mas acredita-se que para a maioria dos casos, o valor ideal se encontra entre 0,001
e 0,01;
4. Intervalo da Geração: Determina a percentagem da população que será
substituída na geração seguinte. Caso o valor do intervalo de geração seja muito alto,
grande parte da população poderá ser substituída, aumentando assim as chances de se
perder indivíduos com alta aptidão. Porém, caso o valor seja muito baixo, o algoritmo pode
se tornar muito lento.
Aplicações
• No presente momento, talvez uma das mais populares aplicações seja a de combinar
Algoritmos Genéticos com Redes Neurais, ou para treiná-las ou para encontrar sua
topologia. Finalmente, é importante salientar que ainda é incipiente a pesquisa sobre a
aplicabilidade dos Algoritmos Genéticos no problema de programação de projetos em
geral. É, particularmente, muito pequena na área de projetos de construção, por exemplo.
26
Bibliografia
DARWIN, C. The descent of man, and selection in relation to sex. London, 1871.
http://laqqa.iqm.unicamp.br/algoritmosgeneticos.htm
http://www.din.uem.br/ia/geneticos/
28
http://www.geocities.com/Athens/Sparta/1350/ia/ag_aplica.html
http://www.geocities.com/igoryepes/visualizar2.htm
http://www.gta.ufrj.br/~marcio/genetic.html
http://www.icmc.usp.br/~andre/research/genetic/