EmissionOutput

此输出选项的原因在于 SUMO 能够计算每个仿真时间步长的排放量。每个车辆的计算值将被记录下来,可用于对网络特定部分进行更深入的分析。这些值取决于为各车辆选择的排放模型

在仿真中实例化#

要强制 SUMO 生成包含排放输出的文件,请在命令行(或配置)参数中添加 --emission-output <FILE><FILE> 是输出将被写入的文件名。任何同名文件将被覆盖,目标文件夹必须存在。

默认情况下,仿真中所有车辆均启用排放输出,且在每个仿真步长输出。使用设备分配选项或参数(即 --device.emissions.probability 0.25)可以减少生成排放输出的车辆集合。输出周期可通过选项 --device.emissions.period <TIME> 设置。要延迟输出(即直到经过一定的预热时间),可以使用选项 --device.emissions.begin <TIME>

生成的输出#

Caution

请注意,与燃料相关的输出单位已随 SUMO 1.14.0 从升(liters)更改为毫克(milligram)。 若要保持旧行为,请使用选项 --emission-output.volumetric-fuel

排放输出是一个 xml 文件,包含每个时间步长每辆车的排放值。生成的 XML 文件如下所示:

<emission-export>

 <timestep time="<TIME_STEP>">

  <vehicle id="<VEHICLE_ID>" eclass="<VEHICLE_EMISSION_CLASS>" CO2="<VEHICLE_CO2>" CO="<VEHICLE_CO>"
    HC="<VEHICLE_HC>" NOx="<VEHICLE_NOX>" PMx="<VEHICLE_PMX>" fuel="<VEHICLE_FUEL>" electricity="<VEHICLE_ELECTRICITY>" noise="<VEHICLE_NOISE>" \
    route="<VEHICLE_ROUTE>" type="<VEHICLE_TYPE>" waiting="<VEHICLE_WAITING>" lane="<VEHICLE_LANE>" \
    pos="<VEHICLE_POS>" speed="<VEHICLE_SPEED>" angle="<VEHICLE_ANGLE>" x="<VEHICLE_POS_X>" y="<VEHICLE_POS_Y>"/>

   ... more vehicles ...

  </timestep>

... the next timestep ...

</emission-export>

所写入值的含义如下表所示。

Name Type Description
time_step (simulation) seconds 此时间步长元素内描述的值所对应的时间步长
id id 车辆的 ID
eclass ID 车辆的排放等级
CO2 mg/s 该车辆在当前仿真步长排放的 CO2 量
CO mg/s 该车辆在当前仿真步长排放的 CO 量
HC mg/s 该车辆在当前仿真步长排放的 HC 量
NOx mg/s 该车辆在当前仿真步长排放的 NOX 量
PMx mg/s 该车辆在当前仿真步长排放的 PMX 量
fuel mg/s 该车辆在当前仿真步长消耗的燃料量
electricity Wh/s 该车辆在当前仿真步长消耗的电量
noise dB 该车辆在当前仿真步长排放的噪声
route id 路线的名称
type id 车辆类型的名称
waiting seconds 车辆等待的时间
lane id 车辆正在行驶的车道名称
pos meters 车辆位置,从当前车道起点测量
speed m/s 车辆的速度
angle degree 车辆的角度
pos_x --- 车辆的绝对 X 坐标。该值取决于给定的地理投影。
pos_y --- 车辆的绝对 Y 坐标。该值取决于给定的地理投影。

Caution

当以亚秒级分辨率运行时,每个仿真步长写入的排放量会被外推到 1 秒内生成的排放量。为避免缩放(从而简化聚合),请设置选项 --emission-output.step-scaled

其他选项#

  • --emission-output.geo 将输出坐标切换为 WGS84(用于地理参考网络)
  • --emission-output.attributes ATTR1,ATTR2,... 将写入的属性限制为给定列表(以减少输出)。以下属性是特殊的:
    • all: 启用所有属性
  • --emission-output.precision 控制输出中的小数位数(默认为 2)
  • --emission-output.step-scaled 将写入每步排放量而不是每秒排放量(仅在同时使用选项 --step-length 时相关)

可视化示例#

用户选择的属性可以使用 plotXMLAttributes.py 进行绘制。以已发布的 sumo 场景之一 acosta 为例 (https://github.com/DLR-TS/sumo-scenarios/tree/main/bologna/acosta)。

生成输出#

sumo -c run.sumocfg --emission-output emissions.xml

绘图示例调用#

python plotXMLAttributes.py -x time -y CO2 -s -o CO2_output.png emissions.xml -i id --filter-ids Audinot_10_89 --legend

其中 -x 是 X 轴的属性;-y 是 Y 轴的属性;-s 是显示绘图;-o 是输出文件名;-i 是过滤的属性名称;--filter-ids 是过滤属性名称的值;--legend 是显示所选属性名称的值。

结果图如下所示。