引言#
在仿真中,希望执行掉头操作的车辆可能会成为拥堵和死锁的来源。 车辆需要执行掉头的一个典型原因是,它们必须在其第一条和最后一条边上以特定方向出发和到达,而这与它们偏好的行驶方向不符。
在某种程度上,这种行为是不切实际的,因为实际上,从家中出发的车辆通常可以自由选择其初始行驶方向,而无需掉头。在其他情况下,例如在分隔道路上的平行停车,掉头通常是必要的。
因此,有两种途径可以避免下文描述的掉头带来的负面影响。
避免掉头的需求#
节点之间的行程#
与其定义边之间的行程,不如在节点之间定义行程。 这样做时,车辆将始终在进入正确方向的边上出发,因为在初始路径规划时,它们可以自由选择最符合其行驶方向的边。
除了手动定义行程外,节点之间的行程也可以通过以下方式实现:
Caution
当使用 sumo 或 duarouter 加载具有 fromJunction 或 toJunction 属性的行程时,必须设置选项 --junction-taz 或加载等效的 TAZ 文件。
TAZ 之间的行程#
与其将节点作为出发点(内部使用专门的 TAZ),用户可以定义更大的交通分区(TAZ / 区域)作为出行的起点和终点。这也会导致车辆选择合适的方向。如果这些分区的主要目的是避免掉头,则可以使用工具 generateBidiDistricts.py。
修改现有路径#
如果边之间已经存在路径,可以使用 duarouter 选项 --remove-loops 来缩短道路,从而避免掉头。
控制掉头可能发生的位置#
通过从网络中移除掉头连接(即使用 netedit),可以防止在不合适的地点发生掉头。
通常,在导入网络时控制掉头连接的生成会更容易。为此,netconvert 提供了许多选项。
- --no-turnarounds : 禁用构建掉头。这可能会导致车辆绕远路,通过多次左转或右转来实现掉头。
- --no-turnarounds.tls : 禁用在信号灯控制的节点处构建掉头。
- --no-turnarounds.geometry : 禁用在几何节点处构建掉头。此选项默认激活,以防止车辆在狭窄的道路上掉头。
- --no-turnarounds.except-deadend : 禁用构建掉头,死节点除外。此选项确保车辆可以驶出死胡同。
- --no-turnarounds.except-turnlane : 禁用构建掉头,设有专用转弯车道的节点除外。此选项在防止掉头相关拥堵和避免长途绕行之间提供了良好的折衷方案。在有专用转弯车道的情况下,必须等待掉头的车辆对其他交通的干扰较小。
- --no-turnarounds.fringe : 禁用在边缘节点处构建掉头。此选项的目的是防止在网络边界处发生掉头,这些边被切断(像死胡同),但实际上它们会继续延伸到场景边界之外。在这些位置通常不应发生掉头。为了生效,此选项要求边界节点具有属性
fringe="outer"。这可以通过设置选项 --fringe.guess 来实现。
