Когда of
применяется к набору агентов, например, patches
, он выдаст вам список значений переменной или репортера в скобках для каждого агента в наборе. Поскольку агенты запрашиваются случайным образом, список будет в случайном порядке. Таким образом,
ifelse-value any? patches[
[bank] of patches]
[0]
предоставит вам список значений bank
, сообщаемых каждым патчем, в случайном порядке. (Поскольку патчи всегда есть, any? patches
всегда будет верным, поэтому то, что вы написали, совпадает с
[bank] of patches]
). Поскольку список, который вы показываете, имеет разные значения для разных патчей, я предполагаю, что bank
является переменной patch-only
, а не глобальным значением. (Если бы он был последним, список имел бы одно и то же значение для каждого патча.)
Вопрос в том, что должен представлять bank
. Из предоставленного вами кода видно, что каждый патч увеличивает свое значение bank
, если bewohnbar?
имеет значение true. (Кстати, условие if bewohnbar? = true [
такое же, как просто if bewohnbar? [
. if
ожидает логическое значение или выражение, а bewohnbar?
уже является логическим.) Имеет ли bewohnbar?
какое-то отношение к патчу быть синим? Если это так, bank
увеличивается при каждом вызове до count-bewohnbar
, так что оно положительное, но, возможно, больше, чем единица для любого патча, который стал синим, поэтому значения в списке, который вы видите, различны для разных патчей. Они показывают, сколько тиков было патчем синего цвета (если count-bewohnbar
вызывается один раз за тик).
Репортер, который посчитал, сколько патчей существует, для которых bewohnbar?
является (или было) истинным, будет тогда be
count filter [v -> v > 0] [bank] of patches
filter
берет список значений bank
, сохраняет только те, которые больше нуля, и считает их. Но гораздо более простой подход заключается в подсчете количества патчей, для которых bewohnbar?
является истинным.
count patches with [bewohnbar?]
Это то, что вы хотите?
Charles