如何根据车辆所在的道路改变车辆的速度

How to change speed of vehicle based on the road it is on

我在公路交通图书馆建立了一个模型,我在高速公路上有汽车从出口驶出。由于实际高速公路上的速度是70英里/小时,出口道路上的速度是40英里/小时,我想将出口处汽车的速度从70英里/小时降低到40英里/小时

Setup

我有 cars 个基于自定义代理的人口 Car

carSourceinitialSpeedpreferredSpeed 为 70mph。 carSource 与二进制 selectOutput 配对,有 40% 的概率进入出口,然后是两个 moveTo 节点,一个用于出口,另一个用于直行高速公路。

我假设我们可以通过将 onEnter 动作指定为 car.setPreferredSpeed(18);(因为 40mph 是 18米每秒)。然而,这似乎并不影响汽车在出口处的速度(当我在模拟中注视它时)。此外,花在模型上的时间也没有改变。

关于如何更改 moveTo 出口道路的代理速度的任何建议?

您已经正确开发了模型。但是使用道路交通库,需要注意几点:

  • 在道路交通库中,汽车的速度会根据汽车的当前速度、首选速度、最大和最小加速度以及道路配置和交通状况逐渐变化。因此,当您将汽车的首选速度设置为 40 MPH 时,根据其减速率(默认为 4.2 mps2)和当前速度(可能为 70 MPH),降低速度需要一些时间,而且不会很快发生。为了感知汽车减速,您可以执行以下操作之一:a) 增加 carSorce 中汽车出现的道路长度,以便汽车在到达出口前有更多时间减速。 b) 增加汽车的减速度。

  • 您可以使用 setPreferredSpeed(40, SpeedUnits.MPH) 而无需将速度单位更改为 MPS

P.S.: 为了确保你的建模没有问题,作为测试,在moveToonEnter部分将car's preferred speed设置为0,并检查他们是否在一段时间后停止。