Configuração da experiência do NetLogo

9

Estou trabalhando em um modelo no Netlogo e estou tendo problemas para entender como configurar um "experimento". No meu modelo, tenho uma matriz que possui todos os valores nos quais estou interessado (6 no total) e a matriz é atualizada sempre que uma condição é atendida (toda vez que X tartarugas são mortas) basicamente capturando uma captura instantânea do modelo nesse ponto. Os valores anteriores na matriz são limpos, portanto, a matriz é uma matriz de 1x6, não uma matriz de 10000x6, com apenas uma linha sendo atualizada para cada captura instantânea.

O que eu gostaria de fazer é configurar um experimento para executar meu modelo várias centenas de vezes, coletando essa matriz todas as vezes para o primeiro número X de instantâneos ou até que ocorram Y. Mas não vejo uma maneira de fazer isso na configuração do experimento?

Isso é possível, ou eu teria que criar os 100x6 (100 instantâneos) e depois exportar essa matriz para um CSV de alguma forma?

Eu nunca montei um experimento no Netlogo, então isso pode ser super fácil de fazer ou ser completamente impossível.

Diesel
fonte
Eu respondi usando o BehaviorSpace, pois acho que seria o mais fácil. Mas não há problema em criar um arquivo csv e anexar cada instantâneo conforme ele é criado. Ou seja, você não precisa ter uma matriz 100x6 e exportá-la. O motivo de eu não recomendar essa abordagem é que você também diz que deseja várias centenas de execuções separadas e isso forneceria um arquivo csv separado para cada execução.
JenB 11/03

Respostas:

3

Se entendi sua pergunta corretamente, você deseja que 6 valores sejam informados em ticks específicos durante a execução. Esses ticks são escolhidos por atender a uma condição e não a um certo número de ticks. O NetLogo possui uma ferramenta de gerenciamento de experimentos chamada BehaviorSpace. É fácil configurar várias centenas de execuções (potencialmente com valores diferentes para quaisquer entradas nos controles deslizantes, etc.). Não é tão simples gerar apenas alguns ticks.

A caixa de diálogo BehaviorSpace possui uma marca de seleção para cada marca ou somente no final. Se você o tiver definido para cada tick, poderá exportar seus seis números a cada tick automaticamente. No seu caso, é provável que seja mais fácil fazer isso do que tentar e apenas produzir ocasionalmente. Você pode adicionar um sétimo repórter que seja verdadeiro / falso para saber se a matriz está sendo redefinida para esse tick. Então, tudo o que você precisa fazer no pós-processamento é selecionar as linhas em que esse sétimo repórter é verdadeiro.

Se você deseja executar o modelo para exatamente N snapshots, também precisará configurar uma variável global que é incrementada a cada ponto de snapshot. Suas configurações do BehaviorSpace usariam esse contador para a condição de parada.

JenB
fonte
2

Não sei se entendi sua pergunta, mas geralmente você terá uma função de instalação e uma função de execução, correto? Então, acho que a estrutura de código abaixo deve ser o que você está procurando. Eu não uso o netlogo há algum tempo, então o código exato da matriz você terá que descobrir por si mesmo.

globals your-1by6-matrix your-100by6-matrix

to setup
  ;reset your experiment
end

to run
  ;run your experiment
end

to run100times
  repeat 100[
    setup
    run
    ;save your 1by6matrix into your 100by6matrix
  ]
  ;use your 100by6matrix to plot or export
end
Jumboman
fonte