UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL UNIJUÍ. DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS MARCELO WUTTIG FRISKE

Tamanho: px
Começar a partir da página:

Download "UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL UNIJUÍ. DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS MARCELO WUTTIG FRISKE"

Transcrição

1 UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL UNIJUÍ DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS MARCELO WUTTIG FRISKE PROGRAMAÇÃO GENÉTICA APLICADA AO PROBLEMA DA PRESA-PREDADOR Ijuí, 2013

2 2 MARCELO WUTTIG FRISKE PROGRAMAÇÃO GENÉTICA APLICADA AO PROBLEMA DA PRESA-PREDADOR Trabalho de Conclusão de Curso apresentado ao Curso de Graduação de Ciência da Computação do Departamento de Ciências Exatas e Engenharias (DCEEng) da Universidade Regional do Noroeste do Estado do Rio Grande do Sul (Unijuí), como requisito para obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. Me. Rogério Samuel de Moura Martins Ijuí, 2013

3 3 PROGRAMAÇÃO GENÉTICA APLICADA AO PROBLEMA DA PRESA-PREDADOR MARCELO WUTTIG FRISKE Trabalho de Conclusão de Curso apresentado ao Curso de Graduação de Ciência da Computação do Departamento de Ciências Exatas e Engenharias (DCEEng) da Universidade Regional do Noroeste do Estado do Rio Grande do Sul (Unijuí), como requisito para obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. Me. Rogério Samuel de Moura Martins BANCA EXAMINADORA Prof. Dr. Sandro Sawicki Ijuí, 2013

4 4 Dedico este trabalho a todos os pesquisadores e estudantes, que assim como eu, tiveram uma quebra de paradigma ao conhecer a Inteligência Artificial e perceber o quão útil e prática pode ser essa área para a vida humana.

5 5 AGRADECIMENTOS Agradeço primeiramente à Deus por prover a vida e a liberdade ao ser humano, e que tal liberdade foi guiada por Ele para chegar aonde estou hoje. Agradeço aos meus pais Eldevir e Rosane, que me incentivaram sempre nos estudos, estando sempre presente na horas alegres, mas nas mais difíceis também. Ao Professor Rogério, por acreditar em meu potencial na elaboração deste trabalho, confiando em minha capacidade e ainda pelo incentivo ao estudo na área de inteligência artificial, o qual pretendo seguir daqui para frente. Ao colega Tales Panke, que contribuiu significativamente para implementação da aplicação. Por fim mas não por último, agradeço à minha namorada Mariana Rick, a qual me auxiliou muito na elaboração textual desse trabalho. Obrigado por ser uma companheira fiel e atenciosa.

6 6 RESUMO A resolução de problemas da classe NP (tempo polinomial não determinístico) desafia até hoje pesquisadores a buscar técnicas que obtenham resultados cada vez melhores em detrimento de um menor tempo. A Programação Genética (PG) é uma Técnica de Aproximação pertencente a um ramo da Ciência da Computação denominada Inteligência Artificial, que busca potencializar a capacidade racional humana. A PG procura construir de forma automatizada programas de computador para obter bons resultados na resolução de problemas complexos. O presente trabalho propõem uma linguagem de programação específica para a resolução de problemas utilizando a Programação Genética e realiza testes em um ambiente de simulação denominado Presa-Predador. Essa condição permitiu a geração de resultados e sua comparação a outras técnicas de inteligência artificial, utilizando o mesmo ambiente de simulação. Palavras-chave: Inteligência artificial. Programação genética. Presa-Predador.

7 7 ABSTRACT The resolution of NP class (Non-Deterministic Polynomial time) problems even today challenges researches to seek techniques that obtain better to the detriment of a shortest time. The Genetic Programming (PG) is a Approximation Technique belonging to a branch of Computer Science called Artificial Intelligence, which aims to enhance the rational human capacity. The PG seeks to build computer programs in automated form to obtain good results in resolution of complex problems. This paper proposes a specific programming language to solve problems using the Genetic Programming technique and it carries out tests in a simulation environment called Prey-Predator. This condition allowed to generate results and their comparison to other techniques of artificial intelligence, using the same simulation environment. Keywords: Artificial intelligence. Genetic programming. Predator-Prey.

8 8 LISTA DE ILUSTRAÇÕES Figura Esquema de um algoritmo genético Figura Representação de um algoritmo básico de programação genética Figura Representação de uma expressão matemática em árvore sintática Figura Exemplo de operação de crossover Figura Exemplo de Mutação em árvore Figura Diagrama da escolha da ação Figura Processos da abordagem evolucionária Figura Codificação do neurônio do modelo proposto Figura Algoritmo Evolucionário proposto Figura Representação de um indivíduo através da gramática BNF Figura Individuo gerado inicialmente de forma aleatória Figura Crossover sugerido para a aplicação Figura Representação de uma mutação com adição do termo AND Figura Tela inicial para configuração dos parâmetros da evolução Figura Interface da Simulação Figura Diagrama de classes da aplicação

9 9 LISTA DE GRÁFICOS Gráfico Evolução em um ambiente limitado e percepção dos personagens sendo posição absoluta Gráfico Evolução em um ambiente limitado e percepção dos personagens sendo posição relativa Gráfico Evolução em um ambiente toroidal e percepção dos personagens sendo posição absoluta Gráfico Evolução em um ambiente toroidal e percepção dos personagens sendo posição relativa... 56

10 10 LISTA DE TABELAS Tabela Resultados obtidos com o predador popperiano Tabela Representação das ações possíveis de um personagem no mapa Tabela Parâmetros de inicialização para Simulação e Evolução Tabela Parâmetros utilizados na evolução e na simulação para obtenção de resultados. 50 Tabela Porcentagem de capturas pelos predadores em um mundo limitado e percepção de posição absoluta Tabela Porcentagem de capturas pelos predadores em um mundo limitado e percepção de posição relativa Tabela Porcentagem de capturas pelos predadores em um mundo toroidal e percepção de posição absoluta Tabela Porcentagem de capturas pelos predadores em um mundo toroidal e percepção de posição relativa Tabela Comparação entre o Predador Popperiano e o Predador da Programação Genética Tabela Comparação de características das aplicações de modelo Neuro-Evolutivo e de Programação Genética... 58

11 11 LISTA DE ABREVIATURAS E SIGLAS AG BNF ESP IA NP PG Algoritmo Genético Backus-Naur Form Enforced Sub-Populations Inteligência Artificial Tempo Polinomial não determinístico Programação Genética

12 12 SUMÁRIO 1 INTRODUÇÃO REFERENCIAL TEÓRICO HEURÍSTICAS E METAHEURÍSTICAS PROGRAMAÇÃO GENÉTICA Indivíduo e População Função de avaliação Seleção Operadores Genéticos CROSSOVER MUTAÇÃO Módulo de População TRABALHOS RELACIONADOS INTELIGÊNCIA ARTIFICIAL POPPERIANA Implementação Resultados MODELO NEURO-EVOLUTIVO DE COORDENAÇÃO ADAPTATIVA EM AMBIENTES DINÂMICOS Implementação Experimentos e resultados MODELAGEM E IMPLEMENTAÇÃO AMBIENTE DE SIMULAÇÃO PRESA-PREDADOR EVOLUÇÃO Indivíduos Avaliação Seleção Crossover Mutação Módulo de população INTERFACE DIAGRAMA DE CLASSES RESULTADOS RESULTADOS OBTIDOS COM A APLICAÇÃO COMPARAÇÃO COM TRABALHOS RELACIONADOS Inteligência Artificial Popperiana Modelo Neuro-Evolutivo de Coordenação Adaptativa em Ambientes Dinâmico 58 6 CONCLUSÃO REFERÊNCIAS ANEXO A RESUMO EXPANDIDO APRESENTADO AO XXI seminário de iniciação científica (2013), premiado como trabalho destaque... 62

13 13 1 INTRODUÇÃO Existem classes de problemas muito complexos (GARAY, 1979 apud LUGER, 2004) onde é praticamente impossível que um programador encontre, em um pequeno espaço de tempo, soluções que sejam consideradas próximas à uma solução ótima. Isso ocorre porque, a partir da adição de apenas uma instância, o problema sofre um crescimento exponencial de possíveis combinações de soluções, gerando um tempo de resolução que cresce de mesma forma. Tais problemas são conhecidos como NP (polinomial não determinístico). Esse conceito de problema é recente, sendo formalizado por Steven Cook em 1971 pela teoria da NP- Completude (GRONER, 2006). Essa teoria define que um problema é pertencente a NP quando é possível verificar em tempo polinomial uma solução correta. Contudo, não há garantias de que a mesma seja ótima. No caso de problemas NP, soluções do tipo busca exaustiva podem até conseguir o resultado para pequenas instâncias, mas quando estas excedem determinado valor, demorariam anos, décadas, séculos e até milênios para resolver esse tipo de problema. Somente a figura do programador na busca de soluções para problemas, não pode ser considerada suficiente. Conforme Russel (2004) existem algoritmos de busca utilizados na resolução de problemas NP, que não se importam com o caminho percorrido para chegar ao resultado, pois o caminho não fará parte dele. Como exemplo, temos a resolução de layouts de instalações industriais, escalonamento de horários, etc. Um algoritmo assim é denominado de busca local ou heurística, que opera usando somente um estado corrente e tendo como vantagem o uso de pouca memória e grande frequência para apresentar soluções razoáveis em grandes espaços de estados. As heurísticas são muito usadas para resolver problemas de otimização que segundo Martinez (1998, p. 5) consiste (...) em encontrar os mínimos ou máximos de uma função de várias variáveis, com valores dentro de uma determinada região do espaço multidimensional. O autor ainda complementa que tomadas de decisões em vários campos de atividades humanas dependem desses mínimos e máximos. Há ainda um tipo de heurística denominada de metaheurística, que também é utilizada para encontrar mínimos e máximos de uma função, porém de uma forma mais eficaz, buscando gerenciar outras heurísticas mais simples a fim de convergir para uma solução ótima. Tanto a

14 14 heurística como a metaheurística fazem parte de um grupo denominado Técnica (ou Algoritmo) de Aproximação, o qual (...)são algoritmos que não necessariamente produzem uma solução ótima, mas soluções que estão dentro de um certo fator da solução ótima. (MIYAZAWA, [200?]) Mas como construir um algoritmo/programa capaz de distinguir se uma solução pode ser ótima ou não? Seria possível a construção de um programa utilizando uma heurística ou metaheurística, onde o computador seria responsável por pensar? A resposta está atrelada às Técnicas de Aproximação, pois elas fazem parte de uma ciência muito recente: A Inteligência Artificial (IA ou AI Artificial Intelligence), que assim como a otimização, busca soluções para problemas complexos. Segundo Russel (2004, p. 03), a IA sistematiza e automatiza tarefas intelectuais e, portanto, é potencialmente relevante para qualquer esfera da atividade intelectual humana. Outra definição dentre as várias existentes é de que a Inteligência Artificial é o estudo de agentes inteligentes (POOLE, 1998). Mas o que são agentes inteligentes? Russel(2004) cita que eles podem ser comparados a um ser humano, ou seja, são capazes de perceber e atuar sob o ambiente, através de sensores (no caso dos humanos, os olhos, por exemplo) e de atuadores (mãos, pés, etc.). Sendo assim, é possível a criação de agentes inteligentes que serão responsáveis pela busca de soluções próximas à solução ótima em um determinado problema. Uma técnica de aproximação utilizada neste caso é denominada de Programação Genética (GP Genetic Programming). Ela foi desenvolvida por John Koza em 1989 e é considerada uma das técnicas de computação evolucionária presentes na IA, pois é baseada em conceitos da teoria da evolução das Espécies, de Charles Darwin, onde busca evoluir programas de forma a resolver o problema em questão (LINDEN, 2012). Cita ainda o autor que, ao final de 2007, o site informava que já existiam 36 problemas em que a programação genética produziu um resultado competitivo com o desempenho humano. Outra vantagem da utilização de programação genética é que a sua estrutura básica pode ser adaptável a diversos problemas de grande complexidade. Ou seja, depois de adquirido um bom conhecimento dos conceitos básicos da PG, é possível implementá-la e fazer a transição para a resolução de outros problemas de forma mais simples e direta (LINDEN, 2012). Isso ocorre pela abstração e simplicidade possibilitada pela PG.

15 15 Existe um problema caracterizado por pertencer à classe NP denominado Presa- Predador. Ele foi proposto por Miroslav Benda (KORF, 1992 apud SCHÜLER, 2002), onde há um plano de coordenadas x e y finito, um personagem chamado presa e quatro personagens denominados predadores. Os personagens movem-se vertical e horizontalmente, não podendo ocupar a mesma posição. O plano (ou mundo) é limitado ou toroidal, este último define que, ao atingir a última célula do plano, o personagem passa para a primeira célula de posição contrária. O objetivo é de que os predadores, dotados de uma mesma inteligência, cerquem a presa de modo que ela não possa se mover. Tal problema é caracterizado como NP, sendo que para cada movimento de um dos personagens, há um crescimento exponencial de possíveis movimentos para os demais. Além de que, um movimento poderá ser útil para um predador, porém prejudicial a outro para o alcance do objetivo. O presente trabalho irá apresentar a construção de agentes inteligentes através da Programação Genética. Para isso será criada uma linguagem específica capaz de atender ao escopo do problema presa-predador. A PG será então encarregada de utilizar os recursos oferecidos por tal linguagem, combinando e aplicando-os para coordenar os predadores, buscando assim, soluções próximas à solução ótima, que neste caso é a captura da presa. O problema Presa-Predador é um ambiente de simulação muito utilizado em inteligência artificial, pois é capaz de testar a qualidade dos agentes inteligentes criados, ou seja, quanto mais rápido os predadores cercarem a presa, mais eficiente será o agente que os coordenaram. Além disso, existem problemas reais o qual possuem características de complexidade semelhantes à ele e que podem de mesma forma serem resolvidos com Programação Genética. Dentre eles podemos citar o problema de roteamento de veículos, programação de robôs, construção de softwares, dentre muitos outros. Diante ao exposto, o presente trabalho tem por objetivo a busca de conhecimento em torno da Inteligência Artificial através da implementação da técnica de Programação Genética na busca de soluções ao problema Presa-Predador. O trabalho está estruturado da seguinte forma: primeiramente serão apresentados conceitos e referências que envolvam os objetivos do trabalho. Após serão apresentados resumidamente dois trabalhos publicados na área de IA. Posteriormente serão descritas as etapas da construção de toda a aplicação, tanto a Programação Genética quanto o ambiente de simulação Presa-Predador. Os resultados obtidos serão apresentados e posteriormente comparados aos trabalhos que utilizaram o mesmo ambiente de

16 16 simulação, porém com técnicas de IA diferentes. Ao final, será relatada a conclusão e projeção para trabalhos futuros.

17 17 2 REFERENCIAL TEÓRICO Esta seção do trabalho busca a compreensão dos principais assuntos que o abrangem. Primeiramente será apresentado conceitos sobre técnicas heurísticas e metaheurísticas. E posteriormente será explanado sobre a Programação Genética, que faz parte do grupo de metaheurísticas. 2.1 HEURÍSTICAS E METAHEURÍSTICAS A palavra heurística é derivada do grego e significa encontrar ou descobrir, tendo origem em outra palavra grega, conhecida como eureca, a qual significa encontrei. De forma mais abrangente, a heurística é um método que busca soluções de problemas difíceis através da simplificação destes, tornando a resolução mais fácil e com uma resposta viável, mas não necessariamente a melhor. A heurística é uma capacidade humana e na maioria das vezes inconsciente, pois ela pode ser caracterizada pela tomada de decisões a partir de determinadas experiências e conhecimento prévio. Sendo assim, ela tem aplicabilidade em diversas áreas onde o conhecimento humano é necessário (BACCENERI, 2013). A heurística pode ser utilizada para resolver problemas de otimização, que consistem (...) em encontrar os mínimos ou máximos de uma função de várias variáveis, com valores dentro de uma determinada região dentro do espaço multidimensional (MARTINEZ, 1998, p. 01). Na área da Ciência da Computação, definem-se heurísticas como sendo algoritmos polinomiais que podem ser utilizados para resolver problemas da classe NP. Tais algoritmos não possuem uma garantia de qualidade na solução encontrada, mas tendem a obter soluções ótimas ou próximas a elas (LINDEN, 2012). Logo se conclui que uma heurística não é um método de força bruta (pois este garante a solução ótima). Por possuir técnicas mais sofisticadas, ela encontra uma solução factível em um tempo razoavelmente curto (o que a força bruta nunca fará). As heurísticas possuem diversas classificações, com diferentes níveis de complexidade. Dentre elas encontramos um tipo em especial denominado de metaheurística, que (...) pode ser vista como uma ferramenta algorítmica geral que pode ser aplicada a diferentes problemas de

18 18 otimização, com modificações relativamente pequenas para torná-la adaptável a um problema específico (METAHEURISTICS NETWORK, 2007 apud BECCENERI, 2013). Segundo Martins (2010) as metaheurísticas são técnicas usadas para resolução de problemas do tipo NP-Difíceis, pois elas oferecem soluções ao mesmo tempo melhores e com um tempo de processamento menor que outras técnicas. Ainda afirma que de modo geral elas trabalham a partir de buscas aleatórias e de histórico de aprendizado, ou seja, a partir de outros resultados gerados pela utilização do método. Conforme cita CHAVES(2005), as heurísticas em sua maioria buscam o ótimo global a partir de um ótimo local, contudo tal situação não pode ser garantida. Já as metaheurísticas são aprimoramentos de heurísticas, constituindo-se de uma estrutura algorítmica geral que pode ser gerenciada e adaptada a outros problemas específicos com poucas modificações, onde O grande desafio é produzir, em tempo razoável, soluções tão próximas quanto possíveis do ótimo global (METAHEURISTICS NETWORK, 2012). Dentre as metaheurísticas mais bem sucedidas atualmente podemos citar a Tempera Simulada, Busca Tabu, Algoritmos Genéticos e Redes Neurais Artificiais (VÉLEZ et. al., 2007). Neste trabalho será focado um tipo específico, da mesma família dos Algoritmos Genéticos, denominado de Programação Genética, que será descrito posteriormente. 2.2 PROGRAMAÇÃO GENÉTICA Antes de se falar sobre a programação genética, é necessário conhecer um pouco sobre a técnica que a influenciou: os Algoritmos Genéticos (GAs Genetic Algorithm). Os AGs possuem uma semelhança ao processo denominado Teoria da Evolução das Espécies, o qual foi detalhado no livro de Charles Darwin em 1859 (LINDEN, 2008). Essa teoria diz que as espécies competem entre si por recursos, sendo que a mais adaptada ao habitat é a que terá maior probabilidade de sobreviver, pois conseguirá se reproduzir com maior facilidade. Dentre os seres da espécie, a combinação de genes entre eles tende a produzir um novo indivíduo muito melhor adaptado ao habitat em que vive. Já na década de 40, cientistas buscaram soluções inspiradas na natureza para criar uma ramificação da inteligência artificial. Porém, só na década de 1960 John Holland inventa o Algoritmo Genético. Linden(2008) cita que os AGs são uma técnica de busca extremamente

19 19 eficiente, onde o seu objetivo é varrer o espaço de soluções e encontrar aquelas próximas à ótima, isso quase sem necessitar de interferência humana. Sendo uma técnica de computação evolucionária, os AGs funcionam mantendo um conjunto (população) de estruturas, as quais são denominadas de indivíduos ou cromossomos. Eles são compostos por características (genes) geralmente denotadas por uma sequência de números binários. A população passa então por um processo de avaliação, onde se busca dentre os indivíduos verificar qual é o mais adaptado ao ambiente, ou seja, qual a sua qualidade para solucionar o problema em questão. Após a avaliação, os indivíduos serão submetidos aos operadores genéticos como a seleção, a recombinação (crossover) e a mutação, para que seja simulada a sobrevivência do mais (ou dos mais) apto(s), gerando então o módulo de população. Este módulo definirá a nova população a partir da anterior e dos filhos gerados pela mesma. A partir desse funcionamento, o algoritmo genético irá simular uma evolução, ou seja, o processo de avaliação, a atuação dos operadores genéticos sobre os indivíduos e o módulo de população se repetirão quantas vezes for necessário, para que se obtenha uma solução considerada boa ou algum outro critério previamente definido seja alcançado. Cada repetição é conhecida como uma geração, onde uma nova população de indivíduos com diferentes características é gerada pela ação dos operadores genéticos sobre a população anterior. A partir do explicitado nos dois parágrafos anteriores, podemos ilustrar a estrutura de um algoritmo genético da seguinte forma:

20 20 Figura Esquema de um algoritmo genético Fonte: Linden (2012, p. 82). Como pode ser observado na Figura 2.1, diferentes gerações não convivem entre si, sendo que ao gerar uma nova população, a anterior é descartada. Contudo, existem métodos que buscam preservar o(s) indivíduo(s) mais apto(s) de uma população já extinta. Esse assunto será detalhado mais adiante. A partir dessa pequena introdução aos Algoritmos Genéticos, será dado início ao conceito da Programação Genética e suas características de forma mais detalhada por se tratar da técnica utilizada neste trabalho. A Programação Genética é uma das técnicas de Computação Evolucionária na qual os indivíduos são programas computacionais que variam de forma e tamanho (SOUZA, 2006). Ela foi desenvolvida por John Koza em 1989, com o objetivo de aprimorar a técnica de Algoritmos Genéticos. A diferença substancial entre o Algoritmo Genético e a Programação Genética é de que o primeiro evolui cromossomos simples (que no caso são denotados por sequências de números binários) enquanto o segundo evolui funções ou programas (LINDEN, 2012). Uma definição sucinta pode ser descrita por Zbigniew Michalewicz (2010): Genetic Algorithms + Data Structures = Evolution Programs, ou seja, a PG nada mais é do que um Algoritmo Genético aprimorado, o qual se utiliza de uma estrutura de dados. A partir disso, as funções de avaliação, crossover e mutação terão algumas diferenças, as quais poderão ser observadas no decorrer deste trabalho.

21 21 John Koza(2003) afirma que a programação genética possui várias vantagens, e por isso deve ser dada a devida atenção à ela. Os motivos para isso seriam de que a PG muitas vezes produz inteligência de máquina além de testes, ou seja, em nível humano, sendo que tal inteligência pode superar o desempenho de algum resultado obtido por uma pessoa. Além disso, a PG pode ser considerada uma máquina automática de invenções, afinal, ela não se prende a paradigmas existentes, muitas vezes encontrando soluções inimagináveis por uma pessoa. A Figura 2.2, conforme Souza (2006) mostra o algoritmo básico da Programação Genética: Primeiramente cria-se uma população aleatoriamente e que possua grande diversidade para que sejam encontrados indivíduos com todas as capacidades necessárias solucionando determinado problema. Posteriormente a população será avaliada, recebendo cada indivíduo um valor de aptidão que mostra o quão próximo a solução este se encontra. Após a avaliação de toda população, os indivíduos com melhor aptidão serão selecionados para que a eles sejam aplicados operadores genéticos (reprodução, mutação, cruzamento). Esses indivíduos serão a nova população que irá passar por todas as etapas novamente até que seja(m) encontrado(s) o(s) indivíduo(s) com aptidão suficiente para resolver o problema ou até atingirse um critério de parada. Figura Representação de um algoritmo básico de programação genética Fonte: Souza (2006, p. 28)

22 Indivíduo e População Como já citado, a PG irá trabalhar com estrutura de dados, onde os indivíduos serão compostos por uma árvore sintática que descreve o programa para a possível solução do problema. Uma árvore sintática é uma estrutura onde os dados são apresentados de forma hierárquica (GOODRICH, 2010 apud LINDEN, 2012). As árvores utilizadas para a representação dos indivíduos em programação genética geralmente possuem um nó raiz (que não possui nenhum pai e com isso iniciam a árvore), o qual derivam-se nós filhos, que por sua vez poderão possuir outros nós filhos e assim sucessivamente até que se chegue aos nós folhas (que não possuem nenhum filho). Os nós entre o nó raiz e os nós folhas são denominados de intermediários. A Figura 2.3 ilustra a representação de uma árvore sintática para uma simples expressão matemática. Figura Representação de uma expressão matemática em árvore sintática Fonte: Próprio autor Vale lembrar também, que árvores sintáticas podem ser definidas de forma recursiva, ou seja, o nó de uma árvore pode ser outra árvore e assim sucessivamente. Isso ocorre na operação de mutação que será explanada no próximo capítulo. Em algoritmos genéticos e programação genética, os indivíduos iniciais (pertencentes à primeira geração) têm de ser o mais simples possível, sendo gerados de forma aleatória. Através da simplicidade, haverá maior garantia de que a evolução irá convergir para uma melhor solução no decorrer das gerações e que a geração aleatória de forma geral gera uma boa distribuição de soluções no espaço de busca de um problema Função de avaliação Assim como nos algoritmos genéticos, a função de avaliação (ou aptidão), mais conhecida nessa área como simplesmente função fitness, avalia a qualidade de um indivíduo para a resolução de determinado problema. Ela é a parte da PG que tem de possuir o máximo

23 23 de conhecimento acerca do problema, a fim de tornar-se válida e garantir que os indivíduos que possuam melhor satisfatibilidade para a solução do problema sejam melhores avaliados por tal função. De nada adiantará possuir uma programação genética bem estruturada se a função fitness não estiver bem definida para o escopo do problema. A função fitness pode ser definida de duas maneiras: quanto maior o valor retornado por ela, melhor será a avaliação do indivíduo, ou o contrário, onde quanto menor o valor retornado pela função, melhor será a avaliação do indivíduo. Outro ponto importante na função é de que cada indivíduo (programa) executa várias instâncias diferentes de entradas, e provavelmente irá consumir mais tempo durante a execução de uma PG (LINDEN, 2012) Seleção Assim como a seleção natural descrita por Darwin, a seleção dos indivíduos que se reproduzirão tem de abranger toda a população, onde os melhores adaptados (com melhor avaliação) terão mais chance de reproduzir-se do que aqueles indivíduos com uma avaliação inferior. Sendo assim, nenhum indivíduo será desprezado no momento da seleção. O que ocorre é que os mais adaptados (e que tecnicamente apresentam uma melhor solução ao problema) tendem a se reproduzir mais vezes que os menos adaptados. Isso ocorre pelo fato de que se os indivíduos abaixo (ou acima, conforme for a função de fitness) de uma determinada avaliação forem descartados da seleção, no decorrer das gerações a população tenderá a possuir indivíduos cada vez mais semelhantes, restringindo a diversidade da população, caracterizando a convergência genética, onde a população estará em um espaço restrito de soluções, não caracterizando uma busca global, e sim local que pode ser feita por uma heurística convencional. Existem diversos métodos de seleção que podem ser utilizados, tanto para programação genética quanto para algoritmos genéticos, dentre os mais conhecidos podemos citar: Método da roleta viciada: É criada uma roleta virtual dividida em pedaços de tamanhos diferentes, onde cada indivíduo receberá um desses pedaços de forma proporcional à sua avaliação, ou seja, quanto melhor a avaliação do indivíduo, maior será o pedaço que receberá da roleta. A soma de todos os pedaços não poderá ultrapassar o tamanho total da roleta, que poderá ser a soma de todas as avaliações, ou um valor escolhido arbitrariamente. A seleção será feita rodando a roleta (de forma aleatória), e o indivíduo selecionado será aquele onde a roleta parar;

24 24 Método de classificação ou ranking: Segundo Obitko (1998), o método da roleta viciada possui problemas quando há grande diferença entre as avaliações dos indivíduos. Por exemplo, se um indivíduo melhor avaliado possuir 95% das da soma das avaliações dos demais indivíduos, logo haverá indivíduos com pouquíssimas chances de serem selecionados. O método de classificação, como o próprio nome diz, primeiramente classifica a população pelo seu fitness, e posteriormente atribui um valor de adequação determinado por sua classificação. Sendo assim, o prior indivíduo poderá ter adequação igual a 1, o segundo igual a 2, e assim por diante, de forma que o último tenha classificação n. Esse método pode ser caracterizado como mais benevolente ao anterior, por aumentar as chances de um indivíduo com um fitness considerado baixo ser selecionado. Contudo, pode resultar em um menor aproveitamento dos indivíduos considerados melhores, pois a distinção entre esses e os piores não será tão grande; Método de torneio: Esse método é assim conhecido, pois os indivíduos competem diretamente entre si pelo direito de gerar descendentes (seja por crossover ou mutação) utilizando como arma o seu valor de fitness. O torneio recebe como parâmetro um número k que representa a quantidade de competidores da rodada (LINDEN, 2012), onde os indivíduos serão escolhidos aleatoriamente dentre a população atual. O vencedor do torneio será o competidor que apresentar o melhor fitness. O valor mínimo para k é de 2, pois do contrário não haveria competição, contudo ele não deve ser muito alto, pois o método se assemelharia a roleta viciada, favorecendo sempre os indivíduos de melhor fitness. Sendo assim a única vantagem dos indivíduos com melhor fitness é de que ao serem sorteados para o torneio, sempre irão ganhar. Nota-se então que esse método é mais elaborado e eficaz do que a roleta viciada e classificação, pois tenta favorecer tanto os indivíduos com boa quanto os com avaliação ruim, e ao mesmo tempo sem correr o risco de uma convergência genética Operadores Genéticos Após a seleção, os indivíduos serão submetidos aos operadores genéticos de crossover e mutação. É válido constar que existem muitas variações e tipos de operadores genéticos, contudo nesse trabalho será explanado sobre as versões mais simples dos mesmos, dentre as quais algumas foram utilizadas para a aplicação.

25 Crossover O operador crossover busca simular a reprodução sexuada natural entre dois indivíduos, onde ocorre a troca de informações entre os mesmos e gerando dois novos indivíduos com características semelhantes aos seus antecessores. Como os indivíduos são compostos por árvores sintáticas, o operador de crossover irá escolher aleatoriamente um nó de cada indivíduo e realizará um corte no mesmo, gerando uma subárvore, que será intercambiada com o ponto de corte da outra árvore. Figura Exemplo de operação de crossover Fonte: Adaptado de Linden (2012, p. 305). Na figura anterior, a parte superior mostra as árvores (a) e (b) que representam os indivíduos escolhidos através do método de seleção para reproduzirem-se. O elemento corrente sinaliza onde haverá o ponto de corte das árvores para a troca de informações. Logo abaixo são ilustrados os novos indivíduos gerados após o intercâmbio das subárvores dos pais (a) e (b) Mutação Esse operador busca simular a mutação genética dos indivíduos, isso porque um filho dificilmente irá herdar de seus pais somente as características deles e dos seus antecessores, mas poderá apresentar (com uma pequena possibilidade) características nunca vistas antes em seus antecessores. Além disso, a mutação ocorre para que sempre haja uma boa variabilidade genética na população que está sendo evoluída.

26 26 Na programação genética, a mutação ocorre com a alteração aleatória de um ou mais nós da árvore de expressões, sendo recebido como parâmetro a probabilidade dessa mutação. A mutação pode ser caracterizada por troca de operadores, alteração de uma variável, exclusão ou adição de uma subárvore criada aleatoriamente e outras transformações que o programador achar importante. A probabilidade de um indivíduo sofrer mutação, assim como na vida real, tem de ser muito baixa, pois do contrário, a programação genética se parecerá com uma técnica denominada Randon Walk, onde a solução é determinada aleatoriamente sorteando elementos e sem usar informações correntes ou passadas (LINDEN, 2012). Sendo assim, mesmo que a mutação ocorra para haver variabilidade genética, é necessário que as gerações tenham características semelhantes, pois de nada adiantará criar uma evolução se cada geração for totalmente diferente de outra. A Figura 2.5 ilustra como ocorre a mutação de um indivíduo, onde uma subárvore caracterizando uma operação exponencial é excluída e substituída por outra, gerada aleatoriamente: Figura Exemplo de Mutação em árvore Fonte: Linden (2012, p. 307) Módulo de População Essa operação é necessária para controlar a população, pois por questões de simplicidade, a população não pode crescer e deve manter sempre um número constante de indivíduos. Os operadores genéticos irão atuar sobre a população, gerando os filhos até que o número destes atinja o tamanho da população. Quando isso ocorrer, a população atual é

27 27 substituída pela nova população. Percebe-se então que ao gerar os dois filhos que farão parte da nova população, os pais são descartados. É algo que não se assemelha à vida real, pois não é regra que ao nascer uma criança, outra pessoa tem de morrer instantaneamente. Pensando nisso, foram criados outros tipos de módulo de população: Steady State: Esse método busca representar uma característica natural das populações biológicas, onde indivíduos nascem aos poucos e os mais velhos morrem gradativamente, possibilitando que diferentes gerações se relacionem e gerem novos indivíduos (LINDEN, 2012). Ao invés de criar uma nova população de uma só vez e substituir a anterior, o método steady state cria os filhos aos poucos, na medida em que vai descartando os piores pais (ou faz esse descarte aleatoriamente); Elitismo: Esse processo, embora muito simples, gera uma grande diferença na programação genética. Isso ocorre porque ele seleciona alguns dos melhores indivíduos da população e os copia para a próxima geração sem alterá-los. Garantindo assim que a população sempre irá evoluir e os bons indivíduos gerados não irão se perder, pois no pior caso, a nova população terá como melhor indivíduo, o mesmo que foi eleito na geração anterior. Populações de tamanhos diferentes: A ideia desse método é controlar a vida dos indivíduos por sua idade. Ou seja, mesmo um indivíduo tendo uma avaliação ruim, ele não será descartado se não atingiu a sua idade limite (no caso do elitismo, ele seria). Somente após alcançar a velhice ele morrerá. Contudo, essa técnica tem de possuir certos ajustes na criação de processos estocásticos de morte associados a avaliação do indivíduo para que não ocorra a criação de populações extremamente grandes ou a extinção da mesma (FERNANDES, 2000 apud LINDEN, 2012).

28 28 3 TRABALHOS RELACIONADOS O estudo na área de inteligência artificial está cada vez mais presente nas universidades e comunidade científica. Isso porque as vantagens que tal técnica traz tem se mostrado muito presentes, e tem-se clareza de que muitas ainda estão por vir. Conforme Russel (2004, p. 03) a IA é citada regularmente como o campo em que eu mais gostaria de estar por cientistas de outras disciplinas. A seguir, serão apresentados de forma resumida dois trabalhos na área de IA, os quais servirão para comparação à aplicação aqui criada. Ambos utilizaram como um dos ambientes de simulação o problema presa-predador, porém as técnicas utilizadas para a resolução deste são diferentes. Além disso, é apresentado um terceiro trabalho, o qual utiliza a PG para programar robôs jogadores de futebol. 3.1 INTELIGÊNCIA ARTIFICIAL POPPERIANA Elaborado por Schüler(2002), o trabalho buscou reproduzir agentes inteligentes através da simulação da mente popperiana, a qual aprende as regras do ambiente e tem capacidade de planejar futuros estados, permitindo sua adaptação à diversas situações. A aplicação criada apresenta o desenvolvimento de um sistema de planejamento em que os agentes inteligentes induzem ou aprendem as regras do ambiente, para posteriormente planejar uma série de ações onde o seu resultado é previsto para que haja a satisfação desses agentes em relação ao seu objetivo. Como ambiente de simulção foi proposto um modelo de agente Minerador Popperiano e Predador Popperiano, sendo este último o objeto de comparação para o trabalho aqui descrito. O agente Predador Poperiano inicia seu trabalho primeiramente aprendendo as regras do ambiente Presa-Predador através dos sistemas de indução e planejamento. Esses sistemas tem de ser genéricos o suficiente para atuar em ambientes onde não haja nenhuma informação prévia. Posteriormente ele passa a planejar as suas ações no ambiente (planos) onde é utilizada a busca cega pela satisfação, ou seja, o plano é construído com sucesso por prever que o

29 29 predador esteja mais perto da presa, ou que este leve a um segundo plano o qual traga satisfação para o agente. A Figura 3.1 ilustra o comportamento geral na criação e otimização dos planos. Figura Diagrama da escolha da ação Fonte: Schüler (2002, p. 64) Implementação O sistema de planejamento foi construído em uma classe Object Pascal, sendo a estrutura de dados definida por: um vetor Planos, onde cada célula é outro vetor do tipo Plano, que por sua vez constitui-se de uma ação e o estado a ser atingido por essa ação. Os métodos principais são: PodeAgir: Recebe como parâmetro o estado atual do ambiente. O método retorna verdadeiro quando encontra dentro do vetor Planos valores correspondentes ao parâmetro informado; PlanejarCegamente: Função que a partir do parâmetro de estado atual, retorna um plano que deve apresentar os passos para alcançar a satisfação; OtimizarCegamente: Como o próprio nome diz, trata-se um método de otimizar um planejamento, em que é recebido um plano (fornecido pelo método anterior). A

30 30 otimização consiste na tentativa de substituir trechos do vetor recebido por outro de menor tamanho, chegando mais rapidamente à satisfação. Na utilização do agente popperiano para resolução do problema presa-predador, o autor considerou as seguintes características: O ambiente é toroidal; Existem quatro agentes predadores e um agente presa; Os movimentos são horizontais e verticais, além de poder ficar parado; Nenhum agente pode ocupar a posição de outro; A captura ocorre quando os quatro predadores cercam a presa; O movimento da presa é linear, onde é sorteada uma direção a qual será o único movimento da presa; A percepção dos predadores é a posição relativa à presa, além de perceber o estado de ocupação das 4 posições vizinhas à presa; A satisfação ocorre quando o predador ocupa uma posição vizinha à da presa Resultados Os resultados considerados pelo autor foram o número médio de ciclos que os predadores necessitavam para captura da presa linear. Schüler (2002) informa que inicialmente o agente popperiano leva desvantagem em relação à um agente do tipo darwiniano 1. Isso corre pelo primeiro ter de percorrer um longo caminho de aprendizado antes de chegar a um estado inicial. Passado o aprendizado, o agente popperiano leva vantagem pelo fato de ele ser adaptável, possuindo memória e planejando o futuro. Na primeira fase, descrita pelo autor como infância, a regra de comportamento para o predador é de que se for possível alcançar satisfação em apenas um passo, tal ação deve ser tomada. Claro que tal situação dificilmente irá ocorrer. Para isso, o parâmetro de randomicidade é ajustado em 100%, ou seja, troca-se o movimento encontrado em Planos por outro escolhido aleatoriamente. Nesta fase não ocorre o processo de otimização do plano. Após terminada a fase de infância, o predador passa a fase adulta, tendo uma taxa de randomicidade alterada para 5% e a otimização passa a ser de 1%. 1 Agente do tipo evolutivo, como por exemplo, gerados a partir da programação genética.

31 31 Os resultados apresentados pelo autor são resumidos conforme a Tabela 3.1. Para melhor compreensão, é necessário saber que uma rodada concluída é definida quando todos os personagens efetuaram o seu movimento no ambiente. Tabela Resultados obtidos com o predador popperiano Fase Nº de Média de rodadas Desvio experimentos para captura Padrão Infância Adulta MODELO NEURO-EVOLUTIVO DE COORDENAÇÃO ADAPTATIVA EM AMBIENTES DINÂMICOS Elaborado por Côrtes (2005), o trabalho buscou propor um modelo de coordenação baseado em neuro-evolução, combinando duas técnicas de busca: redes neurais e algoritmos genéticos, onde a primeira é responsável pelo comportamento de cada personagem e a segunda será responsável por aprimorar suas partes. Redes neurais artificiais são técnicas computacionais que simulam a estrutura neural de um ser humano, onde existem pequenas e simples unidades paralelas de processamento, denominados neurônios. Elas são interconectadas total ou parcialmente, onde cada interconexão possui um peso resultante de alguma operação aritmética. Ao decorrer da rede, esses valores tendem a convergir a uma solução útil. No modelo descrito tal conversão ocorre através da atuação dos algoritmos genéticos sobre os neurônios Implementação Fonte: Próprio autor. Na neuro-evolução proposta, os cromossomos representam parâmetros e atributos para as redes neurais (por exemplo: pesos, limites e conectividade). Depois de feito o processo de evolução desses cromossomos, os mesmos são decodificados à rede neural que buscará fornecer uma resposta satisfatória ao problema. As redes neurais resultantes dessa busca podem possuir algoritmos de aprendizado que as treinem a partir de estímulos do ambiente ou então avaliando a execução das mesmas para determinada tarefa. Tal avaliação irá determinar a aptidão (fitness) do(s) cromossomo(s) correspondente(s). A figura a seguir representa tal explicação.

32 32 Figura Processos da abordagem evolucionária Fonte: Adaptado de Côrtes (2005, p. 28). O modelo de rede neural utilizado na implementação foi do tipo ESP (Enforced Sub- Populations), onde a rede é formada por um subconjunto de neurônios. Para cada neurônio desse subconjunto, a ESP aloca uma população separada da rede, em que um neurônio só pode ser recombinado com os neurônios de sua própria subpopulação. A utilização do ESP, contudo, tem um ponto que pode ser considerado crítico na resolução quando da sua necessidade de resolver mais problemas: A medida que a evolução progride, cada sub-população irá declinar em diversidade. Isto é um problema, especialmente em evolução incremental, pois, uma população que já convergiu pode não se adaptar facilmente a uma nova tarefa. Para acoplar a transferência de tarefas a despeito de convergência, ESP é combinado com uma técnica de busca interativa conhecida como Delta-Coding. (CÔRTES, 2005, p. 34). Logo, a autora buscou a utilização de uma técnica para correção de tal deficiência denominada Delta-Coding, que busca modificações ótimas para a melhor solução corrente. Em relação aos algoritmos genéticos, cada cromossomo representa um neurônio da camada oculta, o qual agrega seu peso aos pesos dos neurônios de entrada e os transmitem para os neurônios de saída. Sendo assim, o cromossomo armazena os pesos das conexões que ele possui com os demais neurônios da camada de entrada e saída.

33 33 Figura Codificação do neurônio do modelo proposto Fonte: Côrtes (2005, p.43). Observando a Figura 3.3, deve-se destacar que o neurônio da camada oculta (definido como A ) se conecta com todos os neurônios da camada de entrada e de saída, caracterizando uma rede denominada 2-layer-feedforward totalmente conectada. No processo de seleção da população melhor adaptada, a autora utilizou do método de roleta viciada juntamente com o módulo de população elitista. Já operação de crossover é realizada de formas diferentes para cada codificação. Quando utilizados números binários na representação do cromossomo, o processo de reprodução sexuada é feito utilizando um operador padrão com um ponto de corte. Enquanto que em cromossomos de números reais, é utilizado um operador de recombinação aritmético, sendo que cada filho é gerado pela combinação linear dos genes dos pais, descrita pelas seguintes fórmulas: genefilho 1 = a * (genepai 1 ) + (1 a) * genepai 2 e genefilho 2 = (1 a) * genepai 1 + a * genepai 2. Assim como no crossover, existem dois tipos de operadores na mutação. Para a representação binária, quando um filho é sorteado para mutação, apenas inverte-se o valor alelo (menor representação do gene), o qual é escolhido aleatoriamente, passando de 0 para 1 ou de 1 para 0. Na mutação aritmética a diferença é de que ao invés de inverter o valor, será gerado um número real aleatório no intervalo [-1,1]. Na aplicação estudada, foi utilizado o modelo presa-predador como ambiente para testes. A presa é controlada por algoritmos simples, podendo ser de movimentos aleatórios, ou seguir sempre numa mesma direção ou ainda fugir do predador mais próximo. Já os predadores são controlados por redes neurais, objetivando evoluí-las para buscar uma solução eficiente na captura da presa.

34 34 O plano possui dimensões variáveis, podendo ser limitado ou toroidal. A velocidade e a posição inicial da presa podem ser configuradas para variar o grau de dificuldade do problema. Em relação aos predadores, é possível configurar a quantidade máxima de neurônios ocultos e o tipo de entrada da rede neural, bem como parâmetros para o algoritmo genético (tamanho cromossomo, probabilidade de mutação, elitismo e tamanho da população). A Figura 3.4 descreve o algoritmo evolucionário para solução do problema. Figura Algoritmo Evolucionário proposto Fonte: Côrtes (2005, p. 46). São criados diferentes cenários para avaliar a qualidade da estratégia dos predadores. Esses cenários consistem basicamente em alterar a posição inicial dos predadores, onde estes podem se mover n passos antes de começarem a ser avaliados (etapa denominada de treinamento). A aplicação foi desenvolvida na linguagem Java (versão 1.5), possuindo interface para parametrização das características do mapa, dos predadores (redes neurais e AG s) e da presa Experimentos e resultados Côrtes(2005) realizou dois conjunto de experimentos para avaliar o modelo proposto. O primeiro faz uma comparação com modelos de outros autores e o segundo buscou encontrar

35 35 valores satisfatórios para os diversos parâmetros de sua aplicação. Aqui serão apresentados apenas os experimentos realizados para o modelo neuro-evolutivo criado pela autora. Na realização de experimentos com o seu modelo, Côrtes (2005) buscou variar os diversos parâmetros da aplicação a fim de encontrar boas soluções. Primeiramente foram definidos valores padrões para cada parâmetro. Dentre os principais podemos destacar que: O plano é toroidal de tamanho (30,30); A presa sempre inicia na posição central (15,15), fugindo do predador mais próximo; Os agentes podem ocupar uma mesma posição no mundo; A presa é considerada capturada quando um predador consegue tocá-la; Existem três predadores no plano. Após a definição de valores padrões, em cada experimento era realizado a alteração no valor de somente um parâmetro e extraídos os resultados. Os resultados apresentaram-se mais satisfatórios quando os agentes passavam por um treinamento inicial, onde a presa fica parada para depois começar a se mover, fugindo dos predadores. Quando treinados diretamente para captura da presa, os predadores não obtiveram sucesso. Em um ambiente não toroidal a captura se mostrou mais difícil, embora tecnicamente mais fácil pela possibilidade de utilizar o próprio cenário como auxiliar na captura (CÔRTES, 2005). Em relação à função fitness, os resultados que obtiveram algum sucesso foram aqueles em que a aptidão é inversamente proporcional à distância final dos predadores para a presa. A média de estabilização dos agentes era na 300ª geração, ocorrendo também quando foram utilizados quatro predadores ao invés de três. A situação mais crítica encontrada é que a presa só era capturada quando um predador a tocasse. Nos casos onde para ser considera capturada a presa tem de ser cercada, não se obteve sucesso em nenhum experimento.

36 USANDO PROGRAMAÇÃO GENÉTICA PARA EVOLUIR AGENTES JOGADORES DE FUTEBOL DE ROBÔS No trabalho de Maia Jr. (2001), é descrita a evolução de agentes robóticos, capazes de seguir uma bola em um campo de futebol simulado. Tal evolução ocorre através da Programação Genética e passa por três estágios: primeiramente os robôs tem o objetivo de seguir paredes (extremidades do campo), sendo posteriormente evoluídos ao objetivo de seguir a bola utilizando-se de um sistema de visão global. Por fim, os robôs tem de seguir a bola, porém com um sistema de visão local. Uma característica importante a ser considerada no ambiente de futebol de robôs, é que a PG deve criar agentes capazes de atuar nele (o qual é incerto e variável), escolhendo ações de forma rápida e efetivas Implementação No primeiro estágio, os robôs tem de percorrer todo o campo seguindo suas extremidades e iniciando em posições e direções aleatórias no ambiente. Cada indivíduo da população é testado duas vezes. O cálculo do fitness dá-se basicamente pela diferença entre os movimentos ideais realizados e os movimentos em que o robô desviou-se do caminho. Sendo assim, quanto maior o valor, melhor será a avaliação do indivíduo. Além disso, cada população possui 500 indivíduos, sendo que 30% da população avaliada é passada através do elitismo para a próxima população, e o restante sofre o processo de crossover. O autor não informa a taxa de mutação utilizada para essa evolução. No segundo estágio, onde a PG deve programar os robôs para seguirem a bola através de uma visão global (câmera superior ao campo e que possibilita a visualização de todo o ambiente). Foi definido que os robôs devem tocar a bola o maior número de vezes em um determinado número de passos. Além disso, o robô tem de buscar pela bola em um prazo máximo de 2000 passos (movimentos). Para calcular o fitness nesse ambiente, foi utilizada uma função a qual o número de vezes que a bola foi tocada é multiplicado por uma constante k e subtraída da razão do número de passos do agente pela distância inicial medida antes do agente se movimentar. Os demais parâmetros da PG seguem mesmos valores do estágio anterior. O terceiro e último estágio tem o mesmo objetivo que o segundo. Contudo o sensor dos robôs passa a ser uma visão local (simulando uma câmera embarcada em cada um dos robôs). Como diferencial, foi adicionada uma função booleana para verificar se a bola está no campo

37 37 de visão do robô. Os demais parâmetros, tanto do ambiente como da PG são os mesmos do segundo estágio Resultados Os resultados obtidos pelo autor foram apresentados de três formas. A primeira representou em gráficos a variação do valor do fitness no decorrer das gerações nos três estágios de evolução. Foram realizadas várias evoluções e apresentadas as variações do fitness da média das evoluções e da melhor evolução. Uma abordagem proposta pelo autor foi a tentativa de uma renovação durante a evolução dos indivíduos que deveriam percorrer o campo. Nela somente 10% de uma nova população seria composta de indivíduos da geração anterior (sejam eles advindos do processo de elitismo, crossover ou mutação). Os 90% restantes seriam criados aleatoriamente. O resultado disso foi que a média no valor do fitness caiu drasticamente. Nos resultados apresentados em gráficos, o autor observa que os valores médios das evoluções eram muito baixos se comparados ao valor da melhor evolução. Isso deve-se ao fato de se tratar de um problema com grande grau de dificuldade. A segunda forma de apresentação de resultados foi através do caminho percorrido pelo robô no campo. Na ilustração do caminho percorrido, sempre é utilizado o melhor indivíduo das evoluções executadas. Dessa forma era possível acompanhar o desenvolvimento do indivíduo no decorrer das gerações de forma mais fácil. A figura a seguir demonstra o caminho percorrido pelo robô no primeiro estágio de evolução. Figura Caminhos para agentes seguidores de paredes. Fonte: Maia Jr. (2001, p. 08).

38 38 De maneira geral, pode-se observar que o desempenho do robô nos três estágios de evolução é considerável muito bom, pois ele consegue cumprir de maneira eficiente os objetivos de cada estágio. A última representação dos resultados trata-se da apresentação do código (programa) gerado pela PG para guiar o robô nos ambientes. O principal ponto observado é que a complexidade e tamanho do programa aumenta significativamente quando ocorre o avanço para um novo estágio da evolução. O trabalho apresentado por Maia Jr. demonstrou que a PG é uma ferramenta capaz de atuar na evolução de um mecanismo para controle de robôs jogadores de futebol. Contudo, vale salientar que a PG controlava apenas um robô no ambiente simulado, sendo que a aplicação deverá ser aprimorada para poder criar times de robôs, o quais cooperariam entre si para alcançar um objetivo em comum. 4 MODELAGEM E IMPLEMENTAÇÃO Esta seção do trabalho buscará descrever os passos utilizados na criação de toda implementação, incluindo o ambiente de simulação presa-predador, bem como a parte chave deste trabalho: um modelo de programação genética que servirá de inteligência para os predadores capturarem a presa. A linguagem de programação utilizada foi JAVA (versão 1.7), associada ao ambiente de desenvolvimento IDE NetBeans 7.3. A aplicação criada constitui-se de classes, fora as auxiliares, que estão divididas em três subgrupos: Ambiente, Simulação e Evolução, sendo que os dois primeiros referem-se exclusivamente ao problema presa-predador, e o terceiro representa a programação genética, a qual irá interagir com os demais subgrupos. 4.1 AMBIENTE DE SIMULAÇÃO PRESA-PREDADOR Assim como descrito, o ambiente que simula o problema presa-predador possui os subgrupos Ambiente e Simulação. O primeiro define as características do plano (ou mundo) onde se encontrarão a presa e os predadores, e o segundo é responsável por fazer a interação dos personagens no mundo.

39 39 O Ambiente é definido pela classe denominada Mapa, onde cada instância possui como parâmetros para inicialização uma largura x e uma altura y do plano e o seu tipo (toroidal ou limitado). Há ainda métodos auxiliares que escutam o ambiente, retornando quando a presa foi capturada, ou que não permitam dois personagens se colocarem numa mesma posição, dentre outros. Nesse subgrupo também estão as classes: Personagem, que é uma abstração para as classes Predador e Presa, e também a classe Acao, que define quais os movimentos possíveis de um personagem. A classe Predador é uma extensão de Personagem e representará os predadores que serão programados através da evolução realizada pela programação genética. Um detalhe importante é que para ser instanciado, um predador deve receber como parâmetro uma árvore de expressões, a qual será gerada da programação genética. Nesta aplicação todos os predadores recebem a mesma inteligência. Já as classes PresaParada, PresaRandom e PresaFoge, que também estendem a classe Personagem, representam cada uma um tipo de presa, sendo respectivamente a presa que fica parada em alguma posição do mundo, a presa que anda de forma aleatória pelo plano, e a presa dotada de certa inteligência, fugindo do predador mais próximo a ela. A classe Acao Basicamente constitui-se de uma lista enumerada de ações com três parâmetros definidos: o código da ação, o seu movimento na coordenada x e o seu movimento na coordenada y. A Tabela 4.1 ilustra as possíveis ações. Tabela Representação das ações possíveis de um personagem no mapa. Movimento do personagem Código Deslocamento na coordenada x Deslocamento na coordenada y Nenhum Norte Sul Oeste Leste Fonte: Próprio autor O subgrupo Simulação é definido pela classe Simulacao, sendo responsável por interagir os personagens com o mapa através de suas ações. Uma simulação é composta por rodadas, onde uma rodada concluída significa que todos os personagens do mapa foram processados e já possuem a informação de qual será o seu

40 40 próximo movimento. Vale lembrar que esse processamento ocorre um de cada vez, mas o movimento dos personagens sempre ocorrerá de forma conjunta. Ao iniciar uma simulação deve ser informado como parâmetro a quantidade máxima de rodadas a serem processadas, definindo um prazo para que os predadores capturem a presa. Além disso, também serão necessários parâmetros como o tamanho do mapa e se o mesmo será toroidal ou limitado. Há casos onde a simulação pode gerar uma situação onde a programação dos predadores indique que todos devam ficar parados. Caso o número de rodadas não ter finalizado e em x rodadas todos predadores ficaram parados, a simulação é finalizada por timeout, ou seja, os predadores não alcançaram o seu objetivo. Dentro da classe Simulacao existem alguns métodos que servirão de auxílio para a programação genética, como por exemplo, qual o estado da simulação (se finalizada por timeuout ou pela captura da presa). Tais métodos irão fornecer informações para que a programação genética possa avaliar os indivíduos de suas populações. Outra informação importante que a simulação fornece à programação genética é a posição dos personagens no ambiente. Ela pode ser absoluta ou relativa, onde a primeira define a coordenada de cada personagem em relação ao plano. A segunda define a posição relativa de cada predador em relação à presa, sendo que esta é definida como a origem (0,0). 4.2 EVOLUÇÃO O subgrupo Evolução será o responsável por executar toda programação genética presente na aplicação. Ele possui as classes Individuo e Evolucao, sendo que a primeira é necessária para representar os indivíduos da população que serão submetidos à programação genética, representada pela segunda classe. Nesse subgrupo serão descritas todas as etapas da evolução dos indivíduos, desde a criação da primeira população, passando pelos operadores genéticos e finalmente chegando ao indivíduo ideal. Tal indivíduo será o programa que controlará os quatro predadores presentes no ambiente de simulação. Vale destacar que a inteligência gerada pela PG é a mesma para os quatro predadores Indivíduos A população de indivíduos é o ponto inicial da programação genética. Sendo assim, a representação deles tem de ser bem definida para o problema em questão, de modo a ser eficaz

41 41 e mais eficiente possível. Isso é necessário para garantir a maior variabilidade de soluções no espaço de busca. Como já descrito, a programação genética evolui programas de computador, sendo eles representados por indivíduos. Cada indivíduo então é uma árvore de derivação, contendo a inteligência dos predadores para a captura da presa. Na construção do programa, foram analisadas operações que seriam relevantes para possibilitar que os predadores pudessem interagir no ambiente em busca do objetivo. Como a representação é feita em forma de árvore, foi necessária a criação de classes que representam operações de controle de fluxo (CASE), de relação (EQUAL, GREAT e LESS) e lógicas (AND). A operação CASE será sempre o nó raiz da árvore, sendo que tal operação não pode se repetir, para que não sejam criados indivíduos muito complexos. Cada CASE deverá conter três parâmetros: uma lista de condições a serem executadas, uma lista de alternativas para cada um desses testes, e um valor padrão (default) caso nenhuma condição tenha sido satisfeita. A lista de testes se utilizará das operações lógicas e de relação, onde as variáveis serão denotadas pelas coordenadas x e y dos predadores e da presa. Cada condição terá como alternativa, assim como o valor padrão, um movimento a ser realizado no mundo. Esse movimento é representado pelos valores da Tabela 4.1. Os operadores de relação, como o próprio nome diz, verificam qual a relação entre as duas variáveis. Com isso, eles informação se uma variável é maior (GREAT) ou menor (LESS) que a outra ou se seus valores são iguais (EQUAL). A operação lógica AND é responsável por adicionar mais uma condição em um índice já existente da lista de condições. Logo, ela recebe como parâmetro duas expressões para ser criada. Para melhor representar a linguagem na qual o indivíduo utiliza, segue abaixo uma representação do mesmo, utilizando a gramática BNF (Backus-Naur Form): Figura Representação de um indivíduo através da gramática BNF. <CODIGO> ::= <CASE> <CASE> ::= <CONDIÇÃO><ALTERNATIVA><CASE> <ALTERNATIVA> <CONDIÇÃO> ::= <EXPRESSÃO> <EXPRESSÃO> :: = <OPER_LÓGICA> <OPER_LÓGICA> :: = <OPER_REL> <OPER_REL><OP_LÓGICO> <OPER_LÓGICA> <OP_LÓGICO> :: AND <OPER_REL> :: = <VARIÁVEL> <OP_REL> <VARIÁVEL> <OP_REL> :: = > < = <VARIÁVEL> :: = X1 Y1 X2 Y2 X3 Y3 X4 Y4 XP YP <ALTERNATIVA> ::=

42 42 Fonte: Próprio autor. A evolução é iniciada com a criação de n indivíduos previamente informados como parâmetro, gerando uma população. Conforme Linden (2012), a população inicial deve ser o mais simples possível e criada de forma aleatória. Segundo a lei das probabilidades, dessa forma haverá uma distribuição que cobre praticamente todo o espaço de soluções, embora sem garantias do mesmo, visto que a população tem um tamanho limitado. Um indivíduo então é criado da forma mais simples possível através do método gerararvorereduzida, utilizando a expressão inicial CASE, que conterá apenas uma condição e uma alternativa, e o valor padrão para a expressão inicial. A Figura 4.2 ilustra de um indivíduo criado inicialmente: Figura Individuo gerado inicialmente de forma aleatória Fonte: Próprio autor Avaliação Após gerada a população inicial, será dado início ao ciclo da evolução afim de gerar uma solução ao problema. A primeira etapa desse ciclo consiste na avaliação de cada indivíduo, verificando o quão próximo à solução ideal está a solução apresentada por ele. Para ser realizada, a avaliação cria uma simulação, onde serão inseridos personagens em posições aleatórias no plano, sendo quatro predadores e uma presa. Os predadores receberão a inteligência gerada pela árvore sintática do indivíduo 2 a ser avaliado. Feito isso, a simulação 2 Vale ressaltar quando mencionado o termo personagens (presa ou predador(es)), este refere-se ao problema presa-predador. Enqaunto que os termos indivíduos e população referem-se à programação genética.

43 43 iniciará e os predadores terão seu objetivo guiado pela inteligência. Quando a presa for capturada ou a simulação terminar por timeout, será possível medir a distância média dos predadores para com a presa. Esse valor será denominado de pré-fitness e será essencial ao cálculo do fitness de cada indivíduo. Como as posições de presa e predadores são geradas aleatoriamente na simulação, fezse necessário executar várias simulações utilizando a inteligência de um mesmo indivíduo. Isso é feito para ter garantias de que ao final o fitness demonstre verdadeiramente a qualidade do indivíduo. A operação é feita pela média aritmética simples do pré-fitness, onde seus valores serão somados a cada simulação e ao fim das cem simulações, divide-se esse somatório pelo número de simulações realizadas, obtendo-se o fitness do indivíduo. Vale lembrar que por se tratar de uma evolução, dificilmente um indivíduo de uma geração inicial apresentará uma solução considerada boa, logo terá uma avaliação ruim. Mas é a partir desse mesmo indivíduo, sendo manipulado pelos operadores genéticos, que novos indivíduos surgirão com tendência à melhores avaliações Seleção Concluída a etapa de avaliação, a população passará pelo processo de seleção onde os indivíduos com melhor fitness (nesse caso quanto menor o valor, melhor) terão mais chance de reproduzirem-se e passar suas características para as gerações seguintes. O processo de seleção escolhido foi o torneio, o qual recebe um parâmetro k = 2, onde k representa o número de indivíduos que serão sorteados para competirem diretamente entre si. Dentre os sorteados, o que tiver melhor fitness será o selecionado. O torneio ocorrerá p-1 vezes, onde p representa o tamanho da população. A programação genética define que a população deve ter tamanho constante, contudo é selecionado um indivíduo a menos que o tamanho da população. Isso se deve ao fato do módulo de população utilizado, o qual será descrito posteriormente Crossover A operação que visa simular a reprodução sexuada de indivíduos não foi implementada. Contudo propõe-se aqui uma maneira de fazê-la. Ao invés de efetuar a troca de subárvores dos indivíduos, seria feita a troca de alguma expressão de condição e de resultado entre os mesmos.

44 44 Cada operação de crossover consistiria em sortear dois indivíduos para realizarem o cruzamento. Após seria selecionado aleatoriamente um índice da lista de condições para cada um dos indivíduos. Feito isso basta retirar a regra e a alternativa do índice do pai A e adicionar no pai B e vice-e-versa. Sendo assim, cada operação de crossover geraria dois filhos conforme visualizado na Figura 4.3. Figura Crossover sugerido para a aplicação. Pai A Pai B Índice sorteado Condição X1>XP X2=X3 Y1<YP X4=X1 AND YP=X4 Alternativa Índice sorteado Condição X1 = XP AND Y1<Y4 YP=XP XP>X4 Y3<X1 Alternativa Troca de condições e alternativas Filho C Filho D Condição Y3<X1 X2=X3 Y1<YP X4=X1 AND YP=X4 Alternativa Condição X1 = XP AND Y1<Y4 YP=XP XP>X4 X1>XP Alternativa Fonte: Próprio autor. Linden (2012) explica em sua discussão acerca do operador de mutação, que ele é fundamental para a programação genética, pois garante que sempre haja variabilidade genética nas populações. Enquanto isso, o operador de crossover tende a fazer o contrário, contribuindo fortemente para uma convergência genética. Sendo assim, apesar de não ser implementada a operação de crossover, é possível obter resultados com a programação genética Mutação Como o operador genético de crossover não atuou sobre os indivíduos selecionados, estes serão submetidos diretamente ao processo de mutação. Ele consiste em percorrer a estrutura da expressão de cada um dos indivíduos, e aleatoriamente alterar o conteúdo do nó corrente. Para um nó sofrer mutação, ele executa o método devemutar, o qual retornará verdadeiro ou falso a partir da probabilidade de mutação informada no início da evolução. Caso retornado verdadeiro, é feita a substituição do conteúdo do nó por outro gerado aleatoriamente. Caso contrário, não ocorre nenhuma mutação naquele nó e a evolução continua percorrendo os

45 45 nós restantes do indivíduo e submetendo-os ao mesmo método. Esse ciclo ocorrerá até que todos os nós da expressão de todos os indivíduos daquela geração tenham sido percorridos. As possibilidades de mutação são várias, abrangendo condições, alternativas e valor padrão. Nas condições é possível realizar a mutação de operadores de comparação (>, < e =) e dos termos destas comparações ([x1,y1],...,[x4, y4] e [xp,yp]). Além disso, é possível acrescentar à árvore um operador AND, o qual preserva a comparação existente de determinado nó à direita e adiciona uma nova subárvore como sendo o segundo termo da operação. Abaixo uma ilustração de como é adicionado o operador AND em uma mutação: Figura Representação de uma mutação com adição do termo AND Fonte: Próprio autor. Como cada árvore possui sempre como nó raiz uma expressão do tipo CASE, outras possibilidades de mutação ocorrem também. É possível adicionar, duplicar ou excluir uma condição da lista ou até mesmo alterar a ordem na lista de condições (juntamente com a lista de alternativas). Para a mutação de alternativas e do valor padrão, é possível realizar a troca aleatória de seus valores, o qual correspondem aos movimentos possíveis dos personagens, conforme já mostrado na Tabela 4.1.

46 Módulo de população Depois de passar pela avaliação, seleção e mutação, os p-1 indivíduos irão constituir a nova população. O indivíduo que está faltando para completar essa população será selecionado pelo módulo de população elitista. A escolha do elitismo deu-se pelo fato de que embora seja simples sua implementação, esse módulo colabora de forma drástica para a melhoria do desempenho na execução da programação genética (LINDEN, 2012). O elitismo ocorre após a avaliação dos indivíduos e não após a mutação. Quando todos foram avaliados, é executado um pequeno método que ordena os indivíduos pelo seu fitness, do menor para o maior. Logo, o primeiro indivíduo da lista será o melhor avaliado naquela geração. Para preservar as suas características afim de que não se perca a qualidade no decorrer da evolução, esse indivíduo é copiado automaticamente para a nova população, sem sofrer nenhuma alteração em sua estrutura. A partir disso é possível garantir que a próxima geração possa ser tão boa quanto a anterior, e no pior caso, terá uma avaliação igual à população anterior. Deve-se salientar que mesmo estando na nova população, o melhor indivíduo deverá passar igualmente pelos processos de seleção e mutação, pois é necessário testar novas variações deste indivíduo a fim de melhorá-lo, afinal não há garantias de que ele é e sempre será o melhor indivíduo encontrado em toda evolução. Findado o processo do módulo de população, o ciclo evolutivo é completado gerando uma nova população. Na aplicação em questão, o ciclo de avaliação seleção módulo de população mutação será repetido n vezes, onde n representa a quantidade de gerações que irão evoluir. Esse parâmetro é informado ao executar a evolução. 4.3 INTERFACE Ao executar a aplicação, a mesma apresentará a tela referente aos parâmetros para a evolução. Há a possibilidade de criar uma nova evolução, ou carregar uma já existente caso desejado evoluí-la por mais um tempo.

47 47 Figura Tela inicial para configuração dos parâmetros da evolução. Fonte: Próprio autor. Conforme a Figura 4.5, é possível observar que para iniciar a execução da evolução, além de serem informados parâmetros que dizem respeito às características da evolução, o usuário deve definir parâmetros para a simulação também. O significado de cada parâmetro está descrito na tabela a seguir. Tabela Parâmetros de inicialização para Simulação e Evolução Escopo Parâmetro Tipo Descrição max_rordada_simulacao Int Número máximo de rodadas a serem processadas em uma simulação tamanomapax Int Número de células do plano na coordenada x Número de células do plano na tamanomapay Int Evolução / coordenada y Simulação Informa verdadeiro para a simulação mapatoroidal Boolean ocorrer num mundo toroidal. tipopresa Int Define o tipo de presa que estará no mundo (Estática, aleatória, PresaIA) tipopercepcao Int Define o tipo de percepção dos predadores, se absoluta ou relativa. maxgeracoes Int Número máximo de gerações que serão processadas Evolução tamanhopopulacao Int Indica o tamanho da população de cada geração taxamutacao Double Informa a probabilidade de mutação de um indivíduo. Fonte: Próprio autor. A evolução é executada primeiramente recebendo todos os parâmetros da Tabela 4.2. Após criar a primeira população de forma aleatória, a evolução irá chamar uma simulação com

48 48 os mesmos parâmetros que recebeu para testá-la e poder fazer a avaliação dos indivíduos e as demais etapas da geração. Após terminada a evolução, a interface de simulação será carregada, recebendo como parâmetro o melhor indivíduo de tal evolução conforme a Figura 4.6. Figura Interface da Simulação Fonte: Próprio autor. A interface da simulação possui diversas opções de parâmetros para o usuário poder observar os resultados na tela. Assim que carregada, a simulação irá informar os parâmetros que foram usados na evolução do indivíduo carregado na interface. Ainda é possível alterar o intervalo entre cada rodada da simulação para observar os personagens movendo-se mais lenta ou rapidamente. Também foi criada uma pequena rotina para obter as estatísticas de percentual de captura, informando o número de simulações a serem executadas. Ainda é possível salvar a simulação ou abrir outra já existente. O botão Nova Sim. criará uma nova simulação com os parâmetros informados, lembrando que a posição inicial dos personagens sempre será aleatória. Já o botão Reiniciar irá reiniciar a última simulação executada. Além disso, é possível testar um indivíduo em um ambiente diferente ao qual ele foi evoluído. Por exemplo, se o indivíduo evoluiu em um ambiente onde a presa ficava parada e a

49 49 posição era relativa, é possível gerar uma simulação onde a presa possui inteligência e a posição seja absoluta. 4.4 DIAGRAMA DE CLASSES UML: Abaixo está apresentada a estutura geral da aplicação descrita através da linguagem Figura Diagrama de classes da aplicação. Fonte: Próprio autor.

Inteligência Artificial. Algoritmos Genéticos. Aula I Introdução

Inteligência Artificial. Algoritmos Genéticos. Aula I Introdução Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação Inteligência Artificial Algoritmos Genéticos Aula I Introdução Roteiro Introdução Computação Evolutiva Algoritmos

Leia mais

3. Resolução de problemas por meio de busca

3. Resolução de problemas por meio de busca Inteligência Artificial - IBM1024 3. Resolução de problemas por meio de busca Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Resolução de problemas por

Leia mais

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva Computação Evolutiva Algoritmos Genéticos A computação evolutiva (CE) é uma área da ciência da computação que abrange modelos computacionais inspirados na Teoria da Evolução das Espécies, essencialmente

Leia mais

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO Prof. Msc. Saulo Popov Zambiasi (saulopz@gmail.com) Informação - ICPG - Criciuma - SC 1 Características Gerais, operadores, algoritmo.

Leia mais

3 Algoritmos Genéticos

3 Algoritmos Genéticos Técnicas de Inteligência Computacional 33 3 Algoritmos Genéticos Este capítulo resume os principais conceitos sobre o algoritmo evolucionário empregado nesta dissertação. É apresentada uma breve explicação

Leia mais

Introdução aos Algoritmos Genéticos

Introdução aos Algoritmos Genéticos Introdução aos Algoritmos Genéticos Prof. Matheus Giovanni Pires EXA 868 Inteligência Artificial Não-Simbólica B Universidade Estadual de Feira de Santana 2 Algoritmos Genéticos: Introdução Introduzidos

Leia mais

Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP

Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP 1 Principais Tópicos Introdução Evolução Natural Algoritmos Genéticos Aplicações Conclusão 2 Introdução http://www.formula-um.com/ Como

Leia mais

ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA

ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA Patrocínio, MG, outubro de 2016 ENCONTRO DE PESQUISA & EXTENSÃO, 3., 2016, Patrocínio. Anais... Patrocínio: IFTM, 2016. ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA Igor Acassio Melo

Leia mais

Computação Evolutiva. Computação Evolutiva. Principais Tópicos. Evolução natural. Introdução. Evolução natural

Computação Evolutiva. Computação Evolutiva. Principais Tópicos. Evolução natural. Introdução. Evolução natural Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP Principais Tópicos Introdução Evolução Natural Algoritmos Genéticos Aplicações Conclusão 1 2 Introdução Evolução natural http://www.formula-um.com/

Leia mais

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO AULA 06 Algoritmos Genéticos Sumário Introdução Inteligência Artificial (IA) Algoritmos Genéticos Aplicações de

Leia mais

Figura 3.1: Fluxograma do algoritmo da Programação Genética.

Figura 3.1: Fluxograma do algoritmo da Programação Genética. 3 Programação Genética O termo Programação Genética passou a ser utilizado em 1990 nos trabalhos publicados por Koza [30] e De Garis [31]. A definição de Koza para este termo passou a predominar após a

Leia mais

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto Algoritmo Genético Inteligência Artificial Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Introdução 2. Conceitos Básicos 3. Aplicações 4. Algoritmo 5. Exemplo Introdução São técnicas de busca

Leia mais

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008 Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008 Introdução São técnicas de busca e otimização. É a metáfora da teoria da evolução das espécies iniciada pelo Fisiologista e Naturalista inglês Charles Darwin.

Leia mais

ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP

ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP Gilson Rogério Batista, Gideon Villar Leandro Universidade Regional do Noroeste do Estado do Rio

Leia mais

Modelos Evolucionários e Tratamento de Incertezas

Modelos Evolucionários e Tratamento de Incertezas Ciência da Computação Modelos Evolucionários e Tratamento de Incertezas Aula 01 Computação Evolucionária Max Pereira Motivação Se há uma multiplicidade impressionante de algoritmos para solução de problemas,

Leia mais

Técnicas de Inteligência Artificial

Técnicas de Inteligência Artificial Universidade do Sul de Santa Catarina Ciência da Computação Técnicas de Inteligência Artificial Aula 9 Algoritmos Genéticos Max Pereira Algoritmos Genéticos Algoritmos Genéticos São técnicas de busca e

Leia mais

Algoritmos Genéticos. Pontos fracos dos métodos tradicionais. Características de alguns problemas. Tamanho do espaço de busca- Ex. caixeiro viajante:

Algoritmos Genéticos. Pontos fracos dos métodos tradicionais. Características de alguns problemas. Tamanho do espaço de busca- Ex. caixeiro viajante: Algoritmos Genéticos Prof. Luis Otavio Alvares INE/UFSC Características de alguns problemas Tamanho do espaço de busca- Ex. caixeiro viajante: 10 cidades: 181.000 soluções 20 cidades: 10.000.000.000.000

Leia mais

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial Algoritmos Genéticos Texto base: Stuart Russel e Peter Norving - Inteligência Artificial junho/2007 Algoritmo Genético Uma variante da busca em feixe estocástica Estado sucessor gerado pela combinação

Leia mais

INF 1771 Inteligência Artificial

INF 1771 Inteligência Artificial INF 1771 Inteligência Artificial Aula 06 Algoritmos Genéticos Edirlei Soares de Lima Algoritmos Genéticos Método de busca local. Boa abordagem para lidar com espaços de busca muito

Leia mais

COMPARAÇÃO ENTRE DIFERENTES ESTRUTURAS DE REDES NEURAIS NO PROBLEMA PRESA-PREDADOR 1

COMPARAÇÃO ENTRE DIFERENTES ESTRUTURAS DE REDES NEURAIS NO PROBLEMA PRESA-PREDADOR 1 COMPARAÇÃO ENTRE DIFERENTES ESTRUTURAS DE REDES NEURAIS NO PROBLEMA PRESA-PREDADOR 1 Márcia Da Silva 2, Eldair Fabricio Dornelles 3, Rogério S. M. Martins 4, Édson L. Padoin 5. 1 Pesquisa desenvolvida

Leia mais

Um Algoritmo Genético com Aprendizado por Reforço Simples aplicado ao problema do Mundo de Grid

Um Algoritmo Genético com Aprendizado por Reforço Simples aplicado ao problema do Mundo de Grid 1 Um Algoritmo Genético com Aprendizado por Reforço Simples aplicado ao problema do Mundo de Grid Luciana Conceição Dias Campos Resumo Este trabalho consiste da aplicação de um algoritmo genético ao método

Leia mais

Técnicas de Inteligência Artificial

Técnicas de Inteligência Artificial Universidade do Sul de Santa Catarina Ciência da Computação Técnicas de Inteligência Artificial Aula 9 Algoritmos Genéticos Max Pereira Algoritmos Genéticos São técnicas de busca e otimização. Uma metáfora

Leia mais

Introdução a Algoritmos Genéticos

Introdução a Algoritmos Genéticos Introdução a Algoritmos Genéticos Tiago da Conceição Mota Laboratório de Inteligência Computacional Núcleo de Computação Eletrônica Universidade Federal do Rio de Janeiro Outubro de 2007 O Que São? Busca

Leia mais

APLICAÇÃO DE ALGORITMOS BIO-INSPIRADOS EM CONTROLE ÓTIMO

APLICAÇÃO DE ALGORITMOS BIO-INSPIRADOS EM CONTROLE ÓTIMO APLICAÇÃO DE ALGORITMOS BIO-INSPIRADOS EM CONTROLE ÓTIMO Profa. Mariana Cavalca Baseado em: Material didático do Prof. Dr. Carlos Henrique V. Moraes da UNIFEI Curso de verão da Profa. Gisele L. Pappa Material

Leia mais

Max Pereira. Inteligência Artificial

Max Pereira. Inteligência Artificial Max Pereira Inteligência Artificial Algoritmos Genéticos Algoritmos Genéticos São técnicas de busca e otimização. Uma metáfora da teoria da evolução das espécies iniciada pelo Naturalista inglês Charles

Leia mais

3 Métodos de Otimização

3 Métodos de Otimização 3 Métodos de Otimização Problemas de otimização são relacionados a minimização ou maximização de função de uma ou mais variáveis num determinado domínio, possivelmente com a existência de um conjunto de

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação Aplicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada

Leia mais

Tópicos Especiais em Informática Fatec Indaiatuba

Tópicos Especiais em Informática Fatec Indaiatuba Prof. Dilermando Piva Jr. ((Compilação de diversas fontes na Internet)) Principal motivação para o estudo da computação evolutiva Otimização de processos complexo e que possuem um grande número de variáveis

Leia mais

Algoritmos Genéticos

Algoritmos Genéticos Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Algoritmos Genéticos Aluno: Fabricio Aparecido Breve Prof.: Dr. André Ponce de Leon F. de Carvalho São Carlos São Paulo Maio

Leia mais

3 Algoritmos Genéticos

3 Algoritmos Genéticos Algoritmos Genéticos Algoritmos Genéticos (AGs) constituem um mecanismo de busca adaptativa que se baseia no princípio Darwiniano de seleção natural e reprodução genética [101]. AGs são tipicamente empregados

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Aula 6 Algoritmos Genéticos M.e Guylerme Velasco Roteiro Introdução Otimização Algoritmos Genéticos Representação Seleção Operadores Geneticos Aplicação Caixeiro Viajante Introdução

Leia mais

APLICAÇÃO DE REDES NEURAIS RECORRENTES EM AMBIENTES PARCIALMENTE OBSERVÁVEIS 1

APLICAÇÃO DE REDES NEURAIS RECORRENTES EM AMBIENTES PARCIALMENTE OBSERVÁVEIS 1 APLICAÇÃO DE REDES NEURAIS RECORRENTES EM AMBIENTES PARCIALMENTE OBSERVÁVEIS 1 Eldair Fabrício Dornelles 2, Henrique Augusto Richter 3, Márcia Da Silva 4, Rogério Samuel De Moura Martins 5, Sandro Sawicki

Leia mais

Algoritmos Genéticos

Algoritmos Genéticos Algoritmos Genéticos Introdução Um Algoritmo Genético (AG), conceitualmente, segue passos inspirados no processo biológico de evolução natural segundo a teoria de Darwin Algoritmos Genéticos seguem a idéia

Leia mais

VERIFICAÇÃO DO DECAIMENTO DE INFORMAÇÃO EM REDES NEURAIS RECORRENTES APLICADAS AO PROBLEMA DO MUNDO DE WUMPUS 1

VERIFICAÇÃO DO DECAIMENTO DE INFORMAÇÃO EM REDES NEURAIS RECORRENTES APLICADAS AO PROBLEMA DO MUNDO DE WUMPUS 1 VERIFICAÇÃO DO DECAIMENTO DE INFORMAÇÃO EM REDES NEURAIS RECORRENTES APLICADAS AO PROBLEMA DO MUNDO DE WUMPUS 1 Henrique Augusto Richter 2, Eldair Fabrício Dornelles 3, Márcia Da Silva 4, Rogério Samuel

Leia mais

Algoritmos Genéticos

Algoritmos Genéticos Algoritmos Genéticos Roteiro Introdução Algoritmos Genéticos Otimização Representação Seleção Operadores Genéticos Aplicação Caixeiro Viajante Introdução Algoritmos Genéticos (AGs), são métodos de otimização

Leia mais

Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos

Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos SCC-230 Inteligência Artificial Thiago A. S. Pardo Solange O. Rezende 1 Computação Evolutiva (CE) Trata de sistemas para a resolução de problemas

Leia mais

Métodos de Busca. Inteligência Artificial. Algoritmos Genéticos. Algoritmos Evolucionários. Prof. Ms. Luiz Alberto Contato:

Métodos de Busca. Inteligência Artificial. Algoritmos Genéticos. Algoritmos Evolucionários. Prof. Ms. Luiz Alberto Contato: Inteligência Artificial Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Métodos de Busca Busca Cega ou Exaustiva: Não sabe qual o melhor nó da fronteira a ser expandido. Apenas distingue o estado objetivo

Leia mais

CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa. Prof. Paulo André Castro

CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa. Prof. Paulo André Castro CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa Prof. Paulo André Castro pauloac@ita.br www.comp.ita.br/~pauloac Sala 110, IEC-ITA Sumário Busca Competitiva Para Ambientes multiagentes...

Leia mais

Metahuerísticas: Algoritmos Genéticos. Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng.

Metahuerísticas: Algoritmos Genéticos. Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. Metahuerísticas: Algoritmos Genéticos Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 8) Meta-heurísticas Classificação de métodos heurísticos: os métodos

Leia mais

OTIMIZAÇÃO FUNÇÕES UTILIZANDO ALGORITMOS GENÉTICOS NO APLICATIVO MS EXCEL RESUMO INTRODUÇÃO

OTIMIZAÇÃO FUNÇÕES UTILIZANDO ALGORITMOS GENÉTICOS NO APLICATIVO MS EXCEL RESUMO INTRODUÇÃO OTIMIZAÇÃO FUNÇÕES UTILIZANDO ALGORITMOS GENÉTICOS NO APLICATIVO MS EXCEL Miquéias Augusto Ferreira Nantes 1, Douglas Peixoto de Carvalho 1 (Alunos do Curso de Matemática da Universidade Anhanguera - Uniderp)

Leia mais

4 Metáforas de Optimização

4 Metáforas de Optimização 4 Metáforas de Optimização O gigantesco avanço tecnológico que vem sofrendo os sistemas de computação, mais precisamente as unidades de processamento, criou a base para o uso efetivo da Inteligência Computacional,

Leia mais

Implementação De Um Algoritmo Genético Codificado Para A Solução do Problema do Caixeiro Viajante

Implementação De Um Algoritmo Genético Codificado Para A Solução do Problema do Caixeiro Viajante Implementação De Um Algoritmo Genético Codificado Para A Solução do Problema do Caixeiro Viajante 1 Resumo Neste trabalho será realizada a codificação do algoritmo genético para a solução do problema do

Leia mais

Resumo. Como um agente busca de seqüência de ações para alcançar seus objetivos.

Resumo. Como um agente busca de seqüência de ações para alcançar seus objetivos. Resumo Inteligência Artificial Russel e Norvig Capítulos 3,4 e 5 Prof. MsC Ly Freitas UEG Resolução de problemas por meio de busca Como um agente busca de seqüência de ações para alcançar seus objetivos.

Leia mais

PROGRAMAÇÃO GENÉTICA RECORRENTE APLICADA AO PROBLEMA PRESA-PREDADOR

PROGRAMAÇÃO GENÉTICA RECORRENTE APLICADA AO PROBLEMA PRESA-PREDADOR UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS CIÊNCIA DA COMPUTAÇÃO JANIEL CERETTA FOLETTO PROGRAMAÇÃO GENÉTICA RECORRENTE APLICADA AO PROBLEMA

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Prof. Kléber de Oliveira Andrade pdjkleber@gmail.com Algoritmos Genéticos Conteúdo Introdução O Algoritmo Genético Binário Noções de Otimização O Algoritmo Genético com Parâmetros

Leia mais

Estratégias Evolutivas EEs. Prof. Juan Moisés Mauricio Villanueva

Estratégias Evolutivas EEs. Prof. Juan Moisés Mauricio Villanueva Estratégias Evolutivas EEs Prof. Juan Moisés Mauricio Villanueva jmauricio@cear.ufpb.br www.cear.ufpb.br/juan Estratégias Evolutivas Desenvolvidas por Rechenberg e Schwefel, e estendida por Herdy, Kursawe

Leia mais

Computação Evolutiva. Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho)

Computação Evolutiva. Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho) Computação Evolutiva Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho) Principais Tópicos Computação Evolutiva Algoritmos Genéticos Codificação Função de

Leia mais

6 Estudos de Casos Porta Lógica OU de 4 Entradas

6 Estudos de Casos Porta Lógica OU de 4 Entradas 6 Estudos de Casos Com o objetivo de avaliar a síntese automática de circuitos de QCA usando técnicas de Hardware Evolucionário (EHW), alguns circuitos foram sintetizados e serão apresentados a seguir.

Leia mais

Inteligência Artificial. Conceitos Gerais

Inteligência Artificial. Conceitos Gerais Inteligência Artificial Conceitos Gerais Inteligência Artificial - IA IA é um campo de estudo multidisciplinar e interdisciplinar, que se apóia no conhecimento e evolução de outras áreas do conhecimento.

Leia mais

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Francisco Henrique de Freitas Viana Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento de Informática

Leia mais

11/1/2012. Agenda. Classe de problemas de interesse. Busca Local. Busca Local. Exemplo de Espaço de Estados

11/1/2012. Agenda. Classe de problemas de interesse. Busca Local. Busca Local. Exemplo de Espaço de Estados Agenda PCS / PCS 09 Inteligência Artificial Prof. Dr. Jaime Simão Sichman Profa. Dra. Anna Helena Reali Costa Busca Local e Problemas de Otimização. Introdução. Busca Local I. Subida da Encosta (Hill-Climbing)

Leia mais

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS. Metaheurísticas de Buscas

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS. Metaheurísticas de Buscas PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ ALGORITMOS GENÉTICOS Metaheurísticas de Buscas ALGORITMOS GENÉTICOS (AG) Popularizados por John Holland podem ser considerados os primeiros modelos algorítmicos

Leia mais

GA Conceitos Básicos. Capítulo 3 Prof. Ricardo Linden

GA Conceitos Básicos. Capítulo 3 Prof. Ricardo Linden GA Conceitos Básicos Capítulo 3 Prof. Ricardo Linden Algoritmos Evolucionários Algoritmos evolucionários usam modelos computacionais dos processos naturais de evolução como uma ferramenta para resolver

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação plicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada -

Leia mais

3 Computação Evolucionária

3 Computação Evolucionária 34 3 Computação Evolucionária Computação Evolucionária compreende diversos algoritmos inspirados no princípio Darwiniano da evolução das espécies e na genética. São algoritmos probabilísticos, que fornecem

Leia mais

Algoritmos genéticos Abordagem unificada de algoritmos evolutivos simples

Algoritmos genéticos Abordagem unificada de algoritmos evolutivos simples Introdução Inspiração biológica Histórico da computação evolutiva Algoritmo evolutivo simples Programação evolutiva Estratégias evolutivas Algoritmos genéticos Abordagem unificada de algoritmos evolutivos

Leia mais

Buscas Informadas ou Heurísticas - Parte III

Buscas Informadas ou Heurísticas - Parte III Buscas Informadas ou Heurísticas - Parte III Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Mestrado em Ciência da Computação / 2006 BUSCA SMA* (Simplified Memory-Bounded A*) BUSCA SMA* (Simplified

Leia mais

INF 1771 Inteligência Artificial

INF 1771 Inteligência Artificial Edirlei Soares de Lima INF 1771 Inteligência Artificial Aula 04 Algoritmos Genéticos Introdução Algoritmos genéticos são bons para abordar espaços de buscas muito grandes e navegálos

Leia mais

Algoritmos Evolutivos para Otimização

Algoritmos Evolutivos para Otimização Algoritmos Evolutivos para Otimização A área de aplicação que tem recebido mais atenção é a otimização. Uma das razões é que existem uma variedade de problemas de otimização e a maioria deles sem solução

Leia mais

Estrutura comum dos AEs Seleção

Estrutura comum dos AEs Seleção Estrutura comum dos AEs Seleção Todos os AEs mantém uma população de tamanho m por: Utilizando uma população como fonte de pais para produzir n descendentes Reduzindo o tamanho da população expandida de

Leia mais

Algoritmos Genéticos 1

Algoritmos Genéticos 1 Algoritmos Genéticos 1 Esquema de um GA Algoritmos Genéticos são um ramo da computação evolucionária Seu funcionamento pode ser resumido algoritimicamente através dos seguintes passos: Inicialize a população

Leia mais

4 Métodos Existentes. 4.1 Algoritmo Genético

4 Métodos Existentes. 4.1 Algoritmo Genético 61 4 Métodos Existentes A hibridização de diferentes métodos é em geral utilizada para resolver problemas de escalonamento, por fornecer empiricamente maior eficiência na busca de soluções. Ela pode ser

Leia mais

INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL. Aula 06 Prof. Vitor Hugo Ferreira

INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL. Aula 06 Prof. Vitor Hugo Ferreira Universidade Federal Fluminense Escola de Engenharia Departamento de Engenharia Elétrica INTRODUÇÃO À INTELIGÊNCIA COMPUTACIONAL Aula 06 Prof. Vitor Hugo Ferreira Representação por cromossomos Codificação

Leia mais

Inteligência Artificial

Inteligência Artificial Figura: Capa do Livro Hamburger, H., Richards, D. Logic and Language Models for Computer Science, Prentice Hall. Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Pós-Graduação

Leia mais

INTRODUÇÃO À. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

INTRODUÇÃO À. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR INTRODUÇÃO À COMPUTAÇÃO EVOLUTIVA Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2018 Computação Evolutiva Ramo da ciência da computação que propõe um paradigma

Leia mais

4 Implementação Computacional

4 Implementação Computacional 4 Implementação Computacional 4.1. Introdução Neste capítulo é apresentada a formulação matemática do problema de otimização da disposição das linhas de ancoragem para minimizar os deslocamentos (offsets)

Leia mais

Método de Hardy-Cross Capitulo 13- Algoritmo genético engenheiro Plínio Tomaz 24 dezembro de Algoritmo genético 13-1

Método de Hardy-Cross Capitulo 13- Algoritmo genético engenheiro Plínio Tomaz 24 dezembro de Algoritmo genético 13-1 1 Algoritmo genético 13-1 2 Capítulo 13-Algoritmo genético 13.1 Introdução As tecnologias recentes para dimensionamento de redes de água são: Algoritmo genético Programação Dinâmica Decision Support System

Leia mais

Algoritmos Evolutivos Canônicos

Algoritmos Evolutivos Canônicos Algoritmos Evolutivos Canônicos Como representar os indivíduos Vetor de comprimento fixo com L características escolhidas previamente. Ex.: Definição

Leia mais

3 Aprendizado por reforço

3 Aprendizado por reforço 3 Aprendizado por reforço Aprendizado por reforço é um ramo estudado em estatística, psicologia, neurociência e ciência da computação. Atraiu o interesse de pesquisadores ligados a aprendizado de máquina

Leia mais

Problema de Satisfação de Restrições. Problema de Satisfação de Restrições. Grafo de restrições. Exemplo: 4 Rainhas como um PSR

Problema de Satisfação de Restrições. Problema de Satisfação de Restrições. Grafo de restrições. Exemplo: 4 Rainhas como um PSR Problema de Satisfação de Restrições Problema de Satisfação de Restrições Exemplos de PSR (CSP, Constraint Satisfaction Problem) Busca genérica aplicada a PSRs Backtracking Verificação forward Heurísticas

Leia mais

Problema de Satisfação de Restrições

Problema de Satisfação de Restrições Problema de Satisfação de Restrições Exemplos de PSR (CSP, Constraint Satisfaction Problem) Busca genérica aplicada a PSRs Backtracking Verificação forward Heurísticas para PSRs Problema de Satisfação

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação Aplicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada

Leia mais

3 Otimização Aplicada a Reconstituição de Acidentes

3 Otimização Aplicada a Reconstituição de Acidentes 27 3 Otimização Aplicada a Reconstituição de Acidentes 3.1. Otimização A otimização é uma metodologia empregada para minimizar ou maximizar uma função e geralmente são utilizados em problemas onde existam

Leia mais

3 Otimização Evolucionária de Problemas com Restrição

3 Otimização Evolucionária de Problemas com Restrição 3 Otimização Evolucionária de Problemas com Restrição 3.1. Introdução Este capítulo resume os principais conceitos sobre os algoritmos evolucionários empregados nesta dissertação. Primeiramente, se fornece

Leia mais

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações AG Simples/Canônico (AGS) AG introduzido por Holland Funciona bem para problemas de otimização simples e/ou de pequenas dimensões A maior parte da teoria dos AGs está baseada no AGS Utilidade didática

Leia mais

GT-JeDi - Curso de Desenv. de Jogos IA para Jogos. Gustavo Pessin 2007

GT-JeDi - Curso de Desenv. de Jogos IA para Jogos. Gustavo Pessin 2007 GT-JeDi - Curso de Desenv. de Jogos IA para Jogos Gustavo Pessin 2007 Cronograma Base conceitual Exemplo: Achando o máximo de uma função... Como criar uma pequena aplicação: Exercício-Exemplo [Animal selvagem...]

Leia mais

INTELIGÊNCIA COMPUTACIONAL

INTELIGÊNCIA COMPUTACIONAL Rafael D. Ribeiro, M.Sc. rafaeldiasribeiro@gmail.com http://www.rafaeldiasribeiro.com.br A Inteligência Computacional (IC), denominada originalmente de Inteligência Artificial (IA), é uma das ciências

Leia mais

ALGORITMOS GENÉTICOS. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

ALGORITMOS GENÉTICOS. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR ALGORITMOS GENÉTICOS Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2018 Introdução Algoritmos Genéticos são algoritmos heurísticos de busca, que utilizam regras

Leia mais

C o m p u t a ç ã o M ó v e l. André Siqueira Ruela

C o m p u t a ç ã o M ó v e l. André Siqueira Ruela C o m p u t a ç ã o M ó v e l André Siqueira Ruela Sumário Revisão sobre AGs. Codificação de uma Rede Neural. AG em treinamento supervisionado. AG em treinamento não supervisionado. Revisão: Algoritmos

Leia mais

Créditos. Introdução a Sistemas Inteligentes. Agenda Introdução Breve Histórico. Introdução. Introdução aos Algoritmos Evolutivos

Créditos. Introdução a Sistemas Inteligentes. Agenda Introdução Breve Histórico. Introdução. Introdução aos Algoritmos Evolutivos Introdução a Sistemas Inteligentes Introdução aos Algoritmos Evolutivos Créditos Este material consiste de adaptações e extensões dos originais gentilmente cedidos: pelo Prof. Dr. Eduardo Raul Hruschka

Leia mais

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor:

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor: Componentes de um Algoritmo Genético 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros 1. PROBLEMA GAs são indicados em problemas complexos de otimização-

Leia mais

Otimização. Unidade 6: Algoritmo Genético. Jaime Arturo Ramírez. 7. Teoria do processo evolutivo num GA. 8. Aspectos avançados

Otimização. Unidade 6: Algoritmo Genético. Jaime Arturo Ramírez. 7. Teoria do processo evolutivo num GA. 8. Aspectos avançados Otimização Jaime Arturo Ramírez Conteúdo 1. Introdução 2. Analogia de mecanismos de seleção natural com sistemas artificiais 3. Algoritmo genético modelo 4. Um GA simples 5. Representação, genes e cromossomos

Leia mais

Computação Evolutiva. Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho)

Computação Evolutiva. Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho) Computação Evolutiva Prof. Eduardo R. Hruschka (Slides baseados nos originais do Prof. André C. P. L. F. de Carvalho) Principais Tópicos Computação Evolutiva Algoritmos Genéticos Codificação Função de

Leia mais

Otimização com Algoritmos Genéticos no MATLAB. Prof. Rafael Saraiva Campos CEFET-RJ

Otimização com Algoritmos Genéticos no MATLAB. Prof. Rafael Saraiva Campos CEFET-RJ Otimização com Algoritmos Genéticos no MATLAB Prof. Rafael Saraiva Campos CEFET-RJ Conteúdo do Mini-Curso PARTE 1 Teoria PARTE 2 Prática Conteúdo do Mini-Curso PARTE 1 Teoria 1.1. Conceitos Básicos de

Leia mais

Algoritmos Genéticos e Evolucionários

Algoritmos Genéticos e Evolucionários Algoritmos Genéticos e Evolucionários Djalma M. Falcão COPPE/UFRJ PEE e NACAD falcao@nacad.ufrj.br http://www.nacad.ufrj.br/~falcao/ http://www.nacad.ufrj.br/~falcao/ag/ag.htm Resumo do Curso Introdução

Leia mais

TÓPICOS EM INTELIGÊNCIA ARTIFICIAL Redes Neurais Artificiais

TÓPICOS EM INTELIGÊNCIA ARTIFICIAL Redes Neurais Artificiais TÓPICOS EM INTELIGÊNCIA ARTIFICIAL Redes Neurais Artificiais ricardo.kerschbaumer@ifc.edu.br http://professor.luzerna.ifc.edu.br/ricardo-kerschbaumer/ Introdução O Cérebro humano Mais fascinante processador

Leia mais

Estrutura comum dos AEs

Estrutura comum dos AEs Estrutura comum dos AEs Os algoritmos estudados seguem o seguinte padrão para modelagem dos sistemas evolutivos: Uma população de tamanho constante m evolui sobre o tempo A população atual é utilizada

Leia mais

Inteligência Computacional para Jogos Eletrônicos

Inteligência Computacional para Jogos Eletrônicos Inteligência Computacional para Jogos Eletrônicos Papéis da IA em Jogos Adversários Aliados Personagens de apoio NPC s (Non-player Character) Comentaristas Controle de câmera Geração de fases Nivelamento

Leia mais

4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos

4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos 46 4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos Para definir a representação de um modelo para problemas de planejamento

Leia mais

Algoritmos Genéticos. 1 Semestre de Cleber Zanchettin UFPE - Universidade Federal de Pernambuco CIn - Centro de Informática

Algoritmos Genéticos. 1 Semestre de Cleber Zanchettin UFPE - Universidade Federal de Pernambuco CIn - Centro de Informática Algoritmos Genéticos 1 Semestre de 2015 Cleber Zanchettin UFPE - Universidade Federal de Pernambuco CIn - Centro de Informática 1 2 Introdução Darwin Naturalistas: cada espécie havia sido criada separadamente

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 1.7. Outras Metaheurísticas Populacionais 1.7.1. Metaheurísticas Populacionais

Leia mais

Aplicação da Metaheurística Algoritmos Genéticos na solução do problema das n Rainhas

Aplicação da Metaheurística Algoritmos Genéticos na solução do problema das n Rainhas Aplicação da Metaheurística Algoritmos Genéticos na solução do problema das n Rainhas Resumo Gardiego Luiz da Silva 1 Henrique Faria de Oliveira 2 Faculdade

Leia mais

De que modo computadores podem resolver problemas, sem que tenham que ser explicitamente programados para isso?

De que modo computadores podem resolver problemas, sem que tenham que ser explicitamente programados para isso? Programação Genética Genetic Programming - GP De que modo computadores podem resolver problemas, sem que tenham que ser eplicitamente programados para isso? Programação Genética - GP Etensão de Algoritmos

Leia mais

Paradigma Simbólico. Sistemas de Informação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 2)

Paradigma Simbólico. Sistemas de Informação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 2) Paradigma Simbólico Sistemas de Informação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 2) Revisão da aula anterior: definição de IA Podemos associar o termo IA com: Parte da ciência da computação

Leia mais

Uso de Algoritmo Genético para a otimização do ponto de corte da probabilidade de sucesso estimada do modelo de Regressão Logística

Uso de Algoritmo Genético para a otimização do ponto de corte da probabilidade de sucesso estimada do modelo de Regressão Logística Uso de Algoritmo Genético para a otimização do ponto de corte da probabilidade de sucesso estimada do modelo de Regressão Logística José Edson Rodrigues Guedes Gondim 1 Joab de Oliveira Lima 2 1 Introdução

Leia mais

IF-705 Automação Inteligente Algoritmos Evolucionários

IF-705 Automação Inteligente Algoritmos Evolucionários IF-705 Automação Inteligente Algoritmos Evolucionários Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática - CIn Departamento de Sistemas da Computação aluizioa@cin.ufpe.br

Leia mais

Modelos Evolucionários e Tratamento de Incertezas

Modelos Evolucionários e Tratamento de Incertezas Ciência da Computação Modelos Evolucionários e Tratamento de Incertezas Aula 04 Representações e Programação Genética Max Pereira Representações A representação cromossômica é completamente arbitrária.

Leia mais

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor:

GAs são indicados em problemas complexos de otimização- onde se busca uma solução melhor: Componentes de um Algoritmo Genético 1. Problema 2. Representação 3. Decodificação 4. Avaliação 5. Operadores 6. Técnicas 7. Parâmetros 1. PROBLEMA GAs são indicados em problemas complexos de otimização-

Leia mais

Escalonador de Ordens de Produção Utilizando Algoritmos Genéticos

Escalonador de Ordens de Produção Utilizando Algoritmos Genéticos Escalonador de Ordens de Produção Utilizando Algoritmos Genéticos Nome: Wilian Kohler Supervisor na FURB: Prof. Jomi Fred Hübner Orientador na Empresa: Evaldo Moresco Jr. Empresa: Metalúrgica Siemsen Ltda.

Leia mais