A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagem PUSH Gilberto Souza EGC - Computação Evolucionária - 2005 Gilberto Souza EGC - Computação Evolucionária - 2005.

Apresentações semelhantes


Apresentação em tema: "Linguagem PUSH Gilberto Souza EGC - Computação Evolucionária - 2005 Gilberto Souza EGC - Computação Evolucionária - 2005."— Transcrição da apresentação:

1 Linguagem PUSH Gilberto Souza EGC - Computação Evolucionária Gilberto Souza EGC - Computação Evolucionária

2 EGC / UFSC2 Estrutura Programação Genética Linguagem PUSH Programação Genética Linguagem PUSH

3 EGC / UFSC3 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

4 EGC / UFSC4 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

5 EGC / UFSC5 Soluções 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. Muito boas Programa de computador Função de Fitness Algoritmo específico para um problema boas ruinspéssimas

6 EGC / UFSC6 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

7 EGC / UFSC7 Implementaçõ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

8 EGC / UFSC8 Programa de Computador int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp ; return (temp2); } int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp ; return (temp2); } TimeSaída

9 EGC / UFSC9 Programa de Computador int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp ; return (temp2); } int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp ; return (temp2); } ( ( IF ( > TIME 10) 3 4))

10 EGC / UFSC10 Operações genéticas Reprodução Mutação Recombinação (crossover) Reprodução Mutação Recombinação (crossover)

11 EGC / UFSC11 Reprodução

12 EGC / UFSC12 Mutação

13 EGC / UFSC13 Recombinação - Crossover

14 Linguagem PUSH

15 EGC / UFSC15 Origem Projeto PUSH para computação evolucionária autônoma criada em 2001 por Lee Sperctor Projeto PUSH para computação evolucionária autônoma criada em 2001 por Lee Sperctor

16 EGC / UFSC16 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

17 EGC / UFSC17 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

18 EGC / UFSC18 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

19 EGC / UFSC19 Vida 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

20 EGC / UFSC20 Tierra Barras são os indivíduos que moram em espaço de memória

21 EGC / UFSC21 Tierra Visão de um indivíduo dentro do ambiente

22 EGC / UFSC22 AVida Cada cor representa um genótipo diferente

23 EGC / UFSC23 Amoeba a - amoeba / n - núcleo / f - comida / e - enzima / v - vacuole / nt - nutrientes / w - dejetos

24 EGC / UFSC24 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

25 EGC / UFSC25 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

26 EGC / UFSC26 Características da linguagem PilhaintegerPilhafloatPilhabooleanPilhaCODEPilhaNAMEPilhatypePilhaEXEC

27 EGC / UFSC27 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

28 EGC / UFSC28 Características da linguagem Exemplo de soma: (2 3 INTEGER.+) Exemplo de soma: (2 3 INTEGER.+) integer...

29 EGC / UFSC29 Características da linguagem Outro Exemplo: ( INTEGER.+ FLOAT.*) Outro Exemplo: ( INTEGER.+ FLOAT.*) *... integer float...

30 EGC / UFSC30 Estrutura de código Leitura da esquerda para direita (2 3 +) (( 2 3 ) +) (2 ((3)) (+)) Leitura da esquerda para direita (2 3 +) (( 2 3 ) +) (2 ((3)) (+)) 2 3 +

31 EGC / UFSC31 Tipo 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

32 EGC / UFSC32 Tipo NAME Definição variável: FLOAT 3.14 PI SET ;; variável PI DUP * 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 PI DUP * 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

33 EGC / UFSC33 Tipo 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ção WHILE; 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ção WHILE; executa o laço while

34 EGC / UFSC34 PushGP 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

35 EGC / UFSC35 PushGP 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 pais 4.Crossover dos pais 5.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 pais 4.Crossover dos pais 5.Geração de uma nova população

36 EGC / UFSC36 Exemplo Regressão inteira

37 EGC / UFSC37 Evolução auto-construtiva Pushpop – Pop ulação de programas push Programas que se auto-modificam para gerar novos programas –seleção natural / reprodução Pushpop – Pop ulação de programas push Programas que se auto-modificam para gerar novos programas –seleção natural / reprodução

38 EGC / UFSC38 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

39 EGC / UFSC39 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

40 EGC / UFSC40 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

41 EGC / UFSC41 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

42 EGC / UFSC42 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

43 EGC / UFSC43 Evolução auto-construtiva Exemplo em 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 - –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

44 EGC / UFSC44 SwarmEvolve 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

45 EGC / UFSC45 SwarmEvolve 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

46 EGC / UFSC46 SwarmEvolve 1.0

47 EGC / UFSC47 SwarmEvolve 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

48 EGC / UFSC48 SwarmEvolve 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

49 EGC / UFSC49 SwarmEvolve 2.0 Comportamento emergente –Compartilhamento de energia entre agentes Comportamento emergente –Compartilhamento de energia entre agentes

50 EGC / UFSC50 SwarmEvolve 2.0


Carregar ppt "Linguagem PUSH Gilberto Souza EGC - Computação Evolucionária - 2005 Gilberto Souza EGC - Computação Evolucionária - 2005."

Apresentações semelhantes


Anúncios Google