Para facilitar a representação dos elementos das simulações utilizou-se o paradigma orientado a objetos para o desenvolvimento. Cada elemento é representado por um objeto contendo seus atributos e posição no reticulado. O simulador foi desenvolvido na linguagem Java e a interface
gráfica e recursos visuais utilizam as bibliotecas Swing (http://www.javaswing.org) e Graphics (http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Graphics.html) da própria linguagem.
Os objetos que compõem a simulação são a população de lagartos, a população de predadores, o ambiente (representado pelo reticulado bidimensional) e os recursos (alimentos) que fornecem energia e hidratação aos lagartos. A simulação inicia com os objetos distribuídos pelo ambiente conforme as configurações definidas pelo usuário. As características de cada tipo de objeto são definidas como segue:
Alimentos: são distribuídos aleatoriamente pelo reticulado no início da simulação. Ao longo das iterações novos alimentos são gerados de acordo com as probabilidades definidas parametricamente. Alimentos possuem maior probabilidade de aparecerem próximos a alimentos que já estão no ambiente, ou seja, para cada alimento no cenário, há uma probabilidade de outros alimentos similares surgirem dentro de um raio de vinte células de distância. Isso faz com que os mesmos tenham tendência a ficarem agrupados em certas regiões do ambiente, simulando bosques de frutos que atraem insetos. Eles fornecem quantidades de energia e hidratação proporcionais a seus tamanhos e que variam de acordo com seus tipos, conforme descrito na.
Tabela 2: Características nutricionais dos alimentos do simulador (OLIVEIRA, et al., 2010; ROCHA; RODRIGUES, 2005).
Alimentos Energia Hidratação
Larvas 7,0 5,5 Grilos 4,0 3,0 Cupins 5,0 2,5 Besouros 4,0 4,5 Aranhas 3,0 3,5 Formigas 2,0 2,5 Frutos 5,0 8,0 Flores 2,0 6,5
Predadores: um único modelo de predador terrestre foi adicionado ao simulador. Ao contrário dos lagartos, os modelos dos predadores são estáticos, não possuem representações genéticas próprias e não evoluem. Eles se movem com velocidade constante de forma aleatória pelo cenário e quando um lagarto entra em seu campo de visão eles o perseguem e atacam até que a presa seja consumida ou saia de seu campo
de visão. Cada predador possui um nível de energia que é decrementado em uma unidade a cada iteração. Se seu nível de energia chegar à zero, ele morre. Quando um predador alcança uma célula adjacente a um lagarto, o lagarto é consumido. Quando uma presa é consumida a energia do predador é incrementada proporcionalmente ao tamanho da presa consumida. Se a energia de um predador chegar a 100% há uma probabilidade de 20% de um novo predador ser adicionado à simulação, fazendo com que o aumento de alimentos disponíveis promova um aumento na população de predadores. Há também uma probabilidade de 0,01% de um predador ser adicionado ao ambiente a cada iteração, simulando a migração e também diminuindo a probabilidade de que a população de predadores seja extinta. As probabilidade de reprodução dos predadores foram definidas e testadas por análise paramétrica de modo a buscar um equilíbrio com a população de lagartos, buscando replicar o modelo de equilíbrio entre presas e predadores encontrado na literatura. A movimentação dos predadores é dada por uma máquina de estados finitos. Quando não há lagartos em seu raio de visão, ele se movimenta aleatoriamente pelo reticulado e quando avista a presa, ele a persegue. Lagartos: a cada iteração os lagartos têm seus gastos de energia e hidratação calculados
e decrementados ou incrementados com a alimentação. Se seus níveis de energia ou hidratação chegarem à zero, eles morrem. Um lagarto também morre ao ser atacado por um predador. A movimentação dos lagartos também é dada por uma máquina de estados. Cada lagarto pode:
a) Procurar alimentos: lagartos possuem níveis de energia e hidratação que vão de 0% até 100%. Eles também possuem limiares mínimos e máximos para cada um destes que são definidos de acordo com suas características genéticas. Se, por exemplo, os limiares mínimos e máximos de energia de um lagarto forem 25% e 75%, respectivamente, o lagarto começa a dedicar-se exclusivamente a procurar por alimentos quando sua energia cai abaixo de 25% e para de procurar alimentos (apenas consome os que eventualmente estiverem em seu caminho) quando sua energia atinge valores acima de 75%. O mesmo ocorre para a hidratação.
b) Procurar parceiros para reprodução: quando um lagarto não está com fome (seus níveis de energia estão acima dos limiares mínimos) e ele está em idade de reprodução, ele começa a busca por parceiros para a reprodução. Apenas machos procuram as fêmeas, que ficam em repouso. Quando dois lagartos de sexos distintos se aproximam, há uma probabilidade (que pode ser definida parametricamente no simulador) de que haja o ato
reprodutivo. Após a reprodução, o macho não pode se reproduzir por 30 iterações e a fêmea por 100 iterações (tempo de espera).
c) Fugir de predadores: Quando um predador se aproxima do campo de visão do lagarto, ele corre do mesmo, aumentando sua velocidade em 100%, e gastando o dobro de hidratação durante a fuga. O lagarto para de fugir quando não há mais predadores dentro de seu campo de visão, ou quando é consumido.
d) Permanecer em repouso: quando não houver necessidade de alimentação, fuga, ou possibilidade de reprodução devido à idade, ou tempo de espera, o lagarto entra em repouso, se movendo com metade da velocidade, poupando energia e hidratação. e) As máquinas de estados dos lagartos e predadores são exibidas na Figura 10.
A movimentação dos agentes ocorre de acordo com suas máquinas de estados. Cada lagarto possui um campo de visão circular dividido em oito regiões que representam as direções norte, sul, leste, oeste e diagonais, como representado na Figura 11. Ele observa os objetos que se encontram em cada uma dessas regiões. Para calcular a direção para a qual o lagarto deve ir, pesos são distribuídos para cada região de acordo com os itens encontrados nelas (alimentos, predadores e outros lagartos) e o interesse do lagarto nestes itens (estado da máquina de estados e preferência entre tipos de alimentos). Alimentos pelos quais os lagartos possuem maior preferência recebem pesos maiores (proporcionais à preferência) e predadores recebem pesos negativos. Quando lagartos machos buscam por parceiros reprodutivos, fêmeas férteis recebem pesos positivos.
Figura 11: Campo de visão de um lagarto. A região quadrada 3×3 ao centro representa o campo de atuação,
dentro do qual o lagarto pode interagir com objetos. As outras áreas representam as coordenadas geográficas indicadas e a região dentro da qual o lagarto percebe outros objetos (predadores, alimentos e coespecíficos).
Se predadores são avistados em algumas destas regiões, pesos maiores são atribuídos às regiões nas direções opostas e o lagarto entra em modo de fuga, aumentando sua velocidade até não haver mais predadores em seu campo de visão. O lagarto, por fim, escolhe aleatoriamente uma destas direções para seguir, tendo maior probabilidade de escolher as regiões de maior peso. Isso cria uma tendência dos lagartos de se mover em direção dos itens que lhes interessam e fugir de predadores.