按转向概率进行路径规划

jtrrouter 是一种路径规划应用,它使用交通流量和交叉路口的转向百分比作为输入。必须提供以下参数:

  • 车辆行驶的网络,
  • 交叉路口转向比率的描述(也可以使用默认值),以及
  • 交通流量的描述。

调用命令示例如下:

jtrrouter --route-files=<FLOW_DEFS> --turn-ratio-files=<TURN_DEFINITIONS> --net-file=<SUMO_NET> \
  --output-file=MySUMORoutes.rou.xml --begin <UINT> --end <UINT>

Note

如果已知的是转向计数而非转向比率,则可以使用其他工具

转向定义#

转向和汇点定义
文件名后缀 .turns.xml
内容类型 转向和汇点定义
开放格式?
SUMO 特有?
XML Schema edgerelations_file.xsd

要描述转向定义,需要编写一个 XML 文件。在该文件中,必须为每个时间间隔和每条边给出使用特定后继边的百分比列表。示例如下:

<edgeRelations>
   <interval begin="0" end="3600">
      <edgeRelation from="myEdge0" to="myEdge1" probability="0.2"/>
      <edgeRelation from="myEdge0" to="myEdge2" probability="0.7"/>
      <edgeRelation from="myEdge0" to="myEdge3" probability="0.1"/>

      ... 其他边 ...

   </interval>

   ... 其他时间间隔 ...

</edgeRelations>

Note

如果提供的转向定义存在重叠(例如在多个文件中),后出现的转向定义将覆盖先前的定义。

该代码段定义了在 0 秒到 3600 秒的时间间隔内,到达边 "myEdge0" 末端的车辆将以 20% 的概率选择边 "myEdge1",以 70% 的概率选择 "myEdge2",以 10% 的概率选择 "myEdge3"。另一种节省准备描述时间的方法是使用默认值。参数 --turn-defaults (-T) <TURN_DEFAULTS> 可用于描述所有交叉路口在所有时间步长将使用的默认比率。<TURN_DEFAULTS> 是一个由逗号 ',' 分隔的浮点数列表。要实现与上述示例相同的行为,请使用 --turn-defaults 20,70,10。这些值将应用于某条边的后继边,从右侧边(20%)开始,到最左侧边(10%)结束。由于不同边的可能后继边数量不同,对于后继边数量与给定转向概率默认值数量不同的边,这些值将被重新采样。给定 --turn-defaults 20,70,10,使用具有两个后继边的边的车辆将以 55% 的概率使用右侧的后继边,以 45% 的概率使用左侧的后继边。

自动生成转向定义#

有关基于网络结构的自动(但可能是人为的)转向定义生成,请参见 generateTurnDefs.py

您也可以从现有的路径文件生成转向定义,请参见 generateTurnRatios.py

汇点定义#

车辆一旦到达汇点边就会离开网络。由于并非所有网络都定义了汇点边,可以使用 --sinks <EDGE_ID>[,<EDGE_ID>]* 来支持将边列表声明为汇点。您也可以将汇点定义添加到转向文件(仅限 XML):

<turns>
   ... 如上所述的其他转向定义 ...

   <sink edges="<EDGE_ID>[ <EDGE_ID>]*"/>
   ... 其他汇点定义 ...

</turns>

如果未定义汇点,可以使用选项 --accept-all-destinations <BOOL> 将所有边声明为可能的汇点。

流量定义#

流量的定义duarouter 相同,只有一个区别:由于车辆使用的路径是随机计算的,因此不知道车辆将在何处离开网络,所以必须使用属性 from 来指定路径,并且必须省略属性 to

<routes>
   <flow id="example0" from="A" begin="0" end="3600" probability="0.5"/>
   <flow id="example1" ... />
   ....
</routes>

随机流量#

工具 randomTrips.py 可用于生成 jtrrouter 输入,方法是设置选项 --flows <INT> --jtrrouter

重叠流量#

默认情况下,JTRRouter 将通过网络规划流量路径,并在交叉路口进行分流,直到流量的每个部分都到达汇点边。当这样的流量到达另一条流量的源边时,总交通量会相加。 以下选项可以更改此行为:

  • --sources-are-sinks(快捷方式 -S)。设置此选项后,所有流量在到达另一条流量的源边时将终止。问题 #6601
  • --discount-sources(快捷方式 -D)。设置此选项后,从某条边出发的流量将减去从上游流量到达该边的交通量。与选项 --sources-are-sinks 结合使用时,当达到源流量数值时,上游流量将在下游边终止。

其他选项#

理论上,当车辆被迫始终朝同一方向行驶时,路径可能会无限长,因此可以使用选项 --max-edges-factor <FLOAT> 来限制路径的大小。该因子乘以所用网络的边数,即为路径允许的最大边数。默认值为 2.0,表示路径可以包含的边数是网络边数的两倍。任何长于此大小的路径都将被标记为无效。我们假设对于每个网络,都需要重新选择此数字。