如何从特定的海龟列表中查找和保存变量的总和,Netlogo



您如何从海龟列表中找到特定变量的总和?

我正在尝试对海龟列表中的一个变量求和,并将该总和与询问海龟的特定值进行比较,但我不确定语法是什么。

每只都有自己的特定列表,由其他海龟组成,[mylist],我希望将它们var_x汇总并将其与询问的var_x进行比较。

ask turtles [
set ListVarXSum ( sum (var_x) of each turtle on list [mylist] )
]

你想做的事最直接的方法是:

set ListVarXSum sum map [ t -> [ var-x ] of t ] mylist

map基元将海龟列表转换为由每只海龟的var-x值填充的列表。然后,您可以使用 sum 对该列表求和。

话虽如此,Luke C 是对的,将代理存储在代理集中通常比存储在列表中更方便(除非您需要它们按特定顺序排列或您有重复的代理)。

要将代理列表转换为代理集,始终可以使用turtle-set基元。使用它,您可以执行以下操作:

set ListVarXSum sum [ var-x ] of turtle-set mylist

它读起来更好,但由于每次将列表转换为代理集需要时间,因此运行速度较慢。如果这是您需要经常执行的操作,则最好预先存储一个代理集(可能通过使用turtle-set将您放入mylist的任何内容转换为代理集,或者使用无论如何都会为您提供代理集的基元,如 Luke 的n-of示例。

如果我了解您的目标,最简单的方法是不使用海龟列表,而是使用海龟的代理集进行比较。看看这个简单的例子,看看它是否满足了你的需求:

turtles-own [ 
  var_x 
  my_comparison_turtles 
]
to setup
  ca
  crt 10 [
    set var_x 3 + random 10
    setxy random-xcor random-ycor
  ]
  ask turtles [
    set my_comparison_turtles n-of 3 other turtles
  ]
  reset-ticks
end
to sum-compare
  ask turtles [
    let temp_sum sum [var_x] of my_comparison_turtles
    print ( word "My var_x is " var_x ", and the sum of my comparison turtles' var_x is " temp_sum "." )
  ]
end

最新更新