2016-03-21 5 views
1

ich habe diesen Code und es ist mir nicht klar, was es tut:NetLogo im Umkreis

patches-own [ field ] 

let a max-one-of patches in-radius b [field] 
ifelse ([field] of a > 0.1) and ([field] of a < 0.5) 
[ 
;; do something 
] 
[ 
;; do something else 
] 

Danke,
Marco

+0

Lassen Sie maximal eins gegeben (Anzahl/Patch) und legen Sie es in Feld. Wenn das gegeben ist zwischen .1 und .5, tut etwas. Wenn nicht, tut etwas anderes. Und haben Sie das gefunden: http://ccl.northwestern.edu/netlogo/docs/dict/in-radius.html –

+0

@Evan es nicht "in Feld" setzen, setzt dieser Code nie 'Feld'. –

Antwort

0

Dies ist Code offenbar von einer Schildkröte oder Patch ausgeführt werden Es ist nicht ersichtlich, welche.

patches in-radius b ist ein Agentset des Kreises der Patches des Radius b um den aufrufenden Agenten. max-one-of ... [field] findet den Patch in diesem Agentensatz, der den größten Wert für field aufweist. Dieser Patch wird dann in der neuen lokalen Variablen a gespeichert. (A besseren Namen als a könnte winner oder peak oder best-patch gewesen.)

[field] of a ist dann, dass der Maximalwert field, die gleiche, die max-one-of gefunden. Die ifelse überprüft, ob dieser Wert in einem bestimmten Bereich ist oder nicht, und je nachdem, was anders ist.

Verwendet der Code innerhalb der ifelse weitere Verwendung von a? Wenn es so ist, cool. Wenn dies nicht der Fall, na ja, könnte der Code leichter und einfach geschrieben als:

let m max [field] of patches in-radius b 
ifelse m > 0.1 and m < 0.5 
[ 
;; do something 
] 
[ 
;; do something else 
] 

vielleicht in dieser Form zu sehen, wird dazu beitragen, die Bedeutung klar zu machen.