如何在NetLogo中限制补丁中的海龟数量

时间:2017-12-29 14:30:35

标签: netlogo

我想限制每个补丁的海龟数量。我想如果我按照(1)和(2)条件限制海龟的移动,它将限制每个补丁的海龟数量,但是我为此尝试的任何代码直到现在都没有用。

enter image description here

假设补丁Y上有五只乌龟,其中五只是限制。

1)要求站在补丁X前面的乌龟(参见图)停止移动,直到补丁Y上有五只乌龟(参见图)。

2)如果补丁z上面有少于五(5)只乌龟,则要求位于补丁Y前面的海龟向前移动到补丁z(参见图),否则停止。

最后我使用以下简单代码

  let turtles-ahead other turtles in-cone speed 90
  let turtle-ahead min-one-of turtles-ahead [distance myself]
  ifelse turtle-ahead != nobody
  [
      set speed [speed] of turtle-ahead
      slow-down
  ]
  [speed-up]

这段代码只是要求乌龟一个接一个地移动模式或队列,但它无法帮助我限制每个补丁的数量,无论限制可能是4,5,6,7,8 ...我已经发芽了“go”程序中的乌龟(每个补丁1只乌龟,根据我的需要)。海龟在一组定义的斑块上发芽,而不是在整个世界。因此,慢慢数量的海龟开始增加并在世界各地移动,并且在经过一定数量的蜱后,它们被要求退出定义的区域并且它们会死亡。现在有时它在某些斑块上显示10,11,...... 37或以上的海龟,我想实际停止。

我已经检查了每个补丁的一个海龟,其他代码示例和许多其他来自互联网的帮助,但没有结果。

对于任何其他想法或帮助,我将被迫。请帮帮我。

1 个答案:

答案 0 :(得分:2)

我想你想要让海龟评估他们试图移动的补丁的count turtles-here。考虑这个简单的例子:

to setup
  ca
  ask n-of 15 patches with [ pycor = 0 ] [
    sprout 3 [
      set heading 90 
    ]
  ]
  reset-ticks
end

to go
  ask turtles [
    if ( count [turtles-here] of patch-ahead 1 ) < 5 and xcor < 16 [
      fd 1
    ]
  ]
  print [count turtles-here] of patches with [ any? turtles-here ]
  tick
end

在每个刻度线上,xcor小于16的海龟(仅为此示例设置一个停靠点)都会检查patch-ahead 1上该海龟的计数。如果计数小于5,则乌龟移动到该补丁。否则,乌龟什么都不做。