Sumo中Manhattan模型构建
Sumo中Manhattan模型构建
本文详细介绍了在Sumo仿真软件中构建Manhattan模型的完整流程,包括网络生成、车辆流创建和仿真配置等关键步骤。通过具体的代码示例和指令,帮助读者掌握Sumo的基本使用方法,适合对交通仿真和Sumo工具有兴趣的读者。
一 生成网络的第一种方法
1.定义Manhatten的网络图
新建一个txt文档,把代码复制进去,文件名称改为:manhattan.netgcfg(自己去定义也可以,后面命令行文件名修改一下就行)
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/netgenerateConfiguration.xsd">
<grid>
<grid value="true"/> <!-- 启用网格模式 -->
<number value="5"/> <!-- 横向和纵向的街区数量(生成 5x5 的网格) -->
<length value="3000"/> <!-- 路口之间的间距(单位:米) -->
</grid>
<junctions>
<no-turnarounds value="true"/>
</junctions>
</configuration>
grid.number value=“10” 指生成10 ✖ 10 的网状格
no-turnarounds value=“true” 指道路不允许掉头
2.生成路网文件net.net.xml文件
到sumo\bin\netgenerate.exe的文件路径下,运行指令
netgenerate -c E:\sumo_project\manhattan.netgcfg
运行结果如下:
一 生成网络的第二种方法
这种方法要简单一点,不用自己去定义路网文件
netgenerate --grid --grid.number=10 --grid.length=200 --output-file=manhattan.net.xml
“grid.number=10” 指生成10 ✖ 10 的网状格
“grid.length=200” 指路口之间的长度为200m
二 生成车辆
1 生成flows文件
这里用官网的路径生成的文件中少了引号,需要用下面的指令
python D:\CodeTool\sumo\tools\randomTrips.py -n net.net.xml -o flows.xml --begin 0 --end 1 --flows 100 --jtrrouter --trip-attributes "departPos=\"random\" departSpeed=\"max\""
– n指network文件
–o指输出文件
-begin 0 --end 1仿真时间从0开始1结束
flows 100指插入100辆车,这里一个flow相当于一辆车,在后面生成的route文件中有vehicle 标签
**departPos=“random”**指出发位置随机
**departSpeed=“max”**指着车辆将在其类型定义的最大速度下开始仿真
(上面指令因人而异,前面的 D:\CodeTool\sumo要换成自己sumo安装的路径)
运行结果图如下:
2 编写jtrrouter文件mht.jtrrcfg
创建一个txt文本,粘贴下面代码,文件改名为mht.jtrrcfg
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/jtrrouterConfiguration.xsd">
<input>
<net-file value="net.net.xml"/>
<route-files value="flows.xml"/>
</input>
<output>
<output-file value="routes.xml"/>
</output>
<processing>
<turn-defaults value="25,50,25"/>
<accept-all-destinations value="true"/>
<allow-loops value="true"/>
</processing>
</configuration>
**turn-defaults value=“25,50,25”**指车辆路口左转、直走、右转的概率
**accept-all-destinations value=“true”**指jtrrouter 将接受所有目的地,即使这些目的地不在指定的路由网络中
3 调用 jtrrouter生成随机流
在项目文件夹的cmd,命令行中输入下面指令
jtrrouter -c E:\sumo_project\mht.jtrrcfg
运行结果如下:
三 仿真
1 编写mht.sumocfg文件
创建一个txt文本,粘贴下面代码,文件改名为mht.sumocfg
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/sumoConfiguration.xsd">
<input>
<net-file value="net.net.xml"/>
<route-files value="routes.xml"/>
</input>
</configuration>