NetLogo две операции с наборами агентов - PullRequest
9 голосов
/ 08 декабря 2011

У меня есть два набора агентов.Существуют ли функции для поиска:

  1. Набор агентов, присутствующих в обоих (пересечение)
  2. Набор агентов, присутствующих в одном, а не в другом

Мне очень трудно реализовать это вручную, особенно когда это необходимо внутри тройного ask

Идеальное использование будет похоже на синтаксис with:

let cross set1 and-in set2
let uniq set1 with [color = red] not-in set2

Простые вещи, такие как «Есть ли агент А в агентском наборе Х?»проблемные

1 Ответ

12 голосов
/ 08 декабря 2011

Для первого вы используете примитив turtle-set. Для второго вам понадобится примитив member?, который также работает на наборах агентов. Как таковой:

to setup
  ca
  create-turtles 10 [set color red]
  create-turtles 10 [set color blue]
  let red-ones turtles with [color = red]
  let blue-ones turtles with [color = blue]

  ;join 2 agent sets
  let joinset (turtle-set red-ones blue-ones)
  show joinset

  let even-ones (turtles with [who mod 2 = 0])
  ;subtract even-ones from red-ones
  let subtractset red-ones with [not member? self even-ones]
  show subtractset
end
...