Расширение table
имеет замечательный, супер полезный, table:group-agents
примитив, который как раз то, что вам нужно в этом случае.
Вотпример того, как вы можете его использовать:
extensions [ table ]
globals [ groups ]
to setup
clear-all
create-turtles 100 [
set color one-of [13 14 15 23 24 25 43 44 45 63 64 65 93 94 95]
]
set groups table:group-agents turtles [ color - color mod 10 ]
print groups
foreach (range 10 100 10) [ g ->
let turtles-in-group table:get-or-default groups g no-turtles
print (word count turtles-in-group " turtles in group " g)
]
end
Ключевая строка здесь
set groups table:group-agents turtles [ color - color mod 10 ]
Часть color - color mod 10
- это всего лишь маленькая хитрость для преобразования цвета, подобного 23, в "круглый цвет, например, 20. Черепахи, которые имеют то же значение, что и выражение, помещаются в одну группуРезультат выполнения этого кода будет примерно таким:
{{table: [[60 (agentset, 19 turtles)] [10 (agentset, 32 turtles)] [90 (agentset, 19 turtles)] [20 (agentset, 20 turtles)] [40 (agentset, 10 turtles)]]}}
32 turtles in group 10
20 turtles in group 20
0 turtles in group 30
10 turtles in group 40
0 turtles in group 50
19 turtles in group 60
0 turtles in group 70
0 turtles in group 80
19 turtles in group 90
Как видите, можно извлечь всю необходимую вам информацию из таблицы. Стоит ознакомиться с тем, как работают столы, если вы раньше не играли с ними.
Я не знаю, что вы собираетесь делать с этим в конце, но, возможно, стоит создать my-group
переменная для ваших черепах. Предположим, у вас есть
turtles-own [ my-group ]
в верхней части кода, вы можете сделать что-то вроде:
foreach table:keys groups [ g ->
ask table:get groups g [
set my-group table:get groups g
]
]
, что облегчает выполнение таких вещей, как:
ask one-of turtles [ create-link-with one-of other my-group ]
Ссылки, кстати, также полезны для ознакомления, если вы новичок в NetLogo.
Когда я работаю с черепахами, которые являются членами групп, я часто использую groups
черепахупорода для представления группы и создания связей между отдельными черепахами и группой, к которой они принадлежат. Это особенно полезно, если у вас есть атрибуты «группового уровня», которые необходимо отслеживать. Я был бы рад остановиться на этом, но я думаю, что это выходит за рамки этого конкретного ответа ...