如何在NetLogo中识别一群海龟?

如何在NetLogo中识别一群海龟?,netlogo,Netlogo,有没有人有办法让一只乌龟识别一群其他乌龟,即一群聚集在一起的乌龟?以下方法行不通,因为半径范围内的50只海龟可能是完全不同的(到处都是,而不是在床边): 目前,我将一群乌龟定义为50多只并排站立的乌龟。如果您想要连续连接的乌龟,您可以从模型库中修改补丁集群示例-以下是一个版本。使用此设置: globals [ groups>50 ] turtles-own [ my-group ] to setup ca crt 500 [ set my-group -99

有没有人有办法让一只乌龟识别一群其他乌龟,即一群聚集在一起的乌龟?以下方法行不通,因为半径范围内的50只海龟可能是完全不同的(到处都是,而不是在床边):


目前,我将一群乌龟定义为50多只并排站立的乌龟。

如果您想要连续连接的乌龟,您可以从模型库中修改补丁集群示例-以下是一个版本。使用此设置:

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
以及以下辅助功能:

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
identificationgroups
运行一个循环,识别相邻补丁上的所有海龟,并在这些组之间传播一个唯一的
mygroup

然后,您可以获取唯一的组值,并使用
过滤器
仅返回具有阈值计数的组号:

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
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