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

Спасибо,
Marco

+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 могло быть winner или peak или best-patch.)

[field] of a тогда, что максимальное значение field, тот же самый, что нашли max-one-of. ifelse проверяет, находится ли это значение в определенном диапазоне или нет, и делает что-то другое, в зависимости.

Использует ли код внутри ifelsea? Если да, то здорово. Если это не так, ну, код может быть легко и просто записать в виде:

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

возможно, видя его в таком виде поможет сделать смысл ясен.

Смежные вопросы