计算特定补丁的邻居海龟并报告真或假

时间:2013-04-14 03:35:50

标签: netlogo

您好我会尽快做到 我有一个房间有一个扩大的火,我有两个出口,我想要做的是告诉代理人,如果一个门被火阻挡,然后去另一个。我想出了类似的东西但没有结果。

to doorblock
show count neighbors with [pcolor = 77] ;; the patch color of the two doors
end

;;to go 

  ask smarts [    ;;smarts are the agents inside the room that need to get oout
    if [ doorblock > 5 ]    
   [ set target one-of sexits]]  ;;sexits is the other door

有人有更好的主意吗?感谢

1 个答案:

答案 0 :(得分:2)

好的,所以如果我理解正确,你希望你的代理人看看他们当前目标的门,检查那扇门周围是否有超过5个消防员,并选择另一个目标门,如果这是情况下。

如果您的消防员只是红海龟(没有特定品种),您可能需要这样的东西:

ask smarts [
  if count ([ turtles-on neighbors ] of target) with [ color = red ] > 5 [
    if-else ([ breed ] of target = sexits )
      [ set target one-of nexits ]
      [ set target one-of sexits ]
  ]
]

这里的关键原语是:

  • neighbors,它会为您提供围绕乌龟的补丁(在这种情况下,target附近的补丁)
  • turtles-on,它将为您提供补丁集成员上的 turtles (此处,这将是{{1}补丁上的海龟} neighbors
  • 最后,with允许您只从代理集中获取满足某些条件的海龟(在这里,我们使用它来获得代表火灾的红海龟)。

您还应该尝试理解of原语。

我猜你想要分配一个与前一个不同的新目标(如果北是朝南,如果是南,则为南),但这取决于你。