Modelos baseados em agentes para a arqueologia (parte 3)

Para acompanhar a discussão desde o início, clique aqui.

O desenvolvimento de um modelo baseado em agentes para o estudo do fenômeno da arte rupestre alcançou questões sobre a definição da cultura. Ou melhor, sobre a definição das culturas. E de fato, usar números para traduzir estas ideias sempre desperta tensões atômicas em qualquer círculo de ciências humanas.

Poderiamos fazer longos comentários, perto da lareira, taça de vinho na mão, sobre o que é e o que não é cultura. Mas não é o ponto. Não procuramos definir valores mais ou menos altos para os abrigos, nem defendemos que alguns abrigos são realmente melhores que outros. O nosso objetivo é sim analisar o comportamento de uma variável simples (a quantidade de pinturas nos abrigo) quando há uma clique de agentes postos em frente à um contexto diversificado.

O problema ao qual tinhamos chegado era o seguinte: cada abrigo tinha um valor de qualidade, mas este valor era dado para todos os caçadores. Logo, sejam estes 2 ou 20, eles se comportavam da exata mesma maneira, e o resultado final acompanhava simplesmente a distribuição inicial da variável qualidade. Entretanto, nos realmente precisamos ter agentes diferentes: é, afinal, a ideia atrás do slider controlando o número de caçadores.

Logo, a variável de qualidade deve ser atribuída por cada caçador para cada abrigo. Quer dizer, cada agente deve ter um código diferente quanto aquilo que é ou não um abrigo adequado. Tudo isto, completamente aleatório. Assim, para cada abrigo seriam vinculados um número x de valores relativos à sua qualidade – x sendo igual ao número de caçadores. Como fazer isso?

Demorei bastante tempo para encontrar uma solução. Pelo que percebi, a dificuldade é a seguinte: um agente de um breed não pode receber uma variável para cada agente de outro breed. A solução encontrada envolve passar por um intermediário.

Basicamente, cada caçador possui um mapa cognitivo do mundo, composto por uma matriz do mesmo tamanho preenchida com valores aleatórios. Nesta matriz, o local de cada abrigo está portanto relacionado com um determinado valor, que é diferente para cada caçador.

Primeiro, chamamos uma extensão no cabeçalho do arquivo e reformulamos a distribuição das variáveis. A qualidade não está mais vinculada aos abrigos, mas aos patches onde estão localizados.

extensions [matrix]
breed [hunters hunter]
breed [shelters shelter]
patches-own [xpatch ypatch quality]
shelters-own [paintings]
hunters-own [hunter-matrix]

Em seguida, adaptamos também o perfil dos caçadores e dos abrigos. Os primeiros criam o mapa cognitivo do tamanho do mundo (33×33) e preenchem-lo de valores aleatórios. Já os abrigos aparecem em certo número de patches.

create-hunters number-hunters [ set color black set size 1 setxy random-xcor random-ycor
set hunter-matrix matrix:make-constant 33 33 random 10]
ask n-of number-shelters patches [
sprout-shelters 1 [ set color one-of base-colors set size 1 set xpatch xcor set ypatch ycor] ]

Finalmente, o procedimento para a realização da pintura deve também ser adaptado. Cada caçador que encontra um abrigo deve extrair do seu mapa cognitivo o valor do local correspondendo a sua localização. Se o valor aleatório for inferior, uma nova pintura é acrescida à quantidade do abrigo.

to paint-shelter
ask patches [
ask hunters-here [set quality matrix:get hunter-matrix xpatch ypatch]
if any? hunters-here and any? shelters-here [
if random 10 < quality [ask shelters-here [set paintings paintings + 1]]
]
]
end

E para deixar as coisas mais simples de serem visualizadas, acrescentamos uma regra: o tamanho de cada abrigo deve crescer a medida que são acrescidas novas pinturas.

to grow-shelter
ask shelters [
set size (1 + (paintings / 50))]
end

Resumindo, temos uma série de caçadores evoluindo num território onde existem abrigos. Cada um possui um mapa cognitivo único para esta região. Quando eles encontram um abrigo adequado, eles realizam uma pintura. Observamos a distribuição de todas as pinturas em todos os abrigos no final do teste – arbitrariamente, quando um abrigo atinge 100 pinturas. Rodamos diversas vezes esta versão do modelo. O que podemos ver?

shelter5

Ao contrário do modelo anterior, os resultados apresentam novamente uma distribuição gaussiana ou, pelo menos, uma média e uma quantidade total muito elevadas. Como entender isso, se as quantidades finais são dadas pela qualidade do abrigo?

No modelo anterior, havia apenas um valor de qualidade, definido desde o início para cada abrigo. Ao contrário, agora, temos para cada abrigo uma lista de valores correspondendo ao número de caçadores. Com 20 caçadores, um único abrigo possui 20 valores de qualidade diferentes. E como estes são definidos aleatoriamente, torna-se difícil obter 20 valores nulos. Logo, sempre há algum caçador para achar que um abrigo é conveniente e realizar uma pintura. Entretanto, o crescimento demográfico e a diferenciação das culturas – simbolizados por um número maior de caçadores com mapas cognitivos diferentes – não parecem ter um papel importante na distribuição final das pinturas.

Por mais curioso que seja este comportamento, ele não auxilia muito a problemática que levantamos, porque o modelo não se comporta como o contexto arqueológico. A menos de considerar que 90% dos sítios já desapareceu por obra do intemperismo, por exemplo. Caso contrário, procuramos identificar um modelo que possa resultar em uma situação pelo menos semelhante à realidade tal como a conhecemos na paisagem. Embora tenhamos introduzido a noção de pluraldade cultural graças aos mapas cognitivos aleatórios, não alcançamos os resultados esperados.

O que poderia ter faltado? É o que veremos no próximo episódio. Por enquanto, podem baixar o modelo shelters0-3.nlogo.

Deixe uma resposta

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