Netlogo:使用行进距离和速度计算时间

时间:2016-03-16 18:37:43

标签: time netlogo agent

我有一个模型,我想测量一只乌龟以给定的速度从一个点到另一个点移动所需的时间,使用地图的比例和速度/ fd运动来量化经过的实时时间。

我将速度设置为所有船只的随机数(UI上的全局变量输入)以及具有路径坐标的每只乌龟的列表。我使用 time = distance / speed 的公式,但无法弄清楚如何准确计算时间。

速度设置为30左右,我想用km / h。地图的比例是每个补丁1000m x 1000m,所以我尝试使用1000的因子来修复计算无济于事。下面是我的时间计算。

        to move
          tick
          ask ships with [length current-path != 0] 
              [ 
                let x1 xcor
                let x2 [pxcor] of first current-path 
                let y1 ycor
                let y2 [pycor] of first current-path 
                let distance-traveled sqrt ((x2 - x1)^ 2 + (y2 - y1)^ 2)

                set time ((distance-traveled * meters-per-patch) / (speed) 
                set timelist lput time timelist
                set totaltime sum timelist
                go-to-next-patch-in-current-path 
              ] 
          end

这种魔药称之为运动。由于速度的数字在10以内,我正在分组速度/ 1000,我希望海龟每次打勾移动少于1个补丁,以允许它直接落在列表中的补丁坐标上。

to go-to-next-patch-in-current-path  

      face first current-path
      ifelse distance first current-path < .1
        [
          move-to first current-path
          set current-path remove-item 0 current-path
        ]
        [
          fd speed / 1000
          set heading towards first current-path
        ]


    end

非常感谢任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

不管。如果你想让某人从x1,y1移动到x2,y2。你需要计算到x2 y2的距离。假设您需要4秒钟从x1,y1移动到x2,y2

对于乌龟:

在您的设置上或当您到达x1,y1

let t 3
let d distancexy x2 y2
let velocity d / t
facexy x2 y2

虽然你不在x2,y2

fd velocity

我认为你的问题是每次重复你都在重新计算你的速度。你说如果你在5米之外,想要花5秒钟,移动1米。然后在下一个时间单位,你将在4米远,并想要花5秒,移动.8米。等