Gilberto Souza EGC - Computação Evolucionária

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

Unidade VII Algoritmos Genéticos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Algoritmos Genéticos Alex F. V. Machado. Algoritmos Genéticos Quanto melhor um indivíduo se adaptar ao seu meio ambiente, maior será sua chance de sobreviver.
gerador de código intermediário
Estruturas de Repetição
Algoritmos de manipulação de estruturas elementares de dados
Fundamentos dos Algoritmos Genéticos Alex F. V. Machado.
Fundamentos dos Algoritmos Genéticos Alex F. V. Machado.
Algoritmos Genéticos Alex F. V. Machado. Algoritmos Genéticos Quanto melhor um indivíduo se adaptar ao seu meio ambiente, maior será sua chance de sobreviver.
Computação Evolucionária
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Algoritmos Genéticos Marcone Jamilson Freitas Souza
Computação Evolutiva: Programação Genética
Otimização de Funções Contínuas via Algoritmos Genéticos Adaptado do trabalho realizado por: Frederico Heitor Mônica do Amaral.
Otimização de Funções Contínuas via Algoritmos Genéticos
Automato de Pilha.
Algoritmos Genéticos Jorge H. C. Fernandes Setembro de 1998.
Inteligência Artificial
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Algoritmos Genéticos Rômulo Ferreira Douro.
Análise Léxica Supondo o trecho de programa abaixo:
Apresentação Introdução à Programação Genética Título :
Introdução à Segurança de Funcionamento e Tolerância a Faltas
Algoritmos Genéticos - Capítulo 10 Representação Numérica
Revisão da Linguagem C.
Classes e objetos Modelagem
O Portal do Estudante de Computação
Métodos Populacionais
A Framework for Robots Development and Programming Based on Genetic Algorithms Palmeira P.F.M Silvino J.S. de Melo J.C.D DEE-UFMG DELT-UFMG.
JAVA: Conceitos Iniciais
Otimização Prof. Benedito C. Silva IRN UNIFEI
PROGRAMAÇÃO I UNIDADE 1.
Algoritmos Culturais.
Conceitos de Linguagem de Programação
INTELIGÊNCIA ARTIFICIAL
Estrutura de dados, pseudocódigo
Introdução a Programação
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Métodos Populacionais
Sistemas Inteligentes
Marcílio C. P. de Souto DIMAp/UFRN
Anne Magály de PaulaCanuto DIMAp/UFRN
Algoritmos Evolutivos Algoritmos Genéticos Introdução
Java Bytecode Software Básico Mitsuo Takaki.
Orientação a Objetos e Java Graduação em Ciência da Computação
Geração de Código aula-12-geração-de-código.pdf.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Linguagens de Programação
O PROBLEMA DE SCHEDULING EM JOB-SHOP
Inteligência Artificial
Programação Evolutiva e Lógica Fuzzy
Recursividade Profs. De Prog2 e Lab2.
Computação Evolutiva : Um Novo Paradigma Para a Resolução de Problemas Complexos Aurora Pozo Pós-graduação em Informática, Pós-graduação em Métodos Numéricos.
Analise de Algoritmos e Notação Assintótica
Inteligência Artificial
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Influencias sobre o Projeto da Linguagem
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
Algoritmos Genéticos Uma visão geral do método Cláudio M. N. A. Pereira.
Taís Sineiro Herig Laboratório de Genômica e Expressão / UNICAMP
1 Algoritmos Genéticos em Otimização de Planejamento l Planejamento ocorre em todas as atividades e envolve: PLANEJAMENTO Recursos Tarefas Tempo Objetivos.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Métodos Populacionais. Mantém um conjunto de soluções candidatas e não só uma solução Cada solução será modificada e avaliada Hill-Climbing paralelos.
1 Problemas Numéricos com Representação por Números Reais Prof. Marco Aurélio C. Pacheco.
Universidade do Sul de Santa Catarina Ciência da Computação Técnicas de Inteligência Artificial Aula 10 Algoritmos Genéticos Max Pereira.
Transcrição da apresentação:

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

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

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 EGC / UFSC

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 EGC / UFSC

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

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 EGC / UFSC

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 EGC / UFSC

Programa de Computador Time Saída 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6 10 6 11 7 12 7 int funcao (int time) { int temp1, temp2; if (time > 10) { temp1 = 3; } else { temp1 = 4; } temp2 = temp1 + 1 + 2; return (temp2); EGC / UFSC

Programa de Computador 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 10) 3 4)) EGC / UFSC

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

Reprodução EGC / UFSC

Mutação EGC / UFSC

Recombinação - Crossover EGC / UFSC

Linguagem PUSH

Origem Projeto PUSH para computação evolucionária autônoma criada em 2001 por Lee Sperctor http://hampshire.edu/lspector/push.html EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

Vida Artificial Tierra Avida Amoeba Não evolui soluções computacionais Sem crossover Amoeba Necessita de muito poder computacional EGC / UFSC

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

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

AVida Cada cor representa um genótipo diferente EGC / UFSC

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

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 EGC / UFSC

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 EGC / UFSC

Características da linguagem Pilha integer Pilha float Pilha boolean Pilha CODE Pilha NAME Pilha type Pilha EXEC EGC / UFSC

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 EGC / UFSC

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

Características da linguagem Outro Exemplo: (1 2 3.0 4.0 INTEGER.+ FLOAT.*) integer float ... 3 1 2 + ... 12.0 3.0 4.0 * ... EGC / UFSC

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

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 EGC / UFSC

Tipo NAME Definição variável: Sub-rotinas ou estruturas de controle 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 EGC / UFSC

Tipo NAME (WHILE EXEC.DEFINE Laço do tipo WHILE: (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 EGC / UFSC

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 EGC / UFSC

PushGP População inicial gerada aleatoriamente Cada programa é avaliado por aptidão de acordo com o problema - fase de torneio Mutação dos pais Crossover dos pais Geração de uma nova população EGC / UFSC

Exemplo Regressão inteira EGC / UFSC

Evolução auto-construtiva Pushpop População de programas push Programas que se auto-modificam para gerar novos programas seleção natural / reprodução EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

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 EGC / UFSC

SwarmEvolve 1.0 Comportamento emergente Formação de nuvens de uma mesma espécie - controle sobre a fonte de energia EGC / UFSC

SwarmEvolve 1.0 EGC / UFSC

SwarmEvolve 2.0 Sistema de evolução auto-construtivo Fontes de energia - esferas Agentes - programa Push Vetor de aceleração Cor do agente EGC / UFSC

SwarmEvolve 2.0 Cor do agente usada como mecanismo de “tags” Agentes mudam dinamicamente de cor EGC / UFSC

SwarmEvolve 2.0 Comportamento emergente Compartilhamento de energia entre agentes EGC / UFSC

SwarmEvolve 2.0 EGC / UFSC