车辆为何会瞬移

在运行仿真时,可能会遇到以下警告:

Warning: Teleporting vehicle '...'; waited too long, lane='...', time=....

这是什么意思?

原因#

以下情况可能会迫使仿真“瞬移”车辆:

  • 车辆在路口前等待时间过长(消息:“...'; waited too long, lane='...”)
  • 车辆与其前车发生碰撞(消息:“...'; collision, lane='...”)
  • 车辆正在执行跳跃

等待时间过长,即死锁 (Grid-locks)#

当车辆停在路口前的第一个位置时(或其前方的所有车辆都有预定的停靠点),SUMO 会计算车辆速度低于 0.1m/s 的步数。这些步数即为“等待时间”。如果车辆以较高速度移动,此计数器会被重置。如果车辆等待时间超过特定阈值(默认为 300 秒),则认为车辆处于死锁状态,并将其瞬移到其路线上的下一个空闲路段 (edge)。 请注意,对于路线中包含停靠点的车辆,其停靠时间不计入等待时间。

如果车辆路线的后续路段上有足够的空间,车辆将被直接分配(瞬移)到相应的可用空间。车辆插入将使用出发方法“free”(在交通量最小的车道上的任意位置),并尝试以最大允许速度插入车辆。插入空间必须允许车辆本身及其跟随车辆的所有必要的安全间距,尽管为了帮助插入可能会降低速度。

如果车辆无法立即插入,它将被保持在路网外部的一个特殊的“瞬移缓冲区”中,并(虚拟地)以该路段的平均速度(最小 m/s)通过下一个路段。经过这段虚拟行驶时间后,将沿其路线再向前一个路段尝试重新将车辆插入路网。此过程会重复,直到车辆被重新插入或到达路线终点。 在后一种情况下,车辆将从仿真中移除。 当车辆处于瞬移缓冲区时,它保持不可见状态。

阈值可以使用选项 --time-to-teleport <INT> 进行配置,该选项以秒为单位设置时间。

Note

--time-to-teleport 设置为负值可禁用因死锁导致的瞬移。

车辆无法继续其路线的原因各不相同。每次车辆因死锁而瞬移时,都会给出以下原因之一:

  • wrong lane:车辆被困在没有连接到其路线下一个路段的车道上。
    • highwaywrong lane 的特例,即车道的速度限制高于阈值 --time-to-teleport.highways.min-speed(默认 69km/h)
  • yield:车辆被困在低优先级道路上,且未在优先级交通流中找到间隙。
  • jam:车辆被困在优先级道路上,且下一个路段上没有空间。
  • blocked:车辆停在停止的车辆后面。
  • disconnected:车辆的当前路段和下一个路段未连接(针对车辆的 vClass)。
  • bidi:当前车道双向可用,这意味着车辆可能会被对向交通阻塞。
  • railSignal:车辆在红色铁路信号处等待,且存在循环依赖(死锁)。

相关选项包括:

  • --max-num-teleport
  • --time-to-teleport.highways:当在速度高于 19.167 m/s 的路段的错误车道上被困时,更早进行瞬移。
  • --time-to-teleport.highways.min-speed:配置上述选项的阈值。
  • --time-to-teleport.disconnected:当路线断开时更早进行瞬移。
  • --time-to-teleport.bidi:在双向路段上时更早进行瞬移(因为这更容易导致死锁)。
  • --time-to-teleport.remove-constraint:通过移除约束来解决基于约束的railsignal-deadlock
  • --time-to-teleport.railsignal-deadlock:因railsignal-deadlock而停止时更早进行瞬移。
  • --time-to-teleport.ride:瞬移正在等待乘车的人员而不是车辆。
  • --time-to-teleport.remove:直接移除瞬移的车辆。

不幸的是,死锁在拥堵的仿真场景中相当常见。您只能通过改善交通流来解决此问题,可以通过修正路口优先级、交通信号灯时序或交通需求(路线文件)

此外,除了纯粹的死锁,车道变更模型的不完善有时会导致两辆车试图变道到对方的车道,且每辆车都阻塞了对方的情况。仿真行为如前所述。这有两个常见原因:

碰撞#

默认情况下,SUMO 使用无碰撞模型。但是,由于错误、网络问题或故意配置,可能会发生碰撞。SUMO 的默认行为是立即将后车瞬移到其路线的下一个路段(或者如果已经在最后一个路段,则将其移除)。此行为可以配置为避免或延迟瞬移

为避免碰撞,请在碰撞发生的地点和时间观察仿真 sumo-gui。检查您的网络中是否存在可能导致碰撞的因素

车辆瞬移时发生了什么#

瞬移的车辆会从路网中移除。然后它会沿着其路线移动,但不再位于街道上。一旦可能,它就会被重新插入路网。在瞬移过程中,车辆会以被移除时的路段(或稍后“经过”的路段)的平均速度沿其路线移动。如果有足够的空间可以放置在允许继续行驶的车道上,车辆就会被重新插入路网。因此,车辆在一次仿真中可能会瞬移多次。

Note

输出对瞬移车辆的反应不同。虽然 meanData-output 会显式计算瞬移,但 fcd-output 不会记录处于瞬移状态的车辆。