SUMO微观仿真建模技术与实战实验

一、SUMO 简介

SUMO,全称“Simulation of Urban Mobility“,是一个开源的、微观的、多模式的交通模拟软件。

1.1 SUMO 功能特点及研究应用

SUMO 可以模拟由单个车辆组成的在给定交通需求的情况下,该车辆如何通过给定的道路网络。SUMO 模拟允许处理大量的交通流量数据,可以管理具有多个 10000 条边(街道)的网络,并且在 1GHz 的机器上,车辆更新速度高达十万次每秒。同时它还是纯微观的,每辆车都可以被明确地建模,有自己的路线,并在网络中单独移动。

它的具体功能和特点如下:

  • 路网建模:它可以管理万级规模的街道路网,实现机动车道、非机动车道等路网元素;并且能够实现对不同类型的出行对象的模拟,同时支持用户以个体或者集计的方式加载出行需求。
  • 策略评估:支持多种管控措施并且能够输出基于车辆、路段或者交叉口等不同对象的交通数据。
  • 接口拓展:提供了 Traci(Traffic Control Interface)接口,使其可以与其他外部应用交互协同工作,并且用户可以通过该接口动态检索仿真对象信息等。

而自 2001 年起,SUMO 已经在多个国家和国际研究项目中使用。这些应用包括:

  • 交通信号灯评价
  • 路线选择和改道
  • 交通监测方法评估
  • 车辆通信仿真
  • 交通预测

1.2 SUMO 仿真运行机理

运行过程主要涉及到三个内容:仿真输入、仿真配置以及仿真输出,均是以 xml 文件的格式来描述。其中输入的内容包含仿真路网、交通需求和其他的附加定义(例如信号配时),在完成相应的输入后,我们要进行仿真配置,输出.sumocfg 文件,从而可以在 SUMO-gui.exe 上运行仿真过程,在仿真结束后,可以从仿真软件上获取仿真的输出和评价。在 sumo-gui 的界面上,可以分成 6 个功能区,如下图所示:

二、SUMO 基础城市路网仿真建模

2.1 路网构建

2.1.1 路网基本组成

仿真道路的路网文件以”.net.xml”作为后缀名,通过 XML 格式来描述路网中不同对象以及层级之间的关系,其中仿真的对象主要分成 4 部分,分别是车道元素,交叉口,车道连接器以及有向路段的描述。样例如下:

2.1.2 路网构建与参数调整

我们可以通过 netedit.exe 编辑器中,可以对路网进行构建,构建各种路网对象,设置路网参数在路网文件中,并且 SUMO 提供了自动化用于转换的工具、创建仿真路网,可以将其他格式的路网转换为 SUMO 路网,同时还可以用 netgenerate.exe 来快速创建三类抽象路网:网格状路网、蛛网状路网以及随机路网。

对于路网的参数,我们在 net.xml 中对不同道路对象的属性值进行调整,通过调整路网的参数,例如路段名称、车道宽度、车道长度、车道形状等,来调整后续的路径规划,控制车辆的行驶权利等等。

在这里插入图片描述

2.2 需求创建

对于 SUMO 仿真需求文件,一般以“.rou.xml”作为后缀名,通过对 XML 格式中的交通出行需求中不同元素以及层级关系进行描述,来表达交通的需求。其中需要描述的对象有:机动车,非机动车,行人;描述的颗粒度有:个体,集计级+OD 级以及路径级。

对于车辆的出行,我们需要描述机动车的车辆类型,对于个体车辆,需要描述其 OD 出行需求,或者路径级别的出行需求,或者通过对集计级别的出行需求;面向居民的出行,我们需要描述居民个体级的出行需求,或者是居民 OD 级的出行需求,同时还需要描述居民出行流量。

对于 SUMO 的车辆运动模型,对于跟驰模型,默认情况下使用 Krauss 模型作为跟驰模型,相应的模型如下:
{ v s a f e = − b t + ( b t ) 2 + v l 2 + 2 b g v d e s = min ⁡ { v m a x , v ( t − 1 ) + α Δ t , v s a f e } v ( t ) = max ⁡ ⁡ { 0 , v d e s − r a n d ( 0 , σ α ) } } \left\{ \begin{matrix} v_{safe} & = & -bt+\sqrt{(bt)^2+v_l^2+2bg} \\ v_{des} & = &\min \{ v_{max},v(t-1)+\alpha \Delta t, v_{safe}\} \\ v(t) &=&\max⁡ \{ 0,v_{des}−rand(0,\sigma \alpha) \} \end{matrix} \right\} vsafevdesv(t)===bt+(bt)2+vl2+2bg min{vmax,v(t1)+αΔt,vsafe}max{0,vdesrand(0,σα)}
Krauss 模型为安全距离类模型,模型基本参数包括:道路允许最大速度 v_max、车辆最大加速度 a、车辆最大减速度 b、最小车间距 g、平均车头时距 τ、驾驶生疏程度 σ 等。对于换道模型,SUMO 中使用 LC2013 模型,其中换道目的分为战略换道、协议换道、战术换道和基于法规换道,对应的换道行为为:lc Straight、lc Cooperative、lc SpeedGain、lc KeepRight。在仿真需求文件中,我们可以通过设置各种需求元素的属性值来对仿真需求以及运动参数进行调整。例如车辆类型、发车时刻、车辆轨迹等等。

最后,在需求创建的方式上,主要用的有:1、netedit 编辑器;2、自动化工具。其中 netedit 编辑器提供了可视化的界面,可以设置车辆、居民的不同颗粒度的出行需求以及相关参数的设置(包含 OD 级集计流量和个体出行需求以及路径级集计流量和个体出行需求),对于自动化的工具,SUMO 提供了 randomTrips.py 文件,可以指定仿真路网的文件,来随机生成 OD 级个体出行需求文件,还有 Duarouter.exe 文件,可以根据指定的仿真路网文件和 OD 级出行需求文件,生成路径级出行需求文件。

2.3 信控设置

对于 SUMO 的仿真信控文件,一般以”.add.xml“作为后缀名、通过对 XML 格式中的交叉口信控方案中不同元素以及层级关系进行描述。其中设计到的元素及描述的仿真对象包括:

  • <additional>元素:描述所有的信控方案

  • <tlLogic>元素:描述一个具体的信控方案

    • <phase>元素:描述相位
  • <WAUT>元素:描述信控方案切换方式

    • <wautSwitch>元素:描述信控方案切换过程
  • <wautJunction>元素:描述信控交叉口关联关系

我们可以在仿真信控文件中,设置各个信控相关元素的属性值,来对仿真信控方案的相关参数进行调整,例如相位时长、信控方案类型等等。而在信控设置上,也主要是通过 netedit 编辑器或者自动化工具来创建,netedit 提供了可视化的界面,可以设置信控交叉口并创建默认信控方案、取消设置信控交叉口以及修改信控方案等。而自动化工具包含交叉口信控生成工具和交叉口信控调整工具。

对于生成工具,netconvert.exe 可以通过指定的仿真路网文件,计算并设置信控交叉口以及控制方案,netgenerate.exe 主要创建仿真路网,但是在调用该工具的时候设置”–tls.guess“选项时,可以创建路中同时设置信控交叉口以及信控方案。

对于信控调整工具,tlsCoordinatior.py 可以根据给定的路网文件和出行需求文件,计算并创建绿波信控方案,tlsCycleAdaptation.py 则是计算并设置基于 Webster 方法的信控方案。

2.4 仿真运行

SUMO 仿真运行需要有仿真配置文件,对于仿真配置文件,是以”.sumocfg“作为后缀名的 XML 格式文件,可以通过 sumo-gui 打开。在仿真配置文件中需要设置好仿真的输入以及仿真输出,并且配置相关选项,其中设计到的元素主要包括仿真开始、结束时间、输入文件(包含路网文件、需求文件、信控文件)以及仿真输出信息(GPS 轨迹数据等)。在运行仿真的时候,相关的操作如下:

1、使用 sumo-gui:双击仿真配置文件;

2、使用命令行运行:

使用 sumo.exe:sumo.exe -c _.sumocfg,或使用 sumo-gui.exe:sumo-gui.exe -c _.sumocfg;

3、使用 TraCI 接口函数运行:

主要涉及到的函数有启动仿真:traci.start();单步运行仿真:traci.simulationStep()和结束仿真:traci.close()。

三、综合实验

3.1 构建仿真路网

  • 单向路段的车道数:3

  • 路段长度:500m

  • 将路网文件命名为“mynet.net.xml

通过创建边(create edge),将相应的道路框架搭建完成后,选择道路的节点,通过修改节点的位置,让路网的结构更加美观。而后选择不同的道路,修改道路的车道数,以及道路的长度,让创建后的结果如下图所示:

3.2 设置信控方案

对于“mynet.net.xml”路网文件,为中间节点设置 8 相位定时信控方案,令各进口道的右转相位始终为绿灯状态,并将信控方案保存为文件“mysignal.add.xml”

相位 1:东西直行绿灯相位,20s

相位 2:东西直行黄灯相位,3s

相位 3:东西左转绿灯相位,20s

相位 4:东西左转黄灯相位,3s

相位 5:南北直行绿灯相位,20s

相位 6:南北直行黄灯相位,3s

相位 7:南北左转绿灯相位,20s

相位 8:南北左转黄灯相位,3s

对于上述要求,我们选择信号灯编辑(Edit Traffice Light),选择对应的交叉口,按照相应的信号灯状态调整相位,并设置相应的相位时间。最终的结果如下所示:

在这里插入图片描述

3.3 创建出行需求

基于“mynet.net.xml”路网文件:

创建机动车路径级随机出行需求文件

车辆生成时长:2h

路网中的发车辆:3600 辆/h

将需求文件命名为“myroutes1.rou.xml”

按照要求,在 netedit 编辑器的菜单栏中选择需求(Demand),再在列表中选择车辆(Vehicles),选择车流(根据边)(flow (from-to edges)),按照上述的要求设定完后,如下所示:

3.4 仿真配置

Step4. 仿真配置

创建仿真配置文件“sim.sumocfg”,并设置:

仿真时长:2h

仿真输入文件: mynet.net.xml、mysignal.add.xml、myroutes.rou.xml

仿真输出信息及输出文件:输出 GPS 轨迹数据,并将输出文件指定为“output.xml”

在 netedit 编辑器中,导出 sumocfg 文件,再打开相应的文件,设置好仿真的时间,同时设置好输出的文件,具体情况如下所示:

3.5 仿真运行

运行”test1.sumocfg“的情况如下所示:

导出的结果如下所示:

四、参考资料

[1] SUMO 官方文档:Documentation - SUMO Documentation (dlr.de)

[2] netedit 编辑器使用文档:netedit - SUMO Documentation (dlr.de)

[3] SUMO 下载安装:Downloads - SUMO Documentation (dlr.de)

  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用SUMO创建仿真场景,您可以按照以下步骤进行操作: 1. 创建路网:使用SUMO的网络编辑器(netedit)来创建路网。您可以打开netedit界面并绘制道路网络,添加交叉口、车道、车辆和行人通行规则等。您还可以导入现有的地图数据或使用OpenStreetMap等工具来创建路网。 2. 定义车辆流量:在路网中添加车辆流量是仿真过程中的关键步骤之一。您可以使用SUMO的流量生成器(flowgen)来定义车辆的出发点、目的地、速度和车辆类型等参数。您还可以根据实际情况设置车辆流量的分布模型和行驶行为。 3. 配置仿真参数:在进行仿真之前,您需要配置一些仿真参数,如仿真时间、时间步长、输出文件等。这些参数可以在SUMO的配置文件(.sumocfg)中进行设置。您还可以使用配置文件指定要加载的车辆和路网文件。 4. 运行仿真:一切准备就绪后,您可以运行SUMO进行仿真。通过命令行或SUMO GUI界面,您可以加载配置文件,并启动仿真过程。SUMO会模拟车辆在路网中的移动,并生成相关的仿真输出文件。 5. 分析仿真结果:在仿真完成后,您可以使用SUMO提供的工具和库来分析仿真结果。您可以使用SUMO GUI界面来可视化车辆移动、拥堵情况等。您还可以使用SUMO的输出文件(如xml、csv等)进行进一步的数据分析和处理。 请注意,这只是一个简要的概述,具体的操作和配置可能因您的实际需求和环境而有所不同。您可以参考SUMO的官方文档和示例来获得更详细的指导。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值