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.
Respostas:
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.
fonte
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.
fonte