有没有人有任何解决方案让一只海龟识别一群其他海龟,即一群海龟聚集在一起?下面的方法不会起作用,因为半径内的50只海龟可能是不同的(到处都是,而且不是彼此在床边):
if count turtles in-radius 20 >= 50 [show "There's a crowd"]目前,我将人群定义为50+海龟站在一起。
发布于 2019-03-26 01:47:50
如果您想要连续连接的海龟,您可以修改Model Library中的Patch Clusters示例-这是一个版本。使用此设置:
globals [ groups>50 ]
turtles-own [
my-group
]
to setup
ca
crt 500 [
set my-group -99
set shape "square"
move-to one-of patches
]
reset-ticks
end和这些帮助器函数:
to identify-groups
let group-counter 0
loop [
let seed one-of turtles with [ my-group = -99 ]
if seed = nobody [
stop
]
ask seed [
set my-group group-counter
set group-counter group-counter + 1
spread-group
]
]
end
to spread-group
set label my-group
set color my-group * 10 + 5
ask ( turtles-on neighbors ) with [ my-group = -99 ] [
set my-group [my-group] of myself
spread-group
]
endidentify-groups运行一个循环,识别连续补丁上的所有海龟,并在这些组中传播唯一的my-group值。
然后,您可以获取唯一的组值,并使用filter仅返回存在某个阈值海龟计数的组号:
to go
identify-groups
let unique-groups sort remove-duplicates [my-group] of turtles
set groups>50 filter [ i -> count turtles with [ my-group = i ] >= 50 ] unique-groups
print groups>50
endhttps://stackoverflow.com/questions/55335241
复制相似问题