问题: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

查看:0
本文介绍了问题:Turtle变量的类型为int(例如,-1),但在NetLogo 6.2中,patch变量是一个单元素列表([-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个疑问:

上下文:我有一个代码,其中简单地说,海龟有一个整数变量(收集的能量),补丁根据这个变量更新它们自己的变量(我的代理的能量),如下面的代码片段所述。

问题: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
]

提前谢谢

推荐答案

您必须考虑的主要内容是ofreports

在您的案例中turtles-here是一个代理集,而不是特定的代理。

这是因为,尽管一个补丁上可能只有一只海龟,但也可能在一个补丁上有多个海龟。因此turtles-herereports 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-herereports a specific agent-不再是代理集。 因此,通过of获得的其变量的值将存储为单个值(假设代理的变量本身不是列表,但这不是您的情况)。

  • 你的补丁会不会同时有一只以上的海龟?然后,如果您对包含海龟的值的单个补丁感兴趣,那么处理列表可能是必要的。

更新

我将此问题与your other one建议您将补丁用作矩阵元素之间建立了联系。

也许这对您的情况很有用:如果您的模型允许在同一个补丁上有多个海龟的可能性,您可能会有兴趣执行以下操作:

ask patches [
 set energy-of-my-agent sum [energy-collected] of turtles-here
] 

如您所见,sumtakes a list as input and reports a number。每个补丁将获取站在那里的乌龟energy-collected的所有值的总和,或者您可以使用任何您想要的更改计算(例如meanmax等)。

实际上,无论如何,您都可以使用这种方法:这样,即使您的补丁上只有一只海龟,sum(或任何其他接受Lost并返回值的函数)也会为您提供单个值,而在此之前您只有一个值的列表。

这篇关于问题:Turtle变量的类型为int(例如,-1),但在NetLogo 6.2中,patch变量是一个单元素列表([-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆