Netlogo: спрашивать «до максимального количества» - PullRequest
0 голосов
/ 15 мая 2018

Есть ли способ задать до определенного количества патчей? Например, можно запросить до 100 патчей, но доступно только 50, поэтому действие выполняет эти 50 патчей. Спасибо.

1 Ответ

0 голосов
/ 15 мая 2018

Способ сделать это в данный момент будет выглядеть примерно так:

to-report at-most [n agents]
  report ifelse-value (n <= count agents) [ agents ] [ n-of n agents ]
end

Затем вы можете сказать ask at-most 100 patches [ ... ], и вы получите то, что хотите.

Обратите внимание, что это не работает, если есть вероятность, что ваша переменная содержит nobody вместо набора агентов. В этом случае вы можете преобразовать nobody в набор агентов, используя patch-set, turtle-set или link-set, в зависимости от типа агента, который, как вы ожидаете, он будет содержать. Например:

ask one-of turtle-set other turtles-here [ ... ]

Обратите внимание, что необходимость прыгать через все эти обручи может исчезнуть в ближайшем будущем. В настоящее время существует открытое предложение добавить примитив к NetLogo для обработки этих случаев: https://github.com/NetLogo/NetLogo/issues/1594.

...