在仿真中实例化#
多入口出口检测器 (Multi-Entry-Exit Detectors) 定义在必须由仿真加载的 additional-file 中。
多入口出口检测器的描述必须包含入口横截面集合和出口横截面集合。因此,无法使用单个标签来指定检测器。相反,描述由以下部分组成:
定义:
<additional>
<entryExitDetector id="<ID>" period="<AGGREGATION_TIME>" file="<OUTPUT_XMLFILE>"
timeThreshold="<FLOAT>" speedThreshold="<FLOAT>">
<detEntry lane="<LANE_ID1>" pos="<POSITION_ON_LANE>" friendlyPos="<BOOL>"/>
<detEntry lane="<LANE_ID2>" pos="<POSITION_ON_LANE>" friendlyPos="<BOOL>"/>
<detExit lane="<LANE_ID1>" pos="<POSITION_ON_LANE>" friendlyPos="<BOOL>"/>
<detExit lane="<LANE_ID3>" pos="<POSITION_ON_LANE>" friendlyPos="<BOOL>"/>
... further entries ...
</entryExitDetector>
</additional>
将构建一个多入口出口检测器,起始于 "LANE_ID1" 或 "LANE_ID2" 车道,终止于 "LANE_ID1" 或 "LANE_ID3" 的同一车道。所有值将在 "AGGREGATION_TIME" 秒的时间内进行聚合。它们将被写入 "OUTPUT_XMLFILE" 文件中,该文件位于读取配置/启动程序的文件夹的子文件夹中。
属性#
属性完整列表如下:
| 属性名称 | 值类型 | 描述 |
|---|---|---|
| id | id (string) | 保存检测器 ID 的字符串 |
| file | filename | 输出文件的路径。路径可以是相对路径。 |
| period (别名 freq) | int | 检测器收集的值进行求和的聚合周期(默认:整个仿真时间)。 |
| timeThreshold | float | 基于时间的阈值,描述车辆被识别为停止前必须经过的时间;单位:秒,默认:1秒。 |
| speedThreshold | float | 基于速度的阈值,描述车辆必须多慢才能被识别为停止;单位:m/s,默认:5/3.6m/s。 |
| openEntry | bool | 如果设置为 true,当车辆在未首先进入检测器的情况下离开检测器时,将不会报告错误。这在跟踪特定入口和出口车道组合的车辆以及其他车辆也可能使用出口车道时非常有用。默认:false。 |
| expectArrival | bool | 当车辆到达检测器区域内时,是否不应发出警告。默认:false。 |
| vTypes | string | 要考虑的车辆类型 ID 的空格分隔列表,"" 表示所有;默认 ""。 |
| nextEdges | stringList | 必须全部是车辆未来路线一部分的边缘 ID 列表,以符合检测条件(默认为空)。 |
| detectPersons | string | 检测行人而非车辆(行人或乘客) |
生成的输出#
仿真中多入口出口检测器的输出中的单个数据行如下所示:
<interval begin="<BEGIN_TIME>" end="<END_TIME>" id="<ID>" meanTravelTime="<MEAN_TT>"
meanOverlapTravelTime="<MEAN_OVERLAP_TT>" meanSpeed="<MEAN_SPEED>"
meanHaltsPerVehicle="<MEAN_HALT_NUMBER>" vehicleSum="<#VEHICLES>" meanSpeedWithin="<MEAN_SPEED>"
meanHaltsPerVehicleWithin="<MEAN_HALT_NUMBER>" meanDurationWithin="<MEAN_HALT_DURATION>"
vehicleSumWithin="<#VEHICLES>" meanIntervalSpeedWithin="<MEAN_SPEED>"
meanIntervalHaltsPerVehicleWithin="<MEAN_HALT_NUMBER>" meanIntervalDurationWithin="<MEAN_HALT_DURATION>"/>
与车道区域检测器一样,多入口出口检测器生成的度量可以按计算方式分组。普通度量仅考虑在所述间隔内离开检测器区域的车辆。此外,还会生成仍在区域内的车辆的度量(后缀 "Within"),包含整个通过区域行程有效的度量以及仅由当前间隔内收集的样本组成的度量("...Interval...")。这些值在下表中逐一描述。
| 名称 | 类型 | 描述 |
|---|---|---|
| begin | (仿真) 秒 | 收集值的第一个时间步 |
| end | (仿真) 秒 | 收集值的最后一个时间步 + DELTA_T(可能等于 begin) |
| id | id | 检测器的 ID |
| meanTravelTime | s | 车辆通过该区域所需的时间(车辆前部通过即计算)。对在间隔持续时间内完全离开检测器的所有车辆取平均值。 |
| meanOverlapTravelTime | s | 车辆通过该区域所需的时间(车辆任何部分在检测范围内的时间都计算)。对在间隔持续时间内完全离开检测器的所有车辆取平均值。 |
| meanSpeed | m/s | 通过该区域的车辆的平均速度。在间隔和车辆上取平均(也称为时间平均速度)。 |
| meanHaltsPerVehicle | # | 通过该区域的车辆的停止次数。对在间隔持续时间内离开检测器的所有车辆取平均值。 |
| meanTimeLoss | s | 所有通过该区域的车辆的平均时间损失。 |
| vehicleSum | # | 在间隔内离开该区域的车辆数量。 |
| meanSpeedWithin | m/s | 已进入但尚未离开该区域的车辆的平均速度。在每辆车在区域内的停留时间和车辆上取平均。 |
| meanHaltsPerVehicleWithin | m/s | 已进入但尚未离开该区域的车辆的平均停止次数。在每辆车在区域内的停留时间和车辆上取平均。 |
| meanDurationWithin | s | 已进入但尚未离开该区域的车辆在区域内的平均停留时间。在每辆车在区域内的停留时间和车辆上取平均。 |
| vehicleSumWithin | s | 已进入但尚未离开该区域的车辆数量。 |
| meanIntervalSpeedWithin | m/s | 已进入但尚未离开该区域的车辆的平均速度,在写入的间隔内收集。在间隔和车辆上取平均。 |
| meanIntervalHaltsPerVehicleWithin | # | 已进入但尚未离开该区域的车辆的每辆车停止次数,在写入的间隔内收集。在车辆上取平均。 |
| meanIntervalDurationWithin | s | 已进入但尚未离开该区域的车辆在区域内的平均停留时间,在写入的间隔内收集。在车辆上取平均。 |
| meanTimeLossWithin | s | 在写入的间隔内进入但尚未离开该区域的车辆收集的平均时间损失。 |
可视化#

输出可以使用 plotXMLAttributes 表示,详见该处。
更多注意事项#
- 所有涉及持续时间的测量都指相关间隔的结束时间。
- 可以使用 TraCI 访问模拟的多入口出口检测器。如果不需要 XML 输出,可以使用属性
file="NUL"。 - 您可以自动生成检测器定义。有关更多信息,请参阅输出工具。
- 仿真不会检查检测器入口和出口定义的区域是否真正封闭,因此如果您不断收到关于车辆离开区域但未进入(或反之亦然)的警告,请检查您的入口和出口是否真的覆盖了所有可能的车道。 - 这同样适用于在入口和出口包围的区域内开始或结束路线(或瞬移)的车辆。它们不被测量考虑在内,并且可能会生成警告(在未进入的情况下离开或路线结束)。
- 检测器会插值入口和出口时间,因此如果车辆在时间 10 的位置为 95,在时间 11 的位置为 105,且检测器入口位于位置 100,则 10.5 被记录为入口时间(并在随后的计算中也用于平均速度)。
- 如果您使用较小的检测器间隔(小至时间步长长度),插值行为可能导致离散化误差。在上面的例子中,车辆实际上只在第 11 步进入检测器,因此不会被记录在区间 [10,11) 内,但在下一个区间 [11,12) 内,它在检测器内的持续时间(meanDurationWithin, meanIntervalDurationWithin)为 1.5。
- 如果车辆恰好放置在入口位置,它不会被立即计数,因为计算速度需要在检测器内有非零的移动。
