computação evolutiva: programação genética luiz eduardo s. oliveira, ph.d....

38
Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. [email protected] http://www.ppgia.pucpr.br/~soares Pontifícia Universidade Católica do Paraná Curso de Especialização em Inteligência Computacional 2004/2005

Upload: internet

Post on 17-Apr-2015

120 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Computação Evolutiva: Programação Genética

Luiz Eduardo S. Oliveira, [email protected]://www.ppgia.pucpr.br/~soares

Pontifícia Universidade Católica do ParanáCurso de Especialização em Inteligência

Computacional 2004/2005

Page 2: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Objetivos

Introduzir os principais conceitos da programação genética (PG).

Page 3: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Introdução

As três áreas da computação evolutiva que vimos até agora envolveram estruturas definidas com strings.Binárias Reais

PG evolui programas de computador os quais são representados através de árvores de sintaxe abstrata.

Page 4: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Introdução

Principais diferenças entre AG e PG: Os membros da população são estruturas

executáveis e não strings. A fitness dos indivíduos são conseguidas através da

execução dessas estruturas.

Objetivo Aprendizagem por indução Ensinar os computadores a se auto programarem Estratégia: Criar-testar-modificar (similar aos

humanos).

Page 5: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Introdução

Page 6: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Representação

Árvore de sintaxe abstrataFunções aparecem nos nós internos e

constantes e variáveis nos nas folhas

3 * ( x + 6 )

Page 7: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Implementação

A implementação consiste em:Determinar o conjunto de nós terminais.Determinar o conjunto de funções válidas.Determinar a medida de fitness.Selecionar os parâmetros de controle.Determinar as condições de parada.

Page 8: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Implementação

As funções são limitadas pela linguagem de programação utilizada na construção dos programas, como por exemplo:Funções matemáticas: seno, cosseno, etc..Funções aritméticas: +,-, *, /Operadores Booleanos (E, OU, NÃO)Operadores condicionais: Se, Então

Page 9: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Implementação

Cada função tem uma determinada aridade (número de argumentos).

Duas propriedades desejáveis em uma aplicaçãoFechamentoSuficiência

Page 10: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Fechamento

Garantir a viabilidade de árvores de sintaxe abstrata.

O conjunto de funções válidas deve aceitar, como argumento, qualquer valor que possa ser retornado por qualquer função ou terminal.

Garante que a árvore será avaliada corretamente.

Ex: Divisão: Matematicamente não se pode dividir um número por zero. Solução: Divisão protegida >> Divisão por zero

retorna 1

Page 11: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Suficiência

O conjunto de funções + o conjunto de terminais deve ser capaz de representar uma solução para o problema.

Deve existir alguma evidência que tais funções e terminais resolvam o problemaCaso contrário, o algoritmo não convergirá.Todas as funções possíveis.

Espaço de busca enorme.

Page 12: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Principais Parâmetros

Tamanho da população Número máximo de gerações. Probabilidade de reprodução e

cruzamento. Tamanho máximo do indivíduo.

Profundidade da árvore.

Page 13: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Entendendo a PG

Algoritmo clássico:1. Inicializar a população inicial.

2. Determinar a fitness de cada indivíduo.

3. Realizar a reprodução de acordo com o valor da fitness e da probabilidade de reprodução.

4. Realizar o cruzamento.

5. Voltar ao passo 2 até que uma condição de parada seja alcançada.

Page 14: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Criando um indivíduo.

Definir o conjunto de funções F e terminais T.

Cada tem associada uma aridade superior a zero

O conjunto T é composto pelas variáveis, constantes e funções de aridade zero.

Ff

Page 15: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Criando um indivíduo

Considere por exemplo: e Ou seja, o conjunto das funções válidas é o

conjunto das operações aritméticas com aridade 2

Os terminais são compostos por x, 3 e 6.Uma expressão que pode ser produzida é

},,,{ F }6,3,{xT

)6(3 x

Espaço de busca

é a livre combinação

dos elementos de

F e T

Page 16: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Criando uma População Aleatória

Primeiramente escolhe-se uma função aleatória de

Para cada elemento de f escolhe-se um elemento de {F U T}

O processo segue até que se tenha apenas terminais como nós folha da árvore.

Especifica-se um limite máximo para a profundidade da árvore para se evitar árvores muito grandes.

Ff

Page 17: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Criando uma População Aleatória

O sucesso da PG depende bastante da qualidade da população inicial.Variedade na composição dos programasPermitindo assim que a recombinação leve à

convergência.

Page 18: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Fitness

Cada programa de computador é avaliado em termos de quão bem ele realiza (ou executa) sua tarefa em um ambiente particular de um problema.

Por exemplo, executando-se o programa e verificando-se o erro produzido no resultado. Quanto mais próximo de zero, melhor é o programa.

Page 19: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Operadores Genéticos

Reprodução Cruzamento Mutação Permutação Edição Encapsulamento Destruição

Page 20: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Reprodução Um indivíduo da população é selecionado

de acordo com algum método baseado na fitness (Roleta, por exemplo)

O indivíduo é copiado sem qualquer alteração para a próxima geração

Page 21: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Cruzamento

Dois programas são selecionados e são recombinados para gerar outros dois programas.

Um ponto aleatório de cruzamento é escolhido em cada programa pai e as árvores abaixo destes pontos são trocadas.

Page 22: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Cruzamento

Page 23: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Cruzamento AG X GP

Cruzamento em AG:Se os pais são idênticos, ambos os filhos

serão idênticos. Cruzamento em GP

Como a chance de gerar pontos de corte idênticos é pequena, logo a probabilidade de gerar filhos iguais é pequena.

Page 24: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Mutação

Seleciona-se um ramo aleatório na árvore e cria-se um novo ramo aleatório no lugar.

Inserir diversidade.

Page 25: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Permutação

Escolhe-se um ponto interno de uma expressão

Escolha aleatória do ramo a ser permutado.

Page 26: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Permutação

Quando a permutação não tem influência nenhuma?Operação comutativa.

Page 27: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Edição

Proporciona um meio para editar e simplificar expressões

Page 28: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Edição

Pode ser utilizada de duas maneiras Externo a execução Durante a execução

Consome bastante tempo Controlada por parâmetro

1 – Aplica-se em todas as gerações 0 – Não é aplicada > 1 – Freqüência de aplicação

Page 29: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Edição

Tornar a expressão menos vulnerável ao cruzamento(NOT(NOT(NOT(NOT(X))))) X

Reduz a variedade de estruturas disponíveis para o cruzamento.

Page 30: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Encapsulamento

Forma de identificar sub-árvores potencialmente úteis e dar a elas um nome para que sejam referenciadas e usadas posteriormente.

Seleciona-se um ponto interno de uma árvore com boa fitness.

Page 31: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Encapsulamento

Remove-se a sub-árvore localizada no ponto selecionado.

Uma nova função é definida para referenciar esta sub-arvore.

Page 32: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Encapsulamento

A nova função não tem argumentos. O conjunto das funções é acrescido desta

nova função. A função encapsulada é fator potencial

para interromper o efeito do cruzamento, pois a função torna-se um ponto indivisível.

Page 33: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Destruição

Operação assexuada Forma de reduzir o número de indivíduos

medíocres nas primeiras gerações. Utiliza-se a fitness para realizar esta

operação Utilizada em outras estratégias evolutivas

também.

Page 34: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Critério de Parada

Máximo de gerações ou ponto ótimo Designação do resultado:

Melhor indivíduo que apareceu em qualquer geração da população.

Page 35: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Exemplo de Aplicação Regressão

Encontrar uma expressão matemática que melhor se ajuste a uma amostra de dados.

y=-1.57+1.41xReta da regressão

tamanho

idad

e

Modelo que pode serutilizado para fazerprevisão.

Cuidado na extrapolaçãodos limites da basede aprendizagem.

Page 36: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Exemplo

Encontrar o relacionamento entre o raio e o período de órbita de um planeta em torno do sol.

Dados fornecidos:

Page 37: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade

Exercício

Considere as duas árvores. Faça uma operação de cruzamento e mutação e avalie a fitness com base na tabela anterior. Compare o seu resultado com o período fornecido.

X

d X

r 2

X

^ X

r dr r

Page 38: Computação Evolutiva: Programação Genética Luiz Eduardo S. Oliveira, Ph.D. soares@ppgia.pucpr.br soares Pontifícia Universidade