2016-03-21 34 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 
] 

也許看到它在這種形式將有助於明確意義。