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

时间:2017-10-09 19:34:12

标签: list netlogo

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

我试图从海龟列表中加总一个变量,并将该数字与问龟的特定值进行比较,但我不确定语法是什么。

每只乌龟都有自己的特定清单,由其他乌龟组成,可以问[mylist],我想要将他们的var_x加起来并将其与问龟进行比较&#39 ; s var_x

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

2 个答案:

答案 0 :(得分:3)

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

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转换您放入的任何内容{{1}代替一个代理集,或者使用一个给你一个代理集的原语,比如Luke的mylist例子。)

答案 1 :(得分:2)

如果我了解你之后的情况,最好不要使用海龟列表,而是使用海龟的代理集来进行比较。看看这个简单的例子,看看它是否能满足你的需求:

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