一种基于matlab的sumo城市交通仿真及车流量控制方法

文档序号:26687389发布日期:2021-09-18 01:29阅读:381来源:国知局
一种基于matlab的sumo城市交通仿真及车流量控制方法

1.本发明涉及城市交通仿真模型领域,尤其涉及一种基于matlab的sumo城市交通仿真及车流量控制方法。


背景技术:

2.随着城市化进程的加快,使得城市的交通网络日益复杂化,给城市发展带来了窘困,未有效的制订城市的发展规划有必要对城市交通网络进行建模以及复现其交通流量。同时对交通网络建模以及其车流量控制可以为自动驾驶提供模型。然而目前网络建模主要是对单路口进行建模,或是通过分别设置节点和路段以及红绿灯文件来建立网络,但该方法使得实地考察数据量和建模数据量都扩大。同时在使用sumo进行城市网络建模时需要转弯率文件,车辆文件文件,但这两个文件的数据量特别大,如果人工进行编辑需要消耗大量的时间、出错率较高,同时转弯率文件和车辆文件都具有各自特定的格式,因此使用matlab对实地考察的数据进行处理生成转弯率文件和车辆文件可以大幅的减少出错概率以及人工编辑所消耗的时间。


技术实现要素:

3.本发明的目的在于提供一种基于matlab的sumo城市交通仿真及车流量控制方法。
4.本发明采用的技术方案是:一种基于matlab的sumo城市交通仿真及车流量控制方法,使用sumo网络建模需要有以下的子文件:网络文件*.net.xml、车辆文件*.flows.xml、转弯率文件*.turns.xml、附加文件*.add.xml和配置文件*.cfg.xml。构建网络模型和车辆模型的步骤如下:s1.实地考察获取道路及主要路口车量信息,并进行完善和补充形成记录起始时间相同且每隔指定时间均有一次记录的考察数据,计算出各个路口转弯率以及每隔指定时间各个道路通过的车辆数,将每一个路口制成一个excel文件,该方法包括如下步骤:s1

1.实地考察主要的路口,记录车道数,红绿灯变化规律,并记录每隔指定时间内各个道路在一个周期内驶出的车量数。
5.s1

2.对实地考查路口的车量数进行整理补充和完善,使每隔指定时间间隔都有一次记录,对于之前没有记录的时间节点令前后时间节点的平均值计入。同时计算出各个时间间隔内各个道路的转弯率及离开道路的车辆总量,制做成excel表格。
6.s2.使用netedit对从openstreetmap中导出指定市区的城市网络进行修改。使用命令netconvert命令输出所需要的网络文件。使用sumo中自带的netedit对网络进行修改,删除不必要的道路及建筑,然后依次修改车道数,节点性质,红绿灯变化规律。
7.s3.通过matlab读取实地考察数据的每一个excel文件,生成用于测试网络是否已经达到要求所需的车辆文件和主要路口的转弯率文件,同时配置转弯率文件中非主要路口转弯率以及终点路段,路口的转弯率文件包括主要路口转弯率和非主要路口的转弯率以及终点路段。生成转弯率文件的步骤如下:
s3

1.通过matlab代码读取每一个实地考察数据的excel文件。
8.s3

2.判断数据是否为时间节点;是则,读取该时间节点下所有进入路口道路的id属性,同时读取每个进入路口道路所对应的左转直行右转的各个驶出路口道路的id属性以及对应的概率,将对应的时间节点,进入路口道路id属性,驶出路口道路id属性以及对应的转弯率按照转弯率文件格式写入该路口转弯率文件,则继续继续寻找下一个时间节点;否则,继续寻找时间节点;s3

3.将各个路口转弯率文件按照时间顺序整理到一个转弯率文件中;s3

4.对于非主要路口,根据实际考察路口情况将所有从主要道路进入非主要道路的转弯率设置在区间[0,1]之间的值,并添加到所有的时间节点内;s3

5.设置终点路段,将各个从导出目标市区进入导出目标市区以外的其他区域的道路以及由非主要道路进入主要道路的路段设置为终点路段,即完成对转弯率文件的配置。
[0009]
s4.sumo基于车辆文件以及转弯率文件生成路由所需要的路由文件,matlab读取路由文件找到未在终点路段消失的车辆,并修改网络文件从而减少未在终点路段消失的车辆数;修改网络的步骤如下:使用matlab读取已经转弯率文件中终点道路的所有id属性,然后读取路由文件中各个车辆最后消失的终点道路的id属性,对比转弯率文件中的终点道路id属性,如果不存在于转弯率文件中的终点道路id属性内,记录下车辆名称以及最后车辆消失的道路id属性,如果存在则寻找下一辆车辆。统计出所有未在终点路段下沉的车辆后,在sumo中依次找到这些车辆,并显示这些车辆的行驶路径,观察是否是因为网络文件中缺少终点道路或道路连接方式设置得不合理所导致的车辆未在指定终点路段消失,若是则添加或修改道路,若否则查找下一辆车辆。
[0010]
s5.通过matlab读取实地考察数据的每一个excel文件,生成城市道路网络各个道路各个时间点所需的车辆文件,生成车辆文件具体步骤如下:s5

1.读取由导出目标市区以外的区域进入导出目标市区的各个道路id属性以及该道路id属性对应的第一个时间节点的车辆数,将写入车辆文件的车辆数设置为实地考察车辆数除以一个周期红绿灯时长然后乘实地考察的时间间隔,以秒为单位。车辆发车的起始时间设置为实地考察时间所对应的各个时间段起始时间,结束时间设置为时间节点加上实地考察时间间隔,发车道路写为车道的id属性,同时将车辆命名为flow加上路口名称的中文拼音再加上

和数字以表示和其他车辆之间的区别;s5

2.在终端使用jtrrouter
ꢀ‑‑
flows=*.flows.xml
ꢀ‑‑
turns=*.turns.xml
ꢀ‑‑
net=*.net.xml
ꢀ‑‑
output

file=*.rou.xml
ꢀ‑‑
continue

on

unbuild命令,输入网络文件、转弯率文件以及车辆文件生成路由所需要的路由文件;s5

3.配置网络运行配置文件cfg,其中配置文件cfg参数时需要在输入参数中额外添加<addition

file value=*.add.xml/>使得sumo在运行时可以输出附加文件,通过在sumo

gui中运行配置文件cfg,输出得到以实地考察时间间隔为时间单位的附加文件,其中配置的附加文件的格式为:以实际考察时间间隔为一个频率输出一个文件,以实际考察各个时间段起始时间为起始时间,以实际考察各个时间段起始时间加上时间间隔为终止时间,文件名以flow_number加上输出的起始时间为文件名,完成附加文件配置。;
s5

4.matlab读取输出的附加文件以及读取实际网络路口车辆数,对比实际网络车量数除一个周期乘实地考察的时间间隔的数据,判断在该时间段内离开道路的车辆数是否符合要求;是则,修改非导出目标市区以外的其他区域进入导出目标市区的主要道路车辆数;否则,修改车量数然后重新生成路由文件并路由得到新的输出的附加文件,再重新对比车辆数是否符合要求,直到各个道路车量数直至达到道路最大发车量为止,如果道路达到最大发车量但是仍然不符合要求,则观察红绿灯,车道数,以及道路之间的连接方式是否与实际一致以及发车车道设置是否合理,若是则再添加一个发车道路重新输出附加文件再进行对比,若否则修改不符合的内容重新输出附加文件再进行对比,直到所有导出地图区域以外的其他区域进入导出地图区域的道路车流量全部符合要求;s5

5.matlab对比非导出地图区域以外的其他区域进入导出地图区域的主要道路车辆数是否已经达到要求;当达到要求时,则进入下一个时间段;当未达到要求时,则根据实际情况增加车量或修改影响该道路的非主要路口的转弯率。
[0011]
s6.结合转弯率文件和车辆文件,生成路由文件,根据需求对配置文件中的输出进行添加,运行sumo软件,即完成仿真。
[0012]
本发明采用以上技术方案,与现有技术相比,本发明有益效果是:1、使用从openstreetmap中直接提取网络模型,然后根据实际考察得到具体的网络参数,对网络进行修改,从而减少了对搭建网络所需要的时间。2、对于大型交通网络构建提供了一种方法使用matlab做为辅助工具,减少了写车辆文件flows以及turns文件的人工成本,提高了建网络的速度以及达到控制车流量的目的。
附图说明
[0013]
以下结合附图和具体实施方式对本发明做进一步详细说明;图1为某路口部分数据示例;图2为路网模型示例;图3为某路口模型示例;图4为车流量调整流程图;图5为总体流程图。
具体实施方式
[0014]
为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图对本技术实施例中的技术方案进行清楚、完整地描述。
[0015]
如图1至图5之一所示,本发明公开了一种基于matlab的sumo城市交通仿真及车流量控制方法,其包括以下步骤:s1.实地考察获取道路及主要路口车量信息,并进行完善和补充形成记录起始时间相同且每隔指定时间均有一次记录的考察数据,计算出各个路口转弯率以及每隔指定时间各个道路通过的车辆数,将每一个路口制成一个excel文件;s1

1.实地考察主要的路口,记录车道数,红绿灯变化规律,并记录每隔指定时间内各个道路在一个周期内驶出的车量数;s1

2.对实地考查路口的车量数进行整理补充和完善使每隔指定时间间隔都有一
次记录;对于之前没有计入的时间节点,令前后时间节点的平均值计入,同时计算出各个道路的转弯率及车量总量并将各个路口分别制成一个excel文件。如图1,其中“第一次记录”下方为各个道路id属性,为了保证各个时间点与路口之间保持对应关系,所有时间点都位于“第一次记录”的左侧,左转,右转,直行数据左侧一列是转弯率大小。
[0016]
s2.使用netedit对从openstreetmap中导出的网络进行修改。如图2和图3所示,直接从openstreetmap中导入福州市区城市道路,使用命令netconvert输出所需要的网络文件。使用sumo中自带的netedit对网络进行修改,依次修改对象为车道数,节点性质,道路之间的连接,红绿灯变化规律。如图三,十字路口各个道路车道数,十字路口是否为红绿灯,进入路口的道路那一车道可以左转,以及如果是红绿灯红绿灯的变化规律如何。
[0017]
s3.通过matlab读取实地考察数据的每一个excel文件,生成用于测试网络是否已经达到要求所需的车辆文件和主要路口的转弯率文件,同时配置转弯率文件中非主要路口转弯率以及终点路段,路口的转弯率文件包括主要路口转弯率和非主要路口的转弯率以及终点路段;s3

1.通过matlab代码读取每一个实地考察数据的excel文件;图一为其中的一个路口。
[0018]
s3

2.判断数据是否为时间节点;是则,读取该时间节点下所有进入路口道路的id属性,同时读取每个进入路口道路所对应的左转直行右转的各个驶出路口车道的id属性以及对应的概率,将对应的时间节点,进入路口道路id属性,驶出路口道路id属性以及对应的转弯率按照转弯率文件格式写入该路口转弯率文件,继续寻找下一个时间节点;否则,继续寻找时间节点;s3

3.将各个路口转弯率文件按照时间顺序整理到一个转弯率文件中;s3

4.对于非主要路口,根据实际考察路口情况将所有从主要道路进入非主要道路的转弯率设置在区间[0,1]之间的值,并添加到所有的时间节点内;s3

5.设置终点路段,将各个从导出目标市区进入导出目标市区以外的其他区域的道路以及由非主要道路进入主要道路的路段设置为终点路段,即完成对转弯率文件的配置。
[0019]
s4.sumo基于车辆文件以及转弯率文件生成路由所需要的路由文件,matlab读取路由文件找到未在终点路段消失的车辆,并修改网络文件从而减少未在终点路段消失的车辆数;修改网络的步骤如下:使用matlab读取已经转弯率文件中终点道路的所有id属性,然后读取路由文件中各个车辆最后消失的终点道路的id属性,对比转弯率文件中的终点道路id属性,如果不存在于转弯率文件中的终点道路id属性内,记录下车辆名称以及最后车辆消失的道路id属性,如果存在则寻找下一辆车辆。统计出所有未在终点路段下沉的车辆后,在sumo中依次找到这些车辆,并显示这些车辆的行驶路径,观察是否是因为网络文件中缺少终点道路或道路连接方式设置得不合理所导致的车辆未在指定终点路段消失,若是则添加或修改道路,若否则查找下一辆车辆。
[0020]
s5.通过matlab读取实地考察数据的每一个excel文件,生成城市道路网络各个道路各个时间点所需的车辆文件,生成车辆文件具体步骤如下:s5

1.读取由导出目标市区以外的区域进入导出目标市区的各个道路id属性以及
该道路id属性对应的第一个时间节点的车量数,将写入车辆文件的车辆数设置为实地考察车辆数除以一个周期红绿灯时长然后乘实地考察的时间间隔,以秒为单位。车辆发车的起始时间设置为实地考察时间所对应的各个时间段起始时间,结束时间设置为时间节点加上实地考察时间间隔,发车道路写为车道的id属性,同时将车辆命名为flow加上路口名称的中文拼音再加上

和数字以表示和其他车辆之间的区别;s5

2.在终端使用jtrrouter
ꢀ‑‑
flows=*.flows.xml
ꢀ‑‑
turns=*.turns.xml
ꢀ‑‑
net=*.net.xml
ꢀ‑‑
output

file=*.rou.xml
ꢀ‑‑
continue

on

unbuild命令,输入网络文件、转弯率文件以及车辆文件生成路由所需要的路由文件;s5

3.配置网络运行配置文件cfg文件时需要在输入参数中额外添加<addition

file value=*.add.xml/>使得sumo在运行时可以输出道路附加文件。其中配置输入附加文件以实际考察时间间隔为一个频率输出一个文件,以实际考察各个时间段起始时间为起始时间,以实际考察各个时间段起始时间加上时间间隔为终止时间,文件名以flow_number加上输出的起始时间为文件名,完成addition文件配置,通过在sumo

gui中运行配置文件cfg,得到以实地考察时间间隔为时间单位的输出附加文件;s5

4.matlab读取输出的附加文件以及读取实际网络路口车辆数,对比实际网络车量数除一个周期乘实地考察的时间间隔的数据,判断在该时间段内离开道路的车辆数是否符合要求;是则,修改非导出目标市区以外的其他区域进入导出目标市区的主要道路车辆数;否则,修改车量数然后重新生成路由文件并路由得到新的输出的附加文件,再重新对比车辆数是否符合要求,直到各个道路车辆数直至达到道路最大发车量为止,如果道路达到最大发车量但是仍然不符合要求,则观察红绿灯,车道数,以及车道连接方式是否与实际一致以及发车车道设置是否合理,若是则再添加一个发车路段重新输出附加文件再进行对比,若否则修改不符合的内容重新输出附加文件再进行对比;s5

5.matlab对比非导出地图区域以外的其他区域进入导出地图区域的主要道路车辆数是否已经达到要求;当达到要求时,则进入下一个时间段;当未达到要求时,则根据实际情况增加车辆数。
[0021]
s6.结合转弯率文件和车辆文件,生成路由文件,根据需求对配置文件中的输出进行添加,运行sumo软件,即完成仿真。
[0022]
如图1所示将实地考察到的数据以一个路口为单位分别保存到一个文件夹的excel表格中,然后计算出各个路口的总量,各个道路的转弯率,之后早到各个道路对应的id属性并替换表格中的方向,从而形成图1中的样式。
[0023]
从openstreetmap中下载福州城市交通地图,然后使用netconvert命令将osm类型转换为xml类型,并再sumo

gui中打开如图2,开启netedit对网络进行编辑,先修改路口车道数,然后修改节点属性,修改道路连接线,最后修改红绿灯变化规律。
[0024]
使用matlab代码,读取修改好的数据,将各个实地考察的路口进入路口道路id属性以及该道路所对应的左转,直行,右转的驶出路口道路id属性和对应的转弯率写入转弯率文件中,然后再将所有时间点所有主要路口进入非主要路口的概率设置为(0,1)中的某一值。之后将所有由非主要路口进入主要路口以及从导出目标市区进入导出目标市区以外的其他区域的道路的道路设置为下沉路段。
[0025]
使用matlab代码,读取实地考察数据中的一部分作为测试网络是否已经修改完
整,生成车辆文件,使用命令生成路由文件,观察生成路由文件时是否会产生警告,如果警告数量不在预期范围之内,则使用matlab找到对应的车辆对网络进行修改,直到警告数量在合理的范围之内。
[0026]
使用matlab读取第一个时间点从导出目标市区以外的其他区域驶入导出目标市区的道路车流量,生成的车辆文件与转弯率文件、网络文件生成路由文件。然后配置文件cfg,在input中添加附加文件。然后在sumo

gui中运行配置文件cfg,在运行完成所有的时间节点之后输出附加文件。然后再运行代码观察车辆是否符合要求,如果发现车量发车数已经达到最大发车量但是还未达到实地考察车辆要求则再添加可以驶入该道路的另一条道路做为发车起点或者是修改该道路驶入非主要道路的转弯率,修改完成后重新路由,观察车流量是否达到要求。图4所示流程图即为车流量如何修改发车量,使发车量与实地考察路口车流量在一定的误差范围之内。
[0027]
本发明采用以上技术方案,与现有技术相比,本发明有益效果是:1、使用从openstreetmap中直接提取网络模型,然后根据实际考察得到具体的网络参数,从而减少了对网络进行构建的时间。2、对于大型交通网络构建提供了一种方法使用matlab做为辅助工具,减少了在车辆文件以及转弯率文件的人工成本,提高了建网络的速度。
[0028]
显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1