Professional Documents
Culture Documents
Ricardo Linden
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:
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
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
Isto favorece sua implementao em uma linguagem orientada a objeto, permitindo o reaproveitamento do cdigo para soluo de vrios problemas diferentes.
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.
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
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"; } } }
12
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.
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.
15
Funo de Avaliao
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.
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.
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
20
Seleo de Pais
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); }
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
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.
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
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).
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.
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.
29
Juntando os operadores
(a)
Pai 1
(b)
Pai 1
Pai 2
Pai 2
Filho 1
Filho 1
Filho 2
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
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)
33
Roleta completa
Intervalo [0; 9,5[ [9,5; 23,2[ [23,2; 94,2[ [94,2; 95,2[ [95,2; 113,9[ [113,9; 144,6[
35
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
Operadores:
00111011 10001001
100110 01 100110 11
37
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
Nova roleta:
71,0
Intervalo [0; 7,4[ [7,4; 59,3[ [59,3; 130,3[ [130,3; 131,3[ [131,3; 140,8[ [140,8; 171,5[
39
Sorteio de Pais
Nmero Sorteado
10,4 132,5 61,2
Cromossomo Escolhido
10001001 01000011 10011011
Operadores:
41
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
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
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.
44
Observao
Existem vrias melhorias possveis no nosso GA; Vamos v-las captulos. aos poucos, nos prximos
45