海龟之间的最小距离

时间:2015-06-22 20:54:15

标签: distance netlogo

我正在尝试编写计算海龟之间距离的代码。如果距离太远,它们需要移开,如果距离太近则需要靠近。

它们不能超过补丁的1/2,也不能超过1补丁。如果它们彼此之间的距离不在1/2和1之间,那么它们需要移动直到它们在此范围内。

我是否必须将它们链接起来才能执行此操作,还是可以将其取消链接?

1 个答案:

答案 0 :(得分:3)

由于你在设置中这样做,那么你可以做的是让NetLogo逐渐创建海龟,并确保每个都是合适的距离。有一个合乎逻辑的问题,第一只乌龟不应该测试距离,因为没有其他海龟,而且你假设海龟很少,他们可以适应这些距离限制。

尽管如此,这里有一些代码(9只龟)。如果你试图创造太多的乌龟,它确实冒着无限循环的风险。由于乌龟随机放置,直到找到合适的位置并且可能需要多次尝试,因此龟的数量也会增加,效率也非常低。

to setup
  clear-all
   create-turtles 1
   repeat 8
   [ let min-x min [xcor] of turtles - 1
     let max-x max [xcor] of turtles + 1
     let min-y min [ycor] of turtles - 1
     let max-y max [ycor] of turtles + 1
     create-turtles 1
     [ loop
       [ setxy random-float (max-x - min-x) + min-x random-float (max-y - min-y) + min-y
         let close-turtles other turtles-on (patch-set patch-here neighbors)
         let how-close distance min-one-of close-turtles [distance myself]
         if how-close > 0.5 and how-close < 1 [stop]
       ]
     ]
   ]
end