Programação Genética

Propaganda
Programação Genética
Aurelio Grott Neto
Gabriel Dominico
Roteiro
●
●
●
●
História
Definição
Representação da programação genética
Funcionamento
○
○
○
○
○
○
●
Criação da população inicial
Funções e terminais
Variações de medidas de fitness
Operadores genéticos
Parâmetros de controle
Critério de parada
Exemplo
2
Histórico
● Algoritmos evolucionários surgem em 1954
● Final dos anos 60 e início dos anos 70, algoritmos evolutivos
foram reconhecidos como métodos de otimização
● Em 1964 Lawrence J. Fogel aplicou programação genética, a
qual passou a ser usada em cadeias de Markov
● Após, John Koza expandiu a programação genética para
diversos problemas complexos
3
Programação genética
4
O que é Programação Genética?
● Um dos principais desafios da computação é fazer com que o
computador faça o que precisa ser feito sem dizer como
● Evolução do programa
● Programação genética consegue criar um programa que
automaticamente soluciona determinado problema
● Representação em forma de árvores
5
Representação de uma Programação Genética
● Um exemplo de como a função x² + 1 seria representada na
programação genética
6
Funcionamento da programação genética
● Para o correto funcionamento da programação genética, Koza
afirma que necessita de 5 passos que o usuário precisa
especificar, sendo:
1.
2.
3.
4.
Determinar o conjunto de Terminais;
Determinar o conjunto de Funções;
Determinar a avaliação do Fitness;
Determinar os parâmetros e variáveis para controle da
execução; e
5. Determinar o critério de parada.
7
Criação da população inicial
●
●
●
●
A população inicial é criada de forma aleatória
Quando “gerado” um terminal a árvore não cresce mais
Respeita a profundidade máxima (definido por parâmetro)
3 métodos diferentes:
○ Full
○ Grow
○ Ramped Half-and-Half
8
9
Método de criação: Full
●
Sempre cria-se árvores com a profundidade máxima permitida
●
Para chegar a esse resultado, restringe a seleção de terminais (quando a
árvore não irá mais crescer) quando ainda não foi atingida a profundidade
máxima
10
Método de criação: Grow
● Cria-se árvores com tamanhos diferentes selecionando
aleatoriamente dentro do conjunto de funções e terminais
● Respeita o critério de profundidade máxima da árvore
11
Método de criação: Ramped half-and-half
● Incorpora tanto o método “grow” quanto o método “full”, cria a
mesma quantidade de árvores para cada nível de profundidade
● Portanto, 50% das árvores produzidas terão utilizado o método
“full” e os outros 50% o método “grow”
● Exemplo: profundidade varia de 2 a 6, neste método será
criado 20% de árvores com profundidade 2, 20% com
profundidade 3, e assim por diante
12
Funções e Terminais
● Funções aritméticas como: adição, subtração, multiplacação e
divisão, funções booleanas, funções matemáticas, etc
● Terminais consistem de dados externos e constantes
numéricos
● Variação das funções e terminais de acordo com os problemas
● Exemplo:
○ Robô para limpar o chão
○ Precisa especificar o que o robô pode ou não fazer, como: mover,
virar e varrer o chão
○ Posição do robô
13
Variações de medidas de fitness
● Fitness “cru”
● Fitness padronizado
● Fitness ajustado
● Fitness normalizado
14
Fitness “Cru”
● Geralmente é analisado de uma forma que quanto maior o
valor do fitness do indivíduo melhor ele é
● Pode ser visto como erro, nesse caso quanto menor o valor
melhor o indivíduo
15
Fitness Padronizado
● É igual ao fitness “cru” quando este é usado para calcular o
erro. Logo, quanto menor o valor, melhor o indivíduo nesse
tipo de avaliação
○
● Caso contrário temos a seguinte expressão:
○
16
Fitness Ajustado
● Maior característica desse tipo é que acentua a diferença em
pequenas diferenças, conseguindo diferenciar um indivíduo
bom de um ótimo
● Pode ser calculado através do fitness padronizado:
○
17
Fitness Normalizado
● Tem 3 principais características:
○ Varia no intervalo de 0 e 1;
○ Maior valor para melhores indivíduos da população; e
○ A soma de todos os fitness normalizados resulta igual a 1.
● Pode ser descrito como:
○
18
Exemplo
● Fitness para a função x² + x + 1
a. x + 1
b. x² + 1
c. 2
d. x
19
Operadores genéticos
● Primárias:
○ Crossover
○ Reprodução
● Secundárias:
○ Mutação
○ Permutação
○ Edição
○ Encapsulamento
○ Destruição
20
Crossover
● Sexuada
● Seleciona dois indivíduos a partir da medida de fitness
anteriormente utilizada
● Criação de um novo indivíduo a partir da troca de “partes” dos
dois indivíduos selecionados
● As “partes” que serão trocadas são escolhidas de forma
aleatória, selecionado esse ponto de corte, troca-se as
subárvores
21
Reprodução
● Assexuada
● Selecionado apenas um indivíduo de acordo com alguma
medida de fitness anteriormente
● Após, esse indivíduo é copiado (sem alteração) para a próxima
geração
22
Mutação
● Assexuada
● Altera de uma forma aleatória as estruturas (indivíduos) da
população.
● Adiciona diversidade na população
23
24
Permutação
● Assexuada
● Escolhe um ponto de inversão aleatório
● Após, realiza a inversão de determinados terminais/funções
25
Edição
●
●
●
●
Assexuada
A operação de edição consegue editar e simplificar expressões
Como é uma operação recursiva, consome muito tempo
É controlada por um parâmetro
26
Encapsulamento
● Assexuada
● A operação de encapsulamento é um meio automático para
identificar uma possível subárvore útil, dando um nome para
que possa ser referenciada e usada no futuro
● Seleciona um indivíduo de acordo com seu fitness
● Após, seleciona uma função de forma aleatória, então essa
função é removida e renomeada
27
Destruição
● Em alguns casos complexos, uma grande parte da população
pode ter um fitness muito ruim, causando uma perda de
diversidade rápida e um custo computacional muito grande
para que se consiga obter o ponto ótimo.
● A operação de destruição oferece uma maneira rápida para
lidar com essa situação
● Controlada por 2 parâmetros: percentagem (quantidade da
população que sobreviverá) e a condição para que seja
realizada esta operação
● Os indivíduos que irão sobreviver são baseados no fitness
28
Parâmetros de controle
29
Parâmetros de controle
●
Principais:
○
○
Tamanho da população
Número de gerações
● Secundários:
○
○
○
○
○
○
○
○
○
○
○
Probabilidade de crossover
Probabilidade de reprodução
Seleção dos pontos de crossover
Tamanho máximo de indívuduos após operações genéticas
Tamanho máximo inicial
Probabilidade de mutação
Probabilidade de permutação
Frequência da edição
Probabilidade de encapsulamento
Condição para a operação de destruição
Porcentagem da destruição
30
Critério de parada
● Varia de problema para problema, podendo ser uma
quantidade X de gerações ou quando um indivíduo alcança
100% da solução
● Alguns problemas não há como saber a solução correta, então
adota-se a quantidade de gerações
31
Exemplo
32
Exemplo de entrada
●
●
●
●
●
●
●
●
●
●
Objective: Find a new mathematical expression, in symbolic form, that equals a
given mathematical expression, for all values of its independent variables.
Terminal set: X, the constant 1.0.
Function set: +, -, *, %, SIN.
Fitness cases: The 20 pairs (xi , yi ) where the xi are random points in the interval
[0, 2π] radians and where the yi are the values of the given mathematical
expression (i.e., Cos 2xi ).
Raw fitness: The sum, taken over the 20 fitness cases, of the absolute value of
the difference between yi and the value produced by the S-expression for xi .
Standardized fitness: Same as raw fitness for this problem.
Hits: Number of points where S-expression comes within 0.01 of the desired
value.
Wrapper: None.
Parameters: M = 500. G = 51.
Success predicate: An S-expression scores 20 hits.
33
Simulador de uma Programação Genética
● http://alphard.ethz.ch/gerber/approx/default.html
● http://goo.gl/j5uEbR
34
Download