统计输出
在仿真中实例化
通过在命令行或 .sumocfg 文件中设置仿真选项 --statistic-output <FILE> 来激活统计输出。
Note
元素 vehicleTripStatistics、pedestrianStatistics、rideStatistics 和 transportStatistics 仅在设置了选项 --duration-log.statistics 或 --tripinfo-output 时才会生成。
生成的输出
生成的 XML 文件如下所示:
<statistics>
<performance ''ATTRIBUTES''.../>
<vehicles ''ATTRIBUTES''.../>
<teleports ''ATTRIBUTES''.../>
<safety ''ATTRIBUTES''.../>
<persons ''ATTRIBUTES''.../>
<personTeleports ''ATTRIBUTES''.../>
<vehicleTripStatistics ''ATTRIBUTES''.../>
<pedestrianStatistics ''ATTRIBUTES''.../>
<rideStatistics ''ATTRIBUTES''.../>
<transportStatistics ''ATTRIBUTES''.../>
</statistics>
生成的输出属性如下:
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| clockBegin |
time |
仿真开始时的 Unix 时间(如果设置了 --human-readable-time 则为 hh:mm:ss 格式) |
| clockEnd |
time |
仿真结束时的 Unix 时间(如果设置了 --human-readable-time 则为 hh:mm:ss 格式) |
| clockDuration |
time |
执行仿真所花费的时间 (clockEnd - clockBegin) |
| traciDuration |
s |
使用 TraCI 的时间 |
| realTimeFactor |
# |
描述(仿真时间 / 真实时间)关系的因子 |
| vehicleUpdatesPerSecond |
# |
仿真中每秒存在的车辆数 |
| personUpdatesPerSecond |
# |
仿真中每秒存在的行人数 |
| begin |
int (time) |
仿真的开始时间 |
| end |
int (time) |
仿真的结束时间 |
| duration |
int (time) |
仿真的持续时间 (begin - end) |
vehicles
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| loaded |
# |
加载到仿真中的车辆数量 |
| inserted |
# |
插入的车辆数量 |
| running |
# |
仿真结束时仍在运行的车辆数量 |
| waiting |
# |
具有延迟插入且在仿真结束时仍在等待插入的车辆数量 |
teleports
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| total |
# |
发生的传送 (teleportation) 总数 |
| jam |
# |
因交通拥堵导致的传送次数 |
| yield |
# |
因让行导致的传送次数(车辆卡在低优先级道路上,且未在优先级交通流中找到间隙) |
| wrongLane |
# |
因车辆卡在没有通往其路线中下一条边的连接的车道上而导致的传送次数 |
safety
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| collisions |
# |
发生的碰撞次数 |
| emergencyStops |
# |
执行的紧急停车次数 |
persons
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| loaded |
# |
加载到仿真中的行人数 |
| running |
# |
正在运行的行人数 |
| jammed |
# |
仿真期间被阻塞的行人数 |
personTeleports
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| total |
# |
发生的人员传送总次数 |
| abortWait |
# |
因等待乘车时间过长而导致的传送次数 |
| wrongDest |
# |
因乘车到达错误目的地而导致的传送次数 |
vehicleTripStatistics
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| count |
# |
参与此统计的车辆数量(默认为到达车辆,但如果设置了选项 --tripinfo-output.write-unfinished,则包括所有插入的车辆) |
| routeLength |
m |
平均路线长度 |
| speed |
m/s |
平均行程速度 |
| duration |
s |
平均行程持续时间 |
| waitingTime |
s |
平均站立时间(非自愿) |
| timeLoss |
s |
因以低于期望速度行驶而导致的平均时间损失(包括 waitingTime) |
| departDelay |
s |
车辆在开始行程前必须等待的平均时间 |
| departDelayWaiting |
s |
因道路空间不足而无法插入的车辆的平均等待时间 |
| totalTravelTime |
s |
所有车辆的总行程时间 |
| totalDepartDelay |
s |
所有车辆的总出发延迟 |
pedestrianStatistics
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| number |
# |
行人步行总次数 |
| routeLength |
m |
平均步行长度 |
| duration |
s |
平均步行持续时间 |
| timeLoss |
s |
因以低于最大速度行走或停止而导致的平均时间损失 |
rideStatistics
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| number |
# |
乘车总次数(乘车指使用单一交通工具的移动) |
| routeLength |
m |
平均乘车路线长度 |
| duration |
s |
平均总乘车持续时间 |
| bus |
# |
使用在道路上行驶的公共交通车辆的乘车次数 |
| train |
# |
使用在轨道上行驶的公共交通车辆的乘车次数 |
| taxi |
# |
出租车乘车次数 |
| bike |
# |
使用车辆类型 bicycle 的乘车次数 |
| aborted |
# |
无法完成的乘车次数 |
transportStatistics
| 属性名 (Attribute Name) |
值类型 (Value Type) |
描述 (Description) |
| number |
# |
运输总次数(运输涉及集装箱的移动) |
| routeLength |
m |
平均运输路线长度 |
| duration |
s |
平均总运输持续时间 |
| bus |
# |
使用在道路上行驶的公共交通车辆的运输次数 |
| train |
# |
使用在轨道上行驶的公共交通车辆的运输次数 |
| taxi |
# |
出租车运输次数 |
| bike |
# |
使用车辆类型 bicycle 的运输次数 |
| aborted |
# |
无法完成的运输次数 |
使用示例
仿真间的公平行程时间比较
当比较具有固定结束时间的仿真时,这些仿真可能在出发和到达的车辆数量上有所不同。在这种情况下,必须注意在比较中包含“缺失”的车辆,因为许多输出默认仅包含到达的车辆。
要包含这些车辆的统计信息,必须设置选项 --tripinfo-output.write-unfinished --duration-log.statistics。
基本思路是将输入中定义的所有车辆的行程时间(duration)和等待出发所花费的时间(departDelay)相加。
为了简化具有相同车辆数量的仿真之间的比较,提供了属性 'totalTravelTime' 和 'totalDepartDelay'。
计算行程时间和延迟总和的另一种方法是将平均值相乘:
totalTravelTimeAndDelay =
vehicles.inserted * (vehicleTripStatistics.duration + vehicleTripStatistics.departDelay)
+ vehicles.waiting * vehicleTripStatistics.departDelayWaiting