Manhattan

简介#

本教程介绍如何在 SUMO 中构建 Manhattan 移动性模型。 在该模型中,固定数量的车辆在曼哈顿网格网络上随机行驶。所有文件也可以在 <SUMO_HOME>/docs/tutorial/manhattan 目录中找到。

创建路网#

创建曼哈顿网格网络由 netgenerate 应用程序支持。选项 --grid 用于创建网格网络。可以使用选项 --grid.number 设置网格单元的数量。 有多种选项可以配置单元的大小和数量,以及更改车道数量和路口类型。本教程的选项写在一个配置文件中。通过调用以下命令创建路网:

netgenerate -c manhattan/data/manhattan.netgcfg

生成车辆#

在曼哈顿移动性模型中,车辆根据指定的转向比率随机行驶。这种移动性由 jtrrouter 应用程序支持。该应用程序需要 <flow> 定义作为输入,以定义车辆的起点和开始时间。

为 jtrrouter 生成随机流#

randomTrips.py 工具可用于生成合适的随机流(randomFlows),使用以下选项。如果 --trip-attributes 选项未被正确识别,请尝试在选项值周围使用双引号,并转义内部的双引号。

 <SUMO_HOME>/tools/randomTrips.py -n net.net.xml -o flows.xml --begin 0 --end 1 \
       --flows 100 --jtrrouter \
       --trip-attributes 'departPos="random" departSpeed="max"'

选项 --flows 100 定义了将在路网中行驶的车辆数量。通常 <flow> 用于定义多辆车,但在本例中,每个流在模拟开始时仅生成一辆车(因此使用选项 --end 1)。必须设置选项 --jtrrouter 以生成没有目的地的流。否则,生成的车辆可能会过早结束行程。传递给选项 --trip-attributes 的参数设置为确保多辆车可以在第一步进入源边(source edge)。

这些选项也编码在脚本 runner.py 中。

Caution

randomTrips 选项 --jtrrouter 仅在 SUMO 1.2.0 及更高版本中可用。在早期版本中,必须在使用 jtrrouter 处理之前,手动从生成的流中删除 'to' 属性。

调用 jtrrouter#

使用生成的随机流调用 jtrrouter 应用程序。为确保路线足够长,必须设置选项 --allow-loops。由于未定义汇点边(sink edge),因此设置选项 --accept-all-destinations。曼哈顿移动性模型的默认转向比率(25% 右转,50% 直行,25% 左转)通过选项 --turn-defaults 25,50,25 设置。

本教程的所有选项都写在一个配置文件中。通过调用以下命令创建车辆:

jtrrouter -c manhattan/data/manhattan.jtrrcfg

关于车辆数量的说明#

最初几秒模拟中的车辆数量受到车辆插入可用道路空间的限制。如果车辆数量相对于路网规模较大,可能需要几个模拟步骤所有车辆才能进入路网。

让车辆永远运行#

使用 JTRRouter 可以生成任意长度的路线。然而,车辆最终会到达路线终点并退出模拟。为避免这种情况,可以使用工具 generateContinuousRerouters.py