Agent-Based Modeling para ciências sociais: simulando o dilema do prisioneiro

Agent-based model ( ABM ) é um tipo de modelo computacional que simula agentes que interagem para explicar resultados de larga escala que decorrem do sistema como um todo. Ok, você não entendeu nada, correto? Mas saiba que é um paradigma contemporâneo importante das ciências sociais e está sendo cada vez mais utilizado com resultados muito positivos. O objetivo do post de hoje é tentar explicar alguns conceitos que fundamentam essa abordagem e oferecer um teste prático, simulando o célebre “dilema dos prisioneiros”, tema famoso da teoria dos jogos.

As ciências em geral, incluindo as sociais, utilizam uma estratégia de pesquisa focada em modelos. Modelos nada mais são que simplificações da realidade. Pense num mapa, por exemplo, do Estado de São Paulo.

Esse mapa permite que você obtenha informações importantes da realidade (como chegar do lugar A ao B), deixando de lado uma série de detalhes desnecessários.

Um modelo científico é algo semelhante. Ele pretende oferecer simplificações que expliquem bem a realidade, centrando-se em determinados pressupostos. Por exemplo, imagine modelos que expliquem o comportamento judicial de juízes de Suprema Corte. Alguns modelos consideram apenas fatores ideológicos, outros, apenas fatores estratégicos. O que eles fazem é oferecer explicações das decisões com base em uma ou outra causa (mas é claro que você pode incluir mais de uma).

Os modelos científicos podem ser de vários tipos: lineares, não-lineares, estocásticos, determinísticos, entre outros. Aqui nós trataremos do modelo baseado em agentes (ABM), adequados para a análise de sistemas complexos adaptativos. Esse tipo geralmente é contraposto a um modelo reducionista Newtoniano, focado em cálculo diferencial, experimentos controlados, etc. O ABM concebe a realidade social como complexa e trata de simulações computacionais das ações (e interações) de agentes (que podem ser indivíduos, grupos, organizações) como forma de obter informações emergentes do sistema como um todo.  

Imagine que você pretende modelar várias formigas e entender como essas formigas, através da ação individual de cada uma, conseguem formar uma ponte.

Modelar esse comportamento envolve entender como a ação individual de cada uma (em um nível micro) pode derivar na formação da ponte (nível macro).  Não só de biologia estamos falando, poderíamos também tentar entender, na ciência política, como da ação, por exemplo, de juízes ou parlamentares poderiam emergir propriedades macro. Pense em Adam Smith: como da ação de indivíduos movidos por auto-interesse poderia emergir o crescimento econômico? (Caberia aqui falar mais de “sistemas complexos adaptativos” e “emergência”, mas, tendo em vista  a brevidade do post, deixarei essa discussão para posts posteriores).

Para modelar esse tipo de situação é interessante realizar simulações computacionais de agentes. Um dos pioneiros no uso dessas simulações em ciências sociais foi o cientista político Robert Axelrod, escritor de “The Evolution of Cooperation”.

Ele queria entender como a cooperação poderia emergir e persistir da ação de seus indivíduos. Para isso, ele partiu do exemplo clássico da teoria dos jogos, o “Dilema do Prisioneiro”.

“Temos dois suspeitos, Jay e Bill, que são presos pela polícia. Cada um deles é mantido isolado do outro, sem qualquer tipo de comunicação. A polícia sabe que não tem evidências suficientes para indiciar os dois no crime principal, o que acabaria restando para cada um deles 1 ano de prisão. A polícia então oferece um acordo: se um deles confessar, mas o outro não, o que confessou (não-cooperação) sairia livre e o que não confessou cumpriria 10 anos de prisão; se os dois confessarem, cada um cumpriria 5 anos.

A matriz de payoffs é a seguinte:

É amplamente conhecido que o equilíbrio de Nash para esse jogo é cada um trair. É fácil ver que, se um dos suspeitos cooperar ou não-cooperar, o outro estará numa situação bem melhor se sempre não-cooperar. Mas o que ocorreria se você repetisse esse jogo várias vezes com vários jogadores?

O que Robert Axelrod fez foi criar um torneio em que teóricos enviariam suas estratégias (em formas de algoritmos) e ele testaria uma contra a outra, em rounds diferentes. A estratégia que foi vencedora, conhecida como “TIT FOR TAT”, foi enviada por Anatol Rapoport e seu código continha poucas linhas. Ela consistia no seguinte: 1) começar cooperando; 2) repetir a jogada anterior do outro jogador. Isto é, se o outro jogador trai numa rodada, na seguinte, no TIT FOR TAT, você também trai; se cooperar, na seguinte você também coopera.

Bom, vamos às simulações. O que ocorreria se você colocasse vários jogadores com estratégias diferentes jogando simultaneamente o dilema do prisioneiro com estratégias distintas?

Um software bastante utilizado para esse tipo de simulação é o NetLogo.

É um ambiente com linguagem de programação para a criação de modelos baseados em agentes. Foi criada por Uri Wilensky, da Northwestern University, baseada na linguagem Logo (que era bastante utilizada antigamente para ensinar crianças a programar). Pode ser baixado no site http://ccl.northwestern.edu/netlogo/ .

Ele é usado para simular vários tipos de situações, desde teorias contratualistas (Hobbes e Locke) até modelos de transporte urbano.

A ideia aqui é simular o Dilema do Prisioneiro. O NetLogo tem uma boa biblioteca de modelos prontos para teste (você pode tentar brincar com algum deles). Para isso, abra o Netlogo e vá em “File >> Models Library”. Na tela de “Models Library”, vá em “Sample Models >> Social Science >> (unverified) >> PD N-Person Iterated”. Para quem não quiser fazer o download, deixei um applet neste site https://linux.ime.usp.br/~jardim/dilema, que executa a simulação no próprio navegador.

modelslibrary

Aberto o modelo, o próximo passo é ajustar quantos jogadores você vai colocar. A estratégia “random” corresponde a trair ou cooperar de maneira aleatória. “Cooperate”, a sempre cooperar. “Defect”, a sempre trair. “Tit for tat”, ao TIT FOR TAT já explicado. “Unforgiving” , a uma estratégia em que você vai sempre cooperar  até ser traído; a partir daí, passa a trair sempre. “Unknown” é uma estratégia para ser programada posteriormente, então não vamos colocar nenhum jogador para essa.

Vamos colocar 10 jogadores para cada estratégia, exceto para unknown, que vamos deixar 0. O próximo passo é clicar em “Setup”. Você obterá uma tela parecida com esta.

prisoners

A partir disso, clique em “Go”. A simulação vai começar. Verifique os resultados em “Average Payoff”. 

Veja que, após alguns “ticks” (a medida de tempo), parece que a estratégia de sempre trair é a que rende um maior valor para seus jogadores.

defectap

Porém, após 10000 ticks, repare que as estratégias de “unforgiven” e “tit for tat” parecem ser as grandes vencedoras. A situação mudou completamente!

unforgiven

 

O NetLogo permite que você teste os modelos já prontos e que crie os próprios. Em posts próximos, pretendo tratar mais dos conceitos que fundamentam o ABM, como o de “sistemas complexos adaptativos” e “emergência”. Também pretendo fornecer mais dicas para quem deseja programar no NetLogo e listar um material disponível sobre simulações.

 

Anúncios

5 respostas em “Agent-Based Modeling para ciências sociais: simulando o dilema do prisioneiro

  1. Bem legal!

    Agora analisando do ponto de vista prático, onde uma pessoa estivesse no dilema. Sabemos que ela vai ter apenas uma oportunidade de decisão e não uma série de eventos.

    Qual seria a melhor estratégia, para este cenário de curto prazo? As mistas ou a de trair desde o início? 🙂

    • Olá, do ponto de vista prático, são muito comuns as situações em que o dilema é repetido. Quando eu escrevi o post, eu pensei seriamente em mudar a história do dilema do prisioneiro e colocar a história dos dois fazendeiros de Hume ( http://neophilosophical.blogspot.com.br/2013/02/ethical-farmers-and-zero-sum-games.html ), mas achei que seria mais justo ser fiel à primeira mesmo.
      Agora quando o jogo não é repetido, a estratégia dominante é trair. Mas vale a pena ler algum material sobre (há muito material sobre o dilema do prisioneiro). Às vezes, alterando alguma das condições, você obtem outras respostas.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s