首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NetLogo中识别一群乌龟?

如何在NetLogo中识别一群乌龟?
EN

Stack Overflow用户
提问于 2019-03-25 18:00:20
回答 1查看 65关注 0票数 0

有没有人有任何解决方案让一只海龟识别一群其他海龟,即一群海龟聚集在一起?下面的方法不会起作用,因为半径内的50只海龟可能是不同的(到处都是,而且不是彼此在床边):

代码语言:javascript
复制
if count turtles in-radius 20 >= 50 [show "There's a crowd"]

目前,我将人群定义为50+海龟站在一起。

EN

回答 1

Stack Overflow用户

发布于 2019-03-26 01:47:50

如果您想要连续连接的海龟,您可以修改Model Library中的Patch Clusters示例-这是一个版本。使用此设置:

代码语言:javascript
复制
globals [ groups>50 ]

turtles-own [ 
  my-group
]

to setup
  ca
  crt 500 [
    set my-group -99
    set shape "square"
    move-to one-of patches
  ]  
  reset-ticks
end

和这些帮助器函数:

代码语言:javascript
复制
to identify-groups
  let group-counter 0

  loop [
    let seed one-of turtles with [ my-group = -99 ]

    if seed = nobody [
      stop
    ]
    ask seed [
      set my-group group-counter
      set group-counter group-counter + 1
      spread-group
    ]
  ]
end  

to spread-group
  set label my-group
  set color my-group * 10 + 5 
  ask ( turtles-on neighbors ) with [ my-group = -99 ] [
    set my-group [my-group] of myself
    spread-group
  ]
end

identify-groups运行一个循环,识别连续补丁上的所有海龟,并在这些组中传播唯一的my-group值。

然后,您可以获取唯一的组值,并使用filter仅返回存在某个阈值海龟计数的组号:

代码语言:javascript
复制
to go 
  identify-groups

  let unique-groups sort remove-duplicates [my-group] of turtles

  set groups>50 filter [ i -> count turtles with [ my-group = i ] >= 50  ] unique-groups

  print groups>50
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55335241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档