netlogo - 如何在 NetLogo 中识别一群乌龟?
问题描述
有没有人有任何解决方案让乌龟识别一群其他乌龟,即一群乌龟聚集在一起?以下方法不起作用,因为半径内的 50 只海龟可能是不同的(到处都是,而不是彼此靠近):
if count turtles in-radius 20 >= 50 [show "There's a crowd"]
目前,我将人群定义为 50 多只海龟并排站立。
解决方案
如果您想要连续连接的海龟,您可以修改模型库中的 Patch Clusters Example - 这是一个版本。使用此设置:
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
]
end
identify-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
end
推荐阅读
- python - 正则表达式拆分字符串,不包括可转义引号之间的分隔符
- angular - 使用 angular-svg-icon 组件从库的资产中引用 svg 图标
- swift - React Native 应用程序向 SwiftUI 小部件发送数据
- time-complexity - 计算函数的时间复杂度
- javascript - 无法使用 Ionic 4+ 设置动画启动画面
- rust - 根据所选功能更改编译器选项
- database - 在 codeigniter 4.0 中设置密码和数据库用户的好习惯是什么?
- c# - 将字符串值分配给 InnerText XML 属性值
- javascript - 如何在(使用)webpack 中限制两个版本的 javascript 文件?
- reactjs - REDUX SAGA - API 重试同构提取