NetLogo Experiment Setup


9

Ich arbeite an einem Modell in Netlogo und habe ein Problem beim Verstehen, wie ein "Experiment" eingerichtet wird. In meinem Modell habe ich eine Matrix, die alle Werte enthält, an denen ich interessiert bin (insgesamt 6), und die Matrix wird aktualisiert, wenn eine Bedingung erfüllt ist (jedes Mal, wenn X Schildkröten getötet werden), und im Grunde genommen eine Momentaufnahme der Modell an diesem Punkt. Die vorherigen Werte in der Matrix werden gelöscht, sodass die Matrix eine 1x6-Matrix und keine 10000x6-Matrix ist und nur eine Zeile für jeden Snapshot aktualisiert wird.

Was ich tun möchte, ist, ein Experiment einzurichten, um mein Modell mehrere hundert Mal auszuführen, wobei diese Matrix jedes Mal für die erste X-Anzahl von Schnappschüssen oder bis Y-Ticks aufgetreten sind, gesammelt wird. Aber ich kann im Versuchsaufbau keinen Weg finden, das zu tun?

Ist dies möglich oder müsste ich die 100x6 (100 Snapshots) erstellen und diese Matrix dann einfach irgendwie in eine CSV exportieren?

Ich habe noch nie ein Experiment in Netlogo durchgeführt, daher ist dies möglicherweise sehr einfach oder völlig unmöglich.


Ich habe mit BehaviorSpace eine Antwort gegeben, da ich denke, dass dies am einfachsten wäre. Es ist jedoch kein Problem, eine CSV-Datei zu erstellen und jeden Snapshot beim Erstellen anzuhängen. Das heißt, Sie müssen keine 100x6-Matrix haben und diese exportieren. Der Grund, warum ich diesen Ansatz nicht empfehle, ist, dass Sie auch sagen, Sie möchten mehrere hundert separate Läufe, und dies würde Ihnen für jeden Lauf eine separate CSV-Datei geben.
JenB

Antworten:


3

Wenn ich Ihre Frage richtig verstehe, möchten Sie, dass während des Laufs 6 Werte bei bestimmten Ticks gemeldet werden. Diese Zecken werden ausgewählt, indem eine Bedingung anstelle einer bestimmten Anzahl von Zecken erfüllt wird. NetLogo verfügt über ein Experimentmanagement-Tool namens BehaviorSpace. Es ist unkompliziert, mehrere hundert Läufe einzurichten (möglicherweise mit unterschiedlichen Werten für Eingaben auf Schiebereglern usw.). Es ist nicht so einfach, nur bei bestimmten Ticks auszugeben.

Das Dialogfeld BehaviorSpace hat ein Häkchen für jedes Häkchen oder nur am Ende. Wenn Sie es auf jedes Häkchen gesetzt haben, können Sie Ihre sechs Zahlen jedes Häkchen automatisch exportieren. In Ihrem Fall ist es wahrscheinlich einfacher, dies zu tun, als zu versuchen, nur gelegentlich auszugeben. Sie können einen siebten Reporter hinzufügen, der wahr / falsch ist, ob die Matrix dieses Häkchen zurückgesetzt wird. Dann müssen Sie bei der Nachbearbeitung nur noch die Zeilen auswählen, in denen dieser siebte Reporter wahr ist.

Wenn Sie das Modell für genau N Snapshots ausführen möchten, müssen Sie auch eine globale Variable einrichten, die für jeden Snapshot-Punkt inkrementiert wird. Ihre BehaviorSpace-Einstellungen würden dann diesen Zähler für die Stoppbedingung verwenden.


2

Ich bin nicht sicher, ob ich Ihre Frage verstehe, aber normalerweise haben Sie eine Setup-Funktion und eine Run-Funktion, richtig? Ich denke also, dass die folgende Codestruktur genau das sein sollte, wonach Sie suchen. Ich habe netlogo schon eine Weile nicht mehr verwendet, daher müssen Sie den genauen Matrixcode selbst herausfinden.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.