You are on page 1of 62

Inteligncia Artificial

Algoritmos Genticos


Profa Ana Carolina Lorena

Algoritmos Genticos
Genetic Algorithm
Uso de princpios de:
Seleo natural
Escolha de estados para produzir novos
Gentica
Novos estados (sucessores) gerados pela aplicao de operadores genticos


Paradigma Evolutivo
Nomenclatura prpria,
inspirada na Biologia
Algoritmos Genticos
Incio: k estados gerados aleatoriamente
Populao de solues
Cada estado um indivduo da populao
Representado geralmente por cadeia de smbolos
Ex.: cadeia binria valores 0 e 1

Avalia estados (indivduos)

Produz nova gerao de estados por operadores de
seleo, cruzamento e mutao
Algoritmos Genticos
Populao atual
Reproduo
Avaliao
Seleo
Populao inicial
Populao final
Algoritmo
Algoritmo_gentico
p = tamanho da populao
r = taxa de cruzamento
m = taxa de mutao

1.P gerar aletoriamente p indivduos
2.Para cada i em P, computar Aptido(i)
3.Enquanto critrio_parada no atingido
3.1 Selecionar p membros de P para reproduo
3.2 Aplicar cruzamento a pares de indivduos selecionados
segundo taxa r, adicionando filhos em PS
3.3 Realizar mutao em membros PS, segundo taxa m
3.5 P PS
3.6 Para cada i em P, computar Aptido(i)
4.Retornar o indivduo de P com maior aptido
Codificao e avaliao de
aptido so pontos chave
Codificao
Como realizar a codificao dos indivduos?
Cromossomos

a primeira pergunta que deve ser feita ao resolver
um problema com AG

A codificao depender fortemente do problema
Codificao binria
a mais comum devido a sua simplicidade

Cada cromossomo uma string de bits 0 ou 1
Vetor de caractersticas em que
1 = presena
0 = ausncia
Esta representao independente do problema
Crom: A = 1 0 1 1 0 0 1 0 1 1
Crom: B = 1 1 1 1 1 1 0 0 0 0


Codificao binria
Exemplo de uso: problema da mochila
Preencher uma mochila com objetos de diferentes pesos e valores
Objetivo preencher a mochila com o maior valor total possvel, no
ultrapassando o peso mximo
Codificao: Cada bit diz se um elemento est ou no na mochila
Codificao por permutao
Mais usado em problemas de ordenao

Cada cromossomo uma string de nmeros que
representa uma posio em uma sequncia
Crom A: 1 5 3 2 6 4 7 9 8
Crom B: 8 5 6 7 2 3 1 4 9

Exemplo de uso: problema do caxeiro viajante
Codificao: os cromossomos descrevem a ordem em que o
caixeiro ir visitar as cidades
Codificao por valor
Usado em problemas onde valores mais
complicados so necessrios

Cada cromossomo uma sequncia de valores
Crom A: 1.2324 5.3243 0.4556 2.3293 2.4545
Crom B: ABDJEIFJDHDIERJFDLDFLFEGT
Crom C: (back), (back), (right), (forward), (left)

Codificao
Representaes em nveis abstratos mais altos
Facilitam sua utilizao em determinados domnios,
onde a transformao fentipo - gentipo muito
complexa
Podem necessitar de operadores especficos
Funo de aptido
Avaliao dos indivduos
Em geral, para ser avaliado, um cromossomo deve ser,
primeiramente, decodificado
A avaliao de uma soluo consiste da aplicao de uma
funo de aptido, que fornece uma medida da qualidade de tal
soluo frente ao problema

Cada aplicao requer sua prpria funo de aptido
Utilizada para definir ndice de aptido de indivduo na soluo do
problema
Potencial dele em resolver o problema
Seleo
Princpio bsico para o direcionamento da
evoluo de uma dada populao
Baseado nos princpios da seleo natural

Utilizando a aptido de cada indivduo

Existem vrios mtodos de seleo
Seleo
Escolhe preferencialmente, embora no
exclusivamente, indivduos com maiores notas de
aptido
Procura de manter a diversidade da populao

Principais mtodos de seleo:
Roleta
Torneio

Populao Exemplo
1 38 Total
0,473684211 18 5
0,236842105 9 4
0,131578947 5 3
0,105263158 4 2
0,052631579 2 1
Aptido Relativa Aptido Absoluta Indivduo
Mtodo da Roleta
Coloca-se os indivduos em uma roleta, dando a cada
um uma fatia proporcional sua aptido relativa

Depois roda-se a agulha da roleta
O indivduo em cuja fatia a agulha parar permanece para a
prxima gerao

Repete-se o sorteio quantas vezes forem necessrias
para selecionar a quantidade desejada de indivduos
Roleta - Exemplo
18 5
9 4
5 3
4 2
2 1
Aptido Absoluta Indivduo
Mtodo do Torneio
Utiliza sucessivas disputas para realizar a seleo
Para selecionar k indivduos, realiza k disputas, cada disputa
envolvendo n indivduos escolhidos ao acaso

Usualmente, o indivduo de maior aptido na disputa
selecionado

muito comum utilizar n = 3 ou n = 2
Torneio - Exemplo
Indiv 1, Indiv 2, Indiv 4 Indiv 4
Indiv 1, Indiv 2, Indiv 3 Indiv 3
Indiv 2, Indiv 3, Indiv 4 Indiv 4
Indiv 3, Indiv 4, Indiv 5 Indiv 5
18
9
5
4
2
Aptido Absoluta Indivduo
5
4
3
2
1
Cruzamento
Tambm chamado de reproduo ou crossover

Combina as informaes genticas de dois
indivduos (pais) para gerar novos indivduos
(filhos)
Permite que as prximas geraes herdem essas
caractersticas
Verses mais comuns criam sempre dois filhos para cada
operao
Operador de Cruzamento
Responsvel por gerar novos indivduos diferentes
(sejam melhores ou piores) a partir de indivduos j
promissores

Aplicado a cada par de indivduos com alta probabilidade
Taxa de crossover: 0.6 < P
c
< 1.0
Caso crossover no seja aplicado, descendentes so iguais aos
pais

a operao mais importante para explorao rpida do
espao de busca
Abordagens para Cruzamento

Cruzamento Um-Ponto

Cruzamento Multi-Pontos
Evita que genes no incio e fim do cromossomo sejam sempre
separados quando recombinados

Cruzamento Uniforme
Trade off entre
Introduo de novas combinaes
Manuteno de boas caractersticas existentes
0 0 0 1 1 1 1 0 Pais
Cruzamento Um-Ponto
0 0 Filhos 1 1 0 0 1 1
0 0 0 1 1 1 1 0 Pais
Cruzamento Multi-Ponto
0 0 Filhos 1 1 0 0 1 1
0 0 0 1 1 1 1 Pais 0
Mscara
1 0 1 0
Cruzamento Uniforme
0 0
Filhos
1 1 0 0 1 1
Mutao
Introduo e manuteno da diversidade gentica
Aplicado a cada indivduo aps crossover

Altera aleatoriamente um ou mais componentes de
uma estrutura escolhida
Assegura que a probabilidade de atingir qualquer ponto do
espao de busca nunca ser zero

Operador gentico secundrio
Taxa de mutao pequena P
m
~ 0.001
Critrio de parada
Tempo de execuo

Nmero de geraes

Perda de diversidade

Convergncia
nas ltimas k iteraes no houve muita melhora


Algoritmos Genticos
Incio: tende a busca exploratria
Fim: foca em regies consideradas mais
promissoras

Principal vantagem:
Cruzamento
Habilidade de combinar blocos de boas solues
Ex.: colocando 3 primeiras rainhas nas posies 2, 4 e 6 no problema das
8 rainhas constitui um bloco til que pode ser combinado com outros
Elitismo
Pode ser utilizado para que os melhores
indivduos no desapaream da populao pela
manipulao dos operadores genticos

Melhores indivduos so automaticamente
reproduzidos na gerao seguinte

Realizado antes da seleo
AG: outro exemplo
Considerando o algoritmo bsico:
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Exemplo
) 20 sin( ) 4 sin( 5 , 21 ) , (
2 2 1 1 2 1
x x x x x x f t t + + =
8 , 5 1 , 4
1 , 12 0 , 3
2
1
s s
s s
x
x
Utilizando Algoritmos Genticos, achar o
mximo da funo :
Em que:
Fonte do exemplo: Michaelewicz, Genetic Algorithms + Data Structures = Evolution Programs
Exemplo
Grfico da funo
Parmetros do AG
Tamanho da populao
Tam_pop = 20

Probabilidade de cruzamento
p
c
= 0,25

Probabilidade de mutao
p
m
= 0,01
Representao
Cromossomo binrio
Preciso de k casas decimais
Intervalo [min .. max]
Deve-se cortar o intervalo em (max - min)* 10
k
sub-intervalos
Seja l o menor inteiro tal que (max - min)* 10
k
2
l
1
Ento deve-se usar uma string binria com tamanho l

Representao
Mapeamento de um vetor binrio (b
l
b
l-1
b
0
) em
nmero decimal no intervalo [min .. max]:

Converter string binria para base 10
x = (E
i=0:l
b
i
* 2
i
)

Encontrar o nmero real correspondente x:

1 2
'
min) (max min

+ =
l
x
x
Representao
Exemplo:
Para a varivel x
1
: intervalo [-3,0 .. 12,1]
Intervalo tem tamanho 15,1
Usando 4 casas decimais
Deve-se dividir o intervalo em ao menos 15,1 * 10000
partes
Precisa-se de 18 bits para representar possveis x
1
2
17
< 151000 2
18
Representao
Exemplo:
Para a varivel x
2
: intervalo [4,1 .. 5,8]
Intervalo tem tamanho 1,7
Usando 4 casas decimais
Deve-se dividir o intervalo em ao menos 1,7 * 10000
partes
Precisa-se de 15 bits para representar possveis x
2
2
14
< 17000 2
15
Representao
Concluso:
So necessrios l = 18 + 15 = 33 bits para representar as
solues com cromossomos binrios
Primeiros 18 bits codificam x
1
15 bits restantes codificam x
2
Exemplo: (010001001011010000111110010100010)

7553 , 5
1 2
31906
) 1 , 4 8 , 5 ( 1 , 4
0524 , 1
1 2
70352
)) 3 ( 1 , 12 ( 3
15
2
18
1
=

+ =
=

+ =
x
x
AG
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Gerao da populao inicial
Aleatoriamente
AG
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Avaliao
Decodificar os
cromossomos
Em nmeros x
1
e x
2

correspondentes

Computar funo
nos pontos
AG
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Seleo
Implementando a roleta:
Calcular a aptido de cada indivduo
Slide anterior
Calcular a aptido total da populao
F = soma das avaliaes
Calcular a probabilidade de seleo p
i
de cada
cromossomo
p
i
= eval(v
i
) / F
Calcular a probabilidade cumulativa q
i
de cada
cromossomo
q
i
=
j=1:i
p
j
Seleo
Implementando a roleta:
Rodar a roleta tam_pop vezes
Em cada rodada fazer:
Gerar um nmero aleatrio r entre 0 e 1
Se r < q
1
, selecionar v
1
Seno, selecionar cromossomo v
i
(i >2) tal que q
i-1
< rs q
i
Seleo
Mtodo da roleta
F = soma evals = 387,776822
A probabilidade de seleo de cada v
i
:
Seleo
Probabilidades cumulativas:




Nmeros aleatrios gerados:
Seleo
Nova populao
selecionada:
AG
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Cruzamento
Probabilidade de cruzamento p
c
= 0,25
Espera-se que, na mdia, 25% dos cromossomos (5
entre 20) iro realizar cruzamento
Para cada cromossomo na nova populao, gera-se
um nmero aleatrio r entre 0 e 1
Se r < 0,25, o cromossomo selecionado para
cruzamento
Cruzamento
Os cromossomos v
2
', v
11
', v
13
' e v
18
' foram
selecionados para cruzamento
Se nmero de escolhidos fosse impar:
Adicionar aleatoriamente novo cromossomo ou
Remover um dos cromossomos aleatoriamente
Fazendo o casamento de cromossomos
aleatoriamente:
v
2
' com v
11
'
v
13
' com v
18
'
Cruzamento
v
2
' com v
11
'
Gerando nmero aleatrio de posio de cruzamento
pos = 9
v
2
'= (100011000|101101001111000001110010)
v
11
'= (111011101|101110000100011111011110)

v
2
''= (100011000|101110000100011111011110)
v
11
''= (111011101|101101001111000001110010)
Cruzamento
v
13
' com v
18
'
Gerando nmero aleatrio de posio de cruzamento
pos = 20
v
13
'= (00010100001001010100|1010111111011)
v
18
'= (11101111101000100011|0000001000110)

v
13
''= (00010100001001010100|0000001000110)
v
18
''= (11101111101000100011|1010111111011)
Cruzamento
Populao aps:
AG
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Mutao
Realizado bit-a-bit

Probabilidade p
m
= 0,01
Espera-se que (na mdia) 1% dos bits sofrero
mutao
H l x tam_pop = 33 x 20 = 660 bits na populao
Espera-se ento (na mdia) 6,6 mutaes por gerao
Todos os bits tm chance igual de sofrer mutao
Ento, para cada bit, geraremos um nmero aleatrio r
entre 0 e 1
Se r < 0,01, o bit alterado por mutao
Mutao
Gerando 660 nmeros aleatrios, digamos que
aqueles para os quais r foi menor que 0,01 foram:
Nmero do cromossomo
112 4 13
349 11 19
418 13 22
429 13 33
602 19 8
Posio do bit Posio do bit no cromossomo
Mutao
Nova populao:
AG
t = 0
Gerar populao inicial P(t)
Avaliar P(t)
enquanto (critrio de parada no satisfeito) faa
t = t + 1
Selecionar P(t) a partir de P(t-1)
Alterar P(t): cruzamento e mutao
Avaliar P(t)
fim enquanto
Avaliao
F = 447,049688
Antes era
387,776822

Melhor
cromossomo
Eval = 33,341874
Antes era 30,060205
Observaes
Embora no utilizado no exemplo, interessante
fazer o elitismo (antes da roleta), em que melhor
indivduo da populao diretamente passado para
prxima gerao
Sem ele, aps 1000 geraes a melhor soluo achada no
exemplo tem avaliao 35,477938
Porm, na gerao 396 havia um indivduo com avaliao
38,827553

Codificao binria:
Para preciso maior, precisa de ainda mais bits
Cruzamentos podem cortar o nmero
-A presena de mnimos locais no reduz a eficincia
do algoritmo evolutivo
-Simplicidade do algoritmo, e por isto so fceis de
serem implementados
-Adaptam-se bem a computadores paralelos
-Usados frequentemente para obter soluo de
problemas NP-completos
-Devido ao grande nmero de variveis que um algoritmo
evolutivo trata, as populaes elevadas e alto nmero de
geraes para a cobertura do espao de solues,
possuem um custo computacional elevado
- extremamente difcil para um ser humano conseguir
interpretar diretamente estes conhecimentos
-Necessidade de codificao adequada
-Necessidade de setar parmetros apropriadamente
Vantagens e desvantagens