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.
Réponses:
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.
la source
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.
la source