2016-03-21 31 views
1

我有这样的代码,它不是很清楚,我是什么做的:的NetLogo在半径

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 
] 

谢谢
马尔科

+0

让最大的一个给定(数字/补丁),并把它放在字段中。如果给定介于.1和.5之间,则执行某些操作。如果没有,做别的事情。并发现你这个:http://ccl.northwestern.edu/netlogo/docs/dict/in-radius.html –

+0

@Evan它不会“把它放在字段中”,这个代码从不设置“字段”。 –

回答

0

这显然是代码由龟或补丁程序运行,哪个是不明显的。

patches in-radius b是围绕呼叫代理程序的修补程序圈,代码半径为b的代理程序集。 max-one-of ... [field]找到该代理程序集中具有最大值field的修补程序。然后该补丁存储在新的本地变量a中。 (比a一个更好的名字可能是winnerpeakbest-patch。)

[field] of a是那么的field是最大值,即max-one-of发现了同样的一个。 ifelse检查该值是否在一定范围内,并且执行一些不同的操作,具体取决于。

ifelse内部的代码是否进一步使用a?如果确实如此,很酷。如果不是,那么代码可以更容易和简单地写成:

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

也许看到它在这种形式将有助于明确意义。