在仿真中实例化#
通过在命令行/配置文件中使用选项 --tripinfo-output <FILE>,可以强制仿真生成此输出。该输出包含每辆车的出发时间、车辆计划出发时间(可能早于实际出发时间)以及车辆到达时间。信息会在每辆车到达目的地并从路网中移除时生成。
生成的输出#
格式如下:
<tripinfos>
<tripinfo id="<VEHICLE_ID>" \
depart="<DEPARTURE_TIME>" departLane="<DEPARTURE_LANE_ID>" \
departPos="<DEPARTURE_POSITION>" departSpeed="<DEPARTURE_SPEED>" \
departDelay="<DEPARTURE_DELAY>" \
arrival="<ARRIVAL_TIME>" arrivalLane="<DEPARTURE_LANE_ID>" \
arrivalPos="<ARRIVAL_POSITION>" arrivalSpeed="<ARRIVAL_SPEED>" \
duration="<TRAVEL_TIME>" routeLength="<ROUTE_LENGTH>" \
waitingTime="<SECONDS_WAITING_FOR_TRAFFIC>"
waitingCount="<NUMBER_OF_WAITING_EPISODES>" \
rerouteNo="<REROUTE_NUMBER>" \
devices="<DEVICE_LIST>" vtype="<VEHICLE_TYPE_ID>"/>
... 其他车辆的信息 ...
</tripinfos>
请注意,与上面的示例不同,在每个时间步长中,所有这些值都在一行中报告。每当车辆到达目的地时,就会写入一条记录。在此之前,写入的值是未知的。
| 名称 | 类型 | 描述 |
|---|---|---|
id |
(车辆) id | 该条目描述的车辆名称 |
depart |
(仿真) 秒 | 实际出发时间(车辆插入路网的时间) |
departLane |
(车道) id | 车辆开始行程的车道 id |
departPos |
米 | 车辆开始行程时在车道上的位置 |
departSpeed |
米/秒 | 车辆开始行程时的速度 |
departDelay |
(仿真) 秒 | 车辆在开始行程前必须等待的时间 |
arrival |
(仿真) 秒 | 车辆到达目的地的时间 |
arrivalLane |
(车道) id | 车辆到达目的地时所在的车道 id |
arrivalPos |
米 | 车辆到达目的地时在车道上的位置 |
arrivalSpeed |
米/秒 | 车辆到达目的地时的速度 |
duration |
(仿真) 秒 | 车辆完成路线所需的时间 |
routeLength |
米 | 车辆路线的长度 |
waitingTime |
秒 | 车辆速度低于或等于 0.1 米/秒的时间(计划的停靠不计入) |
waitingCount |
# | 车辆速度低于或等于 0.1 米/秒的次数 |
stopTime |
秒 | 车辆进行计划停靠的时间 |
timeLoss |
秒 | 由于低于理想速度行驶而损失的时间。(理想速度包括个体 speedFactor;交叉口等造成的减速会产生 timeLoss,计划的停靠不计入) |
rerouteNo |
# | 车辆重新规划路线的次数 |
devices |
[ID]* | 车辆拥有的设备列表。每个设备之间用 ';' 分隔。 |
vtype |
ID | 车辆的类型 |
speedFactor |
float | 车辆的个体速度因子(可能在仿真开始时从速度分布中抽取) |
vaporized |
bool | 车辆是否在到达目的地之前从仿真中移除 |
设备#
单个设备可以选择向 tripinfo 文件添加更多输出。
排放#
使用选项 --device.emissions.probability <FLOAT> 或 --device.emissions.explicit <ID>[,<ID>]* 实例化的 "emissions" 设备。写入的排放量取决于车辆选择的排放等级(参见车辆、车辆类型和路线的定义和模型/排放)。它提供了车辆在行程期间产生/消耗的所有排放/消耗的总和。
这将添加以下行:
<tripinfos>
<tripinfo id="<VEHICLE_ID>" ... vtype="<VEHICLE_TYPE_ID>">
<emissions CO_abs="..." CO2_abs="..." HC_abs="..." PMx_abs="..." NOx_abs="..." fuel_abs="..."/>
</tripinfo>
... 其他车辆的信息 ...
</tripinfos>
单位如下:
| 名称 | 类型 | 描述 |
|---|---|---|
CO_abs |
mg | 车辆在行程期间排放的 CO 总量 |
CO2_abs |
mg | 车辆在行程期间排放的 CO2 总量 |
HC_abs |
mg | 车辆在行程期间排放的 HC 总量 |
PMx_abs |
mg | 车辆在行程期间排放的 PMx 总量 |
NOx_abs |
mg | 车辆在行程期间排放的 NOx 总量 |
fuel_abs |
mg | 车辆在行程期间消耗的燃料总量 |
electricity_abs |
Wh | 车辆在行程期间消耗的电量总量 |
电池#
"battery" 设备 向 tripinfo 输出贡献车辆在行程期间电池耗尽的次数。车辆可能因能量不足而被迫停止(使用 "stationfinder" 设备),或者可能在制动时回收能量,然后再次耗尽电池。
这将添加以下行:
<tripinfos>
<tripinfo id="<VEHICLE_ID>" ... vtype="<VEHICLE_TYPE_ID>">
<battery depleted="..." actualBatteryCapacity="..." totalEnergyConsumed="..." totalEnergyRegenerated="..."/>
</tripinfo>
... 其他车辆的信息 ...
</tripinfos>
属性如下:
| 名称 | 类型 | 描述 |
|---|---|---|
depleted |
- | 车辆想要消耗的能量超过电池所能提供的次数 |
actualBatteryCapacity |
Wh | 车辆完成路线后的电池容量 |
totalEnergyConsumed |
Wh | 完成路线后消耗能量的累积总和 |
totalEnergyRegenerated |
Wh | 完成路线后回收能量的累积总和 |
仿真结束时未到达车辆的输出#
默认情况下,tripinfo-output 仅在车辆到达时写入。这意味着仿真结束时(即由于选项 --end)未到达的车辆不会生成输出。 要更改此行为,可以使用选项 --tripinfo-output.write-unfinished。
仅输出选定车辆或车辆类型#
默认情况下,所有车辆都会生成 tripinfo-output。通过为选定车辆或类型分配 tripinfo 设备,可以更改此行为。
示例: 设置 SUMO 选项 --device.tripinfo.probability 0 将默认禁用所有车辆的设备。 以下定义覆盖此默认值并为公交车启用设备:
<vType id="bus">
<param key="has.tripinfo.device" value="true"/>
</vType>
人员和集装箱输出#
如果仿真包含人员或集装箱,以下元素将添加到输出中:
<personinfo id="person0" depart="0.00">
<walk depart="0.00" arrival="47.00" arrivalPos="55.00"/>
<ride waitingTime="74.00" vehicle="train0" depart="121.00" arrival="140.00" arrivalPos="92.00"/>
<stop duration="20.00" arrival="160.00" arrivalPos="45.00" actType="singing"/>
</personinfo>
<containerinfo id="container0" depart="0.00">
<tranship depart="0.00" arrival="54.00" arrivalPos="55.00"/>
<transport waitingTime="103.00" vehicle="train0" depart="157.00" arrival="176.00" arrivalPos="92.00"/>
<stop duration="20.00" arrival="196.00" arrivalPos="40.00" actType="waiting"/>
</containerinfo>
当设置选项 --personinfo-output FILE 时,上述元素将写入给定的文件名,而不是与车辆的 <tripinfo> 元素一起写入。
<personinfo> / <containerinfo> 属性具有以下含义:
| 名称 | 类型 | 描述 |
|---|---|---|
id |
(车辆) id | 该条目描述的人员/集装箱名称 |
depart |
(仿真) 秒 | 出发时间 |
阶段内的属性具有以下含义:
| 名称 | 类型 | 描述 |
|---|---|---|
depart |
(仿真) 秒 | 此阶段的出发时间。对于 <ride>,<transport>,这是进入车辆的时间。(如果未进入车辆则为 -1) |
arrival |
(仿真) 秒 | 此阶段的到达时间。注意:在停靠阶段,这是阶段结束的时间,即持续时间周期之后(如果阶段未开始则为 -1) |
arrivalPos |
米 | 此阶段在目标边缘上的到达位置 |
duration |
(仿真) 秒 | 对于步行和停靠,这是在该阶段花费的时间。对于乘车阶段,这仅是车内花费的时间。(如果阶段未开始或人员未进入车辆则为 -1) |
actType |
string | 停靠的活动描述 |
waitingTime |
(仿真) 秒 | 等待车辆所花费的时间 |
routeLength |
米 | 该阶段行驶的距离 |
timeLoss |
秒 | 由于以低于该阶段最大速度行驶而损失的时间。对于 <ride>,这是乘车期间车辆的 timeLoss |
maxSpeed |
秒 | 该阶段允许的最大速度 |
聚合输出#
可以通过设置选项 --statistic-output 来获取关键 tripinfo-output 属性的聚合输出。
有关进一步的聚合,请参见 attributeStats.py 和 Tools/Xml#xml2csv.py。
可视化示例#
TripInfo 输出可用作 SUMO 附带的几个可视化工具的输入。下面展示了一些示例图。
随时间变化的出发延迟#

使用 plotXMLAttributes.py 生成。
停靠次数直方图#

