引言
SUMO 作為一款常用的交通系統(tǒng)仿真軟件蛾号,其仿真結(jié)果常被用于統(tǒng)計(jì)分析,例如計(jì)算某條道路上單位時(shí)間內(nèi)的車流量懈词,某種交通燈控制策略對行車延時(shí)的影響等童叠。
SUMO 提供了多種獲取統(tǒng)計(jì)結(jié)果的方式。本文主要介紹兩種:
- 設(shè)置參數(shù)
--duration-log.statistics
嫁蛇,自動(dòng)獲取實(shí)時(shí)統(tǒng)計(jì)結(jié)果锨并。參考網(wǎng)址 - 設(shè)置參數(shù)
--tripinfo-output
,得到仿真數(shù)據(jù)文件睬棚,再進(jìn)行后續(xù)分析第煮。參考網(wǎng)址
獲取實(shí)時(shí)統(tǒng)計(jì)結(jié)果
在啟動(dòng) SUMO 時(shí)解幼,添加參數(shù) --duration-log.statistics
,即
sumo-gui --duration-log.statistics -c <config_file_name.sum.cfg>
啟動(dòng) sumo 之后包警,鼠標(biāo)右鍵點(diǎn)擊綠色背景區(qū)域撵摆,選擇 " Show Parameters" 就可以得到如下圖所示的實(shí)時(shí)統(tǒng)計(jì)結(jié)果:
其中:
parameter | description |
---|---|
loaded vehicles | 已經(jīng)生成的車輛數(shù)目 |
running vehicles | 正在路上運(yùn)行的車輛數(shù)目 |
arrived vehicles | 已經(jīng)到達(dá)終點(diǎn)的車輛數(shù)目 |
avg.trip.length | 車輛平均行駛距離 |
avg.trip.duration | 車輛平均行駛時(shí)間 |
avg.trip.time loss | 平均延遲時(shí)間 = 平均行駛時(shí)間 - 按照期望速度行駛所需時(shí)間 (上述程序中為 16m/s) |
avg.trip.speed | 平均車速 = 平均行駛距離 / 平均行駛時(shí)間 |
實(shí)際上,不添加上述參數(shù)也可以獲得一些統(tǒng)計(jì)結(jié)果揽趾,只不過添加參數(shù)之后統(tǒng)計(jì)結(jié)果更多一些台汇。
獲取仿真數(shù)據(jù)文件
如果自己想要的統(tǒng)計(jì)結(jié)果不在上述統(tǒng)計(jì)參數(shù)中,則需要導(dǎo)出仿真數(shù)據(jù)篱瞎,手動(dòng)分析苟呐。
例如,我們不僅想知道平均延遲時(shí)間俐筋,還想知道延遲時(shí)間的標(biāo)準(zhǔn)差牵素,后者反映了交通控制策略的公平性。
為了得到輸出數(shù)據(jù)澄者,在啟動(dòng) SUMO 時(shí)笆呆,添加參數(shù) --tripinfo-output
,即
sumo-gui --tripinfo-output my_output_file.xml -c <config_file_name.sumo.cfg>
仿真結(jié)束之后粱挡,數(shù)據(jù)都存放在了 my_output_file.xml
文件中赠幕,內(nèi)容如下:
<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>
這里包含了每一輛車的詳細(xì)行駛信息。由于輸出的是 xml 文件询筏,我們可以借助 python 的 xml.etree.ElementTree module 提取其中的數(shù)據(jù)并分析榕堰。這里就不再贅述了。