Wenn Sie nicht über die spezifische „Spirale“ -Sequenz in Ihrem Beispiel ist es egal, können Sie eine Variante von Luck-Lösung verwenden, die Standard-Patch-Reihenfolge, um die Vorteile von NetLogo der nimmt:
patches-own [ id ]
to setup
clear-all
(foreach (sort patches) (range count patches) [ [p n] ->
ask p [ set id n ]
])
ask patches [ set plabel id ]
end
Or Sie könnten eine etwas andere Sortierreihenfolge verwenden, die mit sort-by
angegeben wurde.
Das gesagt, ich weiß nicht, was Ihre Anforderungen sind, aber ich würde die Idee einer bestimmten ID für Patches in Frage stellen. Die meisten Dinge in NetLogo können getan werden, ohne jemals auf die ID eines Agenten zu verweisen. Die who
Nummer selbst ist ein Relikt von sehr alten NetLogo-Versionen und sollte fast nie in modernen Code verwendet werden.
Wenn Sie auf einen bestimmten Patch verweisen möchten, beziehen Sie sich auf seine Koordinaten, zum Beispiel: patch -2 4
.
Wenn Sie einen Patch für zukünftige Referenz speichern möchten, speichern Sie einen Verweis auf das Patch selbst, nicht irgendeine Art von ID. Zum Beispiel: ask turtles [ set my-patch one-of patches ]
.
Vielen Dank Glück für detaillierte Antwort. Ich bin neu bei Netlogo. Ich hoffe, dass Sie nichts dagegen haben werden, dass ich frage, ob in der obigen Liste [o_patch_id] wieder geschrieben werden soll und ob o_patch gefragt wird. Und was ist der Zweck von _id. Muss ich hier wieder eine Liste anlegen? und was verstehen wir unter diesem Symbol ->. Ich habe dasselbe in Netlogo kopiert und versucht, aber viele Fehler erscheinen. bitte führen. – Sadaf
Hallo Sadaf, ich hätte angeben sollen, dass ich Netlogo 6.0 verwende; Die Syntax für das 'foreach'-Primitiv unterscheidet sich leicht zwischen den Versionen 5 und 6, was die Ursache für Ihre Fehler sein kann, wenn Sie eine ältere Version als ich verwenden. Oder sie könnten auftreten, wenn nicht die gleichen Welteinstellungen wie oben verwendet werden. Ich empfehle den [Netlogo-Wörterbucheintrag] (http://ccl.northwestern.edu/netlogo/docs/dict/foreach.html) auf "foreach" zu lesen, um zu verstehen, was das '->' im obigen Code tut - Es hilft auch zu klären, dass "o_patch" und "_id" nur temporäre Variablen für "foreach" sind. –
ok danke zur Klärung. Ich benutze jetzt NetLogo 6. Ich führe das gleiche Programm aus, bekomme aber diesen Fehler, da alle Listen-Argumente für FOREACH die gleiche Länge haben müssen. Fehler während Beobachter läuft FOREACH aufgerufen durch Prozedur ASSIGN-IDS aufgerufen von Button 'assign-IDs' – Sadaf