Ich versuche, räumliche Muster auf Netlogo zu simulieren. Ich habe einen Code geschrieben, der die Landschaft in gleiche Teile teilt, abhängig von den vom Benutzer eingestellten Zeilen- und Nullzeilen. Zum Beispiel, in diesem Fall eine 3 X 3 Landschaft, bestehend aus 9 ‚Lager‘:Looping zu Anzahl Patches in Netlogo
3 X 3 landscape; each smaller square is a camp
Ich versuche, jedes Lager eine andere PLabel zu setzen, 0-8 in diesem Fall der Nummerierung, um die Nutzungs Identifizieren Sie, welches Lager das ist. Ich habe versucht, Schleifen zu verwenden, um dies festzulegen, aber unerwartete Probleme auftreten.
to set-camp-number
let startcol max-pxcor/no-of-cols
let startrow max-pycor/no-of-rows
let t 1
set camp-number 0
while [ t <= no-of-cols ] [
set a startcol * t
ask patches with [ pxcor <= a and pxcor >= a - startcol ] [
let k 1
loop [
if k > no-of-rows [ stop ]
set b startrow * k
ask patches with [ pxcor <= a and pxcor >= a - startcol and pycor <= b and pycor >= b - startrow ] [
set plabel camp-number ]
set camp-number camp-number + 1
set k k + 1 ]]
set t t + 1 ]
end
Statt zu bekommen, was ich will (was jedes Lager ist selbst Patches Markierung 0-8 in diesem Szenario), die Lagernummer scheint selbst in einer Schleife laufen zu lassen, ist es sehr große Werte von PLabel resultierenden .
Ich habe andere Methoden ausprobiert, aber dies scheint einfachsten zu sein, zu verstehen, aber ich weiß, Schleifen manchmal in Netlogo schwierig sein können. Ich habe versucht, foreach-Befehl zu implementieren, da das Schleifen so mühsam ist, Patches zu beschriften (es muss einen anderen Weg geben?), Aber ich blieb stecken. Ich würde deine Hilfe sehr schätzen. Vielen Dank!
Warum nicht einfach sagen lassen _x pxcor - min-pxcor? Gleiches für das y. Ich sehe kein Bedürfnis, einen Verweis auf sich selbst zu geben. – mattsap
Dies ist bei weitem ein effizienter Code! Ich habe mich ein wenig mit der Logik hinter der letzten Zeile auseinandergesetzt, aber das macht jetzt viel mehr Sinn! Danke Alan! – lyh198
@mattsap Ja, das könnte man hier machen. Ich neige zu Schreibverfahren ohne Nebenwirkungen, sogar in NetLogo. – Alan