netlogo - 如何提取代理集中的代理数量?(网络标志)
问题描述
我有一个补丁变量设置为visitantBees []
. 目的是每个补丁都有一个记录,其中有哪些代理。注册“访问代理”的方法如下:
to computing Frequency
ask patches
[
if any? turtles-here
[
set visitantBees lput [who] of turtles-here visitantBees
]
]
end
但是,这样会返回一个列表列表([[3 1 0 2 4]]
例如)。
有谁知道我如何只将who
数字添加到visitantBees
列表中?也许是一种从turtles-here
.
解决方案
您获得列表列表的原因是两者visitantBees
都是[who] of turtles-here
列表。
虽然visitantBees
是列表,因为您将其设置为列表,为什么是[who] of turtles-here
列表?因为turtles-here
是代理集 - 报告代理集变量的唯一方法是创建一个列表。例如,如果你想知道[color] of turtles
,NetLogo 给你这个信息的唯一方法就是把所有海龟的颜色放在一个列表中。
那么,为什么是turtles-here
代理集?因为,即使有时turtles-here
可以包含 0 或 1 个海龟,也可以包含多个海龟。任何适合包含多个代理的东西都必须是代理集。
另一方面,当您要求单个代理报告它的一个变量时,您会得到这样的值,即不是一个列表(当然,除非该值本身就是一个列表)。例如,[color] of turtle 0
只是它的颜色,而不是包含颜色的列表。
因此,您可以通过单独要求补丁上的每只海龟将它们附加who
到visitantBees
:
to computingFrequency
ask patches [
ask turtles-here [
set visitantBees lput who visitantBees
]
]
end
或者,假设海龟可以自动读取和更改它们所在的补丁的补丁自己的变量,你可以让它更简单:
to computingFrequency
ask turtles [
set visitantBees lput who visitantBees
]
end
这也更快,因为它只会与海龟(根据定义,它们站在一块补丁上)接触,而不是与每个补丁接触,即使上面没有乌龟。
推荐阅读
- python - 如何计算具有动态日期范围的唯一值
- mongodb - 具有多个过滤器的 MongoDB UpdateMany
- python - 如何在 tkinter 中制作一个按钮,让我计算它被按下的次数?
- oracle - Java 数据库连接 (JDBC) 中的 Oracle 12c MAX 语句
- java - 未读取字符串输入
- java - 绘制箭头时出现问题。如何正确设置坐标?
- c# - 使用多包含语句提高 Entity Framework Core EF 的性能
- javascript - 如何制作最小化的 Jquery 库?
- reactjs - Heroku 抛出错误(javascript 堆内存不足)
- xamarin - 您目前使用哪个进行 XF 身份验证,为什么是 Firebase 或 Appcenter?