问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Sumo中Manhattan模型构建

创作时间:
作者:
@小白创作中心

Sumo中Manhattan模型构建

引用
CSDN
1.
https://blog.csdn.net/weixin_51702722/article/details/143092714

本文详细介绍了在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>

2. 运行结果

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号