You are on page 1of 28

Algoritmos

Genéticos

Apostila EPAC – Encontro Paranaense de Computação


Autor: André Luiz Brun
2

Í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

Os Algoritmos Genéticos (AG’s) são uma classe ou família de modelos


computacionais inspirados na evolução defendida por DARWIN (1859). Foram
inicialmente propostos por HOLLAND (1975). São considerados também algoritmos de
busca que se valem do paradigma genético/evolucionário.
Para que haja uma melhor compreensão do surgimento e evolução dos AG’s
baseados nas idéias evolucionistas de Darwin, idéias que ficaram conhecidas como
darwinismo, será visto uma breve introdução sobre evolução natural.

Evolução

O mundo sofreu uma revolução acerca da evolução natural com o lançamento de


dois livros de autoria de Charles Darwin (1809 – 1892): On the Origin of Species by
Means of Natural Selection (1859) e A The descent of man, and selection in relation to
sex (1871). Livros estes em que DARWIN defendia que o homem, assim como os outros
seres vivos, era resultado da evolução.
Em seus estudos, DARWIN concluiu que nem todos os organismos que nascem,
sobrevivem ou reproduzem-se. Os indivíduos mais propensos à sobrevivência são aqueles
mais adaptados para enfrentar determinadas condições ambientais. Logo estes indivíduos
teriam maior chance de se reproduzir e assim deixar seus descendentes. Assim, com o
passar dos anos, as variações favoráveis tendem a permanecer e as desfavoráveis tendem a
serem destruídas.
Um exemplo clássico da teoria Darwiniana é a girafa. Inicialmente (há muito tempo
atrás) existiam girafas com características bastante divergentes, algumas com pescoço
longo, pescoço médio e por fim, as girafas com pescoço comprido. Segundo Darwin, no
início, todos os tipos de girafas conviviam normalmente, porém, com o passar do tempo, a
vegetação mais baixa foi tornando-se mais escassa, visto que todas as girafas podiam dela
se alimentar. Chegou então um momento em que restou apenas a vegetação mais alta, onde
as girafas de pescoço mais curto não alcançavam. Logo, devido à falta de alimento, estas
girafas, “menos privilegiadas”, foram morrendo, restando apenas as girafas mais aptas ao
meio (as de pescoço comprido). Então, estas tiveram uma chance maior de reprodução e
4

conseqüentemente maior chance de gerar descendentes, compondo assim a atual população


de girafas apenas com indivíduos de pescoço longo.
A Figura 1 ilustra o exemplo da evolução das girafas, onde a seleção natural fez
com que apenas as girafas de pescoço comprido conseguissem gerar seus descendentes com
o passar do tempo. No primeiro quadro da figura (à esquerda), a população era composta
pelos diversos tipos de girafas, no segundo quadro (ao centro) pode verificar que os
indivíduos menos aptos, os de pescoço mais curto, foram sendo extintos. Restando assim,
apenas os indivíduos de pescoço comprido, conforme o terceiro quadro da figura (à direita).

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

Segundo DARWIN (1859), a seleção natural é um processo seletivo lento que


ocorre ao longo das gerações, através da qual as espécies podem se diversificar, tornando-
se mais adaptadas ao meio em que vivem. A seleção é determinada, em certa parte, pelos
fatores ecológicos do ambiente.
Através da seleção natural, a freqüência de um gene vantajoso, que apresenta
características positivas, aumenta gradativamente na população. A vantagem conferida pelo
gene pode se refletir em diversos fatores que façam com que as espécies que o apresente
sejam mais aptas. Por exemplo, o gene pode refletir em um maior tempo de vida de um
5

elemento, aumentando assim a probabilidade do mesmo de se reproduzir. O gene pode


aumentar a sua freqüência se ele fornecer ao indivíduo maior capacidade de se proteger.
Um exemplo bastante conhecido de seleção natural é o caso das mariposas de
Manchester na Inglaterra, ocorrido durante a revolução industrial. Onde, antes da
industrialização e conseqüentemente pouca poluição do ar, a população de mariposas era
em sua maioria, composta por indivíduos de cor branca. Porém com a industrialização, a
poluição atmosférica aumentou e, com o tempo o ambiente no qual a população de
mariposas vivia foi alterado. Depois de anos, constatou-se que as mariposas que
representavam a maioria de seu conjunto eram agora as pretas. Este fato ocorreu devido ao
poder de camuflagem que as mariposas pretas apresentaram com a poluição que tornava as
superfícies escuras. Já as mariposas brancas tornaram-se presas fáceis uma vez que eram
facilmente descobertas por seus predadores.
Observando-se a Figura 2 fica bastante evidente a inversão entre o tamanho das
populações das mariposas brancas e escuras. O segundo quadro (à direita) demonstra a
situação das mariposas em seu ambiente antes do processo que introduziu as indústrias na
cidade de Manchester. É bastante difícil detectar a presença da mariposa de cor clara
(presente dentro do círculo amarela), já a mariposa escura é facilmente identificada, o que a
tornava presa fácil aos seus predadores (principalmente pássaros). Já o primeiro quadro (à
esquerda) demonstra como o ambiente das mariposas sofreu com a poluição atmosférica e
também superficial após o processo de industrialização. Após esta mudança no ambiente as
borboletas escuras passaram a ser os elementos camuflados, visto que a poluição fez com
que seu ambiente fosse alterado devido à liberação de fuligem das indústrias, tornando
agora as mariposas brancas os alvos fáceis, visto que não podiam mais se camuflar.
De maneira rudimentar, os AG’s são técnicas de busca baseadas nas teorias da
evolução, nas quais as variáveis são representadas como genes em um cromossomo.
Combinam a sobrevivência dos mais aptos com a troca de informação de uma estrutura,
com a seleção natural, cruzamento e mutação dos elementos a fim de encontrar os
elementos mais aptos a determinada característica do meio. No caso da computação a
melhor ou conjunto de melhores soluções para o problema.
6

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

O princípio de que a variabilidade entre indivíduos de uma mesma população que se


reproduz sexualmente é produzida por dois fatores: a mutação e a recombinação genética.
Este princípio foi desenvolvido durante os anos 30 e 40, por biólogos e matemáticos de
importantes centros de pesquisa. Nos anos 50 e 60, muitos biólogos começaram a
desenvolver simulações computacionais de sistemas genéticos.
A seguir, John Holland dedicou-se ao estudo de processos naturais adaptáveis, tendo
inventado os AG’s em meados da década de 60. Ele desenvolveu os AG’s em conjunto com
seus alunos e colegas da Universidade de Michigan nos anos 60 e 70, com o objetivo de
estudar formalmente o fenômeno da adaptação como ocorre na natureza, e desenvolver
modelos em que os mecanismos da adaptação natural pudessem ser importados para os
sistemas computacionais. Em 1975, Holland publicou seu livro intitulado Adaptation in
Natural and Artificial Systems e, em 1989, David Goldberg edita Genetic Algorithms in
Search, Optimization and Machine Learning [GOL89], hoje considerados os livros mais
importantes sobre AG’s. Desde então, estes algoritmos vêm sendo aplicados com sucesso
nos mais diversos problemas de otimização e aprendizado de máquina.
7

Introdução

Toda tarefa de busca e otimização geralmente é composta por três componentes


básicos: a codificação do problema em questão (geralmente um dos passos mais complexos
do processo), o espaço de busca, onde são consideradas todas as possibilidades de solução
de um determinado problema e a função de avaliação (função fitness), que é uma maneira
de avaliar os membros do espaço de busca (varia de acordo com o problema). Existem
muitos métodos de busca e funções de avaliação.
As técnicas de busca e otimização tradicionais iniciam-se com um único candidato
que, iterativamente, é manipulado utilizando algumas heurísticas (estáticas) diretamente
associadas ao problema a ser solucionado. Geralmente, estes processos heurísticos não são
algorítmicos e sua simulação em computadores pode ser muito complexa. Apesar destes
métodos não serem suficientemente robustos, isto não implica que eles sejam inúteis. Na
prática, eles são amplamente utilizados, com sucesso, em inúmeras aplicações. Por outro
lado, as técnicas de computação evolucionária operam sobre uma população de candidatos
em paralelo. Assim, elas podem fazer a busca em diferentes áreas do espaço de solução,
alocando um número de membros apropriado para a busca em várias regiões.
Os AG’s diferem dos métodos tradicionais de busca e otimização, principalmente
em quatro aspectos:
• Trabalham com uma codificação do conjunto de parâmetros e não com os próprios
parâmetros;
• Trabalham com uma população e não com um único ponto;
• Utilizam informações de custo ou recompensa e não derivadas ou outro conhecimento
auxiliar;
• Utilizam regras de transição probabilísticas e não determinísticas.

AG’s são algoritmos de otimização global baseados nos mecanismos biológicos de


seleção natural e da genética. Eles empregam uma estratégia de busca paralela (onde cada
indivíduo de uma população é uma solução potencial) e estruturada, mas aleatória, que é
voltada em direção ao reforço da busca de pontos de "alta aptidão", ou seja, pontos nos
8

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

(aleatórias) pois combinam em proporção variável regras probabilísticas e determinísticas.


Esse conceito refere-se tanto à fase de seleção quanto à fase de transformação.

Figura 3: Representa o espaço de busca (todas as possíveis soluções). O quadro em


vermelho representa um máximo local (ou falso ótimo). O quadro em azul
representa a solução ótima do espaço de busca.

Quando Utilizar um Algoritmo Genético?

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.

Algoritmo Genético Básico

GOLDBERG (1989) apresenta a estrutura básica do funcionamento de um AG e de


que maneira cada fase do mesmo é realizada. Na Figura 4 é apresentada uma explanação
mais detalhada. Cada fase do algoritmo será vistam mais detalhadamente.
Basicamente o AG trabalha da seguinte forma:
• Inicialmente é gerada uma população formada por um conjunto aleatório de
indivíduos que podem ser vistos como possíveis soluções do problema.
• Durante o processo evolutivo, esta população é avaliada: para cada indivíduo é dado
um nota, ou índice, refletindo sua habilidade de adaptação a determinado ambiente.
• Uma porcentagem dos indivíduos mais adaptados são mantidas, enquanto os outros
são descartados.
• Os membros mantidos pela seleção podem sofrer modificações em suas
características fundamentais através de mutações e cruzamentos (crossover) ou
recombinação genética gerando descendentes para a próxima geração.
• Este processo, chamado de reprodução, é repetido até que uma solução satisfatória
seja encontrada. Embora possam parecer simplistas do ponto de vista biológico, estes
algoritmos são suficientemente complexos para fornecer mecanismos de busca adaptativos
poderosos e robustos.
11

Figura 4: representação de um AG básico (segundo GOLDBERG, 1989) contendo os passos presentes dentro
do processo.

Tipos de Codificações para os Algoritmos Genéticos

Atualmente existem 3 abordagens distintas que são utilizadas para realizar o


processo de codificação dos AG’s. A codificação clássica (ou binária) que trabalha com
strings de bits, a codificação Real que trabalha diretamente com valores reais e a
codificação inteira, que trabalha apenas com valores inteiros.
O presente trabalho abordará somente a Codificação Binária e a Codificação Real,
uma vez que a codificação inteira apresenta uma gama de aplicação muito pequena.

Codificação Real X Clássica (Binária)

A codificação binária, ou clássica foi a primeira a ser construída, porém com o


passar dos anos e com o aumento das aplicações dos AG’s surgiu também a codificação
real.
12

Os processos que apresentarem diferenças entre a codificação real e a codificação


clássica serão abordados separadamente para melhor entendimento do texto.
A técnica clássica de codificação dos algoritmos genéticos utiliza strings de bits a
fim de representar os cromossomos. Porém, com a necessidade de maior precisão numérica,
as cadeias de bits se tornam excessivamente longas, o que acarreta na necessidade de um
esforço computacional maior, causando também um consumo maior de tempo até a
convergência dos algoritmos.
Conforme HERRERA, LOZANO e VERDEGAY (1996), o uso de parâmetros reais
torna possível cobrir um domínio bastante abrangente, mesmo para domínios
desconhecidos, das variáveis, o que é difícil de se conseguir trabalhando com as cadeias
binárias, onde conforme o domínio do problema vai aumentando a precisão vai caindo (no
caso de cromossomos com tamanho fixo).
Outra vantagem em se utilizar parâmetros reais é a sua capacidade de explorar
gradualmente as funções com variáveis contínuas. Esta evolução gradual se aplica ao fato
de ligeiras (pequenas) mudanças nas variáveis corresponderem a ligeiras mudanças na
função. Ou seja, é interessante explorar gradualmente o domínio do problema, pois a
solução obtida pode ser melhor através de uma pequena mudança nos parâmetros. Já a
codificação real não possui esta opção de evoluir gradualmente.
O fato que acarreta em um consumo maior de tempo em problemas que necessitam
de uma boa precisão é a necessidade de se calcular o valor decimal da cadeia binária que
representa o cromossomo na técnica clássica. Além de que nas cadeias binárias existe a
necessidade da conversão dos bits para um valor numérico.
Segundo HERRERA, LOZANO e VERDEGAY (1996), devido a este problema
foram surgindo novas técnicas de codificação dos cromossomos, diferentes da técnica
clássica apresentada por Holland.
Uma solução que foi proposta com o intuito de evitar esta perda excessiva de tempo
foi a utilização de valores reais para se representar os cromossomos, técnica esta que ficou
conhecida como codificação real.
Segundo SANTA CATARINA (2004), no caso de um cromossomo representar mais
que um característico diferente, como é o caso deste trabalho, pode ser utilizado vários
genes dentro de um mesmo cromossomo.
13

Dentro da codificação real os operadores de mutação e cruzamento são realizados


de forma diferente do método utilizado na técnica tradicional.

Inicialização

Inicialmente uma população de n indivíduos é criada. Cada um destes indivíduos


representa uma possível solução, viável ou não, para o problema em questão, ou seja, um
ponto no espaço de soluções.
Geralmente estes indivíduos recebem valores aleatórios, mas caso o projetista tenha
um conhecimento considerável do problema a ser abordado ele pode fazer com que estes
indivíduos iniciais (população inicial) receba uma gama de valores direcionados, ou seja,
recebe valores que não se apresentaram absurdos ao contexto do problema. Por exemplo,
digamos que estamos trabalhando com um problema que visa encontrar a menor distância
entre duas cidades, cada indivíduo representa uma distância, seria indesejável que os
mesmos recebem distâncias negativas já que distâncias negativas não são possíveis neste
caso. A inicialização é realizada da mesma forma para as duas abordagens (binária e real).

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.

Seleção dos indivíduos

Segundo SCHNEIDER (1998) a idéia principal do operador de seleção, em um


algoritmo genético, é oferecer aos melhores indivíduos da população corrente preferência
para o processo de reprodução, permitindo que estes indivíduos possam passar as suas
características às próximas gerações. Isto funciona como na natureza, onde os indivíduos
altamente adaptados ao seu ambiente possuem naturalmente mais oportunidades para
reproduzir do que aqueles indivíduos considerados mais fracos.
Nesta fase, os indivíduos que se mostraram mais aptos da geração atual são
utilizados para gerar uma nova população através do cruzamento, ao menos teoricamente,
visto que alguns métodos não necessariamente selecionam apenas os melhores elementos
de cada geração.
O processo de seleção é realizado, geralmente, através de três mecanismos bastante
conhecidos:
15

1. Amostragem direta: o conjunto de indivíduos representantes da geração é


selecionado baseados em um critério fixo. Pode ser visto como escolha “a dedo’’ ou “os n
melhores”;
2. Amostragem aleatória simples ou equiprovável: todos os elementos possuem a
mesma chance de serem escolhidos para compor o conjunto que gerará a prole seguinte;
3. Amostragem estocástica: a chance de cada indivíduo ser selecionado é
diretamente proporcional ao valor de seu fitness. Um método de seleção, baseado no
mecanismo de amostragem estocástico, bastante conhecido é o Universal ou “Por roleta”
proposto por GOLDBERG (1989).

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

Tabela 1: Ilustração de 7 indivíduos através da codificação binária e de seus valores para a


seleção por roleta (Monte Carlo).

Tabela 2: Ilustração de 7 indivíduos através da codificação real e de seus


valores para a seleção por roleta (Método de Monte Carlo).

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

A idéia principal do cruzamento é propagar as características positivas dos


indivíduos mais aptos da população através da troca de segmentos de informações entre os
mesmos, o que originará novos indivíduos.
As duas formas mais comuns de troca de segmentos nos Algoritmos Genéticos são
as de um e de dois pontos de cruzamento.
1. Um ponto de cruzamento (single-point crossover): o ponto onde é realizada a
quebra é escolhido de forma aleatória, ou a critério do projetista, dentro da string que o
representa. Baseado neste ponto realiza-se a troca de material cromossômico entre os dois
indivíduos. Um exemplo de cruzamento de um ponto é representado pela Figura 6;
2. Dois pontos de cruzamento (two-point crossover): é realizado similarmente ao
cruzamento de um ponto, porém a troca de segmentos é realizada com um número maior de
intercalações, como visto na Figura 7.

Figura 5: Método de seleção pela roleta, também conhecido como Método de


Monte Carlo
18

Figura 6: Exemplo de cruzamento com 1 ponto, ou single-point crossover (aplicado à


codificação binária)

Figura 6: Exemplo de cruzamento com 1 ponto, ou two-point crossover (aplicado à


codificação binária)

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

No cruzamento discreto os valores do novo cromossomo são randomicamente


escolhidos de uma distribuição uniforme formada a partir de um conjunto de valores
formado pelos pais.
Os cruzamentos da média simples e média geométrica são bastante simples pois
consistem em gerar um novo cromossomo usando a média simples e a média geométrica de
dois cromossomos pais, respectivamente. Abaixo as fórmulas do cruzamento por média
simples (Equação 2) e por média geométrica (Equação 3):

( P1 + P2 )
Média Simples C1 = (2)
2

Média Geométrica C1 = P12 ∗ P22 (3)

O cruzamento aritmético é realizado através da aplicação de duas fórmulas:


C1 = β * P1 + (1 − β ) * P2 e C 2 = (1 − β ) * P1 + β * P2 (4)
onde c1 e c2 são os cromossomos filhos, p1 e p2 são os cromossomos pais e β∈U(0, 1).

No cruzamento heurístico é necessário ter conhecimento do valor da função fitness


dos pais. Este método consiste em gerar um cromossomo filho partir de uma interpolação
linear entre os pais usando a informação da aptidão. O cruzamento heurístico favorece o pai
com maior fitness. Dados dois cromossomos pais P1 e P2, onde o cromossomo P1 possui o
valor de fitness superior ao P2. O novo cromossomo é gerado a partir da seguinte fórmula
(Equação 5):

C = P1 + r ( P1 − P2 ) onde ƒ(P1) > ƒ(P2) (5)

onde o valor de r varia de 0 a 1.

Segundo SANTA CATARINA (2004), o cruzamento BLX-α consiste em gerar um


novo cromossomo a partir da Equação 6:

C = P1 + β ( P2 − P1 ) (6)
20

onde C é o cromossomo gerado, P1 e P2 são os cromossomos pais e β∈U(-α, 1 + α).


α é um pequeno valor que estende os limites para a definição de C. Caso o cromossomo
seja formado por múltiplos genes, a Equação 4 é aplicada a cada par de genes de P1 e P2.
Além dos modelos de cruzamento para codificação real citados acima existem
outros apresentados na literatura como o cruzamento BGA linear, o cruzamento FCB
(fuzzy connectives based) entre outros.
SANTA CATARINA e BACH (2003) em seu trabalho implementaram algoritmos
baseados na técnica clássica, e também utilizando a técnica da codificação real para
encontrar a melhor solução de uma determinada função. Através da análise dos resultados
obtidos por eles é possível verificar que ambos os algoritmos, apresentaram uma mesma, ou
muito similar, solução ótima para a função em questão. Porém, os algoritmos que
utilizaram a codificação real encontraram esta solução ótima com um consumo menor de
tempo. Fato este justificado pelo consumo de tempo em se calcular o valor numérico a
partir da cadeia de bits que representa o valor. É interessante citar que no caso em que foi
utilizada a técnica clássica de implementação dos AG’s a string era composta por 18 alelos
(2 para a parte inteira e 16 para a parte fracionária).

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.

Figura 7: Exemplo de Mutação Binária, onde apenas o 3º bit sofreu


mutação

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)

Bm > 1 é um parâmetro conhecido como base da mutação e rangmin é o menor limite


da faixa de mutação relativa.

Elitismo

O elitismo é uma técnica utilizada para melhorar a convergência dos algoritmos. A


técnica consiste em se escolher o melhor (ou melhores) indivíduo de cada geração e passá-
lo à geração seguinte sem que o mesmo (ou mesmos) sofra cruzamento e mutação, para que
conserve suas características consideradas boas. A utilização do elitismo faz com que o
algoritmo convirja mais cedo principalmente, pois evita que os elementos mais aptos sejam
perdidos ou modificados.
23

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

O comportamento dos Algoritmos Genéticos é influenciado pelos parâmetros


utilizados, para tanto, tornou-se necessário estudar de que maneira os parâmetros afetam o
comportamento dos AG’s.
Os parâmetros genéticos afetam da mesma forma a codificação real e a codificação
clássica.
1. Tamanho da População: O tamanho da população estabelece o número de
cromossomos na população, o número de elementos de cada geração. Afeta diretamente o
desempenho geral e a eficiência dos AG’s. Trabalhando com uma população de poucos
indivíduos o desempenho pode ser comprometido visto que o espaço de busca coberto será
pequeno. Já uma população grande oferece uma cobertura representativa do domínio do
problema e ainda evita o problema de uma convergência prematura para soluções locais.
Porém, trabalhar com uma população de tamanho considerável acarreta em uma
necessidade maior de recursos computacionais e também de um consumo de tempo maior;
2. Taxa de Cruzamento: A rapidez com que novas estruturas são introduzidas na
população depende da taxa de cruzamento. Quanto maior for esta taxa, mais rapidamente
novas estruturas serão introduzidas. Porém, se esta for muito alta, a maior parte da
população será substituída, e pode ocorrer perda de estruturas de alta aptidão. Com um
valor baixo, o algoritmo pode tornar-se muito lento;
3. Taxa de Mutação: é responsável por determinar a probabilidade em que uma
mutação ocorrerá. Uma baixa taxa de mutação evita que uma dada posição entre em
estagnação, possuindo sempre o mesmo valor. Com uma taxa muito alta a busca tende a se
tornar estritamente aleatória, além de aumentar muito a chance de que uma boa solução do
problema seja destruída. A melhor taxa de mutação varia de acordo com o problema em
24

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

• A AIS (Barcelona, Espanha) utilizou um sistema apoiado em AG’s e Sistemas


Especialistas (SE’s) para programar os Jogos Para-olímpicos de 1992 já que nas
Olimpíadas os atletas são organizados em duas grandes classes, masculino e feminino, e os
competidores para-olímpicos são divididos em mais de 100 (cem) classes, segundo certas
restrições médicas.

• Foi apresentado em 1999 na CEC99 – IEEE – International Conference on


Evolutionary Computation um ambiente interativo, utilizando Algoritmos Genéticos, para
a avaliação de músicas (seqüências de acordes) tocadas em arquivos MIDI. O método
emprega o formalismo difuso e é colocado como uma otimização baseada em fatores
relevantes à audição de músicas. No caso, os indivíduos da população foram definidos em
grupos de quatro vozes (soprano, contralto, tenor e baixo) ou coros. Cada um é avaliado
segundo três critérios: melodia, harmonia e oitavas. A composição destes três critérios
definia a aptidão (fitness) definida pela função de seleção, que retorna o melhor indivíduo,
ou melhor, coro. Um ciclo genético é operacionalizado, criando novos indivíduos dos
anteriores e procurando sempre pelo melhor. Quando um novo grupo é selecionado, ele é
tocado em MIDI. A duração do ciclo genético determina o ritmo da evolução. O sistema
criado foi denominado Vox Populi. (FUKUSHIMA, 1999)
25

• Um sistema em construção na New Mexico State University descreve imagens


faciais de criminosos a partir de testemunhas do crime, utilizando AG’s. O sistema tem se
mostrado mais efetivo na produção de imagens aprimoradas de criminosos do que qualquer
outra técnica de obtenção de informação de imagens.

• Segundo Blanchard (1994), o último WCCI'94 – World Congress on


Computational Intelligence – ocorrido em Orlando, na Flórida, mostrou uma série de
soluções promissoras a situações reais utilizando Algoritmos Genéticos. Blanchard mostrou
o caso da US West, uma companhia regional de telecomunicações do estado do Colorado,
que vem usando um sistema baseado em AG’s que possibilita projetar, em duas horas,
redes óticas especializadas, trabalho que levaria seis meses utilizando especialistas
humanos. O sistema produz resultados ainda 10% (dez por cento) melhores que os
realizados pelo homem. A companhia estima que o sistema possibilitará uma economia de
100 milhões de dólares até o final do século.

• Sponsler (1989) mostrou um sistema protótipo desenvolvido para avaliar a


aplicabilidade dos Algoritmos Genéticos na otimização da programação do telescópio
espacial Hubble. Diversos operadores genéticos foram avaliados e o melhor AG foi
comparado com um otimizador baseado em Redes Neurais (RN). Neste caso específico os
AG’s não se apresentaram tão eficientes quanto as RN’s.

• Syswerda e Palmucci (1991) relataram a execução de um otimizador para uma


aplicação prática de programação de recursos no laboratório SITS – System Integration
Test Station Laboratory – da Marinha Americana, para o desenvolvimento do jato F-14.

• 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

• Multiprocessor Scheduling: A aplicação de AG's no problema de associação ótima


de processos e processadores. Objetivo e diminuir o custo que deriva da comunicação entre
processos em um ordenador paralelo de memória distribuída. Multiprocessor Scheduling
podem ser relacionados com problemas de robótica.

• Biologia Molecular e Físico-química: Existe uma hipótese de trabalho que


sustentaria a utilização de técnicas baseadas em populações devido a estrutura da função
objetivo. Em problemas relacionados com estrutura molecular existem experimentos que
dão indícios claros sobre a validez dessa hipótese. Assim é fácil observar que são cada vez
mais numerosas as aplicações de AG's neste campo.
• Engenharia em Construções: Os AG's tem ganho aceitação em um grande número
de problemas de Engenharia. Uma aplicação é na otimização discreta de estruturas.

• Compressão de Dados: A compressão de dados em geral, e a compressão de


imagens sólidas em particular. Esta aplicação consiste em encontrar um método que utiliza
os AG's para encontrar um sistema de funções locais iteradas (LIFS) para a codificação de
imagens. Produzindo como resultado final uma imagem com qualidade similar a utilização
do método convencional de compressão fractal, com um tempo 30% menor.

• BRUN (2004) desenvolveu o trabalho Detecção de Faces Humanas em Imagens


Digitais através do uso de um Algoritmo Genético, onde utiliza os AG’s para controlar os
fatores de Deslocamento, Escala e Rotação de um modelo de face.

Bibliografia

BRUN, A. L. SILVA I. F. SANTA CATARINA A. Detecção de Faces Humanas em


Imagens Digitais através do uso de um Algoritmo Genético. UNIOESTE, Cascavel,
Brasil, 2004.
27

DARWIN, C. On the origin of species by means of natural selection. London, John


Murray, 1859.

DARWIN, C. The descent of man, and selection in relation to sex. London, 1871.

GOLDBERG, David E. Genetic Algorithms in Search, Optimization and Machine


Learning. Massachusets: Addison-Wesley Co, 1989.

HERRERA, F.; LOZANO, M.; VERDEGAY, J. L. Tackling Real-Coded Genetic


Algorithms: Operators and Tools for Behavioural Analysis. Artificial Intelligence
Review. v. 12, 1998.

HOLLAND, J. H. Adaptation in Natural and Artificial Systems. Ann Arbor:University


of Michigan Press, 1975.

SANTA CATARINA, A. Aplicações De Algoritmos Genéticos em Sistemas de


Informações Geográficas. Monografia final do Curso de Introdução ao
Geoprocessamento. INPE, São José dos Campos, 2004.

SANTA CATARINA, A., BACH, S. L. Estudo do efeito dos parâmetros genéticos na


solução otimizada e no tempo de convergência em algoritmos genéticos com
codificações binária e real. Acta Scientiarum: Technology. Maringá, v. 25, n.2, p. 147-
152, 2003.

SCHNEIDER, A. M. Algoritmo Adaptativo Genético para Acompanhamento da


Trajetória de Alvos Móveis. - Dissertação de Mestrado - Porto Alegre: Instituto de
Informática - Universidade Federal do Rio Grande do Sul, 1998.

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/

You might also like