Configuration de l'expérience NetLogo


9

Je travaille sur un modèle dans Netlogo et j'ai du mal à comprendre comment mettre en place une "expérience". Dans mon modèle, j'ai une matrice qui a toutes les valeurs qui m'intéressent (6 au total) et la matrice est mise à jour chaque fois qu'une condition est remplie (chaque fois que X tortues sont tuées) capturant essentiellement un instantané de la modèle à ce point. Les valeurs précédentes de la matrice sont effacées, donc la matrice est une matrice 1x6, pas une matrice 10000x6 avec une seule ligne mise à jour pour chaque instantané.

Ce que je voudrais faire, c'est mettre en place une expérience pour exécuter mon modèle plusieurs centaines de fois, en collectant cette matrice à chaque fois pour le premier nombre X d'instantanés ou jusqu'à ce que Y ticks se soient produits. Mais je ne vois pas de moyen de le faire dans la configuration de l'expérience?

Est-ce possible de le faire, ou devrais-je créer le 100x6 (100 instantanés) et ensuite simplement exporter cette matrice vers un CSV?

Je n'ai jamais mis en place une expérience dans Netlogo, donc cela pourrait être super facile à faire ou tout simplement complètement impossible.


J'ai fait une réponse en utilisant BehaviorSpace car je pense que ce serait le plus simple. Mais il n'y a aucun problème avec la création d'un fichier csv et l'ajout de chaque instantané au fur et à mesure de sa création. Autrement dit, vous n'avez pas besoin d'avoir une matrice 100x6 et de l'exporter. La raison pour laquelle je ne recommande pas cette approche est que vous dites également que vous voulez plusieurs centaines d'exécutions distinctes, ce qui vous donnerait un fichier csv distinct pour chaque exécution.
JenB

Réponses:


3

Si je comprends bien votre question, vous voulez que 6 valeurs soient signalées à des ticks spécifiques pendant l'exécution. Ces tiques sont choisies en remplissant une condition plutôt qu'un certain nombre de tiques. NetLogo dispose d'un outil de gestion d'expériences appelé BehaviorSpace. Il est simple de configurer vos centaines de courses (potentiellement avec des valeurs différentes pour toutes les entrées sur les curseurs, etc.). Ce n'est pas si simple de ne produire que sur certains ticks.

La boîte de dialogue BehaviorSpace comporte une coche pour chaque tick ou à la fin uniquement. Si vous l'avez défini à chaque tick, vous pouvez exporter automatiquement vos six numéros à chaque tick. Dans votre cas, il est probablement plus facile de faire cela que d'essayer de ne produire qu'occasionnellement. Vous pouvez ajouter un septième reporter qui est vrai / faux pour savoir si la matrice est réinitialisée cette coche. Ensuite, tout ce que vous avez à faire en post-traitement est de sélectionner les lignes où ce septième reporter est vrai.

Si vous souhaitez exécuter le modèle pour exactement N instantanés, vous devez également configurer une variable globale incrémentée à chaque point d'instantané. Vos paramètres BehaviorSpace utiliseraient alors ce compteur pour la condition d'arrêt.


2

Je ne suis pas sûr de comprendre votre question, mais vous aurez généralement une fonction de configuration et une fonction d'exécution, n'est-ce pas? Je suppose donc que la structure de code ci-dessous devrait être en quelque sorte ce que vous recherchez. Je n'ai pas utilisé netlogo depuis un moment, donc le code de matrice exact que vous devrez déterminer vous-même.

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.