programação genética recorrente aplicada ao problema

Propaganda
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
PRESA-PREDADOR
Ijuí
2015
JANIEL CERETTA FOLETTO
PROGRAMAÇÃO GENÉTICA RECORRENTE APLICADA
AO PROBLEMA PRESA-PREDADOR
Trabalho apresentado ao curso de Ciência
da Computação da Universidade Regional
do Noroeste do Estado do Rio Grande do
Sul , como requisito para a obtenção do
título de Bacharel em Ciência da Computação.
Orientador: Edson Luiz Padoin
Ijuí
2015
JANIEL CERETTA FOLETTO
PROGRAMAÇÃO GENÉTICA RECORRENTE APLICADA
AO PROBLEMA PRESA-PREDADOR
Trabalho apresentado ao curso de Ciência
da Computação da Universidade Regional
do Noroeste do Estado do Rio Grande do
Sul , como requisito para a obtenção do
título de Bacharel em Ciência da Computação.
Trabalho aprovado. Ijuí, 14 de dezembro de 2015:
Edson Luiz Padoin
Orientador
Romário Lopes Alcântara
Banca
Ijuí
2015
Dedico este trabalho aos meus pais
Gilberto Foletto e Gerlise Foletto, que sempre me
apoiaram em toda a caminhada durante a
realização do Trabalho de Conclusão de Curso,
bem como para superar todas as
dificuldades durante a graduação.
AGRADECIMENTOS
Agradeço primeiramente Deus, que nos dá a vida e a saúde para que consigamos desenvolver a determinação e o foco para alcançar os objetivos.
Agradeço também aos meus pais, Gilberto Foletto e Gerlise Foletto que sempre
me deram força e coragem para superar as dificuldades e superar cada etapa.
Também agradeço ao professor Rogério Martins que me apresentou a ideia
para realizar este projeto. Também agradeço ao professor Edson Padoin que foi meu
orientador durante o desenvolvimento do projeto, trazendo muitos benefícios devido as
trocas de ideias e as correções que aumentaram a credibilidade do projeto.
Por fim, agradeço a todos os meus colegas que estiveram comigo no processo
de desenvolvimento desse projeto. Tanto por me auxiliar em dúvidas técnicas, como
também me proporcionar motivação para que conseguisse finalizá-lo.
"Sentir é criar.
Sentir é pensar sem ideias,
e por isso sentir é compreender,
visto que o Universo não tem ideias"
(Fernando Pessoa)
RESUMO
A programação genética possui um papel muito importante quando necessita-se resolver problemas com campo de possibilidades muito grandes. Mesmo que a solução não
seja ótima, o tempo para a solução, comparado com uma técnica de força bruta, é um
dos fatores que tornam a sua utilização interessante. Como utiliza-se informações de
campo global e não apenas local, as soluções encontradas podem ser as mais diversas
possíveis, até podendo encontrar respostas que um ser humano dificilmente obteria. O
presente trabalho realiza a modelagem e a implementação da técnica de programação
genética recorrente, para a partir da evolução do agente realizar testes dentro do ambiente denominado presa-predador. Após os testes serão apresentados os resultados,
buscando analisar a eficácia da técnica de programação genética recorrente.
Palavras-chaves: Inteligência Artificial, Programação Genética Recorrente, PresaPredador.
ABSTRACT
Genetic programming has a very important part when you need to resolve issues with
field of very great possibilities. Even if the solution is not great, the time for the solution,
compared to a brute-force technique, is one of the factors that make your interesting
use. As is used global field of information and not only local, the solutions found can be
the most diverse possible until being able to find answers that a human being hardly
would get. The present work makes the modeling and implementation of recurrent
genetic programming technique for from the evolution of the agent conduct tests into
the environment called predator-prey. After testing the results will be presented, trying
to analyze the effectiveness of recurring genetic programming technique.
Keywords: Artificial Intelligence, Genetic Programming Recurring, Prey-Predator
LISTA DE ILUSTRAÇÕES
Figura 1 – Representação de Uma Expressão Matemática Utilizando Árvore
Sintática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 2 – Estrutura Básica do Algoritmo de Programação Genética . . . . . .
Figura 3 – Representação da Seleção Através do Método da Roleta Viciada . .
Figura 4 – Exemplo de uma Representação onde o PBIL é Combinado à Programação Genética . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 5 – Cenário do Problema Presa-Predador . . . . . . . . . . . . . . . . .
Figura 6 – Ações Possíveis para a Presa e para o Predador . . . . . . . . . . .
Figura 7 – Tela para Realizar a Evolução do Predador . . . . . . . . . . . . . .
Figura 8 – Tela para Realizar os Testes da Evolução do Predador . . . . . . . .
Figura 9 – Comparativo da Evolução das Percepções Absoluta, Relativa e Relativa com Memória com População de 100 Indivíduos . . . . . . . . .
Figura 10 – Comparativo da Evolução das Percepções Absoluta, Relativa e Relativa com Memória com População de 200 Indivíduos . . . . . . . . .
16
18
20
30
33
35
38
39
46
48
LISTA DE TABELAS
Tabela 1 – Percepção Absoluta com 100 Indivíduos . . . . . . . . . . . . . . . .
Tabela 2 – Percepção Relativa com 100 Indivíduos . . . . . . . . . . . . . . . .
Tabela 3 – Percepção Relativa Utilizando Variáveis de Memória com 100 Indivíduos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabela 4 – Percepção Absoluta com 200 Indivíduos . . . . . . . . . . . . . . . .
Tabela 5 – Percepção Relativa com 200 Indivíduos . . . . . . . . . . . . . . . .
Tabela 6 – Percepção Relativa Utilizando Variáveis de Memória com 200 Indivíduos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
43
43
44
45
45
LISTA DE ABREVIATURAS E SIGLAS
AG
Algoritmo Genético
ERC
Ephemeral Random Constants
IDE
Integrated Development Environment
PBIL
Population-Based Incremental Learning
PG
Programação Genética
SUMÁRIO
1
INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2
2.1
2.1.1
2.1.2
2.1.3
2.1.4
2.2
2.2.1
2.2.2
15
15
19
19
21
22
22
23
23
2.4.4
ESTADO DA ARTE . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programação Genética . . . . . . . . . . . . . . . . . . . . . . . . .
Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Seleção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Módulo de População . . . . . . . . . . . . . . . . . . . . . . . . . . .
Agentes Inteligentes . . . . . . . . . . . . . . . . . . . . . . . . . .
Ambientes Parcialmente Observáveis . . . . . . . . . . . . . . . . . .
Agentes Inteligentes Reativos com Estado Interno . . . . . . . . . . .
Agentes Reativos Simples . . . . . . . . . . . . . . . . . . . . . . . . . . .
Agentes Baseados em Modelos . . . . . . . . . . . . . . . . . . . . . . . .
Agentes Baseados em Objetivos . . . . . . . . . . . . . . . . . . . . . . . .
Agentes Baseados em Utilidades . . . . . . . . . . . . . . . . . . . . . . .
Sistemas Dinâmicos . . . . . . . . . . . . . . . . . . . . . . . . . . .
Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . .
Programação Genética Aplicada ao Problema Presa-Predador . . . .
Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aplicação de Redes Neurais Recorrentes em Ambientes Parcialmente
Observáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Híbrido de Programação Genética com Variante de PBIL . . . . . . .
Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comparação Entre os Trabalhos Apresentados e o Projeto Proposto
3
3.1
3.2
3.2.1
3.2.2
3.2.3
MODELAGEM E IMPLEMENTAÇÃO
Problema Presa-Predador . . . . .
Ambiente de Simulação . . . . . . .
Mapa . . . . . . . . . . . . . . . . . .
Coordenada . . . . . . . . . . . . . .
Ação . . . . . . . . . . . . . . . . . .
2.2.2.1
2.2.2.2
2.2.2.3
2.2.2.4
2.3
2.4
2.4.1
2.4.1.1
2.4.1.2
2.4.2
2.4.2.1
2.4.2.2
2.4.3
2.4.3.1
2.4.3.2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
24
24
24
25
25
25
25
26
27
28
28
29
29
30
30
32
32
33
34
34
34
3.2.4
3.2.5
3.2.6
.
.
.
.
.
.
.
.
.
34
35
35
41
4.3
4.4
RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resultados da Evolução do Predador com População de 100 Indivíduos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Predador com Percepção Absoluta do Ambiente . . . . . . . . . . . .
Predador com Percepção Relativa do Ambiente . . . . . . . . . . . .
Predador com Percepção Relativa do Ambiente Utilizando Variáveis
de Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resultados da Evolução do Predador com População de 200 Indivíduos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Predador com Percepção Absoluta do Ambiente . . . . . . . . . . . .
Predador com Percepção Relativa do Ambiente . . . . . . . . . . . .
Predador com Percepção Relativa do Ambiente com Variáveis de
Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Análise dos Resultados Obtidos . . . . . . . . . . . . . . . . . . .
Considerações Sobre os Resultados . . . . . . . . . . . . . . . . .
5
5.1
CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
50
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
3.2.6.1
3.2.6.2
3.2.6.3
3.2.6.4
3.2.7
3.3
4
4.1
4.1.1
4.1.2
4.1.3
4.2
4.2.1
4.2.2
4.2.3
Personagem . . . . . .
Arbusto . . . . . . . . .
Presa . . . . . . . . . .
Classe PresaArbusto . . .
Classe PresaFoge . . . .
Classe PresaParada . . .
Classe PresaRandom . . .
Predador . . . . . . . .
Interface . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
36
36
36
36
37
42
42
43
43
44
44
44
45
46
47
1 INTRODUÇÃO
A programação genética é uma técnica pertencente ao grupo dos algoritmos
evolucionários, e é uma evolução dos algoritmos genéticos. Ela consiste em aplicar a
teoria da evolução das espécies de Darwin (1959). A programação genética realiza a
busca de soluções para problemas através de etapas, onde são aplicados os operadores genéticos à uma determinada população. Essas etapas são repetidas até que seja
encontrada uma solução próxima a ótima.
A implementação de um agente reativo simples utilizando programação genética é muito eficiente quando este agente está inserido em um ambiente completamente
observável. Porém, quando se trata de um ambiente parcialmente observável, este
agente seria falho, porque não conseguiria resolver parte dos problemas desse ambiente.
Para o caso citado, o agente deve possuir um estado interno, ou seja, além das
percepções atuais do ambiente, ele também possuiria um histórico das ações efetuadas
anteriormente. Com isso, quando as percepções do estado atual do ambiente não
forem suficientes para resolver o problema, o agente utilizaria os dados das percepções
anteriores.
A implementação do agente inteligente utilizando programação genética possui
uma vantagem muito interessante. A estrutura do agente pode ser adaptada a muitos
problemas com alta complexidade. Isso é proveniente da simplicidade que essa técnica
possui.
Este trabalho tem o objetivo de aplicar a técnica de programação genética
recorrente para solucionar problemas em ambientes parcialmente observáveis. O qual
será representado pelo ambiente do problema presa-predador.
O presente trabalho irá apresentar a modelagem e implementação de um
agente inteligente utilizando programação genética recorrente. Esse trabalho será
desenvolvido para atender as especificações do problema presa-predador. Este será
encarregado de encontrar as soluções próximas as ótimas, para realizar a captura da
presa.
Conforme Friske (2013, p. 15), 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. Sendo que quanto mais rápido é realizada a captura
da presa, mas eficiente é o agente implementado no predador.
14
O trabalho está organizado em 5 capítulos. Inicialmente, no Capítulo 2 será
apresentado o estado da arte, trazendo conceitos envolvendo inteligencia artificial,
principalmente no que diz respeito à programação genética, ambientes parcialmente
observáveis, agentes inteligentes e os trabalhos que estão relacionados ao presente
trabalho.
No Capítulo 3 será apresento a modelagem e a implementação do ambiente
e dos personagens do problema presa-predador. Neste capítulo serão descritas as
etapas do desenvolvimento da aplicação.
Posteriormente no Capítulo 4 serão apresentados os resultados obtidos, bem
como uma análise do desempenho da técnica de programação genética recorrente. Por
fim, no Capítulo 5 serão apresentadas as considerações finais acerca dos resultados
obtidos, bem como a sugestão para trabalhos futuros.
2 ESTADO DA ARTE
Quando encontramos cenários pequenos, onde temos a percepção de todas as
ações possíveis, ao aplicar um algoritmo que irá analisar todas as situações possíveis,
obtém-se um resultado ótimo. Porém nesses algoritmos, junto com o aumento das
possibilidades, há também o aumento do tempo do processamento e também do
espaço utilizado. Sendo que muitas vezes não contamos com esse tempo.
Uma das solução para este problema, pode ser por exemplo a busca de uma
rota dentro de um mapa. Calcular todas as rotas possíveis tentando buscar a melhor
não seria algo viável. Dependendo do mapa, o algoritmo ficaria nessa busca por anos.
Com isso, busca-se outra solução para esses problemas. Para eles então podem
ser aplicadas heurísticas, que são métodos que buscam soluções para problemas
complexos de forma simplificada (FRISKE, 2013, p. 17). Com elas obtêm-se respostas
próximas a ótima, não necessariamente sendo a melhor solução. Porém o tempo para
encontrar a solução é muito menor do que o utilizado por um método de força bruta,
tornando sua solução viável.
Ao implementar soluções para problemas, busca-se sempre otimizar este
processo. Para Martínez (1998, p. 01) a otimização 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. Nada mais é do que diminuir os fatores como tempo,
espaço e processamento, para obter melhores resultados.
As heurísticas são constituídas de regras assentadas na experiência e planejamento. Elas utilizam estratégias e métodos de aproximação sempre com o intuito de
chegar ao fim com a melhor solução possível. Segundo (FRISKE, 2013 apud BECCENERI, 2013), as heurísticas buscam assemelhar-se com a forma em que o ser humano
raciocina, garantindo assim soluções rápidas e cabíveis, o que torna as heurísticas
muito eficientes.
2.1
Programação Genética
Os algoritmos evolucionários são métodos de otimização baseados nos mecanismos de evolução das espécies. Os mais conhecidos são os algoritmos genéticos
e a programação genética. Conforme Pacheco (1999, p. 01) os AG são algoritmos
probabilísticos que fornecem um mecanismo de busca paralela e adaptativa baseado
no princípio de sobrevivência dos mais aptos e na reprodução. Assim, os mais aptos
16
compõem as próximas populações, através de processos de seleção, recombinação e
mutação.
Os algoritmos genéticos são uma técnica de busca extremamente eficiente no
seu objetivo de varrer o espaço de soluções e encontrar soluções próximas da solução
ótima, quase sem necessitar interferência humana. Uma das características positivas
dos AG é o fato do seu algoritmo utilizar informações globais e não apenas locais
(LINDEN, 2011, p. 05).
O AG cria uma população de respostas possíveis para um determinado problema, após isso, ele submete essa população aos processos de evolução. Esse
processo é formado basicamente pela avaliação, que calcula a aptidão de cada indivíduo da população. Outro processo é a evolução, no qual os indivíduos da população
serão selecionados, levando em consideração os valores obtidos na avaliação. Após
selecionar os indivíduos eles são submetidos ao processo de cruzamento, no qual eles
são recombinados e com isso geram novos indivíduos (RODRIGUES, 2002, p. 22).
Os indivíduos são compostos por uma árvore sintática que possui a representação do programa para a possível solução do problema. Essa árvore possui um nó
raiz e dele derivam os nós filhos. Estes nós filhos possuem outros nós filhos e assim
segue até chegar aos nós folhas, que são os últimos nós de cada ramificação da árvore
(RODRIGUES, 2002, p. 08).
Na Figura 1 é apresentado um exemplo de árvore sintática. Ela está representando uma expressão matemática. Nela pode ser visualizado o nó raiz, os nós
intermediários e os nós folhas que foram citados anteriormente.
Figura 1 – Representação de Uma Expressão Matemática Utilizando Árvore Sintática
Fonte: Friske (2013, p. 22)
A população é um conjunto de indivíduos. Para ser uma boa população, ela
deve possuir a diversidade entre os indivíduos. A primeira geração (primeiros indivíduos
gerados) devem ser simples. Eles são gerados aleatoriamente, para que a solução
não fique presa a uma fração do espaço. A aleatoriedade faz com que haja uma
17
melhor distribuição da solução pelo espaço. Com essa simplicidade a evolução irá ser
direcionada para a melhor solução (SOUZA, 2006, p. 27).
Depois da recombinação os indivíduos passam pela mutação, que altera as
características dos indivíduos para adicionar variedade à população. Por fim, a população é atualizada, ou seja, os novos indivíduos gerados são inseridos a nova população.
Após isso ocorre o processo de finalização, onde é avaliado se os objetivos foram
atingidos. Caso foram atingidos a execução é encerrada, caso contrário a população
retorna para um novo processo de avaliação.
A PG é um aprimoramento do algoritmo genético. A principal diferença nos
processos de cada um deles é o fato de que nos AG ocorre a evolução de cromossomos
simples. Estes são representados por números binários, já na PG ocorre a evolução de
funções. A programação genética é uma técnica em que os indivíduos são programas
computacionais (SOUZA, 2006, p. 27). Sendo que a sobrevivência se dá com um
percentual maior dos indivíduos mais aptos e as características são passadas de
geração em geração.
Conforme Rodrigues (2002, p. 01) o paradigma da programação genética foi
desenvolvido por John Koza. Ele desenvolveu programas baseados em AG, e chamou
sua técnica de programação genética. Inicialmente foi utilizado LISP para desenvolver
os programas, devido ao fato de que nessa linguagem pode ser utilizado a estrutura de
árvore, a qual é utilizada na PG.
O mesmo autor fala que,
A técnica se baseia na combinação de ideias da teoria da evolução (seleção natural), genética (reprodução, cruzamento e mutação), inteligência
artificial (busca heurística) e teoria de compiladores (representação de
programas como árvores sintáticas) (RODRIGUES, 2002, p. 08).
E cita que,
A programação genética é um algoritmo que busca, dentre um espaço
relativamente grande porém restrito de programas de computador, uma
solução ou, pelo menos, uma boa aproximação para resolver determinado problema (RODRIGUES, 2002 apud BRUCE, 1995).
A programação genética é uma técnica muito interessante porque o seu desempenho pode superar o resultado obtido por uma pessoa. Isso pode ocorrer devido ao
fato de não se prender a paradigmas existentes. A variação nas suas respostas é muito
grande, podendo encontrar soluções para problemas que uma pessoa dificilmente
encontraria.
18
Figura 2 – Estrutura Básica do Algoritmo de Programação Genética
Fonte: Rodrigues (2002, p. 11)
A Figura 2 mostra que o algoritmo genético inicia com a criação da população inicial e passa pelos critérios de avaliação, seleção e evolução. Na avaliação
os indivíduos recebem o fitness e então é analisado se a condição de parada já foi
atingida. Já na seleção, são escolhidos alguns indivíduos dentro da população e por
fim são aplicados os operadores para evoluir o indivíduo. O algoritmo é repetido até
o momento em que o critério de término for atingido, e então é retornado a melhor
solução encontrada.
O algoritmo da PG segue basicamente a mesma ideia do algoritmo genético.
Inicialmente é criada uma população de forma aleatória, isso porque ela deve possuir a
maior diversidade possível. Depois disso a população é analisada para verificar o quão
próximo da solução ela se encontra. Após isso cada indivíduo da população é avaliado,
aos mais aptos são aplicados os operadores genéticos, sendo eles a reprodução,
mutação e cruzamento. Os indivíduos resultantes formam a próxima população. Essas
19
etapas são repetidas até o momento em que a aptidão dos indivíduos satisfizerem a
condição de parada. Ou seja, são aptos para resolverem o problema.
2.1.1
Avaliação
A função fitness, realiza a avaliação dos indivíduos da população para resolver
um determinado problema. Ela pode retornar o maior valor para a melhor avaliação ou
o menor valor para a melhor avaliação.
Essa função deve estar bem definida pois ela é muito importante para que o
algoritmo chegue a uma boa solução. Para isso ela deve possuir o máximo possível de
conhecimento sobre o problema, pois dessa forma ela avaliará com maior exatidão os
indivíduos mais aptos a resolver o problema (GALASTRI, 2003, p. 20).
2.1.2
Seleção
Independente da avaliação que cada indivíduo obteve, sendo ela alta ou baixa,
nenhum deles será desprezado. A diferença é que os mais aptos terão maior chance
de se reproduzirem, da mesma forma do que foi descrito por Darwin (1959) em sua
teoria (SOUZA, 2006, p. 27).
Se houvesse a retirada dos indivíduos menos aptos, a população tenderia a ter
indivíduos cada vez mais semelhantes. Isso restringiria a diversidade da população,
caracterizando com isso a convergência genética. Assim a população ficaria presa a
um espaço restrito de soluções, tendo então uma busca local e não a global. Dessa
forma uma técnica comum de busca seria capaz de resolver o problema (GALASTRI,
2003, p. 22).
Dos métodos de seleção natural pode-se citar a roleta viciada, o método de
classificação ou ranking e o método de torneio. Os quais serão descritos na sequência.
O método da roleta viciada funciona da seguinte forma: primeiramente os
indivíduos são evoluídos e avaliados. A partir dos dados obtidos na avaliação, é criada
uma roleta virtual. Ela é dividida entre os indivíduos da população de forma proporcional
a aptidão obtida. Sendo assim, o indivíduo que possuir o melhor resultado terá a maior
fatia da roleta, e o que possuir a menor aptidão possuirá a menor fatia. Na Figura 3
está representada essa divisão, ela mostra o percentual que cada indivíduo recebe,
proporcionalmente ao valor do fitness.
Na sequência é iniciado o processo de seleção, que é executado rodando a
roleta. A fatia, correspondente a cada indivíduo, em que a roleta parar será selecionado.
Com isso os indivíduos que possuem melhor avaliação tem as maiores chances de
20
Figura 3 – Representação da Seleção Através do Método da Roleta Viciada
Fonte: Galastri (2003, p. 23)
serem selecionados. O que não impede os indivíduos pior classificados de serem
selecionados.
O maior problema da roleta viciada é o fato de que quando a avaliação possui
grande disparidade, esses indivíduos muito bem classificados terão uma chance muito
grande de serem selecionados, levando a solução a ficar presa a apenas uma fração
do espaço e não uma solução global (FRISKE, 2013, p. 23).
Já o método de classificação ou ranking, classifica a população a partir do seu
fitness e após atribui um valor de adequação. Por exemplo, o indivíduo menos apto
recebe classificação 1, o segundo menos avaliado recebe 2 e assim por diante. Com
isso as chances dos indivíduos piores avaliados estão mais próximas aos indivíduos
melhores avaliados, tornando as chances de seleção de indivíduos menos aptos maior
(FRISKE, 2013, p. 23).
21
Assim o problema que existia na roleta viciada é solucionado, porque não
haverá diferenças gritantes entre cada avaliação. Porém com isso o aproveitamento
dos indivíduos com fitness mais alto é menor. Dessa forma os indivíduos selecionados
não necessariamente serão os melhores, podendo sua maioria possuir classificação
baixa.
O método de torneio utiliza a disputa direta entre os indivíduos. Essa disputa
recebe um valor k, que representa o número de participantes. Os participantes de cada
rodada são sorteados aleatoriamente. Ganha a “batalha” o indivíduo que possuir o
maior fitness. O valor de k deve ser maior do que 2, isso para que haja disputa, mas
também não deve ser muito alto, pois isso faria com que ele ficasse semelhante ao
método da roleta viciada.
Com esse método, os indivíduos melhores avaliados, sempre que entrarem
em uma disputa vencerão. O seja, a cada disputa o melhor indivíduo será selecionado,
com isso o método fica mais eficaz. Porque com essa abordagem, o método favorece
tando os indivíduos melhores avaliados, quanto os de menor avaliação, diminuindo
assim o risco de uma convergência genética.
2.1.3
Operadores
Depois que os indivíduos são avaliados e selecionados, eles passam pelos
operadores genéticos, sendo eles a mutação e o crossover, os quais serão descritos
na sequência.
Para manter uma variabilidade genética dentro da população, utiliza-se o
método de mutação. Este nada mais é do que atribuir aos indivíduos características
extras das recebidas dos pais e antecessores. Com isso os indivíduos podem possuir
características que não existem em seus antecessores.
Esse processo busca simular a mutação genética dos indivíduos. São alterados
alguns nós da árvore de expressões. Essas alterações ocorrem de forma aleatória, a
mutação não deve ser aplicada a todos os indivíduos, assim como ocorre na vida real,
onde não ocorre com ampla frequência. Com isso a probabilidade de cada indivíduo
passar pela mutação deve ser pequena, até mesmo para não perder a essência da
programação genética.
Mesmo com a mutação, os indivíduos devem manter predominantemente as
características dos seus antecessores. Assim a população irá possuir variabilidade sem
perder as suas características básicas. Se a mutação fosse frequente, a população seria
construída com uma aleatoriedade muito grande, diminuindo a precisão na resolução
de determinado problema.
22
Já no operador crossover ocorre a troca das informações entre os indivíduos,
gerando com isso dois novos indivíduos. Isso faz com que os novos indivíduos gerados
possuam as características semelhantes aos “pais” e seus antecessores. Esse processo
busca simular a reprodução sexuada natural entre os indivíduos .
Os indivíduos da população são formados por árvores sintáticas, o crossover
seleciona de forma aleatória um nó de cada um dos indivíduos e faz um corte no
mesmo, gerando assim uma subárvore. Estas são fundidas umas as outras pelo ponto
de corte de cada uma. Assim ocorre uma troca de informações uniforme entre os
indivíduos.
2.1.4
Módulo de População
Para manter a simplicidade da população, esta não deve ter o aumento no
número de indivíduos. Com isso os processos descritos anteriormente serão aplicados
a população até o momento em que o número de indivíduos gerados atingirem o
tamanho da população. Após isso a população atual é substituída pela nova população.
Outros métodos também são utilizados para a criação da nova população,
sendo eles o método Steady State, o Elitismo e também o de Populações de Tamanhos
Diferentes. No caso do método Steady State a população antiga não é totalmente
descartada, novos indivíduos são criados aos poucos e os piores pais são descartados
(FRISKE, 2013, p. 27).
No método de Elitismo os melhores indivíduos são mantidos para a próxima
geração. Isso acaba fazendo com que haja a garantia que os indivíduos mais aptos não
se percam. Já no método de Populações de Tamanhos Diferentes o indivíduo apenas é
descartado quando atinge seu tempo limite de vida, ou seja mesmo que ele possua
avaliação ruim, só sairia da população quando ficasse “velho” (FRISKE, 2013, p. 27).
2.2
Agentes Inteligentes
Segundo Russel e Norvig (2004, p. 33) um agente é tudo o que pode ser
considerado capaz de perceber seu ambiente por meio de sensores e de agir sobre
esse meio por intermédio de atuadores. Ou seja, o agente a partir das percepções
obtidas do ambiente, realiza ações sobre esse meio.
O comportamento do agente é dado pela função de agente. Conforme Russel
e Norvig (2004, p. 34) ela mapeia qualquer sequência de percepções específica para
uma ação. Esta função de agente será implementada em um agente artificial por um
23
programa de agente. Para Russel e Norvig (2004, p. 34) a função de agente é uma
descrição matemática abstrata; o programa de agente é uma implementação concreta,
relacionada à arquitetura do agente.
2.2.1
Ambientes Parcialmente Observáveis
Conforme Russel e Norvig (2004, p. 41) um ambiente de tarefa é de fato
completamente observável se os sensores destacam todos os aspectos que são
relevantes para a escolha da ação. Em outras palavras, o agente possui conhecimento
sobre todo o ambiente ou mundo em que está inserido. Russel e Norvig (2004, p.
41) dizem ainda que ambientes completamente observáveis são convenientes porque
o agente não precisa manter qualquer estado interno para controlar o mundo. Isso
decorre do fato de o agente possuir conhecimento total sobre o ambiente.
Quando o agente não possui conhecimento completo sobre o ambiente, este é
parcialmente observável. Segundo Russel e Norvig (2004, p. 41) um ambiente poderia
ser parcialmente observável devido ao ruído e a sensores imprecisos ou porque partes
do estado estão simplesmente ausentes nos dados do sensor. Com isso, ao contrário
dos ambientes completamente observáveis, o agente necessita de estado interno para
controlar o mundo.
2.2.2
Agentes Inteligentes Reativos com Estado Interno
Os programas de agente implementam a função de agente. Eles podem ser divididos em quatro tipos. Sendo eles agentes reativos simples, agentes reativos baseados
em modelo, agentes baseados em objetivos e agentes baseados em utilidades (RUSSEL; NORVIG, 2004, p. 54). Estes agentes serão descritos com maior profundidade
nos itens que seguem.
2.2.2.1
Agentes Reativos Simples
Para um ambiente completamente observável, a implementação de um agente
reativo simples consegue resolver os problemas desse meio. Ele é o tipo mais simples de agente. O histórico das percepções é ignorado, ele apenas leva em conta a
percepção atual. Com isso, a sua inteligência é limitada, só podendo ser aplicado em
determinados ambientes, sendo estes simples.
24
2.2.2.2
Agentes Baseados em Modelos
Os agentes reativos baseados em modelos partem do pressuposto de conseguir reagir dentro de um ambiente em que não possui conhecimento total. Este tipo
deve manter estado interno. Com isso, o agente consegue obter os aspectos que não
podem ser observados.
Nesse tipo de agente é importante a atualização das informações internas,
sendo necessário que dois tipos de conhecimento sejam implementados ao agente.
Conforme Russel e Norvig (2004, p. 48), inicialmente é necessário que sejam guardadas
informações sobre o modo que o mundo evolui independente do agente. Ou seja, o que
está sendo modificado no mundo. Os mesmos autores citam que precisa-se também
de algumas informações sobre como as ações do próprio agente afetam o mundo
(RUSSEL; NORVIG, 2004, p. 48).
2.2.2.3
Agentes Baseados em Objetivos
Os agentes baseados em objetivos, além de possuírem a informação sobre o
estado atual do ambiente, também contém informações sobre os objetivos, que são as
descrições das situações desejáveis.
Segundo Russel e Norvig (2004, p. 49),
O programa do agente pode combinar isso com informações sobre
os resultados de ações possíveis (as mesmas informações que foram
usadas para atualizar o estado interno no agente reativo), a fim de
escolher ações que busquem o objetivo.
Esse agente tem a característica de ser flexível, o fato de ter a base em
objetivos, faz com que a representação deste seja dada de forma explícita. Com isso,
quando essa informação precisar ser modificada, todos os comportamentos relevantes
seriam alterados. O que não ocorre com agentes reativos, em que teriam que ser
modificadas muitas regras.
2.2.2.4
Agentes Baseados em Utilidades
Os agentes baseados em utilidades, basicamente verificam qual ação terá
maior utilidade. Para as ações é associado um grau de felicidade. Conforme Russel
e Norvig (2004, p. 50), uma especificação completa da função de utilidade permite
decisões racionais em dois tipos de casos que os objetivos são inadequados. Esses
casos seriam, quando existem objetivos contraditórios e quando existem vários objetivos
25
que se deseja alcançar e nenhum deles pode ser atingido (RUSSEL; NORVIG, 2004, p.
50).
2.3
Sistemas Dinâmicos
Sistemas dinâmicos são basicamente processos que mudam no tempo e no
espaço. Esses sistemas possuem um comportamento imprevisível, sendo que podem
modificar-se de forma quase que aleatória no tempo ou no espaço. Sendo assim, a
modelagem desses ambientes tem sua aplicação muito interessante em simulação e
otimização.
Conforme Medeiros (2006, p. 47), o modelo matemático é a forma convencional
para estudar um sistema físico e consiste em uma representação matemática deste
sistema. Segundo o mesmo autor, ela é normalmente representada através de um
conjunto de equações diferenciais. A partir de um modelo matemático é possível
construir as etapas da resolução do sistema dinâmico (MEDEIROS, 2006, p. 47).
2.4
Trabalhos Relacionados
Nesta seção serão apresentados os trabalhos relacionados à inteligência
artificial e a programação genética. Inicialmente será apresentado um trabalho referente
à programação genética aplicada ao mesmo problema do presente trabalho, com a
variação do agente não possuir memória.
2.4.1
Programação Genética Aplicada ao Problema Presa-Predador
Este é um Trabalho de Conclusão de Curso desenvolvido por Friske (2013). Ele
apresenta a construção de agentes inteligentes utilizando a programação genética. O
agente foi evoluído para ser utilizado no problema presa-predador, buscando soluções
próximas às ótimas. No caso desse problema as melhores soluções envolvem a captura
da presa.
2.4.1.1
Implementação
O ambiente de simulação que aplica o problema presa-predador possui os
subgrupos Ambiente e Simulação. O ambiente define as características do plano onde
a presa e os predadores irão atuar. A simulação é a responsável por realizar a interação
entre os personagens dentro do plano.
26
O ambiente possui quatro predadores, eles são programados através da evolução realizada pela programação genética. Os predadores recebem por parâmetro
uma árvore de expressões gerada pela programação genética. Todos os predadores
recebem a mesma inteligência, ou seja todos os predadores possuem um mesmo nível
de evolução.
A simulação é composta por rodadas, a cada rodada todos os personagem são
processados e recebem novas posições, ou também se mantém na mesma posição.
Antes do início da simulação deve ser informado o número de rodadas. Com isso os
predadores possuem determinado limite de rodadas para capturar a presa.
Em cada simulação, caso os predadores capturem a presa, ela é encerrada
e retorna que a presa foi capturada. Dessa forma os predadores alcançaram seu
objetivo. Caso o número de rodadas seja finalizado ou os predadores fiquem parados,
é retornado que a presa não foi capturada. Nesse caso os predadores não alcançaram
seu objetivo.
A Evolução é iniciada com a criação de n indivíduos. A população inicial é
composta por indivíduos simples, sendo que foram gerados de forma aleatória. O
indivíduo é criado utilizando a expressão inicial CASE. Esta condição contém apenas
uma condição e uma alternativa.
2.4.1.2
Resultados
Para a realização dos testes foi utilizando um notebook com processador Intel
Core i7 (2, 20 GHz) e 8GB de memória). A evolução demorou aproximadamente 24
horas. Para o teste foram utilizadas 500 rodadas de simulação, o tamanho do mapa era
10 x 10, o máximo de gerações foi de 10000, o tamanho da população de 100 indivíduos
e a taxa de mutação em 0, 5% (FRISKE, 2013, p. 51).
Na primeira simulação o tipo de presa estática obteve resultados de captura
inferiores. Para Friske (2013, p. 52), isso ocorre devido ao fato de que quando a presa é
definida como estática. Em determinado momento da simulação, os predadores serão
orientados a não moverem-se ou realizar movimentos inúteis em looping.
Conforme Friske (2013, p. 53), ao existir uma presa aleatória ou dotada de
inteligência, o movimento da mesma proporcionará mais possibilidades de movimentos
dos predadores, facilitando a captura.
O próximo resultado a ser analisado tem por base a utilização de um mundo
com percepção relativa, nesse caso os predadores não tinham a localização total da
presa. Nessa simulação, a presa estática possuiu taxa de captura menor, assim como
no resultado com posição absoluta do mundo. No tipo de presa aleatória foi onde a
27
taxa de captura foi menor que no ambiente anterior, de acordo com Friske (2013, p. 53),
isso ocorre porque o valor final do fitness nessa avaliação apresentou-se maior.
O próximo resultado foi obtido com base em um mundo toroidal com a percepção de posição absoluta da presa. Os testes também foram realizados para os três
tipos de presa. Diferentemente dos resultados anteriores, nesse caso a presa estática
foi quem teve maior taxa de captura.
Para Friske (2013, p. 55) tal situação ocorre porque no mundo toroidal os
predadores nunca encontrarão um obstáculo (limite do mundo) para a captura da presa.
Essa característica pesou mais sobre a qualidade do programa gerado.
A última análise a ser realizada é sobre um mundo toroidal com a percepção
relativa da presa. Nessa simulação houve grande taxa de captura nas presas estática e
aleatória. Para Friske (2013, p. 56, 57) a taxa de captura para todos os tipos de presa é
superior ao cenário anterior, sendo que, a captura é feita facilmente com um número
de rodadas inferior a 250.
O motivo para a posição relativa ser mais eficiente conforme Friske (2013, p. 56,
57), é o fato de haver uma troca abrupta de posições dos personagens, tanto da presa
quanto dos predadores (caso do cenário anterior), facilitando as buscas por resultados
próximos ao ótimo.
Friske (2013, p. 57) conclui que a presa aleatória é a mais fácil de ser capturada.
Ele ainda fala que o mundo toroidal possibilita uma diversidade maior de movimentos
dos predadores, facilitando a captura da presa. Para o autor, a percepção de posição
relativa à presa auxilia na convergência mais eficiente na busca pela solução. Por fim
Friske (2013, p. 57) cita que na programação genética, a convergência do valor do
fitness tende a ser muito eficiente, apresentando sua maior variação entre a primeira e
a milésima geração.
2.4.2
Aplicação de Redes Neurais Recorrentes em Ambientes Parcialmente Observáveis
Este trabalho foi desenvolvido por Eldair Fabrício Dornelles, Henrique Augusto
Richter e Márcia Da Silva, todos alunos do Curso de Graduação em Ciência da Computação da UNIJUÍ. Também participaram do trabalho os professores orientadores
Rogério Samuel, Sandro Sawicki e Edson Luiz Padoin.
Este projeto tem como objetivo a modelagem e a implementação de um agente
inteligente para atuar em um ambiente parcialmente observável e analisar o desempenho da estrutura computacional especificada para o mesmo (DORNELLES et al., 2014,
28
p. 03). O agente inteligente foi estruturado utilizado redes neurais recorrentes, e utilizou
o algoritmo genéticos para fornecer os pesos sinápticos da rede neural.
2.4.2.1
Implementação
Com base na metodologia e implementação, será descrito o ambiente e a
estrutura do agente inteligente. O ambiente de tarefa utilizado para modelagem do
agente foi o jogo Mundo de Wumpus. O jogo consiste em uma caverna que possui
salas conectadas por passagens, e nessas existe um monstro (Wumpus) que emite
“fedor”. Apenas a sala onde está posicionado o agente não está conectada.
Cada sala possui 20% de chances de conter um poço, os quais emitem brisa às
salas adjacentes e em uma das salas tem ouro que emite brilho apenas na sala em que
se encontra (DORNELLES et al., 2014, p. 02). Este ambiente pode ser representado
em um ambiente 4 x 4, sendo que cada posição da matriz corresponde a uma sala.
Para otimizar o agente, para cada indivíduo da população do algoritmo genético
são definidos os pesos na rede neural (DORNELLES et al., 2014, p. 04). Isso configura
a inteligência do agente a ser testado. Para cada um dos agentes é inicializado o jogo
do Mundo de Wumpus, de modo que o jogo é finalizado se o agente desistir, encontrar
o ouro ou morrer (DORNELLES et al., 2014, p. 04). Foram realizados 100 execuções do
jogo para cada agente, com o objetivo de obter uma melhor precisão do desempenho
(DORNELLES et al., 2014, p. 04).
Quando a execução termina é retornada a pontuação média para o indivíduo
do algoritmo genético. Essa pontuação serve de base para definir a eficiência deste
indivíduo. Após isso, o algoritmo genético se encarrega da otimização dos pesos,
seguindo os seus critérios de evolução.
Após serem realizados alguns treinamentos do agente, variando as quantidades
de neurônios entre 10 e 500, foi adotado o número de 200 neurônios para a estrutura do
mesmo (DORNELLES et al., 2014, p. 04). O objetivo disso é proporcionar ao agente
certo nível de memorização, possibilitando ao mesmo aumentar sua capacidade de
aprendizado.
2.4.2.2
Resultados
Ao realizar os testes e analisar o desempenho do agente, observou-se que o
fato de o agente se mover pelo Mundo de Wumpus em busca do ouro, a probabilidade
de ser morto pelo Wumpus ou cair em algum poço, eram maiores do que encontrar e
agarrar o ouro (DORNELLES et al., 2014, p. 04). Isso acaba dificultando o aprendizado
29
do agente, devido ao fato do agente perceber que desistindo do jogo as chances de
obter maiores pontuações são maiores.
Dornelles et al. (2014, p. 05) afirma que as novas definições de medidas de
desempenho embora tenham proporcionado para o agente uma maior exploração
da caverna e a captura do ouro em alguns testes. Para o autor, tais alterações não
contribuíram para uma melhora significativa em seu desempenho. E ainda conclui que
a estrutura de rede neural utilizada nesse projeto dificultou a evolução do agente.
2.4.3
Híbrido de Programação Genética com Variante de PBIL
Este trabalho é um artigo desenvolvido por Gustavo Henrique Flores Caldas
e Roberto Schirru. Nele será combinado a programação genética com uma variante
do algoritmo PBIL. Segundo Caldas e Schirru (2005, p. 01), a programação genética
será combinada com o PBIL em um processo conhecido como co-evolução, onde uma
população de árvores evolui paralelamente com um vetor de probabilidades de PBIL.
2.4.3.1
Implementação
A evolução ocorre da seguinte forma: um vetor binário é gerado tendo por base
um vetor de probabilidades, depois disso as constantes codificadas no vetor binário
são adicionados na árvore. Na avaliação a aptidão é calculada com base apenas na
árvore. Conforme Caldas e Schirru (2005, p. 04), o valor da aptidão obtido dessa forma
é utilizado independentemente para se calcular as novas gerações de árvores e vetores
de probabilidades.
A Figura 4 mostra como os indivíduos serão representados. Como explica
Caldas e Schirru (2005, p. 04), a linha tracejada indica que associada a cada árvore
existe um vetor binário de tamanho fixo, ele será responsável pela codificação das
constantes.
De acordo com Caldas e Schirru (2005, p. 05), O algoritmo será comparado
com a técnica tradicional (ERC), utilizando apenas a programação genética. Com ERC
(Ephemeral Random Constants) substituem-se as constantes a, b e c por um gerador
aleatório de constantes no intervalo [−1, 1].
Com isso será possível fazer uma análise de qual dos métodos será mais
eficaz. Para os testes foram realizadas evoluções com uma população de 4000 indivíduos durante 1000 gerações (CALDAS; SCHIRRU, 2005, p. 05). Na sequência serão
apresentados os resultados obtidos com a realização dos teste.
30
Figura 4 – Exemplo de uma Representação onde o PBIL é Combinado à Programação
Genética
Fonte: Caldas e Schirru (2005, p. 04)
2.4.3.2
Resultados
A evolução da aptidão obtida pelo método PG com PBIL foi superior a obtida
pelo método ERC. Os valores foram obtidos com médias de 10 tentativas independentes.
Caldas e Schirru (2005, p. 05) ressaltam que para a combinação PG/PBIL, todas as
tentativas são bem sucedidas por volta da geração 300.
Os resultados obtidos pelo trabalho foram melhores em comparação com
o método tradicional. Conforme Caldas e Schirru (2005, p. 06), foram encontradas
soluções melhores e mais compactas, o que favorece a interpretação. Caldas e Schirru
(2005, p. 06) ainda ressaltam que as soluções encontradas com o emprego da nova
técnica são todas exatas, e não meras aproximações como de costume.
2.4.4
Comparação Entre os Trabalhos Apresentados e o Projeto
Proposto
Tanto no trabalho apresentado sobre programação genética com variante de
PBIL quanto no trabalho sobre a aplicação de redes neurais recorrentes em ambientes
parcialmente observáveis, foram aplicadas a técnica de PG combinada com outro
método. Neles os algoritmos evolucionários foram utilizados para obter um pedaço da
solução.
O trabalho que trata de redes neurais buscou resolver o problema para ambientes parcialmente observáveis, assim como é proposto no presente trabalho. Porém
nele o algoritmo genético foi utilizada apenas para obter os pesos na rede neural.
No trabalho sobre PG combinada com PBIL, é utilizado um vetor de probabilidades que é utilizado para gerar a árvore. Isso para depois obter a aptidão a partir da
31
evolução da população.
O trabalho que apresenta a utilização de programação genética aplicada ao
problema presa-predador é o que mais se aproxima com o método proposto por esse
trabalho. Nele apenas não existe recorrência. O ambiente de simulação também é
muito semelhante, apesar de levar o mesmo nome, existem variações com o cenário
modelado no presente trabalho.
O problema presa-predador utilizado por Friske (2013) possui quatro predadores, que tem o objetivo de cercar a presa. No caso do problema presa-predador
utilizado no presente trabalho, existe apenas um predador, e ainda o cenário possuí
arbustos, em que a presa pode se esconder.
No Capítulo 3 será apresentada a modelagem e a implementação do cenário e do método de programação genética recorrente. Também serão descritos os
personagens e as formas com que eles interagem com o ambiente.
3 MODELAGEM E IMPLEMENTAÇÃO
Este capítulo irá descrever a modelagem e implementação do projeto apresentado neste trabalho. Serão apresentados o ambiente de simulação presa-predador e o
modelo de programação genética utilizada para evoluir o predador.
O projeto será desenvolvido utilizando a linguagem JAVA na versão 1.8, utilizando o ambiente de desenvolvimento NetBeans IDE na versão 8.0.2. O projeto está
dividido em evolução e simulação. Na evolução são aplicados os operadores genéticos
ao predador a fim de torná-lo capaz de capturar a presa. Na simulação são realizados
testes a partir do predador evoluído com a finalidade de obter o seu desempenho em
diferentes ambientes de simulação gerados aleatoriamente.
3.1
Problema Presa-Predador
O problema presa predador é um modelo proposto por Miroslav Benda (SCHüLER, 2002 apud KORF, 1992), ele é composto pelo ambiente e os personagens presa
predador. Este problema possui muitas variação, sendo implementado da forma que
melhor se encaixa a situação que se deseja simular.
Para Schüler (2002, p. 84),
O termo “Predador e Presa” também referenciado como problema da
perseguição (do inglês, Pursuit Problem) é usado para designar diferentes problemas que normalmente envolvem agentes do tipo predador que
perseguem ou comem os agentes do tipo presa. O que frequentemente
muda de um modelo de “Predador e Presa” para o outro é a forma como
os agentes agem e percebem o seu ambiente assim como o próprio
ambiente.
Dessa forma dependendo do problema os agentes são criados mantendo o
conceito básico de um agente que tenta capturar, denominado predador, e um agente
que tenta fugir, denominado presa. Para o presente trabalho será utilizada a seguinte
abordagem:
O problema possui um ambiente que é um mapa de coordenadas x e y sendo
elas finitas. O tamanho desse mapa pode variar dependendo do teste a ser realizado.
33
3.2
Ambiente de Simulação
O ambiente de simulação é composto pelo mapa, que guarda as informações
do ambiente, pela coordenada e pela ação. Também existem os personagens, que são
a presa, o predador e os arbustos.
Para os testes desse projeto será utilizado um mapa com a dimensão 10 x
10. Na Figura 5 é representado um exemplo de mapa e os personagens envolvidos.
Os principais personagens são a presa e o predador, representados pelo coelho e
pela onça respectivamente. Tanto a presa como o predador podem movimentar-se no
mapa de coordenadas até a presa ser capturada, ou o predador morrer devido a um
arbusto venenoso ou por exceder o número máximo de rodadas. Além deles existem
os arbustos, eles possuem posição fixa durante a simulação. O objetivo dos arbustos é
impedir o movimento do predador, que no caso está perseguindo a presa.
Figura 5 – Cenário do Problema Presa-Predador
Fonte: próprio autor
34
3.2.1
Mapa
O Mapa é responsável por guardar as informações do ambiente. Sendo essas
informações, o tamanho, a lista dos personagens, bem como os métodos que controlam
o ambiente. Nela é realizada a verificação de quando a presa for capturada, ou o
predador passar por um arbusto venenoso.
Referente ao mapa ainda existe a interface ListenerMapa, contendo a assinatura dos métodos atualizarMapa e personagemMoveu, sendo invocados quando o mapa
é atualizado, no caso do primeiro método, e quando algum personagem movimenta-se,
sendo o caso do segundo método.
3.2.2
Coordenada
A classe Coord guarda a posição x e y do mapa. Nela estão contidos os método
para mover os personagens. Ela também contém o método que verifica a distância da
posição atual até outra posição. Possui também o método responsável por comparar a
posição entre duas coordenadas.
3.2.3
Ação
A classe Acao, possui a informação de qual será o próximo passo do personagem. Ele pode ir para o NORTE, SUL, LESTE e OESTE, além de ter a opção NADA,
em que nenhuma ação é realizada. Isso define para qual direção o personagem irá
em cada rodada da simulação. A Figura 6 representa graficamente quais ações o
personagem pode realizar. Elas apenas são válidas para a presa e para o predador, já
que os arbustos possuem posição fixa.
3.2.4
Personagem
A classe Personagem é abstrata que implementa Cloneable, ela possui os
atributos responsáveis por guardar a coordenada e o mapa completo da simulação.
Nela também estão definidos os métodos pensar e clone, que serão implementados nas
classes que herdam de Personagem. Na classe Personagem também está localizado o
método agir, que vai designar a ação dos personagens dentro to mapa.
35
Figura 6 – Ações Possíveis para a Presa e para o Predador
Fonte: próprio autor
3.2.5
Arbusto
Os arbustos são personagens que possuem sua posição fixa, ou seja, não
terão movimentação durante a simulação. Cada arbusto pode ser ou não venenoso,
para cada simulação são adicionados três arbustos. Desses três, dois são definidos
como venenosos e um como não venenoso.
A posição inicial dos arbustos é definida no início da simulação de forma
aleatória, sendo a mesma até o final. Os arbustos não podem receber a mesma
posição, devem ficar em três locais diferentes. Estes arbustos tem por objetivo dificultar
a atuação do predador, sendo que o predador não sabe qual dos arbustos é venenoso.
A classe Arbusto herda de personagem, esta classe possui um atributo boleano
que indica TRUE se o arbusto é venenoso e FALSE se o arbusto não é venenoso. No
método responsável por determinar a movimentação do personagem é retornado o tipo
nada, já que o arbusto não possui movimento.
3.2.6
Presa
A presa tem por objetivo fugir do predador, cada simulação terá uma presa
apenas. Esta recebe a posição inicial aleatoriamente, sendo que a cada rodada a presa
busca se esconder na posição do arbusto não venenoso. A presa possui a informação
de qual arbusto não é venenoso. No momento em que a presa chega no arbusto que
não é venenoso, ela permanece nessa posição até o fim da simulação.
36
A presa é definida pela classe Presa, ela herda da classe Personagem. A presa
ainda possui outras derivações. As seguintes classes herdam de Presa: PresaArbusto,
PresaFoge, PresaParada e PresaRandom.
3.2.6.1
Classe PresaArbusto
Esta será a presa utilizada no modelo final do projeto. Durante a simulação ela
busca esconder-se atrás do arbusto não venenoso. Ela possui a informação da posição
absoluta do arbusto não venenoso, e a cada iteração ela tenta ficar mais próxima do
arbusto.
3.2.6.2
Classe PresaFoge
Esta presa é utilizada principalmente em simulações com mais de um predador,
podendo ser utilizada também para esse modelo. A diferença é que o objetivo dela é
apenas fugir do predador e não esconder-se como no caso da PresaArbusto.
3.2.6.3
Classe PresaParada
Diferentemente das duas presas citadas anteriormente, esta recebe uma posição inicial e permanece nela até o final. Isso diminui a dificuldade que o predador
tem de encontrar e capturar a presa. Porém, em alguns casos quando utiliza-se posições estáticas, os resultados são menores quando são utilizadas posições dinâmicas.
Isso ocorre porque, em determinado momento da simulação, os predadores serão
orientados a não moverem-se ou realizar movimentos inúteis em looping (FRISKE,
2013).
3.2.6.4
Classe PresaRandom
Essa presa troca de posição de forma aleatória. Sendo assim, ela pode tornase uma presa fácil de ser capturada. Levando em conta que com essa presa não existe
a preocupação de saber em qual posição o presador está, sua movimentação pode
levá-la ao predador, aumentando as chances de ser capturada.
3.2.7
Predador
O predador tem por objetivo capturar a presa. Cada simulação terá um predador,
sendo sua posição inicial obtida de forma aleatória. A cada rodada o predador busca
37
aproximar-se da presa para capturá-la. Quando ele atinge a posição em que a presa
se encontra a simulação termina, sendo que a presa foi capturada.
O predador possui as informações sobre a posição da presa até o momento em
que ela esconde-se no arbusto não venenoso. Desse momento em diante o predador
não possui mais a informação da posição atual da presa. Ele também não possui a
informação de qual dos arbustos é venenoso, sendo que ao atingir um arbusto venenoso
a simulação acaba com o predador não capturando a presa.
O predador é representado pela classe Predador, que herda de personagem.
Ele obtém seus movimentos através da árvore de expressões.
3.3
Interface
A aplicação possui duas tela. A primeira é utilizada para escolher os parâmetros
que serão utilizados na evolução do agente. A segunda é utilizada para a partir do
agente evoluído, realizar os testes de desempenho do agente, simulando as ações do
agente para diferentes cenários.
A Figura 7 refere-se a tela utilizada na evolução do agente. Nela podem ser
selecionados os parâmetros que definem o ambiente bem como a forma que os
personagens interagem dentro do ambiente.
No campo população, deve ser informado o tamanho da população. Ele representa qual o número de indivíduos que compõe a população. Sendo assim, se
for definido o valor 100 para esse campo, será gerada uma população inicial de 100
indivíduos, e a cada evolução após aplicar os operadores genéticos, deve ser gerado
uma nova população com o mesmo número de indivíduos.
O campo gerações é utilizado para definir o número máximo de gerações que
serão evoluídas. Sendo que essa quantidade pode não ser totalmente utilizada, devido
ao fato de que a evolução para no momento em que a evolução atual atinge uma
solução que satisfaça o problema.
O campo mutação, define qual será a taxa de mutação aplicada a cada indivíduo. Isso define o percentual de características que serão alteradas em cada evolução
do agente. Isso permite que a população mantenha diversidade, sendo que a solução
não fica presa à um solução local.
No campo tamanho, será definido qual é o tamanho do mapa, nele podem ser
informadas a posição x e y, que definem a quantidade de linhas e colunas do mapa.
Para obter resultados fidedignos, é importante que todas as evoluções possuam um
38
Figura 7 – Tela para Realizar a Evolução do Predador
Fonte: próprio autor
mapa de mesmo tamanho.
No campo percepção é definido se o predador irá possuir percepção absoluta
ou percepção relativa. Também pode ser selecionada a opção percepção relativa com
a utilização de variáveis de memória. Sendo que na percepção absoluta esta disponível
ao predador a posição exata da presa. Já na percepção relativa, o predador possui
a informação da presa até o momento em que ela se esconde no arbusto. Com a
utilização da percepção relativa com variáveis de memória, são utilizadas variáveis que
guardam estados anteriores em que a presa percorreu para ajudar na captura por parte
do predador.
No campo tipo da presa pode ser escolhido a forma que a presa interage com
o ambiente. Sendo que pode ser selecionada a opção de posição fixa para a presa, a
forma de movimentação aleatória dentro do mapa. Também existe a possibilidade de
adicionar inteligência para ela fugir do predador, e por fim a presa utilizada para realizar
39
os teste, em que ela nasce em uma posição aleatória do mapa e a cada movimento ela
converge para a direção do arbusto que não é venenoso, com o objetivo de esconder-se
do predador.
Figura 8 – Tela para Realizar os Testes da Evolução do Predador
Fonte: próprio autor
A Figura 8 é utilizada para realizar os testes do problema. O bloco de dados
denominado controle apenas apresenta as opções escolhidas na evolução representada
na Figura 7. Sendo que o campo cenário define o tamanho do mapa, o campo presa
define o tipo de presa e o campo percepção define a percepção que o predador terá
sobre o ambiente.
No bloco simulação deve ser informado o número de simulações que serão
realizadas. Cada simulação gera posições aleatória para cada personagem, isso
permite que tenha-se uma gama grande de testes. Além disso, cada simulação é
repetida 10 vezes, e ao fim é informada a média de capturas da simulação.
Ao fim dos testes, pode ser visualizado a quantidade de vezes em que a presa
foi capturada e a quantidade de vezes em que o predador foi morto. No caso do
40
predador morrer, também são apresentados os valores de quantas vezes o predador
morreu por encostar em um predador venenoso e a quantidade de vezes em que a
simulação acabou por exceder o número máximo de passos. Para essa aplicação a
quantia máxima de passos foi definida em 1000.
No próximo capítulo serão apresentados os resultados que foram obtidos com a
execução dos testes na aplicação que foi modelada e implementada. Com a inserção do
predador evoluído em diversos ambientes de simulação será possível verificar eficácia
da técnica de programação genética recorrente.
4 RESULTADOS
Um conjunto de testes foram executados para analisar o desempenho do
predador dentro do mapa. Os resultados são apresentados utilizando diferentes características do cenário. Primeiramente, Na Seção 4.1 serão apresentados os resultados
obtidos com população de 100 indivíduos e, na Seção 4.2 será apresentado o desempenho do predador quando a evolução possuí população com 200 indivíduos. Já na
Seção 4.3 será realizado um comparativo entre os resultados obtidos na Seção 4.1 e
na Seção 4.2, e posteriormente na Seção 4.4 serão apresentadas considerações a
respeito dos resultados obtidos.
Os resultados são analisados com: a) Predador com Percepção Absoluta
do Ambiente; b)Predador com Percepção Relativa do Ambiente e c) Predador com
Percepção Relativa do Ambiente Utilizando variáveis de Memória. Isso nos permite
comparar em que situações o predador obteve melhores taxas de captura, bem como
verificar se a técnica abordada pelo projeto obteve bons resultados.
A taxa de mutação foi definida em 5%, isso permitirá que a população mantenha
diversidade durante as evoluções. Com isso o predador conseguirá capturar a presa
em diferentes cenários que forem gerados aleatoriamente. Isso porque não ficará preso
em uma solução local.
Essa taxa de mutação foi escolhida após a realização de testes iniciais. Com
esse percentual de mutação foram obtidos os melhores resultados. A partir dessa
análise foi obtido a taxa que melhor se encaixou ao problema, a qual foi utilizada no
restante dos testes.
Ao utilizar taxas de mutação menores do que 5% o predador não conseguia
solucionar problemas em que o mapa variava muito. Isso acontece porque a variação entre os indivíduos da população foi muito baixa. Com taxa de mutação muito
baixa, a população teve pouca diversidade, isso tornou o predador incapaz de resolver
problemas que fugiam muito do normal.
Já quando foram utilizadas taxas de mutação acima de 5%, o predador obteve
menor taxa de captura do que quando eram utilizadas taxas de 1%. O predador
acabava percorrendo o mapa com muita aleatoriedade, e na maioria das vezes acabava
morrendo por exceder o número máximo de rodadas.
Para a realização dos testes para obtenção dos resultados foi utilizado um
notebook com processador Intel Core i5 (2, 50GHz) e memória de 4 GB. O tempo
utilizado para cada evolução variou de 1 hora, nas evoluções de 1000 gerações, a 12
42
horas, nas evoluções com 5000 gerações.
Foram realizadas evoluções de 1000 gerações até 5000 gerações. Em cada
evolução foram aplicados 5000 testes com cenários gerados aleatoriamente. Foi determinado 1000 rodadas como sendo o número máximo para o predador capturar a presa.
Como existem variações entre cada simulação, a grande quantidade de repetições nos
teste garante maior precisão no percentual de capturas.
4.1
Resultados da Evolução do Predador com População de 100 Indivíduos
Neste teste foram realizadas evoluções do predador com população de 100 indivíduos. Na Seção 4.1.1 serão apresentados os resultados com a percepção absoluta,
percepção relativa e percepção relativa utilizando variáveis de memória.
4.1.1
Predador com Percepção Absoluta do Ambiente
Nos testes utilizando a percepção absoluta da presa o predador obteve alta
taxa de captura. Na Tabela 1 estão apresentados os percentuais de captura, de morte
do predador por um arbusto venenoso e também o percentual de mortes por tempo
máximo.
Tabela 1 – Percepção Absoluta com 100 Indivíduos
Gerações
1000
2000
3000
4000
5000
Capturas
Mortes Por Arbusto Venenoso
Mortes Por Tempo Máximo
85,20%
87,60%
89,10%
91,50%
95,10%
14,80%
12,40%
10,90%
8,50%
4,90%
0,00%
0,00%
0,00%
0,00%
0,00%
Fonte: próprio autor
A taxa de captura variou entre 85, 20%, com a evolução de 1000 gerações e
chegou a uma taxa de 95, 10% com a evolução de 5000 gerações. Isso deixa visível que
com o aumento no número de gerações o predador acabou sendo melhor direcionado
para a posição da presa. Sendo que nesse exemplo não ocorreram mortes por exceder
a quantidade máxima de rodadas. Isso porque o predador não ficou perdido no mapa
em nenhuma das simulações.
43
4.1.2
Predador com Percepção Relativa do Ambiente
Ao utilizar percepção relativa da ambiente os resultados obtidos foram bem
piores do que com percepção absoluta. A Tabela 2 mostra que a taxa de captura ficou
abaixo de 35%. As mortes por arbusto venenoso não variaram tanto em comparação
com os da tabela 1. Já as mortes por exceder o número máximo de rodadas chegou a
ultrapassar 60%.
Tabela 2 – Percepção Relativa com 100 Indivíduos
Gerações
1000
2000
3000
4000
5000
Capturas
Mortes Por Arbusto Venenoso
Mortes Por Tempo Máximo
21,40%
23,40%
27,10%
33,70%
34,10%
17,40%
17,20%
16,20%
11,40%
10,80%
61,20%
59,40%
56,70%
54,90%
55,10%
Fonte: próprio autor
A alta taxa de mortes por exceder o número máximo de rodadas deixa claro
que o predador acabou ficando perdido dentro do mapa entre 55, 10% e 61, 20% das
simulações. Mesmo assim o predador conseguiu obter a captura da presa em até
34, 10% das simulações.
4.1.3
Predador com Percepção Relativa do Ambiente Utilizando
Variáveis de Memória
Utilizando percepção relativa com variáveis de memória os resultados ficaram
próximos aos dos obtidos com percepção absoluta. A Tabela 3 mostra que o percentual
de captura variou entre 86, 70% e 92, 00%. As mortes por arbusto venenoso estiveram
nos mesmos patamares da simulação com percepção absoluta.
Tabela 3 – Percepção Relativa Utilizando Variáveis de Memória com 100 Indivíduos
Gerações
1000
2000
3000
4000
5000
Capturas
Mortes Por Arbusto Venenoso
Mortes Por Tempo Máximo
86,70%
87,00%
87,40%
89,00%
92,00%
11,00%
12,00%
12,10%
11,00%
8,00%
2,30%
1,00%
0,50%
0,00%
0,00%
Fonte: próprio autor
No caso das mortes por exceder o número máximo de rodadas, as taxas foram
baixas. Com 1000 gerações ela ficou em 2, 30%, sendo que com o aumento no número
44
de gerações esse número foi diminuindo. Ao chegar a 3000 gerações esse valor chegou
0, 50%, e passou a ser 0% a partir de 4000 gerações.
4.2
Resultados da Evolução do Predador com População de 200 Indivíduos
Nesta simulação foram realizadas evoluções do predador com população de
200 indivíduos. Na Sessão 4.2.1 serão apresentados os resultados com a percepção
absoluta, percepção relativa e percepção relativa utilizando variáveis de memória.
4.2.1
Predador com Percepção Absoluta do Ambiente
Nos testes utilizando percepção absoluta os resultado mantiveram alto percentual de captura. A Figura 4 mostra que a taxa de captura alcançou 96, 70%, um resultado
muito bom, ou seja o predador morreu apenas 3, 30% das vezes em decorrência de um
arbusto venenoso.
Tabela 4 – Percepção Absoluta com 200 Indivíduos
Gerações
1000
2000
3000
4000
5000
Capturas
Mortes Por Arbusto Venenoso
Mortes Por Tempo Máximo
87,30%
88,20%
89,00%
92,30%
96,70%
12,70%
11,80%
11,00%
7,70%
3,30%
0,00%
0,00%
0,00%
0,00%
0,00%
Fonte: próprio autor
As mortes por tempo máximo ficaram em 0%, isso mostra que o predador não
ficou perdido nenhuma vez no mapa. Sendo que ele apenas não conseguiu capturar a
presa quando morreu por encostar em um arbusto venenoso.
4.2.2
Predador com Percepção Relativa do Ambiente
Ao utilizar percepção relativa nos testes com populações de 200 indivíduos os
resultados foram um pouco melhores dos utilizando 100 indivíduos. A Figura 5 mostra
que com 1000 gerações o resultado foi baixo, porém com 5000 gerações foi atingido
51, 40% de capturas.
As taxas de mortes por exceder o número de rodadas continuou alto, ficando
sempre acima de 40%. Já as mortes por encostar em um arbusto venenoso chegaram
45
Tabela 5 – Percepção Relativa com 200 Indivíduos
Gerações
1000
2000
3000
4000
5000
Capturas
Mortes Por Arbusto Venenoso
Mortes Por Tempo Máximo
15,80%
25,80%
32,00%
44,60%
51,40%
23,90%
17,00%
12,70%
11,20%
7,20%
60,30%
57,20%
55,30%
44,20%
41,40%
Fonte: próprio autor
a ficar próximas dos obtidos com percepção absoluta. Porque Nota-se que com o
aumento do número de gerações o percentual de capturas vai aumentando, porém a
variação entre a quantidade de gerações vai diminuindo.
4.2.3
Predador com Percepção Relativa do Ambiente com Variáveis de Memória
Nos testes utilizando percepção relativa com variáveis de memória os resultados continuaram bons. A Figura 6 mostra que com 1000 gerações a taxa de captura
ficou em 83, 10%, abaixo do que quando a população era de 100 indivíduos. Porém
com 5000 gerações a taxa de captura foi maior em comparação a taxa obtida com a
população de 100 indivíduos.
Tabela 6 – Percepção Relativa Utilizando Variáveis de Memória com 200 Indivíduos
Gerações
1000
2000
3000
4000
5000
Capturas
Mortes Por Arbusto Venenoso
Mortes Por Tempo Máximo
83,10%
88,70%
91,40%
91,70%
92,80%
2,10%
1,00%
0,00%
0,00%
0,00%
14,80%
10,30%
8,60%
8,30%
7,20%
Fonte: próprio autor
As mortes em decorrência de encostar em um arbusto venenoso ficaram em
0% a partir de 3000 gerações. Já As mortes por exceder o número máximo de rodadas
ficou maior em comparação com a população de 100 indivíduos. Isso em decorrência
do fato de que como existem mais indivíduos, os resultados ficariam melhores com o
aumento no número de gerações. Como é apresentado na Tabela 6, com o aumento
das gerações as mortes por exceder o número máximo de rodadas vai diminuindo com
o aumento do número de gerações.
46
4.3
Análise dos Resultados Obtidos
Os resultados utilizando o predador evoluído utilizando percepção absoluta e
percepção relativa obtiveram resultados semelhantes. A Figura 9 mostra que os resultados dessas percepções se manteve estável, com uma pequena taxa de crescimento. A
variação entre a evolução de 1000 gerações e 5000 ficou em 5, 30%, sendo que predador
já estava com alto índice de captura com 1000 gerações.
Já com a utilização de percepção relativa os resultados foram bem piores. O
índice de captura iniciou em 21, 40% e obteve crescimento pequeno até a geração 3000.
Já da 3000 ate a 4000 o resultado melhorou em 6, 60%. Depois o percentual de capturas
estabilizou e chegou na geração 5000 sem muita variação.
O percentual de capturas utilizando percepção relativa com memória obteve
mais capturas do que com a utilização de percepção absoluta com 1000 gerações.
Porém a partir da geração 2000 a percepção absoluta se manteve sempre a frente.
Esse fato mostra que com 1000 gerações as duas percepções citadas estavam com
o nível de adaptação ao ambiente baixa. Com o aumento das gerações, a percepção
absoluta obteve melhores resultados em decorrência de possuir uma visão mais ampla
sobre o mapa.
Figura 9 – Comparativo da Evolução das Percepções Absoluta, Relativa e Relativa com
Memória com População de 100 Indivíduos
Fonte: próprio autor
47
Os resultados obtidos obtidos com percepção absoluta e percepção relativa
com memória são idênticos. Isso mostra que o armazenamento dos estados em que a
presa esteve antes de se esconder fizeram que o predador conseguisse capturá-la em
proporções muito semelhantes de quando o predador possui informações completas
sobre o ambiente.
Ao analisar os resultados das evoluções com população de 200 indivíduos
nota-se um pequeno aumento na taxa de captura em comparação com evoluções de
populações de 100 indivíduos. Na Figura 10 os resultados da percepção absoluta e
da percepção relativa com memória ficaram próximos. Com 2000 e 3000 gerações as
capturas com percepção absoluta ficaram abaixo do que utilizando percepção relativa
com memória. Mas com 5000 gerações foi a percepção absoluta que obteve melhor
desempenho.
Já com a utilização de percepção relativa, os resultados ainda foram baixos,
porém acabaram ficando melhores do que com população de 100 indivíduos. Na Figura
10 pode-se perceber que com 1000 gerações a taxa de captura foi baixíssima, atingindo
apenas 15, 80% de capturas. Porém com o aumento no número de gerações, foi atingido
51, 40% de capturas. Uma variação de 35, 60% de aumento entre 100 e 5000 gerações.
Mas mesmo com esse grande aumento, com 5000 gerações obteve-se captura em
apenas pouco mais da metade das simulações.
4.4
Considerações Sobre os Resultados
Ao adicionar variáveis de memória quando se tinha apenas percepção relativa,
os resultados ficaram muito próximos de quando tinha-se o conhecimento total do
mapa. Notou-se que com percepção relativa, em muitas vezes o predador ficou perdido
no mapa, e acabou morrendo por exceder o número máximo de rodadas.
Os arbustos venenosos também tiveram um papel importante para que o
predador não obtivesse mais capturas. Com o aumento das gerações o predador foi
aprendendo a desviar desses arbustos, e na maior parte dos testes o percentual de
mortes por causa de um arbusto venenoso foi diminuindo com o aumento das gerações.
Os resultados obtidos com a utilização da técnica de programação genética
recorrente foram bons comparando com os resultados em ambientes parcialmente
observáveis sem variáveis de memória. Os resultados mostraram que a técnica utilizada
para guardar as percepções antes da presa se esconder proporcionaram que o agente
obtivesse resultados semelhantes em ambientes completamente observáveis e em
ambientes parcialmente observáveis.
48
Figura 10 – Comparativo da Evolução das Percepções Absoluta, Relativa e Relativa
com Memória com População de 200 Indivíduos
Fonte: próprio autor
A técnica proposta pelo presente trabalho conseguiu praticamente a mesma
taxa de captura obtida em ambientes com percepções completas. Isso mostra que
a aplicação de programação genética recorrente foi bem sucedida em ambientes
parcialmente observáveis. Sendo capaz de obter altas taxas de capturas no ambiente
do problema presa-predador.
5 CONCLUSÕES
A técnica de programação genética é muito eficiente dentro de ambientes
completamente observáveis. Porém seu desempenho diminui drasticamente quando
trata-se de ambientes parcialmente observáveis. Sendo assim é necessário adaptar
essa técnica para conseguir guardar as percepções obtidas para usá-las nos momentos
em que o ambiente não oferece percepções exatas.
Este trabalho apresentou o estudo, a modelagem e a implementação da técnica
de programação genética recorrente, que foi aplicada ao problema presa-predador.
Onde foi evoluído o personagem denominado predador, visando capturar outro personagem denominado presa.
Com a aplicação da programação genética em ambientes completamente
observáveis, foram obtidos bons resultados. As taxas de captura superaram 90% nos
testes com evolução de 5000 gerações, mostrando que essa técnica é muito eficaz na
resolução de problemas complexos, em que o cenário possui alta variação.
Porém, quando a programação genética foi aplicada em ambientes parcialmente observáveis, onde o predador não possuía percepções completas sobre o
ambiente, as taxas de capturas foram baixas. Percebeu-se que o agente muitas vezes
ficou perdido no ambiente. As melhores taxas de captura ficaram em torno de 50%. Isso
mostrou que apenas a técnica de programação genética é ineficaz para a resolução de
problemas em ambientes parcialmente observáveis.
A partir disso, nota-se a importância de trabalhar em cima desses casos,
onde o agente possui percepção parcial sobre o ambiente. Com isso, poderiam ser
obtidas soluções mais próximas ao resultado ótimo. Isso porque o agente teria melhor
adaptação sobre ambientes que possuem muita variação.
Quando foi adicionado variáveis de memória, guardando percepções de ações
realizadas no ambiente, obteve-se grande melhoras nos resultados. Ao aplicar a técnica
em que se baseia esse trabalho, os resultados foram semelhantes aos obtidos em
ambientes completamente observáveis. Isso mostra que essa técnica é muito eficaz.
Analisando que sem a utilização de memória, no mesmo tipo de ambiente,
foram obtidos cerca de 50% de capturas, e com memória ultrapassou 90% de capturas.
Nota-se que a técnica proposta nesse trabalhou conseguiu obter exito na resolução do
problema presa-predador, podendo também ser eficaz para variados problemas, como
por exemplo, aplicá-la em mineração de dados e otimização de rotas.
50
Este trabalho demostrou que com a técnica apresentada, é possível evoluir
agentes inteligentes capazes de adaptar-se a ambientes parcialmente observáveis e
obter sucesso na resolução de problemas em que o agente tem percepção relativa do
ambiente, tornando assim essa técnica aplicável a problemas complexos, devido a alta
adaptabilidade demonstrada pelo agente nos testes realizados.
5.1
Trabalhos Futuros
Como trabalhos futuros, podem ser desenvolvidas pesquisas em torno da
programação genética, devido ao grande campo que ainda existe a ser explorado na
área de inteligência artificial. Uma proposta é a aplicação da técnica de programação
genética recorrente a outros problemas, como por exemplo o mundo de Wumpus,
visando obter o desempenho dessa técnica para outros problemas.
Outra proposta nessa área é a aplicação de programação genética recorrente
combinada com outras técnicas de programação genética. Ela poderia ser implementada junto com redes neurais, em busca de paralelizar a evolução do agente, utilizando
redes neurais para obter o fitness do indivíduo, bem como a aplicação da seleção dos
indivíduos.
Também pode ser proposto a utilização algoritmos genéticos com memória.
Com isso, poderia ser realizado o comparativo entre as duas técnicas que pertencem
aos algoritmos evolucionários. Dessa forma seria possível analisar qual das técnicas
possui mais eficácia nesse tipo de problema.
REFERÊNCIAS
BECCENERI, J. C. Meta-heurísticas e otimização combinatória: Aplicações em
problemas ambientais. Escola de Verão do Laboratório Associado de Computação e
Matemática Aplicada - São José dos Campos, 2013.
BRUCE, W. S. The application of genetic programming to the automatic generation of
object-oriented programs. PhD thesis. School of Computer and Information Sciences,
New Southeastern University, 1995.
CALDAS, G. H. F.; SCHIRRU, R. Híbrido de programação genética com variante de
pbil. International Nuclear Atlantic Conference - INAC - Santos - São Paulo, 2005.
DARWIN, C. A origem das Espécies e a Seleção Natural. [S.l.: s.n.], 1959.
DORNELLES, E. F. et al. Aplicação de redes neurais recorrentes em ambientes
parcialmente observáveis. Salão do Conhecimento volume 2, 2014.
FRISKE, M. W. Programação genética aplicada ao problema presa-predador. Ijuí,
2013.
GALASTRI, A. L. O uso de programação genética na tomada de decisões em jogos.
Universidade Regional de Blumenau – Centro de Ciências Exatas e Naturais – Curso
de Ciências da Computação - Blumenau, 2003.
KORF, R. E. A simple solution to pursuit games. International WorkShop on Distribuited
Artificial Inteligence, 1992.
LINDEN, R. Algoritmos Genéticos. [S.l.]: ed. Rio de Janeiro: Ciência Moderna, 2011.
MARTíNEZ, J. M. Métodos computacionais de otimização. Departamento de
Matemática Aplicada - IMECC-UNICAMP - São Paulo, 1998.
MEDEIROS, F. L. L. Métodos computacionais de otimização. Algoritmo Genético
Híbrido Como um Método de Busca de Estados Estacionários de Sistemas Dinâmicos São José dos Campos - São Paulo, 2006.
RODRIGUES, E. L. M. Evolução de funções em programação genética orientada a
gramáticas. Curitiba, 2002.
RUSSEL, S.; NORVIG, P. Inteligência Artificial: Tradução da Segunda Edição. Tradução
de PubliCare Consultoria. [S.l.: s.n.], 2004.
SCHüLER, J. P. S. Inteligência artificial popperiana. Porto Alegre, 2002.
SOUZA, L. V. d. Programação genética e combinação de preditores para previsão de
séries temporais. Universidade Federal do Paraná - Curitiba, 2006.
Download