输出

以下描述的所有工具都存在于 tools/output 目录中。

attributeStats.py#

计算一个或多个 xml 文档中任意数值属性的统计数据(例如,tripinfo-outputtripinfo 元素的 timeLoss 属性),并将结果写入标准输出。当属性包含 HH:MM:SS 格式的时间数据时,值将自动转换为秒。

python tools/output/attributeStats --element tripinfo --attribute timeLoss input.xml
  • 如果选项 --element (-e) 设置为逗号分隔的元素列表,则仅读取这些元素。否则将解析所有元素。
  • 如果选项 --attribute (-a) 设置为逗号分隔的属性列表,则仅读取这些属性。否则将解析所有属性。
  • 也可以提供多个文件作为输入,以空格分隔或通过 shell 扩展(即 *.input.xml)。
  • 如果设置了选项 --id-attribute (-i),则每个属性的最小值和最大值将用相应的 id 值进行注释。
  • 使用选项 --hist-output <FILE>,将生成直方图数据文件(例如,用于使用 gnuplot 绘图)。
    • 选项 --binwidth INT (-b) 定义直方图的分箱宽度。
  • 使用选项 --abs,输出将包括绝对值的统计数据。
  • 使用选项 --xml-output <FILE>,将写入一个包含所有处理属性的统计度量的文件。
  • 使用选项 --full-output <FILE>,将记录收集的属性值及其对应的 id。
  • 输出精度可以使用选项 --precision (-p) 设置。

attributeDiff.py#

计算两个具有相同结构的 xml 文件之间数值属性的差异(例如,statistic-outputvehicleTripStatistics 元素的 timeLoss 属性),并将结果写入标准输出。当属性包含 HH:MM:SS 格式的时间数据时,值将自动转换为秒。

python tools/output/attributeDiff file1.xml file2.xml --xml-output differences.xml
  • 如果选项 --element (-e) 设置为逗号分隔的元素列表,则仅读取这些元素。否则将解析所有元素。
  • 如果选项 --attribute (-a) 设置为逗号分隔的属性列表,则仅读取这些属性。否则将解析所有属性。
  • 使用选项 --xml-output <FILE>,将写入一个包含所有处理属性的统计度量的文件。如果未设置此选项或与选项 --verbose 结合使用,则结果将作为纯文本写入控制台。
  • --only-first-output (-m):将仅在第一个输入中出现的所有元素和属性写入 FILE。
  • --only-second-output (-M):将仅在第二个输入中出现的所有元素和属性写入 FILE。

属性分组#

在比较同一元素出现多次但可通过其他属性(例如,tripinfo-output 中的车辆 id)区分的文件时,这通常很有用。为了比较具有相似 id 的元素,可以使用选项 --id-attribute 来设置属性列表。以下示例调用计算两个文件中出现的每个独立车辆的所有 tripinfo 属性的差异(即来自具有不同种子的两次模拟运行):

python tools/output/attributeDiff tripinfos1.xml tripinfos2.xml --xml-output differences.xml -i id

Note

工具 tripinfoDiff.py 服务于相同的特殊用例。

如果设置了 id 属性列表,这些属性可能出现在 xml 元素层次结构的不同级别,父值将应用于子元素比较。以下示例利用这一点来比较具有相同 id 并且在相同时间间隔内的边,用于 edgedata-output

python tools/output/attributeDiff edgedata1.xml edgedata2.xml --xml-output differences.xml -i begin,id

Note

最后一个示例与 netdumpdiff.pyedgeDataDiff.py 非常相似。

attributeCompare.py#

计算多个具有相同结构的 xml 文件中数值属性的统计数据(例如,statistic-outputvehicleTripStatistics 元素的 timeLoss 属性),并将结果写入标准输出。该工具的工作方式与 attributeDiff.py 非常相似,但使用多个文件并计算广泛的统计范围,而不是值之间的差异。

python tools/output/attributeCompare.py file1.xml file2.xml file3.xml --xml-output compared.xml
  • 如果选项 --element (-e) 设置为逗号分隔的元素列表,则仅读取这些元素。否则将解析所有元素。
  • 如果选项 --attribute (-a) 设置为逗号分隔的属性列表,则仅读取这些属性。否则将解析所有属性。
  • 如果设置了选项 --id-attribute (-i),则元素将如 attributeDiff.py 中所述进行分组
  • 使用选项 --xml-output <FILE>,将写入一个包含所有处理属性的统计度量的文件。如果未设置此选项或与选项 --verbose 结合使用,则结果将作为纯文本写入控制台。

generateITetrisIntersectionMetrics.py#

用于生成交叉口指标的工具,包括(但不限于):

  • CO 排放
  • CO2 排放
  • HC 排放
  • PMx 排放
  • NOx 排放
  • 燃料消耗

使用 --help 选项执行 generateITetrisIntersectionMetrics.py 脚本以获取有关用法和可用选项的详细信息。

generateITetrisNetworkMetrics.py#

用于生成网络指标的工具,包括(但不限于):

  • CO 排放
  • CO2 排放
  • HC 排放
  • PMx 排放
  • NOx 排放
  • 燃料消耗

使用 --help 选项执行 generateITetrisINetworkMetrics.py 脚本以获取有关用法和可用选项的详细信息。

generateMeanDataDefinitions.py#

用于从检测器定义生成平均数据定义的脚本。

使用 --help 选项执行 generateITetrisINetworkMetrics.py 脚本以获取有关用法和可用选项的详细信息。

generateDetectors.py#

用于为提供的网络文件中的部分或所有车道生成不同检测器的脚本。

示例用法:

python tools\output\generateDetectors.py -n .net.net.xml -o detectors.add.xml --detector-type instantInductionLoop

使用 --help 选项执行 generateDetectors.py 脚本以获取有关其他选项的详细信息。

generateTLSE1Detectors.py#

用于为提供的网络文件中的每个路口生成 E1 检测器(感应环)的脚本。

示例用法:

python tools\output\generateTLSE1Detectors.py -n .net.net.xml -o detectors.add.xml

使用 --help 选项执行 generateTLSE1Detectors.py 脚本以获取有关其他选项的详细信息。

generateTLSE2Detectors.py#

用于为提供的网络文件中的每个路口生成 E2 检测器(车道区域检测器)的脚本。

示例用法:

python tools\output\generateTLSE2Detectors.py -n .net.net.xml -o detectors.add.xml

使用 --help 选项执行 generateTLSE2Detectors.py 脚本以获取有关其他选项的详细信息。

generateTLSE3Detectors.py#

用于在所有 TLS 控制的交叉口周围(默认)或为任意交叉口列表(--junction-ids)生成 E3 检测器(多入口/多出口检测器)的脚本。默认情况下,每个入口边都有自己的检测器。当设置选项 --joined 时,每个路口将只有一个检测器。当设置选项 --interior 时,将包括交叉口内部的延误。

示例用法:

python tools\output\generateTLSE3Detectors.py -n .net.net.xml -o detectors.add.xml

使用 --help 选项执行 generateTLSE3Detectors.py 脚本以获取有关其他选项的详细信息。

netdumpdiff.py#

创建两个 netdump 文件的差异的脚本。

使用 --help 选项执行 netdumpdiff.py 脚本以获取有关用法和可用选项的详细信息。

netdumpmean.py#

从两个 netdump 文件计算平均值的脚本。

使用 --help 选项执行 netdumpmean.py 脚本以获取有关用法和可用选项的详细信息。

timingStats.py#

用于从多个 SUMO 运行中收集统计数据的脚本。

使用 --help 选项执行 timingStats.py 脚本以获取有关用法和可用选项的详细信息。

accelerations.py#

用于基于 --netstate-dump 输出计算车辆加速度的聚合统计信息的脚本。

vehLanes.py#

用于基于 --netstate-dump 输出计算车道的类似 vehroute 的输出的脚本。输出数据还包括有关每辆车变道次数的信息。

用法:

python vehLanes.py <netstate_dump.xml> <output_file>

edgeDataDiff.py#

计算每个边和时间间隔的 edgeData 值的数值差异。生成的文件可用于可视化两个交通场景之间的变化。两个输入文件必须包含相同的边和时间间隔。

用法:

python edgeDataDiff.py <edgeData1.xml> <edgeData2.xml> <diffFile.xml>

vehrouteDiff.py#

计算两组 --vehroute-output 文件之间的行程时间差异。这些文件必须包含相同的车辆和相同的路线,并且只能在行程时间上有所不同。它们必须使用选项 --vehroute-output.exit-times 生成,脚本才能工作。

用法:

python vehrouteDiff.py routes1.rou.xml routes2.rou.xml result.xml

vehrouteCountValidation.py#

计算计数数据(格式与 routeSampler.py 使用的格式相同)与 --vehroute-output 文件之间的不匹配。如果 vehroute-output 是使用选项 --vehroute-output.exit-times 生成的,则使用通过相应边的时间来验证计数数据的时间线(具有多个时间间隔的计数数据)。由于通常,模拟 --route-files 中提供的车辆总数会通过所需的边,因此该工具的主要价值在于评估延误(或延迟插入)对复制时间相关计数数据的影响。

用法(使用转弯计数):

python vehrouteCountValidation.py -r routes.rou.xml -t input_turns.xml

tripinfoDiff.py#

计算两组 --tripinfo-output 文件之间的行程时间、路线长度、时间损失、出发时间和到达时间的差异。这些文件应包含相同的车辆。

用法:

python tripinfoDiff.py tripinfos1.xml tripinfos2.xml result.xml

默认情况下,仅考虑 <tripinfo> 元素。通过设置选项 --persons,则改为计算 <personinfo> 元素的差异。

tripinfoByTAZ.py#

按起点/终点 TAZ 聚合 tripinfo 数据。TAZ 数据可以取自原始输入文件(如果它包含 'fromTaz' 和 'toTaz' 属性)或从 TAZ 文件中获取。

python tripinfoByTAZ.py -t tripinfos.xml -r trips.xml
python tripinfoByTAZ.py -t tripinfos.xml -z taz.axml

默认情况下,聚合行程时间(tripinfo 属性 'duration')。可以使用选项 --attribute 选择其他属性(例如 'routeLength')。输出以纯文本形式显示在命令行上,或者如果设置了选项 --output,则以 xml 格式输出。

tripinfoByType.py#

按 vType 和人员阶段类型为给定属性聚合 tripinfo 数据

python tripinfoByType.py -t tripinfos.xml -a timeLoss

输出以纯文本形式显示在命令行上,或者如果设置了选项 --output,则以 xml 格式输出。

computeCoordination.py#

此工具读取 fcd-output 和走廊定义。它计算在没有显著减速的情况下通过走廊的车辆比例。

示例:

python tools/output/computeCoordination.py --fcd-file fcd.xml --filter-route B,C,D,E --entry C --min-speed 5

这计算按顺序(可能有间隔)通过边 B,C,D,E 并且在通过边 C 后被延误至低于 5m/s 的车辆比例。

使用选项 --full-output <FILE>,将记录通过走廊的每辆车及其进入时间和被延误的时间(如果未被延误,则为 -1)。

tripStatistics.py#

此脚本用于根据 SUMO-based 模拟结果计算全局性能指标。计算函数直接在此脚本中定义。提供基本统计信息,例如:

  • 平均行程时间 (s)
  • 平均行程长度 (m)
  • 平均行程速度 (m/s)
  • 平均出发延误 (s)
  • 平均等待时间 (s)

此外,此脚本还用于执行显著性检验以评估不同分配方法的结果。t 检验和 Kruskal-Wallis 检验在此脚本中可用。如果未指定,将应用 Kruskal-Wallis 检验,并假设数据不是正态分布的。

为了执行此脚本,需要另外两个脚本,即 statisticsElements.py 和 tables.py。它们都应在同一目录中。

在 statisticsElements.py 中,定义了有关车辆、其性能度量、t 值、H 值以及输出函数的类。卡方表和 t 表在 tables.py 中定义。

示例命令如下所示。

python tools/output/tripStatistics.py -t <tripinfo files> -o <output file> -e

其中 -t: 包含车辆信息的输出文件名称,由 SUMO 生成
      -o: 定义输出文件名
      -e: 设置为 true 以应用 t 检验(默认:false
      -k: 设置为 true 以应用 Kruskal-Wallis 检验(默认:false

computeStoppingPlaceUsage.py#

此工具读取 stop-output 并跟踪停止车辆随时间在停止位置(即 parkingArea)的数量。将为每个停止位置创建一个不同的输出文件。如果设置了选项 --only-changes,则仅记录停止车辆数量发生变化的时间步长。

示例:

python tools/output/computeStoppingPlaceUsage.py -s stopinfos.xml

computePassengerCounts.py#

此工具读取 stop-output 并生成车辆随时间的占用情况。将为每辆车创建一个不同的输出文件。

示例:

python tools/output/computePassengerCounts.py -s stopinfos.xml

parkingSearchTraffic.py#

此工具读取带有 exit-timesvehroute-output,并生成车辆在搜索停车位上花费的时间和距离以及步行返回路径长度的统计数据。它评估从第一次重新路由到最终停止到达之间的时间和距离。它目前仅输出基本统计数据(均值、平均值、四分位数等)。

示例:

python tools/output/parkingSearchTraffic.py net.net.xml vehroutes.xml

aggregateBatteryOutput.py#

用于按时间间隔聚合电池输出的脚本。

示例用法:

python tools\output\aggregateBatteryOutput.py -i battery.xml -o batteryAggregatedx.xml -t 60 -v veh0

fcdDiff.py#

计算两个 fcd-output 文件之间关于其空间距离的差异。文件中的数据点通过时间和 id 进行匹配(不进行时间偏移)。

统计输出打印在控制台上。也可以将所有错误值写入 xml 文件。

python tools/output/fcdDiff fcd.xml fcd2.xml
  • 如果设置了选项 --grouped,将打印每辆车的单独统计数据
  • 如果设置了选项 --tripId,车辆将通过属性 tripId 而不是 id 进行匹配(生成 fcd-output 时需要 --fcd-output.params tripId
  • 使用选项 --xml-output <FILE>,将写入一个带有错误值的注释 fcd 文件

edgeDepartDelay.py#

从 tripinfo-output 计算每条边的 departDelay

python tools/output/edgeDepartDelay -t tripinfos.xml -o edgedata.xml

每条边的属性将是统计度量:

<edge id="4/1to3/1" count="4" min="0.00" minLabel="0" max="3.00" maxLabel="1" mean="0.75" Q1="0.00" median="0.00" Q3="3.00" meanAbs="0.75" medianAbs="0.00"/>

maxLabel 属性将保存给定边上具有最大 departDelay 的车辆的 id。