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