检测器 (Detector)

本页记录了与检测器和检测器流量文件配合使用的工具。

flowrouter.py#

"flowrouter.py" 可作为 dfrouter 的直接替代品,它根据给定的检测器 -d 及其在给定网络(选项 -n)上的测量值 -f,计算一组路径 -o 和交通流量 -e

Flowrouter 通过在给定网络中求解最大流问题来工作,假设测量到的流量为通行能力。默认情况下,输入数据在整个文件上聚合,但可以通过设置 -i 为时间(以分钟为单位)来拆分为多个区间。每小时聚合的示例调用:

<SUMO_HOME>/tools/detector/flowrouter.py -n input_net.net.xml -d detectors.xml -f flows20140520.csv -o routes.xml -e flows.xml -i 60

默认情况下,没有数据(在指定区间内)或始终为零的检测器将被忽略。要将它们包含在计算中,请使用 --respect-zero

有关其他参数,请调用:

<SUMO_HOME>/tools/detector/flowrouter.py --help

Caution

flowrouter.py 处于持续开发中。如果未能产生预期结果,请尝试使用最新开发版本

输入文件#

流量文件在相应的 dfrouter 文档中有描述。

作为检测器文件输入,您可以使用:

当加载没有 type 信息的检测器文件或设置选项 --revalidate-detectors 时,所有网络边缘将被重新分类为源 (sources)汇 (sinks)中间 (in-between)

  • 任何没有传入边缘的边缘将被标记为源
  • 任何没有传出边缘的边缘将被标记为汇
  • 既不是源也不是汇的任何边缘是中间边缘

使用附加参数生成车辆#

使用选项 --params <STRING>,可以向生成的车辆提供附加参数(注意引号字符的用法)。

<SUMO_HOME>/tools/detector/flowrouter.py -n input_net.net.xml --params="departLane=\"best\" departSpeed=\"max\" type=\"myType""

这将以高速在合理的车道上插入车辆。车辆将被定义为类型 myType(这也可以是类型分布 typeDistribution 的名称)。

歧义性#

在许多情况下,给定输入的解不是唯一的。通常,很大一部分解空间包含“不合理的”(即循环/绕行)路径。下面描述了一些缓解策略。在某些情况下,使用路径采样器工具可能更好。

在候选后继者之间分配#

通过设置选项 --limit <INT>,流量在多次迭代中分配。这可能会增加运行时间,但会导致流量分布更均匀,因此所有路径的使用比例与传入和流出流量成正比(类似于 dfrouter 的行为)。

限制生成的路径#

使用选项 --flow-restrictions <FILE>,可以提供路径的流量限制。输入文件中的每一行采用以下形式:

<FLOW1> <EDGE1> <EDGE2> ... <EDGEk>

这指定了由给定边缘组成的路径的最大流量。或者,可以使用输入行限制单个边缘的流量:

<FLOW1> <EDGE1>

工具 implausibleRoutes.py 可用于根据可配置的启发式方法为不合理的路径生成限制。

flowFromRoutes.py#

此脚本与 flowrouter.py 和 dfrouter 的功能相反,它根据路径或流量文件生成检测器的交通计数。其主要目的:它还可用于将输入计数与 flowrouter.py 和 dfrouter 的输出进行比较。示例:

<SUMO_HOME>/tools/detector/flowFromRoutes.py -d detectors.xml -r routes.xml -e flows.xml

flowFromEdgeData#

此脚本类似于 flowFromRoutes.py。它为检测器生成交通计数,但使用边缘数据文件作为输入,而不是路径。它需要使用输入流量文件,然后执行输入流量和边缘数据流量之间的比较。

<SUMO_HOME>/tools/detector/flowFromEdgeData.py -d detectors.xml -e edgedata.xml -f flows.txt

edgeDataFromFlow.py#

此脚本将检测器流量文件转换为边缘数据格式(即供 routeSampler.py 使用或用于在 sumo-gui 中可视化)。 示例:

<SUMO_HOME>/tools/detector/edgeDataFromFlow.py -d input_detectors.det.xml -f input_flows.txt -o edgedata.xml

filterFlows.py#

按检测器 ID 和时间范围过滤流量文件

<SUMO_HOME>/tools/detector/edgeDataFromFlow.py -d det1,det2 -f input_flows.txt -b 3600 -e 7200 -o output_flows.txt

mapDetectors.py#

给定一个形式如下的 det.csv 文件

id;lat;lon
det1;52.432559;13.496612
det2;52.432373;13.496142

可以使用以下命令将其转换为带有检测器的文件:

<SUMO_HOME>/tools/detector/mapDetectors.py -n net.net.xml -d  det.csv -o det.add.xml