Netlogo:我可以设置海龟之间的距离吗?

时间:2015-07-09 13:54:08

标签: distance netlogo

Netlogo:我可以设置海龟之间的距离吗?

您好, 我正在尝试创建一个模型,其中在每个刻度线上,乌龟随机选择另一只乌龟作为伙伴,并跳转到其伴侣的指定距离(它给出的距离基于概率)。只要海龟是指定的距离,它移动到哪里都没关系。 我试图通过创建一个'jump-with-probabilities'程序来模拟这个,并定义乌龟在两个'IID'程序中跳跃的距离:

to jump-with-probabilities                 ;; adds behaviours depending on how a random number compares with the odds. 
   ask turtles [
   let random-fraction 
       random-float 1.0                            
   if-else random-fraction <= 0.4 
           [ IID_10 ] 
           [ IID_50 ] 
   ]
end


to IID_10                                
  ifelse distance partner  >= 10                  ;; if the distance to their partner is larger than or equal to 10
      [ jump (distance partner - 10) ]            ;; TRUE - jump forward by the difference of distance partner & 10, so that the distance is now 10
      [ jump (-1 * (10 - distance partner)) ]     ;; FALSE - jump backward by the difference of distance partner & 10, so that the distance is now 10
end


to IID_50                         
  ifelse distance partner  >= 50                   ;; if the distance to their partner is larger than or equal to 50
      [ jump (distance partner - 50) ]            ;; TRUE - jump forward by the difference of distance partner & 10, so that the distance is now 50
      [ jump (-1 * (50 - distance partner)) ]     ;; FALSE - jump backward by the difference of distance partner & 10, so that the distance is now 50
end

使用它的问题是最终海龟之间的距离与我指定的距离不同。例如,Turtle 0可能会跳向Turtle 5,因此他们的距离是指定的20.但是,Turtle 5也将跳向其伙伴,这将改变Turtle 0和Turtle 5之间的距离。我考虑使用'ask-concurrent'而不是问,但问题仍然存在,因为我告诉海龟移动某个距离,而不是移动到他们的伙伴的某个距离

所以我的问题是;有没有办法告诉乌龟在另一只海龟的指定距离内?因此,如果伙伴移动,乌龟也会移动以保持指定长度的距离 我认为可以使用'move-to'并以某种方式添加指定的距离。或者,使用“距离”将其设置在2只乌龟之间。这看起来很基本,但我还没弄明白怎么做!

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

可能有更好的方法,但是我会通过将海龟B移动到海龟A(move-to turtleA)的位置来做到这一点,然后给它一个随机标题(set heading random 360)然后向前移动10( forward 10)。您还可以hide龟B,直到您完成移动它,然后取消隐藏它以使可视化更整洁。设置相对位置,然后使用Alan的tie建议来保持相对位置。