Você está na página 1de 45

Algoritmos Genticos Captulo 4

Ricardo Linden

Algoritmos Genticos Captulo 4

Esquema de um GA

Algoritmos Genticos so um ramo da computao evolucionria Seu funcionamento pode ser resumido algoritimicamente atravs dos seguintes passos: Inicialize a populao de cromossomos a) Avalie cada cromossomo na populao b) Selecione os pais para gerar novos cromossomos. c) Aplique os operadores de recombinao e mutao a estes pais de forma a gerar os indivduos da nova gerao d) Apague os velhos membros da populao e) Avalie todos os novos cromossomos e insira-os na populao f) Se o tempo acabou, ou o melhor cromossomo satisfaz os requerimentos e desempenho, retorne-o, caso contrrio volte para o passo c).
Algoritmos Genticos - Captulo 4 2

Esquema de um GA

Graficamente:

Cortes a serem efetuados :


Filho 1 : Filho 2 :

Seleo: escolhemos os indivduos que participaro do processo reprodutrio


Avaliao : Aplicamos a funo de avaliao a cada um dos indivduos desta gerao No

Operadores genticos: Aplicamos os operadores de recombinao e mutao aos indivduos escolhidos para pais Mdulo de populao : definimos a nova populao a partir da gerao existente e dos filhos gerados

Satisfizemos o critrio de parada ? (por n de geraes ou por qualidade das solues)

Filhos gerados sobrevivem e so copiados sobre seus pais

Toda a antiga gerao de pais

Sim Fim
Algoritmos Genticos - Captulo 4 3

Esquema de um GA

Esta somente uma viso de alto nvel de nosso algoritmo. O que ela esconde a complexidade do processo de obteno dos seguintes elementos uma representao cromossomial que seja adequada ao problema uma funo de avaliao que: penalize solues implausveis para nosso problema avalie satisfatoriamente o grau de adequao de cada indivduo como soluo do problema em questo.
Algoritmos Genticos - Captulo 4 4

Esquema de um GA

Um GA altamente genrico. Vrios de seus componentes so invariveis de um problema para outro.

Isto favorece sua implementao em uma linguagem orientada a objeto, permitindo o reaproveitamento do cdigo para soluo de vrios problemas diferentes.

Algoritmos Genticos - Captulo 4

Representao Cromossomial

A representao cromossomial fundamental para o nosso algoritmo gentico. Ela consiste em uma maneira de traduzir a informao do nosso problema em uma maneira vivel de ser tratada pelo computador. Quanto mais ela for adequada ao problema, maior a qualidade dos resultados obtidos. Resista tentao de adequar o problema sua representao!
Algoritmos Genticos - Captulo 4 6

Representao Cromossomial

Cada pedao indivisvel desta representao chamado de um gene. importante notar que a representao cromossomial completamente arbitrria. interessante apenas que algumas regras gerais sejam seguidas : a) A representao deve ser a mais simples possvel b) Se houver solues proibidas ao problema, ento elas no devem ter uma representao c) Se o problema impuser condies de algum tipo, estas devem estar implcitas dentro da nossa representao.
Algoritmos Genticos - Captulo 4 7

Representao Cromossomial

No captulo 10 veremos outros exemplos de como estas regras podem ser seguidas. Neste momento, vamos adotar a representao binria. Mais simples e mais usada pelos praticantes da rea dos algoritmos genticos. Um cromossomo nada mais do que uma sequncia de bits C Cada gene somente um bit. O conceito representado por cada bit e/ou conjunto de bits inerente ao problema.
Algoritmos Genticos - Captulo 4 8

Representao Cromossomial

Essa representao foi a adotada inicialmente por Holland, em seu livro seminal . Hoje em dia, por estes motivos histricos e pelo fato de ser muito simples, ela amplamente adotada por pesquisadores da rea de GA. Os operadores genticos, como discutiremos a seguir, so compreensveis e implementveis.

Algoritmos Genticos - Captulo 4

Representao Cromossomial

Representamos nmeros (inteiros ou reais), strings, etc. usando a representao binria. Para representar nmeros reais como nmeros binrios, temos primeiro que saber duas coisas: A faixa de operao de cada uma das variveis; A preciso desejada. Sabendo isto, convertemos bits para nmeros usando a seguinte frmula:
supi inf i real inf i * ri k 2 1
Algoritmos Genticos - Captulo 4 10

Representao Cromossomial

Exemplo de interpretao de nmeros reais:

000011 110011
x1 x2

r1 = 000011 = 3 r2 = 110011 = 51

x1 = -2 + 3*(2-(-2))/(26-1) = -1,809

x2 = 0 + 51 *(1-0)/(26-1) = 0,809
Algoritmos Genticos - Captulo 4 11

Inicializando um elemento
private void inicializaElemento(int tamanho) { int i; this.valor=""; for(i=0;i<tamanho;++i) { if (java.lang.Math.random()<0.5) { this.valor=this.valor+"0"; } else { this.valor=this.valor+"1"; } } }

Algoritmos Genticos - Captulo 4

12

Inicializando toda a populao


public void inicializaPopulacao(int tamanho) { int i; this.populacao=new Vector(); for(i=0;i<tamanho;++i) { this.populacao.add(new ElementoGA1()); } }

Algoritmos Genticos - Captulo 4

13

Funo de Avaliao

A funo de avaliao a maneira utilizada pelos GAs para determinar a qualidade de um indivduo como soluo do problema em questo. uma nota dada ao indivduo na resoluo do problema. Ser usada para a escolha dos indivduos pelo mdulo de seleo de pais, sendo a forma de diferenciar entre as boas e as ms solues para um problema.

Algoritmos Genticos - Captulo 4

14

Funo de Avaliao

Dada a generalidade dos GAs, a funo de avaliao, em muitos casos, a nica ligao verdadeira do programa com o problema real. Mesmo GA pode ser usado para descobrir o mximo de toda e qualquer funo de n variveis sem nenhuma alterao das estruturas de dados e procedimentos adotados, alterando-se, apenas, a funo de avaliao. Por isto, classes bsicas definidas para este livro so abstratas, sendo a funo de avaliao um mtodo abstrato.

Algoritmos Genticos - Captulo 4

15

Funo de Avaliao

Tambm chamada de funo de custo

Calcula ento um valor numrico que reflete quo bons os parmetros representados no cromossomo resolvem o problema.
Usa todos os valores armazenados no cromossomo (os parmetros) e retorna um valor numrico, cujo significado uma mtrica da qualidade da soluo obtida usando-se aqueles parmetros. A funo de avaliao deve ser tal que se o cromossomo c1 representa uma soluo melhor do que o cromossomo c2, ento a avaliao de c1 deve ser maior do que a avaliao de c2.
Algoritmos Genticos - Captulo 4 16

Funo de Avaliao

A funo de avaliao deve portanto ser escolhida com grande cuidado. Deve embutir todo o conhecimento que se possui sobre o problema a ser resolvido, tanto suas restries quanto seus objetivos de qualidade. Quanto mais conhecimento embutirmos em um GA, menos sero vlidas as crticas sobre eles serem algoritmos genricos Deve diferenciar entre duas solues sub-timas, deixando claro qual delas est mais prxima da soluo procurada.

Algoritmos Genticos - Captulo 4

17

Seleo de Pais

O mtodo de seleo de pais deve simular o mecanismo de seleo natural: Pais mais capazes geram mais filhos; Pais 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; At indivduos com pssima avaliao podem ter caractersticas genticas que sejam favorveis criao de um indivduo timo; Estas caractersticas podem no estar presentes em nenhum outro cromossomo.
Algoritmos Genticos - Captulo 4 18

Seelo de Pais

Mtodo simples e muito adotado: mtodo da roleta viciada. Criamos uma roleta (virtual) na qual cada cromossomo recebe um pedao proporcional sua avaliao (a soma dos pedaos no pode superar 100%). Rodamos a roleta Selecionado ser o indivduo sobre o qual ela parar.

Algoritmos Genticos - Captulo 4

19

Seleo de Pais

Exemplo:
Avaliao 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

Indivduo 0001 0011 0100 0110 Total

Algoritmos Genticos - Captulo 4

20

Seleo de Pais

Exemplo (cont.) Graficamente, temos:

Algoritmos Genticos - Captulo 4

21

Seleo de Pais

No podemos girar uma roleta dentro do computador Trabalhamos com conceitos abstratos, e no roletas fsicas. Algoritmo: a) Some todas as avaliaes para uma varivel soma b) Selecione um nmero s entre 0 e soma (No includos) c) i=1 d) aux=avaliao do indivduo 1 e) enquanto aux<s f) i = i + 1 g) aux=aux+avaliao do indivduo i h) fim enquanto
Algoritmos Genticos - Captulo 4 22

Seleo de Pais

Implementao em Java:
1. 2. 3. 4. 5. 6.

7. 8. 9. 10. 11.

public int roleta() { int i; double aux=0; calculaSomaAvaliacoes(); double limite=Math.random()*this.somaAvaliacoes; for(i=0; ((i<this.populacao.size())&&(aux<limite)) ;++i) { aux+=((ElementoGA)populacao.get(i)).getAvaliacao(); } i--; return(i); }

Algoritmos Genticos - Captulo 4

23

Observao

Todas as avaliaes devem ser estritamente positivas; Se tivssemos um ou mais indivduos com avaliao negativa, a soma total ainda seria 360; Entretanto, a soma dos espaos alocados apenas para os de avaliao positiva excederia 360; Teramos que lidar com o problema de alocar um espao negativo para o indivduo com avaliao negativa; Indivduos com avaliao igual a zero nunca seriam selecionados.
Algoritmos Genticos - Captulo 4 24

Operadores de Crossover e Mutao

Iremos trabalhar aogra com a verso mais simples dos operadores genticos Nesta verso, eles atuam em conjunto, como se fossem um s. Depois veremos verses mais avanadas.

Algoritmos Genticos - Captulo 4

25

Operador de Crossover

Vamos comear com o operador de crossover mais simples, chamado de operador de crossover de um ponto. Depois de selecionados dois pais pelo mdulo de seleo de pais, um ponto de corte selecionado. Um ponto de corte constitui uma posio entre dois genes de um cromossomo. Cada indivduo de n genes contem n-1 pontos de corte.
gen

Pontos de Corte:

4
26

Algoritmos Genticos - Captulo 4

Operador de Crossover

Depois de sorteado o ponto de corte, ns separamos os pais em duas partes: uma esquerda do ponto de corte e outra direita. importante notar que no necessariamente estas duas partes tm o mesmo tamanho. O primeiro filho composto atravs da concatenao da parte esquerda do primeiro pai com a parte direita do segundo pai. O segundo filho composto atravs da concatenao das partes que sobraram (a metade esquerda do segundo pai com a metade direita do primeiro pai).

Algoritmos Genticos - Captulo 4

27

Operador de Mutao

Depois de compostos os filhos, entra em ao o operador de mutao. Este opera da seguinte forma: Ele tem associada uma probabilidade extremamente baixa (da ordem de 0,5%); Ns sorteamos um nmero entre 0 e 1. Se ele for menor que a probabilidade pr-determinada ento o operador atua sobre o gene em questo, alterando-lhe o valor aleatoriamente. Repete-se ento o processo para todos os gens componentes dos dois filhos.

Algoritmos Genticos - Captulo 4

28

Comentrios

Valor da probabilidade deve ser baixo. Se ele for muito alto, o algoritmo gentico se parecer muito com uma tcnica chamada random walk Alguns textos preferem que o operador de mutao no aja de forma aleatria, mas sim, alterando o valor do gene para outro valor vlido do nosso alfabeto gentico. Corresponde em multiplicar a probabilidade do operador de mutao por n/(n-1), onde n a cardinalidade do alfabeto gentico.

Algoritmos Genticos - Captulo 4

29

Juntando os operadores
(a)
Pai 1

(b)
Pai 1

Selecionamos um ponto de corte

Pai 2

Pai 2

Depois do operador de crossover

Filho 1

Filho 1

Depois do operador de mutao

Filho 2

Gen alterado pela mutao


Algoritmos Genticos - Captulo 4

Filho 2

(d)

(c)

30

Mdulo de Populao

O mdulo de populao responsvel pelo controle da nossa populao. Por simplicidade, populao no pode crescer permite que armazenemos a populao em um vetor de tamanho constante. Pais tm que ser substitudos conforme os filhos vo nascendo Pode parecer estranho, visto que estamos acostumados a ver a populao humana sempre crescendo. Quando nasce um beb, no obrigatrio que algum de alguma gerao anterior caia fulminado! Entretanto, simula bem ambientes de recursos limitados
Algoritmos Genticos - Captulo 4 31

Mdulo de Populao

O mdulo de populao que utilizaremos por enquanto extremamente simples. Sabemos que a cada atuao do nosso operador gentico estamos criando dois filhos. Estes vo sendo armazenados em um espao auxiliar at que o nmero de filhos criado seja igual ao tamanho da nossa populao. Neste ponto o mdulo de populao entra em ao. Todos os pais so ento descartados e os filhos copiados para cima de suas posies de memria, indo tornar-se os pais da nova gerao.
Algoritmos Genticos - Captulo 4 32

Execuo Manual (1)

Vamos tentar resolver, usando um GA, o problema de maximizar a funo do exemplo 4.1, dada por , com x e y pertencentes ao intervalo [0,15].

f ( x, y) x * y * sen( y ) 4

Como possvel que esta funo retorne um valor igual a zero, usaremos uma funo de avaliao

g ( x, y) 1 f ( x, y)

Algoritmos Genticos - Captulo 4

33

Execuo Manual (2)

Populao inicial, sorteada aleatoriamente:


Cromossomo 01000011 00101001 10011011 00001111 10011001 11100011 x 4 2 9 0 5 14 y 3 9 11 15 5 3 g(x,y) 9,5 13,7 71,0 1,0 18,7 30,7 144,6
34

Somatrio das avaliaes:


Algoritmos Genticos - Captulo 4

Execuo Manual (3)

Roleta completa

Intervalos para funo de seleo


30,7 9,5 13,7

18,7 1,0 71,0

Cromossomo 01000011 00101001 10011011 00001111 10011001 11100011

g(x,y) 9,5 13,7 71,0 1,0 18,7 30,7

Intervalo [0; 9,5[ [9,5; 23,2[ [23,2; 94,2[ [94,2; 95,2[ [95,2; 113,9[ [113,9; 144,6[

Algoritmos Genticos - Captulo 4

35

Execuo Manual (4)

Sorteio de Pais
Nmero Sorteado 12,8 65,3 108,3 85,3 1,8 119,5 Cromossomo Escolhido 00101001 10011011 10011001 10011011 01000011 11100011
Algoritmos Genticos - Captulo 4 36

Execuo Manual (5)

Operadores:

001 01001 100 11011

00111011 10001001

100110 01 100110 11

10011011 10011001 0 01000011 11100011


Efeito da mutao

0100 0011 1110 0011

Algoritmos Genticos - Captulo 4

37

Execuo Manual (6)

Nova gerao:
Cromossomo 00111011 10001001 10011011 10011000 01000011 11100011 x 3 8 9 9 4 14 y 3 9 11 8 3 3 g(x,y) 7,4 51,9 71,0 1,0 9,5 30,7 171,5
38

Somatrio das avaliaes:


Algoritmos Genticos - Captulo 4

Execuo Manual (7)

Nova roleta:

Intervalos para funo de seleo


30,7 9,5 1,0 7,4 51,9

71,0

Cromossomo 00111011 10001001 10011011 10011000 01000011 11100011

g(x,y) 7,4 51,9 71,0 1,0 9,5 30,7

Intervalo [0; 7,4[ [7,4; 59,3[ [59,3; 130,3[ [130,3; 131,3[ [131,3; 140,8[ [140,8; 171,5[

Algoritmos Genticos - Captulo 4

39

Execuo Manual (8)

Sorteio de Pais
Nmero Sorteado
10,4 132,5 61,2

Cromossomo Escolhido
10001001 01000011 10011011

148,6 129,7 75,2

11100011 10011011 10011011


Algoritmos Genticos - Captulo 4 40

Execuo Manual (9)

Operadores:

Algoritmos Genticos - Captulo 4

41

Execuo Manual (10)

Comentrios: Pais da terceira reproduo so iguais, um ao outro. Logo, qualquer ponto de corte que seja selecionado para ambos gerar filhos iguais. Populao perde diversidade, pois agora temos apenas 5 indivduos diferentes, contra seis da gerao anterior. Este efeito, de convergncia gentica, muito comum em populaes que realizam cruzamentos endgenos.
Algoritmos Genticos - Captulo 4 42

Execuo Manual (11)

Nova gerao:
Cromossomo 00001001 11000011 x 0 3 y 9 3 g(x,y) 1,0 7,4

10010011
11101011 10011011 10011011

9
14 9 9

3
11 11 11

20,1
109,9 71,0 71,0 280,4
43

Somatrio das avaliaes:


Algoritmos Genticos - Captulo 4

Execuo Manual (12)

Neste momento voc poderia achar que o algoritmo s funcionou porque o sorteio foi direcionado Esta uma dvida extremamente razovel neste ponto S ser apagadase executar os cdigos deste captulo e ver que tudo que fizemos aqui realmente acontece.

Algoritmos Genticos - Captulo 4

44

Observao

Existem vrias melhorias possveis no nosso GA; Vamos v-las captulos. aos poucos, nos prximos

Algoritmos Genticos - Captulo 4

45