Linguagem PUSH Gilberto Souza EGC - Computação Evolucionária - 2005 Gilberto Souza EGC -...
Transcript of Linguagem PUSH Gilberto Souza EGC - Computação Evolucionária - 2005 Gilberto Souza EGC -...
Linguagem PUSHLinguagem PUSH
Gilberto SouzaEGC - Computação
Evolucionária - 2005
Gilberto SouzaEGC - Computação
Evolucionária - 2005
EGC / UFSCEGC / UFSC 22
EstruturaEstrutura
• Programação Genética
• Linguagem PUSH
• Programação Genética
• Linguagem PUSH
EGC / UFSCEGC / UFSC 33
O que é Programação Genética
O que é Programação Genética
• Metodologia autônoma de inspiração biológica (seleção natural) para gerar programas de computador os quais serão usados para resolver problemas específicos
• Metodologia autônoma de inspiração biológica (seleção natural) para gerar programas de computador os quais serão usados para resolver problemas específicos
EGC / UFSCEGC / UFSC 44
O que é Programação Genética
O que é Programação Genética
• Técnica de Aprendizado de máquina– Permitir ao computador aprender
• Algoritmos evolucionários– Otimizar uma população de programas
• Técnica de Aprendizado de máquina– Permitir ao computador aprender
• Algoritmos evolucionários– Otimizar uma população de programas
EGC / UFSCEGC / UFSC 55
SoluçõesSoluções
O que é Programação Genética
O que é Programação Genética
• Seria mais fácil programar um algoritmo que possa medir a quantidade de sucesso em resolver um problema do que escrever o programa em si.
• Seria mais fácil programar um algoritmo que possa medir a quantidade de sucesso em resolver um problema do que escrever o programa em si.
Muito boas
Programa de computador Função de Fitness
Algoritmo específico para um problema
boas
ruins péssimas
EGC / UFSCEGC / UFSC 66
O que é Programação Genética
O que é Programação Genética
• Linguagem que permita modificação aleatória de código– Código = símbolos de alto nível– Combinação uniforme dos símbolos– Dicionário para associar entradas ao símbolos
• Linguagem que permita modificação aleatória de código– Código = símbolos de alto nível– Combinação uniforme dos símbolos– Dicionário para associar entradas ao símbolos
EGC / UFSCEGC / UFSC 77
Implementações de PGImplementações de PG• Estruturas em forma de árvore (Koza)
– Árvores de instruções e dados– Lisp
• Representação linear– Seqüência de instruções e dados– C, Pascal, Java, etc.
• Representação baseada em pilhas– Pilhas utilizadas para armazenar dados/instruções
– Push
• Estruturas em forma de árvore (Koza)– Árvores de instruções e dados– Lisp
• Representação linear– Seqüência de instruções e dados– C, Pascal, Java, etc.
• Representação baseada em pilhas– Pilhas utilizadas para armazenar dados/instruções
– Push
EGC / UFSCEGC / UFSC 88
Programa de ComputadorPrograma de Computador
int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp1 + 1 + 2; return (temp2);}
int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp1 + 1 + 2; return (temp2);}
TimeTime SaídaSaída00 6611 6622 6633 6644 6655 6666 6677 6688 6699 661010 661111 771212 77
EGC / UFSCEGC / UFSC 99
Programa de ComputadorPrograma de Computador
int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp1 + 1 + 2; return (temp2);}
int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp1 + 1 + 2; return (temp2);} ( + 1 2 ( IF ( > TIME ( + 1 2 ( IF ( > TIME
10) 3 4))10) 3 4))
EGC / UFSCEGC / UFSC 1010
Operações genéticasOperações genéticas
• Reprodução
• Mutação
• Recombinação (crossover)
• Reprodução
• Mutação
• Recombinação (crossover)
EGC / UFSCEGC / UFSC 1111
ReproduçãoReprodução
EGC / UFSCEGC / UFSC 1212
MutaçãoMutação
EGC / UFSCEGC / UFSC 1313
Recombinação - Crossover
Recombinação - Crossover
Linguagem PUSHLinguagem PUSH
EGC / UFSCEGC / UFSC 1515
OrigemOrigem
• Projeto PUSH para computação evolucionária autônoma criada em 2001 por Lee Sperctor
http://hampshire.edu/lspector/push.html
• Projeto PUSH para computação evolucionária autônoma criada em 2001 por Lee Sperctor
http://hampshire.edu/lspector/push.html
EGC / UFSCEGC / UFSC 1616
Mecanismos Evolucionários
Mecanismos Evolucionários
• Sistemas reprodutivos são definidos por programadores– Parâmetros pré-definidos para evolução
• Co-evolução biológica “não” possui mecanismos pré-estabelecidos
• Sistemas reprodutivos são definidos por programadores– Parâmetros pré-definidos para evolução
• Co-evolução biológica “não” possui mecanismos pré-estabelecidos
EGC / UFSCEGC / UFSC 1717
Mecanismos Evolucionários
Mecanismos Evolucionários
• Sistema de evolução auto-construtivo– Sistema computacional evolucionário que constrói adaptativamente seus próprios mecanismos de reprodução e diversificação enquanto está sendo executado
• Sistema de evolução auto-construtivo– Sistema computacional evolucionário que constrói adaptativamente seus próprios mecanismos de reprodução e diversificação enquanto está sendo executado
EGC / UFSCEGC / UFSC 1818
Sistema de evolução auto-construtivo
Sistema de evolução auto-construtivo
• Evolução de mecanismos melhores adaptados a uma classe de problemas que os projetados manualmente
• Modelo de evolução natural para pesquisa em evolução biológica e vida artificial
• Evolução de mecanismos melhores adaptados a uma classe de problemas que os projetados manualmente
• Modelo de evolução natural para pesquisa em evolução biológica e vida artificial
EGC / UFSCEGC / UFSC 1919
Vida ArtificialVida Artificial
• Tierra– Não evolui soluções computacionais
• Avida– Sem crossover
• Amoeba– Necessita de muito poder computacional
• Tierra– Não evolui soluções computacionais
• Avida– Sem crossover
• Amoeba– Necessita de muito poder computacional
EGC / UFSCEGC / UFSC 2020
TierraTierra• Barras são
os indivíduos que moram em espaço de memória
• Barras são os indivíduos que moram em espaço de memória
EGC / UFSCEGC / UFSC 2121
TierraTierra
• Visão de um indivíduo dentro do ambiente
• Visão de um indivíduo dentro do ambiente
EGC / UFSCEGC / UFSC 2222
AVidaAVida
• Cada cor representa um genótipo diferente
• Cada cor representa um genótipo diferente
EGC / UFSCEGC / UFSC 2323
AmoebaAmoeba
• a - amoeba / n - núcleo / f - comida / e - enzima / v - vacuole / nt - nutrientes / w - dejetos
• a - amoeba / n - núcleo / f - comida / e - enzima / v - vacuole / nt - nutrientes / w - dejetos
EGC / UFSCEGC / UFSC 2424
Objetivos da Linguagem Push
Objetivos da Linguagem Push
• Expressividade– Múltiplos tipos de dados– Módulos– Estruturas de controle complexas
• Auto-construção– Manipular e produzir programas
• Uniformidade sintática
• Expressividade– Múltiplos tipos de dados– Módulos– Estruturas de controle complexas
• Auto-construção– Manipular e produzir programas
• Uniformidade sintática
EGC / UFSCEGC / UFSC 2525
Características da linguagem
Características da linguagem
• Push derivada da linguagem Forth, baseada em pilhas para cada tipo de dados
• Instruções retiram argumentos de pilhas apropriadas e colocam de volta o resultados nessas pilhas
• Instruções que não possuem todos os dados (pilha vazia) para execução são descartadas
• Push derivada da linguagem Forth, baseada em pilhas para cada tipo de dados
• Instruções retiram argumentos de pilhas apropriadas e colocam de volta o resultados nessas pilhas
• Instruções que não possuem todos os dados (pilha vazia) para execução são descartadas
EGC / UFSCEGC / UFSC 2626
Características da linguagem
Características da linguagem
PilhaPilhaintegerinteger
PilhaPilhafloatfloat
PilhaPilhabooleanboolean
PilhaPilhaCODECODE
PilhaPilhaNAMENAME
PilhaPilhatypetype
PilhaPilhaEXECEXEC
EGC / UFSCEGC / UFSC 2727
Características da linguagem
Características da linguagem
• Seqüências completas de código podem ser movidas para pilha CODE - recursão
• Criação “on the fly” de programas
• Linguagem interpretada
• Seqüências completas de código podem ser movidas para pilha CODE - recursão
• Criação “on the fly” de programas
• Linguagem interpretada
EGC / UFSCEGC / UFSC 2828
Características da linguagem
Características da linguagem
• Exemplo de soma:(2 3 INTEGER.+)
• Exemplo de soma:(2 3 INTEGER.+) 2
3
...
...
...
5
2
3
...
...
integer
...
...
...
...
EGC / UFSCEGC / UFSC 2929
Características da linguagem
Características da linguagem
• Outro Exemplo:(1 2 3.0 4.0 INTEGER.+ FLOAT.*)
• Outro Exemplo:(1 2 3.0 4.0 INTEGER.+ FLOAT.*)
3
1
2
+
...
12.0
3.0
4.0
*
...
integer
float
...
...
...
EGC / UFSCEGC / UFSC 3030
Estrutura de códigoEstrutura de código
• Leitura da esquerda para direita
• (2 3 +)• (( 2 3 ) +)• (2 ((3)) (+))• 2 3 +
• Leitura da esquerda para direita
• (2 3 +)• (( 2 3 ) +)• (2 ((3)) (+))• 2 3 +
EGC / UFSCEGC / UFSC 3131
Tipo CODETipo CODE
• Manipulação de listas como em LISP
• Recursão
• Modificação de código permite auto-modificação de programas– Morfogênese e ontogênese
• Manipulação de listas como em LISP
• Recursão
• Modificação de código permite auto-modificação de programas– Morfogênese e ontogênese
EGC / UFSCEGC / UFSC 3232
Tipo NAMETipo NAME• Definição variável:
FLOAT 3.14 PI SET ;; variável PIDUP * PI GET * ;; executa PI * R^2
• Sub-rotinas ou estruturas de controle( FACTORIAL EXEC.DEFINE
(CODE.QUOTE (INTEGER.POP 1) CODE.QUOTE (CODE.DUP 1
INTEGER.− FACTORIAL INTEGER.*) INTEGER.DUP 2 INTEGER.< CODE.IF))
5 ;; entrada
FACTORIAL ;; chamada
• Definição variável:FLOAT 3.14 PI SET ;; variável PIDUP * PI GET * ;; executa PI * R^2
• Sub-rotinas ou estruturas de controle( FACTORIAL EXEC.DEFINE
(CODE.QUOTE (INTEGER.POP 1) CODE.QUOTE (CODE.DUP 1
INTEGER.− FACTORIAL INTEGER.*) INTEGER.DUP 2 INTEGER.< CODE.IF))
5 ;; entrada
FACTORIAL ;; chamada
EGC / UFSCEGC / UFSC 3333
Tipo NAMETipo NAME• Laço do tipo WHILE:
(WHILE EXEC.DEFINE (BODY CODE.SET CONDITION CODE.SET ;; anexa argumentos
BODY CODE.GET CONDITION CODE.GET ;; re-push argumentos para recursão
BODY CODE.GET WHILE CODE.GET CODE.APPEND ;; push o corpo e faz chamada recursiva
CODE.QUOTE (CODE.POP CODE.POP) ;; push o código para terminar CONDITION CODE.GET CODE.DO ;; executa condição
CODE.IF) ) ;; finaliza apropriadamente
1 ; entrada CODE.QUOTE (INTEGER 2 *) ; corpo do laço CODE.QUOTE (INTEGER.DUP 50 < ) ; condiçãoWHILE ; executa o laço while
• Laço do tipo WHILE: (WHILE EXEC.DEFINE (BODY CODE.SET CONDITION CODE.SET ;; anexa argumentos
BODY CODE.GET CONDITION CODE.GET ;; re-push argumentos para recursão
BODY CODE.GET WHILE CODE.GET CODE.APPEND ;; push o corpo e faz chamada recursiva
CODE.QUOTE (CODE.POP CODE.POP) ;; push o código para terminar CONDITION CODE.GET CODE.DO ;; executa condição
CODE.IF) ) ;; finaliza apropriadamente
1 ; entrada CODE.QUOTE (INTEGER 2 *) ; corpo do laço CODE.QUOTE (INTEGER.DUP 50 < ) ; condiçãoWHILE ; executa o laço while
EGC / UFSCEGC / UFSC 3434
PushGPPushGP
• Ambiente de programação genética
– Programas são selecionados para reprodução via torneio
– Em cada geração uma população é gerada por mutação, crossover e reprodução perfeita
• Ambiente de programação genética
– Programas são selecionados para reprodução via torneio
– Em cada geração uma população é gerada por mutação, crossover e reprodução perfeita
EGC / UFSCEGC / UFSC 3535
PushGPPushGP
1. População inicial gerada aleatoriamente
2. Cada programa é avaliado por aptidão de acordo com o problema - fase de torneio
3. Mutação dos pais4. Crossover dos pais5. Geração de uma nova população
1. População inicial gerada aleatoriamente
2. Cada programa é avaliado por aptidão de acordo com o problema - fase de torneio
3. Mutação dos pais4. Crossover dos pais5. Geração de uma nova população
EGC / UFSCEGC / UFSC 3636
ExemploExemplo
• Regressão inteira• Regressão inteira
EGC / UFSCEGC / UFSC 3737
Evolução auto-construtiva
Evolução auto-construtiva
• Pushpop– População de programas push
• Programas que se auto-modificam para gerar novos programas– seleção natural / reprodução
• Pushpop– População de programas push
• Programas que se auto-modificam para gerar novos programas– seleção natural / reprodução
EGC / UFSCEGC / UFSC 3838
Evolução auto-construtiva
Evolução auto-construtiva
• Produção de filhos
– Programas são responsáveis pela produção de seus próprios filhos
– Uso de pilha CHILD•Evitar confusão com o processo de recursão da linguagem
• Produção de filhos
– Programas são responsáveis pela produção de seus próprios filhos
– Uso de pilha CHILD•Evitar confusão com o processo de recursão da linguagem
EGC / UFSCEGC / UFSC 3939
Evolução auto-construtiva
Evolução auto-construtiva
• Seleção
– Filhos são produzidos durante a avaliação de fitness
– Via torneio•Seleção aleatória de n indivíduos•1 filho é escolhido aleatoriamente dos n indivíduos
• Seleção
– Filhos são produzidos durante a avaliação de fitness
– Via torneio•Seleção aleatória de n indivíduos•1 filho é escolhido aleatoriamente dos n indivíduos
EGC / UFSCEGC / UFSC 4040
Evolução auto-construtiva
Evolução auto-construtiva
• Reprodução sexual
– Instruções especiais e pilha EXPRESSION
– Estratégias de seleção•Baseada em genótipos•Baseada em fenótipos•Baseada por relacionamentos
• Reprodução sexual
– Instruções especiais e pilha EXPRESSION
– Estratégias de seleção•Baseada em genótipos•Baseada em fenótipos•Baseada por relacionamentos
EGC / UFSCEGC / UFSC 4141
Evolução auto-construtiva
Evolução auto-construtiva
• Diversidade
– Controle de diversidade por meio de restrições:• Sintática
– Filhos diferentes dos pais– População não pode ter programas idênticos
• Semântica– Limite no número de filhos– Variação no peso do fitness através da população
• Diversidade
– Controle de diversidade por meio de restrições:• Sintática
– Filhos diferentes dos pais– População não pode ter programas idênticos
• Semântica– Limite no número de filhos– Variação no peso do fitness através da população
EGC / UFSCEGC / UFSC 4242
Evolução auto-construtiva
Evolução auto-construtiva
• Competência de reprodução
– Indivíduos capazes de fazer filhos diversos os quais eles próprios façam filhos diversos
– Seleção favorecerá a sobrevivência dos filhos de pais mais bem adaptados
– Aumentar a chance de instruções reprodutivas serem incorporadas ao filhos
• Competência de reprodução
– Indivíduos capazes de fazer filhos diversos os quais eles próprios façam filhos diversos
– Seleção favorecerá a sobrevivência dos filhos de pais mais bem adaptados
– Aumentar a chance de instruções reprodutivas serem incorporadas ao filhos
EGC / UFSCEGC / UFSC 4343
Evolução auto-construtiva
Evolução auto-construtiva
• Exemplo em BREVE - http://www.spiderland.org/breve/
– SwarmEvolve• Experimento de emergência de comportamento coletivo em uma população de agentes voadores
• Comportamento determinado pela evolução de programas ao invés de uma equação de movimento controlado
• Exemplo em BREVE - http://www.spiderland.org/breve/
– SwarmEvolve• Experimento de emergência de comportamento coletivo em uma população de agentes voadores
• Comportamento determinado pela evolução de programas ao invés de uma equação de movimento controlado
EGC / UFSCEGC / UFSC 4444
SwarmEvolve 1.0SwarmEvolve 1.0
• Três classes de agentes– Vermelho, azul e púrpura
• Mais escuro menos energia
• Fontes de energia - para promover a “orientação por objetivo”– Hexágono amarelo
• Três classes de agentes– Vermelho, azul e púrpura
• Mais escuro menos energia
• Fontes de energia - para promover a “orientação por objetivo”– Hexágono amarelo
EGC / UFSCEGC / UFSC 4545
SwarmEvolve 1.0SwarmEvolve 1.0
• Comportamento emergente– Formação de nuvens de uma mesma espécie - controle sobre a fonte de energia
• Comportamento emergente– Formação de nuvens de uma mesma espécie - controle sobre a fonte de energia
EGC / UFSCEGC / UFSC 4646
SwarmEvolve 1.0SwarmEvolve 1.0
EGC / UFSCEGC / UFSC 4747
SwarmEvolve 2.0SwarmEvolve 2.0
• Sistema de evolução auto-construtivo
• Fontes de energia - esferas• Agentes - programa Push
– Vetor de aceleração– Cor do agente
• Sistema de evolução auto-construtivo
• Fontes de energia - esferas• Agentes - programa Push
– Vetor de aceleração– Cor do agente
EGC / UFSCEGC / UFSC 4848
SwarmEvolve 2.0SwarmEvolve 2.0
• Cor do agente usada como mecanismo de “tags”
• Agentes mudam dinamicamente de cor
• Cor do agente usada como mecanismo de “tags”
• Agentes mudam dinamicamente de cor
EGC / UFSCEGC / UFSC 4949
SwarmEvolve 2.0SwarmEvolve 2.0
• Comportamento emergente– Compartilhamento de energia entre agentes
• Comportamento emergente– Compartilhamento de energia entre agentes
EGC / UFSCEGC / UFSC 5050
SwarmEvolve 2.0SwarmEvolve 2.0