我想模拟 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
我想模拟 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
有点不清楚“采样时间”是什么意思。但是,鉴于您的符号,我认为您的意思是 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
我已将所有海龟设置为朝同一方向前进,以便您可以看到它们的速度收敛。您的方程具有恒定速度,但此示例旨在向您展示如何在车辆之间进行交互。