Ordem de Simulação de Eventos num Turno

Devido às muitas questões que nos têm sido colocadas sobre as regras, prioridades das acções, e resolução das situações de conflito, aqui fica um esclarecimento das mesmas.

A ordem de avaliação das acções num turno é a seguinte:

  1. remover do mundo todos os agentes que ultrapassaram a esperança de vida da sociedade;
  2. efectuar as acções individuais dos agentes pela ordem referida (1,1), (1,2),..., (n,m);
  3. fase de nascimentos;
  4. geração de comida;
  5. mostrar o estado do mundo obtido.

As Acções Individuais são feitas pela seguinte ordem:

  1. comer de uma única fonte, caso esteja perto de uma fonte de comida;
  2. consumir energia, morrendo se as reservas de energia não forem suficientes, ie, se tiver um custo de sobrevivência n e só tem n-1 (ou menos) unidades de energia;
  3. movimentar-se, se estiver desconfortável física ou socialmente;
  4. envelhecer um ano.

Note que as acções 1 e 3 são mutuamente exclusivas. Os agentes ou comem, ou movimentam-se. Note ainda que a acção a efectuar por um agente (comer, avaliação do conforto actual, avaliação do conforto das posições adjacentes) é decidida em função da disposição do mundo antes da fase de acções indivivuais, ie, acções efectuadas no mesmo turno por outros agentes não influenciam a acção a efectuar (a não ser que seja criado um conflito)

As possíveis situações de conflito, bem como a sua solução são as seguintes:

  • um agente está desconfortável (física ou socialmente) e tem uma fonte de comida adjacente; tal como referido acima, é dada prioridade à comida;
  • um agente tem mais de uma fonte comida adjacentes; resolvido de acordo com a Figura 4;
  • um agente tem mais de uma movimentação possível; resolvido de acordo com a Figura 4;
  • dois agentes pretendem alimentar-se de uma mesma fonte de comida; é dada preferência de acordo com a regra de avaliação das acções individuais (1,1), (1,2),..., (n,m). Se a fonte de comida se esgotar, os agentes que ficaram sem comida devem tentar outras fontes de comida adjacentes. Caso não existam fontes adjacentes, não efectuam nenhuma acção neste turno (mas consomem a energia equivalente ao seu custo de sobrevivência;
  • dois agente pretendem movimentar-se para a mesma posição; o conflito é resolvido de acordo com a regra de avaliação das acções individuais (1,1), (1,2),..., (n,m). Os agentes que ficaram impossibilitados de se movimentar para essa posição devem tentar movimentar-se para a posição, ainda livre, que lhe der maior conforto. Se mais nenhuma posição estiver livre, então não efectua nenhuma acção neste turno (mas consome a energia equivalente ao seu custo de sobrevivência);
  • numa posição podem nascer indivíduos de sociedades diferentes; o conflito é resolvido não nascendo nenhum indivíduo.

O Kenny ficou com 0 unidades na sua reserva de energia. Vai morrer?

Não necessariamente. Devemos dar ao Kenny as mesmas hipóteses que a todos os outros agentes. Um agente só morre quando tentar efectuar uma acção e não tiver energia para isso. Assim, se ele conseguir realizar a sua acção e ficar com 0 unidades ele sobrevive (pelo menos este turno). Se ele tentar realizar uma acção mas não tiver reservas de energia suficientes, ele morre.

Note que sempre que um agente estiver perto de uma fonte de comida, ele deverá primeiro efectuar a acção de comer (e assim adicionar unidades de energia à sua reserva) e só depois consumir a energia correspondente ao custo de sobrevivência.

Quando é que consideramos que dois agentes são iguais?

Dois agentes são iguais se todos as suas características forem iguais

Que quantidade de comida é gerada e onde é colocada essa comida?

A função geradora de comida é um dado do problema que recebe como argumento um mundo e gera, eventualmente, uma comida. A quantidade e a posição onde a comida é gerada é decidido por esta função. Podem considerar qualquer função para gerar comida. Podem, por exemplo, gerar uma quantidade aleatória, numa posição aleatória (notem que neste caso duas simulações com o mesmo mundo não gerarão soluções iguais), podem gerar sempre na mesma posição com x unidades de comida, etc.

Em que condição é que a função geradora pode não gerar comida?

A função geradora de comida pode nunca gerar comida. Determinar a frequência e a quantidade de comida que é gerada, é precisamente o objectivo desta função. Podem ter uma função que gera comida de 10 em 10 turnos, podem ter uma função que retorna sempre #f, i.e., nunca gera comida.

Um agente apenas se move quando se sente infeliz, e move-se para a posição de maior conforto. Para verificar a posição de maior conforto é preciso ter em conta todas as posições do tabuleiro ou apenas as posições adjacentes às posições adjacentes ao agente?

Um agente apenas se move uma posição de cada vez. Ele mover-se-á para a posição adjacente que lhe der maior conforto. Para calcular o conforto de uma posição, apenas são tidas em conta todas as posições adjacentes a elas.

Um agente que não esteja infeliz fisicamente, mas tiver comida numa das suas posições adjacentes vai comer?

Sim. Um agente come sempre que estiver ao lado de uma fonte de comida, excepto se tiver o máximo da reserva de comida.

Se um agente não estiver contente socialmente mas tiver comida ao seu lado ele ignora a sua "infelicidade social" e come? Ou ignora a comida e procura a posição adjacente de maior conforto na "esperança" de encontrar "amigos"?

Pelas regras, a acção de comer é sempre efectuada se tal for possível, logo ele fica ao pé da comida mesmo que não esteja contente socialmente.