You are on page 1of 5

Programao Gentica

Criada com o objetivo de evoluir programas

Programao Gentica
Computao Natural Gisele L. Pappa

Lista de 36 (re-)invenes que so competitivas com as solues propostas por humanos 2 geraram patentes
www.genetic-programming.org http://www.genetic-programming.org/hc2005/main.html

Programao Gentica
Principais caractersticas
Um indivduo uma soluo candidata contendo funes e operadores, e no apenas dados (variveis /constantes) Normalmente indivduos tem tamanhos e formas variadas Na teoria, um indivduo uma receita para resolver um dado problema, ao invs de uma soluo para uma dada instncia de um problema

GA vs. GP
Ex: otimizao de funes vs. aproximao de funes Dada uma funo complexa, por exemplo sin(x) - 0.1 x + 2, podemos usar um GA para encontrar o valor timo da funo
Dado um conjunto de dados, contento pares <x, f(x)>, podemos utilizar GP para encontrar uma funo g(x) que se aproxime da funo desconhecida f(x) (regresso simblica)

Considere o problema do caxeiro viajante


Em um GA um indivduo uma sequencia de cidades Em GP um algoritmo deveria ser um algoritmo para resolver qualquer instncia do problema, dado qualquer conjunto de cidades

Otimizao versus Aproximao de funes


4

Programao Gentica
Terminais No Terminais Populao Inicial Fitness Seleo

Exemplo de aplicao de um GA: Encontre os mximos ou mnimos da funo f(x) = sin(x) - 0.1 x + 2

3.5 3 2.5 2 1.5 1 0.5 0 -10 -5 0 5 10

Exemplo de aplicao de um GP: Encontre a funo (programa) que produz os pontos dados na tabela a seguir:

x sada -10 3.6 -8 2.1 -6 2.7 -4 2.6 . . . .

No Critrio de Parada satisfeito? Sim

Crossover Nova Populao Reproduo Mutao

pcross

preprod pmut

Retorna melhor soluo

Fitness

Programao Gentica (GP)


2 componentes bsicos:
Conjunto de terminais variveis e constantes Conjunto de funes funes apropriadas para resolver o problema em questo

Componentes bsicos de um GP
Focaremos na representao por rvore
Ns internos: funes ou operadores Ns folhas: variveis ou constantes
+

Tipos de representao:
Representao linear Representao por rvores (mais comum) Representao por grafos
+ Y Z 0.5 X 0.1

Exemplos de Indivduos
Conjunto de funes: F = {+, , , } Conjunto de terminais: T = {A, B, X, Y}
+
B Y B

Inicializao da Populao
3 mtodos principais Grow
O n de uma rvore escolhido considerando elementos em ambos os conjuntos de terminais e funes, considerando uma altura mxima Produz rvores com formas irregulares

Full
O n de uma rvore escolhido considerando elementos apenas do conjuntos de funes, at que a profundidade mxima seja alcanada. Nesse momento, ns passam a ser escolhidos do conjunto de terminais Produz rvores balanceadas

X Y A

B
X

Indivduo 1: (+ ( X Y) ( A B) )

Indivduo 2: ( ( ( X Y) B ) B)

Inicializao da Populao
Ramped half-and-half
Combina os mtodos full e grow para aumentar diversidade Divide a populao em subconjuntos com o mesmo nmero de indivduos, e inicializa metade dos indivduos de cada conjunto com o mtodo grow e metade com o mtodo full Se a profundidade mxima da rvore 6, e o tamanho da populao 50, sero criados um mesmo nmero de indivduos com profundidades 2, 3, 4, 5 e 6 (nesse caso, 10 indivduos). 5 deles sero inicializados utilizando grow e 5 full.
Terminais No Terminais

Programao Gentica
Populao Inicial Fitness Seleo

No Critrio de Parada satisfeito? Sim

Crossover Nova Populao Reproduo Mutao

pcross

preprod pmut

Retorna melhor soluo

Fitness

Operadores Genticos
Crossover: troca sub-rvores
+

Operadores Genticos
Mutao de um ponto

+ A B

C
X

A X

+ Z 10 4

A X

Z 10 4

Pai 1

Pai 2

X Y A

+ B

Pai
Z C

Filho

Filho 1

Filho 2

Operadores Genticos
Mutao de expanso

Operadores Genticos
Mutao de reduo
Z

A X

Z 10 4

A X

+ Z 10 4

Filho

Pai

Filho

Pai

Programao Gentica
Terminais No Terminais Populao Inicial Fitness Seleo

Conjunto de Funes
Propriedades desejadas
Suficincia: o poder de expresso suficiente para representar uma soluo candidata para o problema em questo Fechamento (Closure): uma funo deve aceitar como entrada qualquer sada produzida por qualquer outro elemento do conjunto de funes ou do conjunto de terminais Parsimnia: idealmente, conter apenas funes necessrias para resolver o problema em questo (propriedade no necessria, mas desejada)

No Critrio de Parada satisfeito? Sim

Crossover Nova Populao Reproduo Mutao

pcross

preprod pmut

Retorna melhor soluo

Fitness

Conjunto de Funes
Como encontrar um equilbrio entre poder de expresso e parsimnia?
Sugesto [Banzhaf et al. 1998, p. 111]: FS = {+, -, x, /, OR, AND, XOR}

Conjunto de Funes
Problemas com a propriedade de fechamento
Exige a modificao de certas funes/operadores
Ex. diviso por 0 indefinida Soluo: diviso protegida se o denominador for zero, retornar um valor padro

Variveis com diferentes tipos de dados


Ex., Sexo (binrio: masculino, feminino) e Idade (inteiro) Soluo: GP restrito a sintaxe e/ou GP baseado em gramtica

GP Restrito a Sintaxe
Exemplo:

GP Restrito a Sintaxe
OR > Var 5 20 Var 8 < 103

Para cada funo do conjunto de funes, especificar o tipo de dados de seus argumentos e o tipo de dados retornado Cada terminal tambm associado a um tipo de dados Cruzamento e mutao so modificados com respeito a restries nos tipos de dados

Funo +, -, *, / >, < AND, OR

Tipo de dados dos argumentos (real, real) (real, real) (boolean, boolean)

Tipo de dado retornado real boolean boolean

Introns
Em biologia, introns so partes inteis do DNA
Partes dos genes que no so utilizadas durante a produo de protenas

Bloat
Como resultado do aparecimento de introns, execuo de um GP normalmente incha (bloat)
faz com que um indivduo cresa incontrolavelmente at que o tamanho mximo seja alcanado

Em GP, introns so partes inteis de um indivduo, ou seja, partes do cdigo que no tem nenhum efeito na sada do programa (soluo candidata) Exemplos:
X=X+0 X=X+XX

Desvantagens de bloating
Populao utilizada muito mais memria Execuo do GP torna-se mais lenta

Possveis vantagens de introns


Efeito protetor contra o efeito destruitivo do crossover Quanto maior a porcentagem de introns, maior a probabilidade do crossover trocar introns ao invs de trocar partes teis do cdigo

Introns so comuns em indivduos de GP

O que fazer em relao a introns e bloating


Estimular a evoluo de indivduos mais simples, utilizando uma presso de parsimnia (penelizando solues complexas) na fitness Eliminar crossovers destrutivos, i.e., crossover realizado apenas se os filhos gerados tiveram fitness pelo menos to boas quanto as fitness dos pais (medida um pouco drstica) Implementar um operador que explicitamente remove introns depois que um indivduo gerado

Diferenas Padro entre GA e GP


Algoritmos Genticos (GA)
Representao do indivduo , originalmente, um vetor binrio. Atualmente vrios tipos de representao so permitidas Principal operador: crossover (altas probabilidades) Operador secundrio: mutao (baixa probabilidade)

Programao Gentica (GP)


Representao: utilizada no apenas dados, mas tambm funes Objetivo original evoluir programas, ou seja, receitas para um tipo de problema, ao invs de solues para uma instncia particular do problema Acredita-se que crossover pode ter efeito destrutivo

GA versus GP
Diferena est na interpretao da representao [Woodward 2003]
GA o mapeamento entre a descrio e o objeto sendo descrito sempre um para um GP esse mapeamento de muitos para um
Em regresso simblica, a mesma funo pode ser descrita por diversos indivduos

Agradecimentos
A maioria dos slides dessa aula foram retiradas das aulas de Computao Natural de Alex A. Freitas

Leitura Recomendada
A Field Guide to Genetic Programming, Livro
online, http://www.gp-field-guide.org.uk/

Curiosidades
http://rogeralsing.com/2008/12/07/geneticprogramming-evolution-of-mona-lisa/ http://www.wreck.devisland.net/ga/

You might also like