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.
Antworten:
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.
quelle
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.
quelle