2016-03-24 2 views
1

Я новичок в NetLogo, и я до сих пор борюсь со связями между патчами и агентами. Я строю модель изменения землепользования, где агенты являются фермерами. Патчи в моей модели имеют ценность «лотерея-фермера» (знать, какой патч принадлежит фермеру, все они вместе соответствуют ферме фермера) и значение «землепользования». Я пытаюсь подсчитать, сколько патчей «землепользования = 1» у меня есть у каждого «фермера-фермера» (фермы) и присваивать это переменной, которую агенты назвали «размер леса». Я пробовал много разных вещей, как этот кусок кода (который не работает):Подсчитайте количество патчей со специфическим значением в пределах определенных кластеров патчей

(foreach lotid-farmer count patches [ land-use = 1 ] set forest-size) 

Интересно, если кто-нибудь может объяснить, почему это утверждение не имеет никакого смысла, и предложить что-то другое, что может работать или учебник о том, как зацикливаться в NetLogo с «foreach»? Заранее спасибо.

+0

NetLogo - это специализированный язык ABM и, как таковой, работает естественным образом с наборами агентов. То, что вы хотите, это 'ask' - который автоматически управляет всеми агентами (в произвольном порядке), чтобы делать все, что находится в [] – JenB

ответ

1

lotid - это ценность. foreach требует список и командную задачу. Кроме того, ваш оператор набора не имеет значения, связанного с ним.

На самом деле, я бы не использовал foreach и попросил фермеров установить переменную. Я собираюсь предположить, что фермер-фермер - тот, кто из фермеров.

ask farmers [ 
    set forest-size count patches with [land-use = 1 and lotid-farmer = myself] 
] 
+0

или ...' lot-id-farmer = self', если переменная lotid-farmer держит агента вместо того, какая ценность агента – JenB

+0

@ Jenb, я приурочил разницу, и кажется, что [кто] меня значительно быстрее, чем хранение себя. Может быть, из-за того, как я сам хранится (требуется больше памяти?). – mattsap

+0

Большое вам спасибо, это сработало. Также хорошо знать, что привязка его к [who] вместо новой переменной агента - это простой способ заставить все работать быстрее. –

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