Configurazione dell'esperimento NetLogo


9

Sto lavorando su un modello in Netlogo e ho problemi a capire come impostare un "esperimento". Nel mio modello, ho una matrice che ha tutti i valori che mi interessano (6 in totale) e la matrice viene aggiornata ogni volta che viene soddisfatta una condizione (ogni volta che vengono uccise le tartarughe X) fondamentalmente catturando un'istantanea del modello a quel punto. I valori precedenti nella matrice vengono cancellati, quindi la matrice è una 1x6, non una matrice 10000x6 con solo una riga aggiornata per ogni istantanea.

Quello che vorrei fare è impostare un esperimento per eseguire il mio modello diverse centinaia di volte, raccogliendo questa matrice ogni volta per il primo numero X di istantanee o fino a quando si sono verificati tick Y. Ma non riesco a vedere un modo per farlo nella configurazione dell'esperimento?

È possibile farlo o dovrei creare 100x6 (100 istantanee) e quindi esportare quella matrice in un CSV in qualche modo?

Non ho mai organizzato un esperimento su Netlogo, quindi potrebbe essere semplicissimo da fare o semplicemente impossibile.


Ho fatto una risposta usando BehaviorSpace perché penso che sarebbe il più semplice. Ma non c'è alcun problema con la creazione di un file CSV e l'aggiunta di ogni istantanea mentre viene creata. Cioè, non è necessario disporre di una matrice 100x6 ed esportarla. Il motivo per cui non consiglio questo approccio è che tu dici anche di volere diverse centinaia di esecuzioni separate, e questo ti darebbe un file CSV separato per ogni esecuzione.
gennaio

Risposte:


3

Se capisco correttamente la tua domanda, allora vuoi 6 valori segnalati a tick specifici durante la corsa. Tali tick sono scelti soddisfacendo una condizione piuttosto che un certo numero di tick. NetLogo ha uno strumento di gestione degli esperimenti chiamato BehaviorSpace. È semplice impostare diverse centinaia di corse (potenzialmente con valori diversi per qualsiasi input su cursori, ecc.). Non è così semplice produrre solo su determinati tick.

La finestra di dialogo BehaviorSpace ha un segno di spunta per ogni segno di spunta o solo alla fine. Se lo hai impostato su ogni tick, puoi esportare automaticamente i sei numeri per ogni tick. Nel tuo caso, è probabile che sia più facile farlo piuttosto che provare e produrre solo occasionalmente. È possibile aggiungere un settimo reporter vero / falso per sapere se la matrice è stata reimpostata in questo segno di spunta. Quindi tutto ciò che devi fare nella post-elaborazione è selezionare le righe in cui quel settimo reporter è vero.

Se si desidera eseguire il modello per esattamente N snapshot, è inoltre necessario impostare una variabile globale che viene incrementata di ciascun punto di istantanea. Le impostazioni di BehaviorSpace utilizzerebbero quindi quel contatore per la condizione di arresto.


2

Non sono sicuro di aver capito la tua domanda, ma di solito avrai una funzione Setup e una funzione Run, giusto? Quindi suppongo che la struttura del codice qui sotto dovrebbe essere una specie di quello che stai cercando. Non utilizzo netlogo da un po 'di tempo, quindi l'esatto codice matriciale che dovrai capire da solo.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.