SUMO 作为一款常用的交通系统仿真软件,其仿真结果常被用于统计分析,例如计算某条道路上单位时间内的车流量,某种交通灯控制策略对行车延时的影响等。
SUMO 提供了多种获取统计结果的方式。本文主要介绍两种:
获取实时统计结果
在启动 SUMO 时,添加参数 --duration-log.statistics
,即
sumo-gui --duration-log.statistics -c <config_file_name.sum.cfg>
启动 sumo 之后,鼠标右键点击绿色背景区域,选择 " Show Parameters" 就可以得到如下图所示的实时统计结果:
sumo_statistic1.gif
其中:
parameter | description |
---|---|
loaded vehicles | 已经生成的车辆数目 |
running vehicles | 正在路上运行的车辆数目 |
arrived vehicles | 已经到达终点的车辆数目 |
avg.trip.length | 车辆平均行驶距离 |
avg.trip.duration | 车辆平均行驶时间 |
avg.trip.time loss | 平均延迟时间 = 平均行驶时间 - 按照期望速度行驶所需时间 (上述程序中为 16m/s) |
avg.trip.speed | 平均车速 = 平均行驶距离 / 平均行驶时间 |
实际上,不添加上述参数也可以获得一些统计结果,只不过添加参数之后统计结果更多一些。
获取仿真数据文件
如果自己想要的统计结果不在上述统计参数中,则需要导出仿真数据,手动分析。
例如,我们不仅想知道平均延迟时间,还想知道延迟时间的标准差,后者反映了交通控制策略的公平性。
为了得到输出数据,在启动 SUMO 时,添加参数 --tripinfo-output
,即
sumo-gui --tripinfo-output my_output_file.xml -c <config_file_name.sumo.cfg>
仿真结束之后,数据都存放在了 my_output_file.xml
文件中,内容如下:
<tripinfos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/tripinfo_file.xsd">
...
<tripinfo id="v.146.3" depart="1460.01" departLane="end2_junction_0" departPos="65.63" departSpeed="16.00" departDelay="0.00" arrival="1517.92" arrivalLane="junction_end1_0" arrivalPos="486.40" arrivalSpeed="16.00" duration="57.91" routeLength="916.20" waitingTime="0.00" waitingCount="0" stopTime="0.00" timeLoss="-0.00" rerouteNo="0" devices="tripinfo_v.146.3" vType="vtypeauto" speedFactor="1.15" vaporized=""/>
<tripinfo id="v.141.4" depart="1410.01" departLane="end2_junction_1" departPos="62.21" departSpeed="16.00" departDelay="0.00" arrival="1521.18" arrivalLane="junction_end4_0" arrivalPos="486.40" arrivalSpeed="16.00" duration="111.17" routeLength="937.79" waitingTime="47.57" waitingCount="1" stopTime="0.00" timeLoss="52.56" rerouteNo="0" devices="tripinfo_v.141.4" vType="vtypeauto" speedFactor="1.15" vaporized=""/>
<tripinfo id="v.141.10" depart="1410.01" departLane="end4_junction_1" departPos="137.72" departSpeed="16.00" departDelay="0.00" arrival="1521.28" arrivalLane="junction_end2_0" arrivalPos="486.40" arrivalSpeed="15.99" duration="111.27" routeLength="862.28" waitingTime="52.29" waitingCount="1" stopTime="0.00" timeLoss="57.38" rerouteNo="0" devices="tripinfo_v.141.10" vType="vtypeauto" speedFactor="1.15" vaporized=""/>
<tripinfo id="v.142.4" depart="1420.01" departLane="end2_junction_1" departPos="101.56" departSpeed="16.00" departDelay="0.00" arrival="1522.44" arrivalLane="junction_end4_1" arrivalPos="486.40" arrivalSpeed="16.00" duration="102.43" routeLength="898.44" waitingTime="36.47" waitingCount="1" stopTime="0.00" timeLoss="46.27" rerouteNo="0" devices="tripinfo_v.142.4" vType="vtypeauto" speedFactor="1.15" vaporized=""/>
<tripinfo id="v.142.10" depart="1420.01" departLane="end4_junction_1" departPos="57.82" departSpeed="16.00" departDelay="0.00" arrival="1522.53" arrivalLane="junction_end2_0" arrivalPos="486.40" arrivalSpeed="15.99" duration="102.52" routeLength="942.18" waitingTime="33.74" waitingCount="1" stopTime="0.00" timeLoss="43.64" rerouteNo="0" devices="tripinfo_v.142.10" vType="vtypeauto" speedFactor="1.15" vaporized=""/>
...
</tripinfos>
这里包含了每一辆车的详细行驶信息。由于输出的是 xml 文件,我们可以借助 python 的 xml.etree.ElementTree module 提取其中的数据并分析。这里就不再赘述了。
作者:isl_qdu
链接:https://www.jianshu.com/p/9e6f7d6b7119
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。