Duarouter

输入#

网络#

一个标准的 SUMO 网络,可能包含交通分配区(也称为 TAZ 或交通小区)。这些区域也可以在单独的文件中给出。

需求#

原则上,duarouter 应该能够理解 SUMO 理解的每一个路径文件。这包括正确解析路径、车辆类型、车辆、流(flows)、行程(trips)、各种分布、停靠点和人员。默认情况下,它会尝试在(行程、流或路径)定义中给出的任意两个连续边之间寻找最短路径。在“迭代”模式下,它还会尝试在起点和终点之间添加新路径。

部分路径、停靠点等#

可以定义一个包含嵌套路径的流,或者使用 from/to/via 和/或嵌套停靠点来定义。此外,它还可以具有 fromTaz/toTaz 属性。本节描述了这些设置(应如何)交互。原则上,它们应该可以转移到车辆/行程定义以及临时(一次性)路径查找的使用中。

TAZ(交通小区)#

  • 除非使用了 --with-taz 参数,否则 "from" 的优先级高于 "fromTaz"("to(Taz)" 同理)
  • 如果使用了 "with-taz",但没有提供 TAZ 信息,则视为错误
  • "from" 可能与 "toTaz" 一起使用,反之亦然

嵌套路径与 from/to 一起使用#

  • 如果嵌套路径定义与 from/to/via 或 fromTaz/toTaz 属性中的信息不符,则视为错误
  • 嵌套路径的优先级高于通过 id 引用的路径,但如果两者都给出了,会发出警告

嵌套停靠点#

  • 流中嵌套的停靠点会合并到路径的停靠点列表中,使用的是停靠点属性
  • 停靠点所在的边的处理方式与 "via" 边相同
  • 如果同时存在 "via",且 "via" 不是停靠点边的超集,则视为错误
  • 如果停靠点与路径不符,同样视为错误

重新路径规划#

在仿真内路径规划中使用此概念时,存在一些特殊情况,因为当重新路径规划请求发生时,车辆可能已经在路上。如果我们仍在车辆插入之前,一切行为应该与 duarouter 一致,至少在第一次路径搜索时是这样(目前可能很难实现,在插入前进行重新路径规划并保留所有关于 via 的信息)。插入后,车辆已经有一个真实的起始边,因此路径规划源将始终是一个真实的边,但目的地可能仍然随 TAZ 信息而变化(如上所述)。停靠点仍应被考虑(如果尚未考虑),但目前会忽略 via(直到我们实现更通用的“航点”概念,用于定义路径上的中间位置/速度,而不是停靠点)。

输出#

duarouter 始终生成一个路径文件和一个路径备选文件(包含路径分布)。

  • 它始终包含带有嵌套路径的车辆(以及可选的停靠点,这些停靠点是车辆的子元素,而不是路径的子元素)
  • "from" 和 "to" 在输出中不保留,"fromTaz"、"toTaz" 和 "via" 会保留
    • 替代方案:仅在必要时保留 "via"(如果无法从停靠点重建)

Vehroutes(车辆路径)#

基本上也应该生成一个可用的路径文件。