Você está na página 1de 51

INF 1771 Inteligncia Artificial

Aula 04 Algoritmos Genticos

Edirlei Soares de Lima


<elima@inf.puc-rio.br>

LOGO

Introduo

Algoritmos genticos so bons para abordar


espaos de buscas muito grandes e naveglos procurando por solues que talvez no
fossem encontradas em uma busca convencional
mesmo que ela durasse centenas de anos.

Consiste em um mecanismo de busca direcionada


baseado na evoluo dos seres biolgicos.
Provem tcnicas eficazes (mas no to
eficientes) de otimizao e de aprendizado de
mquina.

LOGO

Teoria da Evoluo

A teoria da evoluo diz que na natureza todos os


indivduos dentro de um ecossistema competem entre si
por recursos limitados (comida, gua...)
Os indivduos mais fracos de uma mesma espcie
tentem a no se proliferarem.
A descendncia reduzida faz com que a probabilidade de
ter seus genes propagados ao longo de sucessivas
geraes seja menor.
A combinao entre os genes dos indivduos que
sobrevivem pode produzir um novo indivduo muito
melhor adaptado s caractersticas de seu meio
ambiente ao combinar caractersticas possivelmente
positivas de cada um dos seus pais.

LOGO

Introduo

Todo indivduo biolgico formado


por uma ou mais clulas.

Dentro de cada clula existe um


conjunto de cromossomos.

Os seres humanos tm 23 pares de


cromossomos por clula.
O nmero de pares varia de espcie para
espcie.

LOGO

Introduo

Cada cromossomo consiste em sequncias


de DNA (molcula que codifica toda a
informao necessria para o
desenvolvimento e funcionamento de
organismos vivos).
Um cromossomo consiste de genes
(blocos de sequncias de DNA).
Cada gene codifica uma ou mais protenas.

Cada gene tem uma posio prpria no


cromossomo chamada locus.

LOGO

Introduo

O conjunto completo de material gentico (todos os


cromossomos) chamado de genoma.

Um conjunto especfico de genes no genoma


chamado de gentipo.
O gentipo a base do fentipo, que a expresso
das caractersticas fsicas e mentais codificadas pelos
genes e modificadas pelo ambiente, tais como cor
dos olhos, inteligncia...

A qualidade do indivduo (fitness) medida pelo


seu sucesso (sobrevivncia)

LOGO

Reproduo

Na natureza existem dois tipos de


reproduo:
Assexuada: tpica de organismos inferiores, como
bactrias.
Sexuada: exige a presena de dois organismos, na
maioria das vezes de sexos opostos, que trocam
material gentico.

A reproduo sexuada a base dos


algoritmos genticos.

LOGO

Reproduo

Na reproduo sexuada
ocorre a formao de um
novo indivduo atravs da
combinao de duas clulas
gametas.

Na formao destas
gametas, ocorre o processo
de recombinao
gentica (crossing-over).

LOGO

Mutao

O processo de replicao do
DNA extremamente complexo.
Pequenos erros podem ocorrer
ao longo do tempo, gerando
mutaes dentro do cdigo
gentico.
Estas mutaes podem ser
boas, ruins ou neutras.

LOGO

Mutao

Alguns fatores externos, como a radiao


ultravioleta, tambm podem causar pequenas
disrupes no cdigo gentico.

LOGO

Teoria da Evoluo

Indivduos com uma melhor adequao do seu fentipo


ao meio ambiente (melhor fitness) se reproduzem
mais.
Dessa forma tm mais chances de passar seus genes
para a prxima gerao.
Entretanto, graas aos operadores genticos
(recombinao e mutao) os cromossomos dos filhos
no so exatamente iguais aos dos pais.

Assim, eles podem evoluir e se adaptar cada vez mais


aos meio ambiente que os cerca.

LOGO

Algoritmos Evolucionrios

Os algoritmos evolucionrios, dos quais


os algoritmos genticos fazem parte,
procuram se inspirar na forma como a
natureza funciona.

Os algoritmos evolucionrios funcionam


mantendo uma populao de estruturas
que evoluem de forma semelhante
evoluo das espcies.

LOGO

Algoritmos Evolucionrios

Nestas estruturas so aplicados operadores


genticos, como a recombinao e
mutao.
Cada indivduo recebe uma avaliao que
uma quantificao da sua qualidade como
soluo do problema em questo
Baseados nesta avaliao so aplicados
operadores genticos de forma a simular a
sobrevivncia do mais apto.

LOGO

Algoritmos Evolucionrios

Algoritmos evolucionrios buscam (dentro


da atual populao) aquelas solues que
possuem as melhores caractersticas e
tenta combin-las de forma a gerar solues
ainda melhores.
O processo repetido at que tenha se
passado tempo suficiente ou que tenhamos
obtido uma soluo satisfatria para nosso
problema.

LOGO

Algoritmos Evolucionrios

Algoritmos evolucionrios so extremamente


dependente de fatores estocsticos
(probabilsticos), tanto na fase de inicializao
da populao quanto na fase de evoluo.
Isto faz com que os seus resultados raramente
sejam perfeitamente reprodutveis.
Alm disso, claramente os algoritmos
evolucionrios so heursticas que no
garantem a obteno do melhor resultado
possvel em todas as suas execues.

LOGO

Algoritmos Evolucionrios

Concluso: se voc tem um algoritmo com


tempo de execuo razovel para soluo de um
problema, ento no h nenhuma necessidade de
se usar um algoritmo evolucionrio.
Sempre d prioridade aos algoritmos
exatos.
Os algoritmos evolucionrios entram em cena
para resolver aqueles problemas cujos algoritmos
exatos so extremamente lentos ou incapazes de
obter uma soluo.

LOGO

Algoritmos Genticos

Algoritmos Genticos so uma sub-rea dos


Algoritmos Evolucionrios. Logo, so uma metfora
para a evoluo natural.
Os algoritmos genticos so tcnicas heursticas de
otimizao global. Com isto, raramente eles ficam
presos em mximos locais.
Mximo
Global

Mximo
Local

Ponto de incio

LOGO

Algoritmos Genticos

Nos algoritmos genticos as populaes de indivduos


so criadas e submetidas a operadores genticos.
Seleo.
Recombinao.
Mutao.

Estes operadores utilizam uma caracterizao da


qualidade de cada indivduo como soluo do
problema em questo chamada de avaliao do
indivduo (fitness).

gerado um processo de evoluo natural destes


indivduos.

LOGO

Algoritmos Genticos

Definio de um problema em
algoritmos genticos:
necessrio definir uma maneira de codificar os
indivduos.
Definir os operadores genticos que sero
utilizados.
Definir uma funo de avaliao para medir a
capacidade de sobrevivncia de cada indivduo.

LOGO

Algoritmos Genticos

Processo:
1) Inicialize a populao de indivduos.
2) Avalie cada indivduos na populao.
3) Selecione os melhores pais para gerar novos indivduos. Aplique os
operadores de recombinao e mutao a estes pais de forma a gerar os
indivduos da nova gerao.
4) Apague os velhos membros da populao.
5) Avalie todos os novos indivduos e insira-os na populao
6) Se o tempo acabou, ou o melhor indivduos satisfaz os requerimentos da
soluo do problema, retorne-o, caso contrrio volte para o passo 3.

LOGO

Algoritmos Genticos

Distribuio dos indivduos na Gerao 0

Distribuio dos indivduos na Gerao N

LOGO

Algoritmos Genticos

Para criar um algoritmo genticos


necessrio:
Definir uma maneira de codificar a populao de
indivduos.
Definir uma funo de avaliao.
Definir um mtodo de seleo dos pais.
Definir os operadores genticos:
Recombinao.
Mutao.

LOGO

Codificao da Populao

A representao dos cromossomos fundamental


para o codificao do algoritmo gentico.
Consiste em uma maneira de traduzir a informao do
problema em uma maneira vivel de ser tratada pelo
computador.
Cada pedao indivisvel desta representao
chamado de um gene, por analogia aos genes que
compem um cromossomo biolgico.

LOGO

Codificao da Populao

importante notar que a representao


computacional dos cromossomos
completamente arbitrria.
Cromossomos podem ser:
Strings de bits (0101 ... 1100)
Nmeros reais (43.2 -33.1 ... 0.0 89.2)
Listas de regras (R1 R2 R3 ... R22 R23)
Qualquer estrutura de dados imaginvel!

LOGO

Exemplo - Populao

Objetivo: Encontrar o mximo da funo f(x)=x2 no


intervalo [0,31].
Os indivduos da populao precisam armazenar o
valor de uma varivel inteira.

Podemos codificar cada indivduo da populao


como uma sequncia de 5 bits.
1 0 1 0 0

x=20

0 0 0 1 1

x=3

LOGO

Funo de Avaliao

A funo de avaliao a maneira


utilizada pelos algoritmos genticos para
determinar a qualidade de um indivduo
como soluo do problema em questo.

A funo de avaliao deve ser escolhida


cuidadosamente. Ela deve embutir todo o
conhecimento que se possui sobre o
problema a ser resolvido.

LOGO

Exemplo - Funo de Avaliao

Objetivo: Encontrar o mximo da funo


f(x)=x2 no intervalo [0,31].
A funo de avaliao para este caso
consiste simplesmente em converter o
nmero de binrio para inteiro e depois
elev-lo ao quadrado.
Indivduos que tiverem maiores valores na
funo de avaliao so os mais aptos.

LOGO

Seleo dos Pais

O mtodo de seleo de pais deve tentar simular o


mecanismo de seleo natural que atua sobre as
espcies biolgicas.
Os pais mais capazes geram mais filhos, mas os menos aptos
tambm podem gerar descendentes.

Temos que privilegiar os indivduos com funo de


avaliao alta, sem desprezar completamente aqueles
indivduos com funo de avaliao extremamente baixa.
Isto ocorre pois at indivduos com pssima avaliao
podem ter caractersticas genticas que sejam favorveis
criao de um "super indivduo.

LOGO

Seleo dos Pais

Mtodo mais comum de seleo de pais:


Roleta.
Cria-se uma roleta (virtual) na qual cada
cromossomo recebe um pedao proporcional
sua avaliao.
Roda-se a roleta para sortear os indivduo
que sero pais de um novo indivduo.

LOGO

Exemplo - Seleo dos Pais

Considerando a seguinte populao gerada


aleatoriamente para o problema de
maximizao de f(x)=x2 no intervalo [0,31]
Indivduo

Avaliao

00001
00011
00100
00110
Total

1
9
16
36
62

Pedao da
roleta (%)
1.61
14.51
25.81
58.07
100.00

Pedao da
roleta ()
5.8
52.2
92.9
209.1
360.0

LOGO

Exemplo - Seleo dos Pais

Roleta para Populao Exemplo

1
9
16

36

"00001"

"00011"

"00100"

"00110"

LOGO

Operadores Genticos - Recombinao

Operador de recombinao (crossover) de


um ponto.
O processo consiste em:
(1) Seleciona-se dois pais atravs processo de seleo
de pais.
(2) Um ponto de corte (uma posio entre dois genes de
um cromossomo) selecionado. Este ponto de corte o
ponto de separao entre cada um dos genes que
compem o material gentico de cada pai.

(3) A metade esquerda do ponto de corte vai para um


filho e a metade direita vai para outro.

LOGO

Recombinao - Ponto de Corte

Cada indivduo com n genes possui n-1 pontos de corte.

Em um indivduo com codificao binria, cada bit um


gene.
gene

Pontos de Corte:

LOGO

Exemplo - Recombinao

LOGO

Operadores Genticos - Mutao

Depois de compostos os filhos, entra em ao o


operador de mutao.
O operador atua com base em uma probabilidade
extremamente baixa (da ordem de 5%) de alterao
aleatria do valor de um gene ou mais genes dos
filhos.
O valor da probabilidade que decide se o operador de
mutao ser ou no aplicado um dos parmetros
do algoritmo gentico que pode alterar o resultado
alcanado pelo algoritmo.

LOGO

Exemplo Mutao

Altere-se cada gene de forma independente


com base em uma probabilidade pm
pm denominada taxa de mutao e costuma
ser bem baixa.

LOGO

Outras Tcnicas

Interpolao de operadores.
Recombinao de mais pontos.
Recombinao uniforme.

Elitismo.

LOGO

Operadores Genticos

possvel aumentar ou diminuir a


incidncia de cada um dos operadores
sobre a populao e assim ter mais controle
sobre o desenvolvimento dos cromossomos.

Cada operador pode receber uma avaliao.


Normalmente o operador de recombinao
recebe um fitness bem maior que o operador
de mutao.

LOGO

Operadores Genticos

As porcentagem de aplicao de cada operador


no precisa ser fixa.
No incio queremos executar muita reproduo e
pouca mutao, visto que h muita diversidade
gentica e queremos explorar o mximo possvel
nosso espao de solues.
Depois de um grande nmero de geraes, h pouca
diversidade gentica na populao e seria
extremamente interessante que o operador de
mutao fosse escolhido mais frequentemente.

LOGO

Interpolando Operadores

Fitness

Fitness

Fitness
80%

80%

80%

20%

20%

20%

Geraes

Linear

Geraes

Geraes

Quadrtica

Descontnua

LOGO

Recombinao de Dois Pontos

Existem indivduos que no podem ser gerados com a


recombinao de somente um ponto. Exemplo:
1******1.
Consequentemente, se no mudarmos o operador de
recombinao, o algoritmo gentico fica limitado na
sua capacidade de gerar um certo conjunto de
cromossomos.
Para melhorar essa capacidade possvel introduzir a
recombinao de 2 pontos.

Nele, em vez de sortearmos um s ponto de corte,


sorteamos dois.

LOGO

Recombinao de n Pontos

Evoluindo a idia da recombinao de dois


pontos, possvel tonar o operador uma
recombinao de n pontos.

LOGO

Recombinao Uniforme

Para cada gene sorteado um nmero zero ou um.


Se o sorteado for 1, um filho recebe o gene do primeiro pai e o
segundo filho o gene do segundo pai.
Se o sorteado for 0, o primeiro filho recebe o gene do segundo
pai e o segundo filho recebe o gene do primeiro pai.

LOGO

Elitismo

A idia bsica por trs do elitismo a


seguinte:
Os n melhores indivduos de cada gerao
no devem "morrer" junto com a sua
gerao, mas sim passar para a prxima
gerao para garantir que seus genomas
sejam preservado.

uma forma de garantir que o


algoritmo nunca regrida.

LOGO

Algoritmos Genticos - Exemplo

Problema do caixeiro viajante: Deve-se


encontrar o caminho mais curto para
percorrer n cidades sem repetio.
Cada indivduo pode ser representador por
uma lista ordenada de cidades, que indica a
ordem em que cada uma ser visitada.
Exemplo: (3 5 7 2 1 6 4 8)

LOGO

Algoritmos Genticos - Exemplo

Cada cromossomo tem que conter todas as


cidades do percurso, apenas uma vez.
Considerando 8 cidades:
Cromossomos vlidos: (1 2 3 4 5 6 7 8), (8 7 6
5 4 3 2 1), (1 3 5 7 2 4 6 8)...
Cromossomos invlidos: (1 5 7 8 2 3 6) - Falta a
cidade 4, (1 5 7 8 2 3 6 5) - Falta a cidade 4 e a
cidade 5 est representada 2 vezes...

LOGO

Algoritmos Genticos - Exemplo

A funo de avaliao consiste em somar todas as


distncias entre cidades consecutivas.
Exemplo:

30

100

90
80

50

65
10

35

25

O cromossomo (1 3 5 4 2) tem avaliao igual a 35+


80 + 50 + 65 = 230

LOGO

Algoritmos Genticos - Exemplo

Recombinao (uniforme):
Pai1 (3
Pai2 (2

5
5

7
7

2
6

1
8

6
4

4
3

8)
1)

1) Gera-se uma string de bits aleatria do mesmo tamanho que os


pais:
10010101
2) Copia-se para o filho 1 os elementos do pai 1 referentes quelas
posies onde a string de bits possui um 1:
3__2_6_8
3) Elementos no copiados do pai1:
5714
3) Permuta-se esta lista de forma que os elementos apaream na
mesma ordem que no pai 2 e copia-se eles para dentro do Filho1:
35724618

Algoritmos Genticos - Exemplo

LOGO

Mutao:
Individuo (3

8)

Escolhem-se dois elementos aleatrios dentro do


cromossomo e trocam-se as suas posies:
(3 5 7 2 1 6 4 8)
Novo individuo mutante:
(3

8)

LOGO

Algoritmos Genticos

Questes importantes na definio de


um problema em algoritmos
genticos:
Representao dos indivduos.
Parmetros do sistema (tamanho da populao,
taxa de mutao...).
Polticas de seleo e eliminao de indivduos.
Operadores genticos (recombinao e mutao)
Critrios de parada.
Funo de avaliao (a mais importante e mais
complicada de ser definida).

LOGO

Vantagens dos Algoritmos Genticos

Sempre oferece uma resposta que tende a


ser melhor com o tempo.
Conforme ganhamos conhecimento sobre o
problema podemos melhorar a funo de
avaliao.
Usado em diversos tipos de aplicaes.