问题:Turtle变量的类型为int(例如,-1),但在NetLogo 6.2中,patch变量是一个单元素列表([-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])。
问题:这种情况应该发生吗?否则,我如何才能使patch变量只是一个整数值?
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
(或任何其他接受Lost并返回值的函数)也会为您提供单个值,而在此之前您只有一个值的列表。
这篇关于问题:Turtle变量的类型为int(例如,-1),但在NetLogo 6.2中,patch变量是一个单元素列表([-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!