0

我想模拟 n 辆车。每辆车都由第一个离散模型表示:

P_i[k+1] = P_i[k] + T*v_i[k]

而 P_i[k+1], P_i[k] 分别是车辆 i 在采样时间 (k+1)T 和 kT 的位置

T 是采样时间

v_i[k] 是车辆 i 在采样时间 kT 的速度

车辆之间的关系如下等式:

P_i[k+1] = T*(P_(i+1)[k+1] + P_(i-1)[k] - 2* P_i[k])

我不知道如何在这里表示采样时间 T

4

1 回答 1

2

有点不清楚“采样时间”是什么意思。但是,鉴于您的符号,我认为您的意思是 T 是当前时间,并且您正在根据当前位置和速度计算下一个时间点的位置。在这种情况下,您不需要明确表示时间,您只需要通过它进行。在 NetLogotick中是向前移动一个时间步的命令(并且ticks是迄今为止所采取的时间步数的报告器,但我认为您不需要它)。

从评论更新:

我认为我们在谈论不同的目的。采样的目的是找到一个连续函数或一组函数的离散逼近。一旦您处于离散时间,您可以使用刻度作为您的时间标记。每打勾,你就可以计算出状态。你只需要记住,如果你有 0.5 秒的采样时间,你需要做(例如)20 次滴答来找到 10 秒的状态。

这是一个例子:

globals [ticks-per-sec]
turtles-own [velocity]

to setup
  clear-all
  set ticks-per-sec 2
  create-turtles 10
  [ setxy random-xcor random-ycor
    set velocity (1 + random 4) / ticks-per-sec
    set heading 90
  ]
  reset-ticks
end

to go
  ask turtles
  [ forward velocity
    set velocity 0.9 * velocity + 0.1 * mean [velocity] of other turtles
  ]
  tick
end

我已将所有海龟设置为朝同一方向前进,以便您可以看到它们的速度收敛。您的方程具有恒定速度,但此示例旨在向您展示如何在车辆之间进行交互。

于 2018-02-23T12:55:57.510 回答