NetLogo:跟踪和测量真龟运动?

时间:2015-09-08 05:36:05

标签: debugging distance netlogo

我的海龟可以通过相关的随机游走跳过/向前移动。我怎样才能简单地测量他们在模拟运行中走过的距离?基元distancedistancexy似乎测量2点之间的最短距离,而不是“弯曲”点之间的最短距离。我试图谷歌答案,但我找不到任何可能的解决方案。可能吗? 此外,当我使用“下笔”跟踪乌龟移动时,它从第二个移动开始,而不是从第一个移动开始。有什么想法吗?它不取决于tick程序中go的位置。非常感谢你!

enter image description here

2 个答案:

答案 0 :(得分:3)

由于您没有提供任何代码,我无法说出您的模型出了什么问题,但我用一个非常简单的配置尝试了您的问题

turtles-own[
   dist
]

to setup

   clear-all
   ask n-of 10 patches [sprout 1]
   ask turtles [pen-down set dist 0]

end

to go 

   ask turtles [
      rt random 90
      lt random 90
      fd 1
      set dist dist + 1 
      set label dist
   ]

end

每个蜱虫的每只乌龟都会随机向前移动并向前移动。

每只乌龟都有一个名为dist的自己,它在每一步都会增加,并显示为其标签。 (这样你每时每刻都可以看到海龟走过的总距离,但它总是可以用于其他目的)

每只乌龟都已激活pen-down以绘制其所有动作。我的怀疑是,在你的模型中,你会在运动阶段之后为所有海龟激活pen-down,所以在第一步中,海龟不会画任何东西。

答案 1 :(得分:0)

基于@dr_stein建议的另一个答案 - 如果我的海龟走的是随机步数(fd random 4),而不是稳定的fd 1。因此,我实现了使用局部变量my_dist - 生成随机数,这个数字用于dist测量和龟移动。

turtles-own[
   dist
]

to setup    
   clear-all
   ask n-of 1 patches [sprout 1]
   ask turtles [pen-down set dist 0]
end

to go     
   ask turtles [
      rt random 90  lt random 90 ; rotate turtle heading
      let my_dist random 4      ; create local variable my_dist (generated one time)
      fd my_dist                ; move forward using local variable distance 
      set dist dist + my_dist   ; include this distance into dist calculation 
      set label dist
   ]    
end