Você está na página 1de 53

Algoritmos Genéticos

Algoritmos Genéticos
• pretendem repetir na forma de um modelo
computacional a idéia Darwiniana de
sobrevivência dos mais capazes
• terminologia de algoritmos genéticos é
emprestada da terminologia da genética

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Dicionário
• Gene – menor unidade com informação genética
• Genótipo – coleção de todos os genes
• Fenótipo – expressão do genótipo no ambiente
• Indivíduo – um único membro da população com
um fenótipo e um genótipo
• População – um conjunto de indivíduos
• Geração – uma iteração de avaliação, seleção e
reprodução com variação

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Seleção natural da Biston
Betularia

• “salpicadas moths” são uma mariposa comum na


Inglaterra
• Variam de branco prata com pontos cinzas a um
cinza escuro ou negro
• A forma mais comum em 1850 era mista
(“salpicadas”) – 90% das mariposas encontradas na
natureza tinham esse fenótipo

Algoritmos Genéticos
O Genótipo
• Existem dois alelos para cor nas mariposas prata
• B preto
• b branco
• O preto vem da melanina
• No laboratório, as mariposas ocorrem na razão
• 1 preta
• 2 salpicadas
• 1 branca
• Conclusão
• BB = preta
• Bb, bB = salpicadas
• bb = branca

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Genótipo e Fenótipo
B b
B BB Bb
Black salpicadas

b Bb bb
salpicadas White
Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
• As mariposas viviam
em árvores cobertas
por líquem prateado
• Durante a revolução
industrial, a poluição
matou o líquem
• Poluição de carvão
ainda cobriu as
árvores, tornando-as
mais escuras

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
• Nas áreas urbanas
industriais, as
salpicadas ficaram
menos comuns e as
negras mais comuns
• Nas áreas de floreta, as
“salpicadas”
continuaram mais
comuns
• Onde ainda existia o
líquem

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Situação em 1972
Moth 1850 1950 1972
Population
Light 95% 5% 25%
Colored
Dark 5% 95% 75%
Colored

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Conceitos Básicos
• Na procura da solução ótima de um problema, os
algoritmos genéticos (AG) analisam de
populações de soluções
• normalmente escolhidas aleatoriamente.
• Cada solução da população é uma candidata a
“solução ótima”
• Em cada iteração é gerada uma nova população, a
partir de regras inspiradas na genética
• Reprodução
• Mutação
• diversificação da procura no espaço das soluções.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Conceitos Básicos
• Cada solução individual de uma população
(cromossoma) é submetida a uma avaliação do
seu potencial
• processo de seleção
• As soluções selecionadas são combinadas entre
si
• reproduzem-se com um certo grau de aleatoriedade
• Dão origem a uma nova geração de soluções
• Ao longo prazo, a sequencia de degraus
evolutivos conduzirá a soluções melhores do que
as suas progenitoras (pelo menos algumas...)

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Conceitos
• Algumas das soluções pertencentes à nova
geração podem ser individualmente alteradas,
• com vista a uma melhoria das suas características e/ou
diversificação da população
• soluções mutantes.
• As novas soluções são avaliadas em termos do
seu potencial como progenitores, isto é, da
capacidade de originarem uma nova geração de
soluções que, de algum modo, se aproxime do
ótimo desejado.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Conceitos
• A dimensão da população inicial permanece
constante 
• em cada geração, as soluções que se revelem menos
promissoras são eliminadas (seleção natural)
• substituídas pelas soluções da nova geração com
maiores potenciais (eventualmente, haverá novas
soluções que são eliminadas logo à nascença).

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
AGs
• Um indivíduo é uma solução que faz parte de uma
população.
• A cada indivíduo é representado por um genótipo,
ou uma estrutura, string ou cromossomo.
• Cada genótipo é feito de gens (caracteres)
arrumados em seqüência.
• Os gens controlam a herança de uma ou mais
características

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
AGs
• Algoritmos genéticos buscam encontrar uma
solução ótima (ou proximamente ótima) por uma
estratégia que simultaneamente explora as
melhores soluções e o espaço todo

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Espaços “típicos”

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Implementações mais
comuns
• As implementações mais comuns de AG são
designadas por “simples” e “estacionárias”
(“steady state”).
• Nos algoritmos “simples” toda a população atual
é substituída na passagem de uma geração para a
seguinte;
• Nos algoritmos “estacionários” a passagem da
geração atual para a seguinte é caracterizada pela
substituição de apenas algumas soluções (em
princípio, as piores);

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Fatores de sucesso
• A definição da função de adaptabilidade (fitness
function), a representação “genética” das
soluções (codificação), bem como a
implementação dos operadores genéticos é
crucial em termos do sucesso (ou não...)
alcançado por diferentes algoritmos, na resolução
do mesmo problema.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Algoritmo Genérico
{
initialize population;
evaluate population;
while TerminationCriteriaNotSatisfied
{
select parents for reproduction;
perform recombination and mutation;
evaluate population;
}
}

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Diagramaticamente
filhos
reprodução modificação
filhos
pais modificados
população avaliação
filhos avaliados
membros
apagados

descarte

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Population
population
Cromossomos podem ser:
• Bit strings (0101 ... 1100)
• Real numbers (43.2 -33.1 ... 0.0 89.2)
• Permutations of element (E11 E3 E7 ... E1 E15)
• Lists of rules (R1 R2 R3 ... R22 R23)
• Program elements (genetic programming)
• ... any data structure ...

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Operadores Genéticos
• Seleção
• Reprodução
• Mutação

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Operadores Genéticos:
Seleção
• As soluções consideradas mais aptas são
selecionadas como potenciais “reprodutores” da
geração à qual pertencem.
• Existem diversos métodos de efectuar a escolha
de soluções, como:
• “Tournament selection”
• “Fitness proportionate selection”

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Seleção “Tournament
selection”
• A seleção é feita através da criação de grupos de
soluções da população;
• As soluções de cada grupo competem entre si,
sendo que, apenas uma solução de cada grupo é
seleccionada.
• O valor da função de adaptabilidade (fitness) de
cada solução é determinante na sua escolha.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Seleção: “Fitness proportionate selection”
• Ao valor da função de
adaptabilidade de cada
solução da população é
associado uma
probabilidade de
seleção.
• Sendo a escolha função
de um valor
probabilístico
• Poderá haver boas
soluções que não são
selecionadas e soluções
mais fracas que o sejam
• dversificação das
gerações seguintes no
espaço das soluções.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Operadores Genéticos:
Reprodução
• cruzamento de soluções
selecionadas,
• resultado será uma nova geração de
soluções
• com estruturas distintas dos progenitores
• terão herdado características

one-point crossover two-point crossover cut and splice

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Operadores Genéticos:
Mutação
• Modificação de uma sequência particular de uma solução
(ou grupo de soluções) pertencente à geração actual
• diversificação, bem como redução do risco de convergência para
óptimos locais.
• Tipicamente, este operador é usado em populações cujas
soluções se encontram codificadas
• strings ou arrays de bits.
• É comum existir uma variável aleatória associada à
posição de cada bit, numa determinada sequência;
• em função do seu valor, o valor de um bit (ou vários) poderá ser
alterado.
• Deste modo, é diminuído o risco de serem obtidos ótimos
locais e, eventualmente, o fim da própria evolução de
gerações.
• A seleção baseada em critérios que escolhem apenas as melhores
soluções pode conduzir a “becos sem saída” (ótimos locais).

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Mutação: Modificação
Local
Antes: (1 0 1 1 0 1 1 0)
Depois: (0 1 1 0 0 1 1 0)

Antes: (1.38 -69.4 326.44 0.1)


Depois: (1.38 -67.5 326.44 0.1)

• Causa movimento no espaço de busca


(local or global)
• Recupera informação perdida

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Máximos Locais e
Mutação

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Critérios de Substituição
de Soluções
• Determinam o conteúdo da geração seguinte,
• ou seja, quais as novas soluções, as que permanecem
e aquelas que são substituídas (eliminadas):
• Eliminação da(s) pior(es) solução(ões);
• Eliminação das progenitoras;
• Substituição aleatória;
• Substituição de soluções com grandes semelhanças.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Critérios de
Encerramento
• As operações descritas anteriormente são
efectuadas ciclicamente, sendo os critérios de
paragem mais comuns:
• É encontrada uma solução que satisfaz um requisito
pré-definido;
• Número de gerações definido;
• Se é verificado que um número n de iterações
(gerações) sucessivas não conduzem a melhorias
significativas.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Exemplo abstrato

Distribution of Individuals in Generation 0

Distribution of Individuals in Generation N

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
AGs
• Algoritmos genéticos geralmente seguem o
seguinte ciclo:
• avalia-se a qualidade de cada indíviduo de uma
população.
• Cria-se então uma nova população utilizando uma
reprodução baseada nessa qualidade, crossover e
mutação.
• Cada nova população é considerada uma geração

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Algoritmo, parte 1
// start with an initial time
t :=0;
// initialize a usually random population
initpopulation P (t);
// evaluate fitness of all initial individuals
evaluate P (t);

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Algorimo, loop
while not done do
// increase the time counter
t :=t +1;
// select a sub-population for offspring production
P’ := selectparents P (t);
// recombine the "genes" of selected parents
recombine P’ (t);
// perturb the mated population stochastically
mutate P’ (t);
// evaluate it’s new fitness
evaluate P’ (t);
// select the survivors from actual fitness
P := survive P,P’ (t);
od

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Exemplo
• Encontrar o maior x inteiro entre 1 e 32 tal que
f(x)=x2 seja máximo
• É óbvio, mas é só um exemplo

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Genótipo/Fenótipo
• Genótipo: string de 5 bits
• (00100)2
• Fenótipo: valor em decimal
•4
• Qualidade: aplicação da função ao valor
• 16

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Primeira pop. aleatória
• IndivíduoGenótipo
•1 01101
•2 11000
•3 01000
•4 10011

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Primeiro Passo, avaliar
• Ind. Ge. x X2
•1 01101 13 169
•2 11000 24 576
•3 01000 8 64
•4 10011 19 361

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Escolha para reprodução
• Esse é um dos principais passos. Nele
escolhemos que grupo de indíviduos da geração
atual vai participar do processo de reprodução.
Essa escolha é feita de forma aleatória em função
da qualidade do indivíduo.
• Cada par gerará outro par, pois a reprodução é
feita por crossover. Logo, selecionaremos 4
indivíduos.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
P2: probabilidade de rep.
Indivíduo Genótipo x X2 Probab.

1 1101 13 169 .14


2 11000 24 576 .49
3 1000 8 64 .06
4 10011 19 361 .31
Soma 1170 1
Média 293 .25
Máximo 576 .49
Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
P3: Escolha para repr.
Indivíduo Valor Esperado Valor real Repr

1 .58 1 1
2 1.97 2 2,3
3 .22 0-
4 1.23 1 4
1
2
3
4

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Reprodução e Crossover
• Para realizar a reprodução, escolhemos
aleatoriamente entre os indivíduos escolhidos
para reproduzir quais serão os pares. Escolhido
um par, sorteamos então um ponto da string para
fazer o crossover. Vamos numerar os intervalos
entre os bits de 1 a 4 para poder identificar os
pontos de crossover.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Reprodução e Crossover
• Supomos que seja sorteado o par 1,2 (e
consequentemente o par 3,4, usando o número do
grupo de reprodução). Geramos aleatoriamente
então os pontos 4 e 2 para o crossover do
primeiro e segundo para, respectivamente.

String 1: 0 1 1 0 1 0 1 1 0 0

String 2: 1 1 0 0 0 1 1 0 0 1

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Tabela Rep. E Crossover

Original Xover Par Corte Resultado


01101 4 2 0110 | 1 01100
11000 4 1 1100 | 0 11001
11000 2 4 11 | 000 11011
10011 2 3 10 | 011 10000

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Resultado

1100 12 144
11001 25 625
11011 27 729
10000 16 256
Soma 1754
Média 439
Geraldo Xexéo
Máximo 729
Algoritmos Genéticos
xexeo@cos.ufrj.br
Mutação
• Finalmente inserimos um fator aleatório novo, a
mutação, que é decidida bit a bit.
• Definiremos nesse caso a probabilidade de mutação
em 0,001. Com 20 bits, isso daria um valor esperado de
0,02 bits mutantes por geração

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
FIM

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br
Contato

Geraldo Xexéo
xexeo@cos.ufrj.br
gxexeo@gmail.com
Este obra está licenciado com uma Licença Creative Commons
Atribuição-NãoComercial-SemDerivações 4.0 Internacional.

Geraldo Xexéo
Algoritmos Genéticos
xexeo@cos.ufrj.br