问题:turtle 变量是 int 类型(例如 -1),但 patch 变量是 NetLogo 6.2 中的单元素列表([-1])
Problem: The turtle variable is of type int (-1, for example), but the patch variable is a one-element list ( [-1] ) in NetLogo 6.2
我有一个疑问:
上下文:我有一个代码,简单地说,海龟有一个整数变量(能量收集),补丁会从中更新它们自己的变量(我的代理能量),如代码中所述下面的代码片段。
问题:turtle变量是int类型(例如-1),但是patch变量是单元素列表([-1])。
问题:这应该发生吗?否则,我怎样才能使补丁变量只是一个整数值?
ask turtles
[
set energy-collected (energy - euse)
]
ask patches
[
set energy-of-my-agent [energy-collected] of turtles-here
]
提前致谢
你要考虑的主要是什么 of
reports.
在你的例子中 turtles-here
是一个代理集,而不是一个特定的代理。
这是因为,虽然您可能在一个小块上只有一只海龟,但您也可能在一个小块上有多只海龟。因此 turtles-here
reports an agentset,即使该代理集可能由一只海龟组成。
因此,通过 of
([energy-collected] of turtles-here
获得)的一组值将是一个值列表 - 即使该列表仅包含一个元素.
因此我会说:
- 您的模型制作方式是否使得每个小块不能一次有超过一只乌龟?那么你可以这样做:
ask patches [
if any? turtles-here [
set energy-of-my-agent [energy-collected] of one-of turtles-here
]
]
在上面的代码中,one-of turtles-here
reports a specific agent - 不再是代理集。
因此,通过 of
获得的变量值将存储为单个值(前提是代理的变量本身不是列表,但你的情况并非如此)。
- 你的地块一次有不止一只乌龟吗?然后,如果您对保存“它的”海龟值的单个补丁感兴趣,则可能需要处理列表。
更新
我在这个问题和 your other one 之间建立了联系,建议你想使用补丁作为矩阵的元素。
也许这对你的情况有用:如果你的模型允许在同一个补丁上有不止一只乌龟的可能性,你可能有兴趣做这样的事情:
ask patches [
set energy-of-my-agent sum [energy-collected] of turtles-here
]
如您所见,sum
takes a list as input and reports a number。每个补丁将采用站在那里的海龟 energy-collected
的所有值的总和,或者您可以使用任何您想要的方式更改计算(例如 mean
、max
等)。
实际上,无论如何您都可以使用这种方法:这样,即使您在补丁上只有一只乌龟,sum
(或任何其他接受丢失并返回值的函数)也会给您一个在您有一个值列表之前的单个值。
我有一个疑问:
上下文:我有一个代码,简单地说,海龟有一个整数变量(能量收集),补丁会从中更新它们自己的变量(我的代理能量),如代码中所述下面的代码片段。
问题:turtle变量是int类型(例如-1),但是patch变量是单元素列表([-1])。
问题:这应该发生吗?否则,我怎样才能使补丁变量只是一个整数值?
ask turtles
[
set energy-collected (energy - euse)
]
ask patches
[
set energy-of-my-agent [energy-collected] of turtles-here
]
提前致谢
你要考虑的主要是什么 of
reports.
在你的例子中 turtles-here
是一个代理集,而不是一个特定的代理。
这是因为,虽然您可能在一个小块上只有一只海龟,但您也可能在一个小块上有多只海龟。因此 turtles-here
reports an agentset,即使该代理集可能由一只海龟组成。
因此,通过 of
([energy-collected] of turtles-here
获得)的一组值将是一个值列表 - 即使该列表仅包含一个元素.
因此我会说:
- 您的模型制作方式是否使得每个小块不能一次有超过一只乌龟?那么你可以这样做:
ask patches [
if any? turtles-here [
set energy-of-my-agent [energy-collected] of one-of turtles-here
]
]
在上面的代码中,one-of turtles-here
reports a specific agent - 不再是代理集。
因此,通过 of
获得的变量值将存储为单个值(前提是代理的变量本身不是列表,但你的情况并非如此)。
- 你的地块一次有不止一只乌龟吗?然后,如果您对保存“它的”海龟值的单个补丁感兴趣,则可能需要处理列表。
更新
我在这个问题和 your other one 之间建立了联系,建议你想使用补丁作为矩阵的元素。
也许这对你的情况有用:如果你的模型允许在同一个补丁上有不止一只乌龟的可能性,你可能有兴趣做这样的事情:
ask patches [
set energy-of-my-agent sum [energy-collected] of turtles-here
]
如您所见,sum
takes a list as input and reports a number。每个补丁将采用站在那里的海龟 energy-collected
的所有值的总和,或者您可以使用任何您想要的方式更改计算(例如 mean
、max
等)。
实际上,无论如何您都可以使用这种方法:这样,即使您在补丁上只有一只乌龟,sum
(或任何其他接受丢失并返回值的函数)也会给您一个在您有一个值列表之前的单个值。