本文档描述了软件 SUMOPy 的功能和基本用法。SUMOPy 旨在通过提供一个用户友好且灵活的仿真套件,来扩展交通微观仿真器 SUMO 的用户群。与 SUMOPy 相关的原始出版物可在 博洛尼亚大学 和 SUMO2013 会议论文集 中找到。
SUMOPy 的另一个目标是管理运行复杂多模式仿真所需的大量数据。这包括不同的需求生成方法,例如对 OD 矩阵、转向流和合成(或虚拟)人口的支持。同时也支持不同的服务,如个人快速交通 (PRT) 或自动驾驶出租车。
本质上,SUMOPy 由一个 GUI 界面、一个网络编辑器以及一种易于使用的脚本语言组成,这有助于 SUMO 的使用。
引言#
SUMO 迅速发展成为一个灵活且功能强大的开源多模式城市交通网络微观仿真器。其提供的功能和工具数量不断增加,使仿真越来越逼真。然而,目前这些不同的功能由大量二进制文件和脚本组成,它们作用于大量文件,这些文件包含网络、车辆、区域、行程路线、配置以及许多其他参数的信息。脚本(主要用 Python 编写)、二进制文件和数据文件分散存在。在实践中,需要一个主脚本来将所有过程和数据整合在一起,以便以受控方式运行特定场景的仿真。这种方法极其灵活,但查找各种工具、组合其输入和输出以及生成各种配置文件可能非常耗时且容易出错。此外,这将 SUMO 的用户群缩小到了那些熟悉脚本和命令行界面的用户。相反,如果 SUMO 对不同学科和能力的人员变得更加易于访问,它有潜力成为一个多学科仿真平台。脚本(主要用 Python 编写)、二进制文件和数据文件分散存在。
这个问题已经得到认可,并且已经开发了不同的图形用户界面。交通建模器(也称为交通生成器)是一个用 Java 编写的工具,有助于管理文件、配置仿真以及评估和可视化结果。
SUMOPy 完全用面向对象的脚本语言 Python 编写,它使用带有 PyOPENGL 的 wxWindows 作为 GUI 接口,并使用 NumPy 进行快速的数值数组类型计算。它与交通生成器相似,通过 GUI 简化了 SUMO 的使用。但 SUMOPy 不仅仅是一个 GUI,它是一个套件,允许以简单统一的方式访问 SUMO 工具和二进制文件。其显著特点包括:
- SUMOPy 拥有 Python 实例,可以直接使用已经作为 Python 代码提供的工具。
- SUMOPy 提供了一个 Python 命令行界面,允许直接和交互式地操作 SUMOPy 实例。
- SUMOPy 提供了一个库,极大地简化了脚本编写。
安装#
SUMOPy 是一个包含 Python 脚本的目录。只需解压最新版本并将其复制到您选择的目录中即可。从 SUMO-0.28 开始,SUMOPy 包含在 SUMO 发行版中,位于 SUMOHOME/tools/contributed。
然而,SUMOPy 广泛使用 Python 包,这些包需要预先安装。需要安装的必需包有:
- Python 2.7
- numpy-1.10 或更新版本
- wxPython2.8 或 wxPython2.9 (wxPython3.x 目前无法与 PyOpenGL-3.0.x 正常配合工作)
- PyOpenGL-3.0.x
以下包是可选的:
- matplotlib-1.4 或更新版本,用于以不同文件格式生成高质量的图形输出。
- basemap 或 pyproj,用于地理坐标投影。
- PIL-1.1.7 或更新版本以及 basemap-1.0 (或 pyproj),用于从地图服务器下载背景地图。
包版本和安装方法的确切选择取决于操作系统。下面我们针对不同操作系统的包选择给出简要建议。通常,首选 32 位版本,因为有更多的预编译包可用,但这可能会随时间而改变。
图形用户界面#
SUMOPY 的图形用户界面可以通过运行位于 SUMOPy 主目录中的脚本 sumopy_gui.py 来启动。以下文档描述了 GUI 的基本功能。
仿真过程#
本节介绍不同的仿真方法。
