VehicleInsertion

加载#

车辆可以通过 XML 输入 加载,或者 通过 TraCI 在运行时添加。当从 XML 加载时,并非所有车辆都会一次性加载。相反,车辆会以块(chunks)的形式加载,块的大小可以通过选项 --route-steps 进行配置。这样做是为了在执行长时间模拟时节省内存。

一旦车辆被加载,就可以通过 TraCI 访问和操作(在某种程度上)。使用 'move to' 或 'move to XY' 函数,甚至可以强制将车辆插入路网中。

插入(出发)#

为了让车辆插入路网,必须满足一些必要的约束:

  • 车辆(从其尾部到其前部位置 + minGap)不得与其他车辆相交(包括它们的 minGap
  • 车辆必须根据其 carFollowModel 与任何前导车辆保持安全距离
  • 任何后随车辆必须根据其 carFollowModel 保持安全距离
  • 车辆必须能够在其路线上为任何即将到来的非优先通行路口刹车
  • 车辆必须能够在其路线上为任何预定的停车点刹车

如果车辆由于上述任何原因无法被插入,其插入将被延迟(见下文)。该 departDelay 会被记录在 行程信息输出 中,也可以在 sumo-gui 中通过车辆参数对话框进行检查。

关于位置、速度和出发时间的插入精确性质取决于 许多参数 以及路网的当前状态。

延迟出发#

如果在指定的出发时间没有足够的空间插入车辆,该车辆将被放入插入队列,并在随后的模拟步骤中重复尝试插入。如果使用了选项 --max-depart-delay <TIME>,车辆在指定的 <TIME> 秒后仍无法插入,则会被丢弃。

有两种方法可以将车辆插入模拟:

  1. 尝试在每个模拟步骤中插入每个车辆
  2. 对于每个有待插入车辆的边(edge),在其中一个车辆无法插入后,中止尝试插入车辆

在无拥堵的路网中,这些方法表现相似,但在拥堵的路网中,有大量车辆无法插入时,变体 2) 要快得多。在旧版本的 sumo 中,1) 是默认值,可以使用选项 --sloppy-insert 切换到 2)。自版本 0.18.0 起,变体 2) 是默认值,可以使用选项 --eager-insert 切换到 1)。

Caution

如果有许多边存在延迟插入,每个模拟步骤中的额外插入尝试可能会减慢模拟速度

调查插入延迟#

使用 sumo-gui 有几个选项可以显示插入延迟:

  • 插入延迟 为车辆着色
  • 插入积压 为街道着色
  • 打开车辆统计列表,列出整个网络的 插入积压车辆 数量。
  • 单个车辆的参数对话框列出 期望出发时间出发延迟

以下模拟输出提供有关插入延迟的信息:

模拟步长的影响#

插入尝试只能在每个模拟步骤中发生。这可能导致插入间距出现伪影,因为在默认步长为 1s 时,(通常)太短,无法在连续的步骤中在同一出发位置插入车辆。 默认情况下,下一次尝试发生在第一辆车出发后 2 秒,这个间隔可能比 carFollowModel 要求的要大得多。有多种方法可以避免这种影响:

  • 可以减小步长
  • 必须通过以下任何一种方法修改插入位置
    • 指定特定的 departPos
    • 使用 departPos="last"
    • 设置选项 --extrapolate-departpos

强制插入 / 避免出发延迟#

通常建议采取以下补救措施来改善插入流:

  • 在多车道道路上,确保所有车道都用于插入,例如通过设置 departLane="random"(或 freebest)。使用 departLane="best_prob" 可实现最高的插入容量,这倾向于将较快的车辆放在超车道上(参见 容量比较
  • 设置选项 --extrapolate-departpos
  • 使用 departSpeed="avg"departSpeed="last" 插入(参见 容量比较

对于专门的用例,以下提示可能有助于实现更多插入:

  • 或者:结合使用 departPos="last"departSpeed="desired":车辆位置将调整到前导车辆后方允许以期望速度行驶的最大位置
  • 使用固定的 departSpeed(数值)插入并设置选项 --ignore-route-errors。 车辆将在指定时间以不安全的速度插入,如果紧急制动仍能允许无碰撞动态
  • 使用 属性 insertionChecks 禁用部分或全部插入检查
  • 使用 traci.vehicle.moveTotraci.vehicle.moveToXY 在指定时间和地点强制将车辆插入路网。

影响出发的全局选项#

  • --random-depart-offset <TIME>: 随机延迟所有车辆的出发时间
  • --max-num-vehicles <INT>: 限制路网中可能存在的车辆总数。 设置此选项可能导致延迟插入
  • --max-depart-delay <TIME>: 在设定的时间后将车辆从插入队列中移除
  • --eager-insert <BOOL>: 尝试插入每条边上所有延迟插入的车辆。默认情况下,每条边的插入在每个时间步中的第一次失败后停止
  • --step-length <FLOAT>: 可以通过设置较小的步长来提高插入尝试的频率,也可以增加可能的车头时距数量(对于固定的 departPos)。
  • --extrapolate-departpos <BOOL>: 如果车辆的出发时间是模拟步长的一个分数,则将其默认出发位置向下游移动。出发位置的偏移量与步长离散化产生的出发延迟成正比。

其他#