Modelos beaseados em agentes para a arqueologia (parte 1)

Modelos baseados em agentes (MBA) envolvem uma série de atores independentes definidos por regras simples que, coletivamente, apresentam dos comportamentos mais simples aos mais complexos. netLogo é uma das ferramentas que permite programar este tipo de coisas.

icon

O uso de modelos baseados em agentes em arqueologia é muito recente. Na sua aplicação mais básica, ele permite testar uma série de propostas teóricas e observar eventuais resultados de caráter aleatórios. Assim, se torna um tipo de teste estatístico contra uma distribuição randômica, desenvolvido em três etapas:

  1. Observamos um contexto arqueológico A;
  2. Sintetizamos um contexto B teórico e aleatório;
  3. Analisamos as eventuais diferenças.

Diferente dos modelos teóricos que eram feitos no auge do processualismo, estes são muito mais analíticos que preditivos. Se eles compartilham o fato de recorrer a formulas matemâticas para sintetizar o comportamento humano, a aleatoriedade é uma característica fundamental dos modelos baseados em agentes. Logo, esta se aplica sobre leis de Mickey Mouse: se o povoado cresce com a população, analisamos a forma com a qual se desenvolve (o termo foi proposto por Kent Flannery para descrever conclusões teóricas inúteis para o avanço da pesquisa arqueológica).

A questão que nos ocupa aqui é, portanto, arqueológica. Sabemos que afloramentos e paredões rochosos são formados naturalmente na paisagem, por uma imensa série de forças (gravidade, peso, terremotos, água…). Por razões que nos escapam, certos grupos humanos decidiram realizar neles grafismos, por gravura ou por pintura. Assim, na linguagem do netLogo, temos dois breeds. Os abrigos possuem também uma variável, correspondendo à quantidade de grafismos:

breed [shelters shelter]
breed [hunters hunter]
shelters-own [paintings]

Definimos para cada um, desde o início do teste, uma forma visualmente reconhecível. Os abrigos serão pentágonos e os caçadores, antropomorfos. Todos são dispostos aleatoriamente na paisagem.

to setup
clear-all
set-default-shape shelters "pentagon"
create-shelters 10 [set color brown set size 1 set paintings 0 setxy random-xcor random-ycor]
set-default-shape hunters "person"
create-hunters 2 [set color white set size 1 setxy random-xcor random-ycor]
reset-ticks
end

Enquanto os primeiros são fixos na paisagem, os segundos são móveis. É preciso definir a maneira com a qual eles vão se deslocar. O programa vai tirar aleatoriamente um número entre 1 e 10 (na verdade, entre 0 e 9) e, dependendo do resultado, o caçador vai se virar para esquerda ou para direita e avançar.

to move-hunters
ask hunters [
ifelse random 10 < 5 [ right random 360 ] [ left random 360 ]
forward 1
]
end

Em seguida, procuramos se há um caçador em algum abrigo. Se for o caso, o programa tira novamente um valor entre 1 e 10. Se o resultado for superior a 5, uma pintura é realizada.

to paint-shelter
ask shelters [
if any? hunters-on patch-here [
if random 10 < 5 [set paintings paintings + 1]
]
]
end

Finalmente, organizamos as ações com um botão go. Para simplificar, resolvemos limitar o modelo no tempo: quando algum abrigo atinge 100 grafismos, o programa para automaticamente.

to go
if any? shelters with [paintings >= 100] [ stop ]
move-hunters
paint-shelter
tick
end

Pronto, o código está preparado. Na interface gráfica, inserimos botões para a configuração (setup) e para o início (go). Precisamos também analisar os resultados finais. Para isto, acrescentamos um monitor indicando a quantidade de grafismos por abrigo (monitor).

shelter1

Com a quantidade de variáveis aleatórias que foram inseridas no código, os resultados nunca aparecem duas vezes iguais. As regras mínimas são, elas, presentes: caçadores percorrem a paisagem de realizam grafismos em suportes rochosos. Maior o tempo, maior o número de grafismos, até um abrigo atingir 100 (quando o programa para).

Este pequeno modelo ainda é muito simples. Os seus resultados são, eles também, muito simples. Como os dados de entrada são aleatórios, com uma distribuição gaussiana normal, as quantidades finais obtidas são também em formato de sino. A média de grafismos por abrigo é expressiva e, na verdade, não corresponde exatamente à realidade que pode ser observada em campo, quando poucos abrigos agrupam muitas pinturas e outros, nenhuma.

Talvez seria necessário, para isso, mudar a quantidade de abrigos, ou a quantidade de caçadores? Talvez seria necessário inserir uma nova variável correspondendo à qualidade de cada abrigo para a realização de pinturas? De fato, certos suportes são particularmente adequados – textura, firmeza, exposição solar, etc – e outros não.

É o que veremos no próximo post.

O arquivo .netlogo utilizado para este teste por ser baixado aqui.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *