- 1. Programao Gentica Diogo Medeiros
2. Introduo
- A Programao Gentica tenta tratar uma das questesda cincia da
computao:
- Como os computadores podem aprender a resolver problemas sem
serem explicitamente programados para tal?
- Ou seja, como os computadores podem fazer o que deve ser feito
sem serem orientados exatamente para fazerem isto?
3. Histrico
- Em 1975, John Holland (Ph.D. em Cincia da Computao -
Universidade de Michigan, 1959) criou os Algoritmos Genticos.
- Em 1992, John Koza (Doutor em Cincia da Computao - Universidade
de Michigan, 1972) usou algoritmos genticos para desenvolver
programas para realizar certas tarefas. Ele chamou seu mtodo de
programao gentica.
4. Propsitos
- Como qualquer outro sistema computacional inspirado na
natureza, a Programao Gentica tem dois propsitos bsicos:
-
- Servir de ferramenta para a soluo de problemas de
engenharia;
-
- Servir de modelo cientfico simplificado para processos
naturais.
- Na prtica, qualquer implementao de Programao Gentica vai
envolver, ao menos parcialmente, ambos os propsitos bsicos
mencionados acima.
5. reas de Utilizao
- A utilizao da Programao Gentica tem sido estendida a problemas
de diversas reas do conhecimento, tais como:
-
- Processamento de Imagens.
-
- Reconhecimento de Padres.
6. Definio
- A Programao Gentica a extenso dos Algoritmos Genticos no domnio
dos programas, onde:
-
- O indivduo um programa de computador.
-
- O espao de busca so todos os possveis programas de
computador.
- Em resumo, a Programao Gentica um mtodo que busca, dentro de um
espao significativamente polinomial/exponencial e restrito de
programas de computador, uma soluo exata ou pelo menos aproximada
para resolver determinado problema.
7. Programas de Computadores
- Um programa de computador uma expresso matemtica composta de
funes e terminais.
- As funes podem ser operaes aritmticas (+, - , *,...), operaes
booleanas (and, or, not, ...), funes matemticas (sen, cos, ...),
operadores condicionais (if, then, ...), funes de iterao (while,
...), funes que causam recurso, funes especficas do domnio do
problema.
- Os terminais podem ser variveis (representando, possivelmente,
as entradas) ou constantes (nmero 5, por exemplo).
8. Representao de Programas em PG
- Os programas de computador, em Programao Gentica, so
representados sob a forma de rvores .
- As funes aparecem nos ns internos da rvore .
- Os terminais aparecem nos ns folha da rvore .
9. Representao de Programas em PG
- Abaixo, temos a expresso 3 x+2x+1representada sob a forma de
rvore:
10. Exemplo de execuo da PG
- Entrada: Conjunto de pontos = {1,4,5,6,9}
- Sada: Melhor programa encontrado tal que a funo y se aproxime
mais dos pontos dados na entrada. Por exemplo, o programa x+x.
- Cada programa avaliado pela medida de aptido, a qual deve ser
definida como parmetro, pois varia de problema para problema.
- A PG, atravs de operaes genticas, ir retornar o melhor programa
encontrado a partir de uma populao inicial de programas criada de
um conjunto de funes e terminais.
11. Figura Ilustrativa 12. Representao de Programas em PG
- A Programao Gentica evolui programas de computador a partir dos
conjuntos de terminais e de funes.
- Para que programas criados pelo PG sejam vlidos, necessrio que
os conjuntos de funes e de terminais atendam a propriedade do
fechamento - closure .
13. Propriedade do Fechamento (Closure)
- Funes devem aceitar como argumento qualquer valor e tipo de
dado que seja retornado por qualquer funo do conjunto de funes, e
qualquer valor e tipo de dado que possa ser assumido por qualquer
terminal.
14. Fluxograma da Programao Gentica 15. Passos Preparatrios para
PG
- Existem 5 Passos Preparatrios na aplicao de PG:
- Determinar o Conjunto de Terminais;
- Determinar o Conjunto de Funes Primitivas;
- Definir uma Medida de Aptido;
- Estabelecer Parmetros para Controlar a Execuo;
- Definir um Mtodo para Determinar o Resultado e um Critrio de
Parada;
16. Medida de Aptido (Funo Fitness)
- Cada indivduo tem associado a si uma medida numrica, que o
resultado da interao dele com o ambiente;
- Ou seja, uma medida do grau de adaptao deste indivduo;
- Esta medida que dirige diretamente o processo evolucionrio,
fazendo com que, quanto mais adaptado for um indivduo maior a sua
chance de permanecer ou ter suas caractersticas propagadas para as
prximas geraes.
17. Parmetros de Controle da Execuo
18. Parmetros de Controle da Execuo
- condio de chamada de destruio
- mtodo de gerao da populao inicial
- mtodo de seleo do pai (primeiro e segundo)
- uso de ajuste da medida de aptido
19. Critrio de Parada
- Atingir um nmero mximo de geraes;
- Atingir um ponto timo (satisfatrio) do problema.
20. Criao da Populao Inicial
- Gera-se uma populao inicial aleatria, formada por programas de
computadores, com funes e terminais aleatrios, obedecendo a
profundidade mxima da rvore (controlada por parmetro).
21. Mtodos de Criao da Populao Inicial: Grow
- Os ns so selecionados aleatoriamente dos conjuntos F e T
(exceto para o n raiz que retirado do conjunto F), por este motivo
o mtodo produz rvores de formatos irregulares. Se uma ramificao
contm um n terminal, esta ramificao pra, mesmo que a profundidade
mxima no tenha sido atingida.
22. Mtodos de Criao da Populao Inicial: Full
- Ao invs de escolher aleatoriamente os ns do conjunto de funes e
de terminais, o mtodo Full, escolhe somente funes at que um n de
profundidade mxima seja selecionado, ento ele passa a escolher
somente terminais. O resultado disso que cada rvore atinge a
profundidade mxima.
23. Mtodos de Criao da Populao Inicial: Half-and-half
- uma combinao dos mtodos Grow e Full, ou seja, utiliza o mtodo
Full em 50% das vezes e o mtodo Grow nas outras 50%, tendo por
objetivo gerar um nmero igual de rvores para cada
profundidade.
- Supondo, por exemplo, uma rvore de profundidade mxima seis (6),
a populao igualmente dividida em rvores com profundidade dois, trs,
quatro, cinco e seis, ou seja, 20% tero profundidade dois, 20% tero
profundidade trs e assim sucessivamente.
- Em cada grupo, metade das rvores so geradas pelo mtodo Full e a
outra metade pelo Grow.
24. Mtodos de Criao da Populao Inicial: Uniform
- Desenvolvido com o objetivo de criar rvores uniformes, geradas
a partir do conjunto de todas as rvores possveis.
- O algoritmo calcula vrias vezes quantas rvores podero ser
geradas para cada tamanho desejado, por este motivo o mtodo possui
um alto custo computacional.
25. Mtodos de Criao da Populao Inicial: Algoritmo 26. Seleo dos
Indivduos
- Para selecionar quais indivduos da populao faro parte de uma
nova gerao e quais deles sofrero alteraes, atravs dos operadores
genticos (reproduo, cruzamento e mutao), necessrio que se tenha um
critrio de seleo que garanta que uma boa escolha seja
realizada.
- Um dos mtodos mais utilizados para se efetuar esta seleo,
baseia-se no valor de aptido de cada indivduo, os indivduos
selecionados devero ser aqueles que apresentam melhores valores de
aptido.
27. Operadores Genticos
28. Operadores Genticos: Reproduo
- Um indivduo da populao selecionado de acordo com algum mtodo
baseado na aptido;
- O indivduo copiado, sem qualquer alterao, para a prxima
gerao.
29. Operadores Genticos: Crossover
- Troca de material gentico entre dois indivduos.
- escolhido um ponto de corte nas duas rvores e os ramos
inferiores a ele so trocados.
30. Operadores Genticos: Mutao
- A mutao consiste em uma mudana aleatria de uma funo, uma
entrada ou uma constante na rvore.
31. Operadores Genticos: Permutao
- Escolhe-se um ponto interno de uma expresso;
- A permutao a ser realizada escolhida aleatoriamente (3 ramos:
existem 3! possibilidades de permutao);
- se a funo comutativa, no h efeito da permutao.
32. Operadores Genticos: Edio
- Proporciona um meio para editar e simplificar expresses;
- Pode tornar a expresso menos vulnervel ao crossover;
- Reduz a variedade de estruturas disponveis para o
crossover.
33. Operadores Genticos: Encapsulamento
- Forma de identificar subrvores potencialmente teis e dar a elas
um nome para que sejam referenciadas e usadas posteriormente;
- Seleciona-se um pai baseando-se na aptido;
- Seleciona-se um ponto interno desta rvore.
34. Operadores Genticos: Destruio
- uma forma de reduzir o nmero de indivduos medocres nas
primeiras geraes;
- Controlado por dois parmetros:
- percentagem de indivduos mantdos; e
- condio que especifica quando este operadorser invocado.
- Indivduos so selecionados para permanecer com base na
aptido.
- Ex: Percentagem=10% , Quando=gerao 0
- Na gerao 0, 10% da populao permanece (populao ser criada 10
vezes maior na gerao 0)
35. Exemplo
- Objetivo: Dada a entrada (conjunto de pontos), fazer uma
regresso simples atravs da PG.
- Conjunto de Funes: +,-,*,sen,cos
- Conjunto de Terminais: varivel x e constantes aleatrias
- Populao Inicial: Half-and-half
- Parmetros: - Tamanho da populao = 100 - crossover = 80% - mutao
= 20% - reproduo = 20%
36. Exemplo
37. Simulador
- Applet Java que simula uma execuo da PG para uma Regresso
Simples.
- Site: http://alphard.ethz.ch/gerber/approx/default.html
- Necessrio ter Plugin Java instalado no navegador.
- Utiliza todos os conceitos de PG que vimos at agora.
38. Simulador Aplicando o exemplo
39. Simulador Aplicando o exemplo
- Clicando em Settings... podemos ajustar os parmetros:
40. Simulador Aplicando o exemplo
- Abaixo temos a figura mostrando a tela aps ajustar os
parmetros. Note, no quadro Approximation, que o programa
interpretou os pontos do conjunto de entrada.
41. Simulador Aplicando o exemplo
- Aps ajustar os parmetros, clicamos em Start e ele inicia a
execuo da PG, sempre mostrando o melhor indivduo atual no quadro
Results e a curva da sua funo na cor Azul no quadro
Approximation:
42. Simulador Aplicando o exemplo
- Abaixo temos a tela aps a PG terminar a execuo (depois de 1000
geraes, no caso deste simulador). O melhor indivduo (sada da PG)
foi encontrado na gerao 999.
43. Questo 1
- O que Programao Gentica? Quais seus principais propsitos?
44. Questo 2
- O que um programa de computador? Cite 2 exemplos.
45. Questo 3
- Dado os programas abaixo, como estes seriam representados na
Programao Gentica? (desenhe)
-
- (a OR b) AND (c AND (NOT d))
46. Questo 4
- Qual o programa de computador que representa cada rvore abaixo?
Indique o conjunto de funes e o conjunto de terminais usado em cada
rvore.
47. Questo 5
- Simule uma execuo da Programao Gentica para o seguinte
problema:
- Objetivo: Encontrar um programa cuja sada coincide com x+x no
intervalo 0
- Conjunto de Terminais: varivel x e constantes entre 0 e 5
- Funo Fitness : soma dos erros absolutos parax = {0, 0.2, ...,
0.8, 1.0}
48. Questo 5 (cont.)
- Parmetros: - Tamanho da populao = 4 - crossover = 50% - mutao =
25% - reproduo = 25% - Sub-rvores sem limite de tamanho - Tamanho
da rvore inicial = 3 - Nmero mximo de geraes = 4
- Critrio de Parada: Um programa cuja soma dos erros absolutos
menor que 0.1 encontrado ou nmero mximo de geraes atingido
49. Questes Complementares
- Exemplifique a propriedade do fechamento.
- Qual a complexidade algoritmica dos AGs?
- Em relao aos AGs, qual o seu espao de estados?
- Idem s duas questes anteriores, qual a complexidade da PG?