Проблема с монитором NetLo go не показывает правильное значение - PullRequest
1 голос
/ 06 марта 2020

Поэтому я хочу запрограммировать монитор на go на +1, если какой-либо патч станет синим

Репортер для моего монитора:

ifelse-value any? patches[ [bank] of patches] [0] the code is: to count-bewohnbar ask patches[ if bewohnbar? = true [set Bank Bank + 1] ]

но все, что показывает монитор, это [000233900000 ...], поэтому он просто показывает случайные строки чисел. Другая проблема, с которой я столкнулся в другом своем вопросе, заключалась в том, что у меня есть другой монитор с переменной money, он работает, и я хочу создать связь между ними следующим образом:

```ask patches[
    let Bank count (patches with [pcolor = blue])
     if-else (pcolor = blue) [
     if (Bank + 1)  [set money money - 100]
      ]
    [ if Bank Bank - 1 [set money money + 50]
     ]
      ]``` 

I can ' Если это не сработает, ответы на мой первый вопрос очень помогли, но я все еще застрял здесь. Спасибо за каждую информацию.

1 Ответ

3 голосов
/ 06 марта 2020

Когда 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

...