Skip to content

Projeto baseado no artigo de Robert Axelrod, "Effective Choice in the Prisoner’s Dilemma" (Axelrod, R. 1980).

Notifications You must be signed in to change notification settings

arturbernardo/thunderdome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Thunderdome

Este é um projeto baseado no artigo de Robert Axelrod, "Effective Choice in the Prisoner’s Dilemma" (Axelrod, R. 1980).

A implementação foi inspirada pelo vídeo do Derek Muller (Veritasium), disponível aqui.

Postagem no linkedin com mais ideias sobre o projeto linkedin

Estrutura do Projeto

O Thunderdome é um jogo que simula interações baseadas no dilema do prisioneiro. Cada estratégia interage por meio da leitura e escrita nos fluxos de entrada e saída padrão (stdin e stdout). O Thunderdome inicia e encerra os JARs das estratégias, e o JAR de uma estratégia deve permanecer em execução até ser finalizado.

Instruções de Uso

  1. Crie uma estratégia:

    • Crie um arquivo .java contendo um método main.
    • O algoritmo deve rodar até que seja encerrado por terceiros, visto que o Thunderdome irá controlar o jogo.
    • O primeiro movimento será sinalizado pela mensagem "GO". A estratégia deve responder com seu primeiro movimento.
    • Se a estratégia pretende colaborar, deve responder C, se pretende trair, deve responder T.
    • O Thunderdome cruza o retorno das duas estratégias, computa o resultado e as informa qual foi o movimento anterior do oponente.
    • Ao receber a informação com o movimento do oponente, a estratégia deve computar como reagir e responder imediatamente.
    • Nenhuma outra informação deve ser lida ou escrito via std.
    • A pasta strategies contém diversos exemplos.
  2. Compilação do Código Java:

    • Compile suas estratégias:

      javac YourStrategyMain.java
      jar cfe YourStrategy.jar YourStrategyMain YourStrategyMain.class
      java -jar YourStrategy.jar
      
    • As coloque no diretório acessado pelo Thunderdome:

      • caso rode via IDE, a pasta players é a padrão. Outra pode ser passada por parâmetro.
      • caso crie um jar do thunderdome, crie um pasta players no mesmo nível do jar ou passe como parâmetro um path.
    • Ou use os scripts bash na pasta strategies, sendo o primeiro parâmetro o nome da estratégia (que deve corresponder ao nome do .java) e o segundo parâmetro do compile.sh a pasta destino:

      ./compile.sh YourStrategy pastaDestino
      ./compileAndRun.sh YourStrategy
      
  3. Adicionando Estratégias Compiladas:

    • Adicione os JARs das estratégias à pasta "players".
    • Caso tenha usado o script fornecido, o jar já estará na pasta.

Executando o Thunderdome

  • Execute o Thunderdome:
  • Output é um CSV chamado tournament.csv que será criado na raiz.

Analises dos resultados

🚧 em construção 🚧

https://colab.research.google.com/drive/1Ex3tsVOQD64o72aIhgQ_nfW1lsHRvWTR#scrollTo=YZpBFi_mx1t4

About

Projeto baseado no artigo de Robert Axelrod, "Effective Choice in the Prisoner’s Dilemma" (Axelrod, R. 1980).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published