# SUMO 仿真建模
SUMO 仿真建模
作者说:作者研究SUMO软件一年有余了,从sumoV0.32版本开始,到现阶段的version 1.3.0,其中遇到很多坑,走过很多弯路,回想这一年的摸索,也有了一点心得体会和日常积累。同时在这过程中,发现靠谱的sumo技术帖子凤毛麟角,只能通过用户手册去一点一点的理解。为方便广大交通从业者使用sumo,我会专注写关于SUMO软件的一些技术帖子,和大家共同交流探讨。
公众号打算系统介绍一下SUMO软件的使用。公众号系列文章将以一个典型交叉口为例,从静态路网建模,交通需求加载,信号方案生成,到嵌入经典交通控制算法,A信控I算法,一步一步深入全面介绍sumo的知识。在此之后,公众号会横向拓展介绍,静态路网建模…AI信控算法的多种实现方式。最后,介绍大家可能接触不多,但是很重要的知识,如:仿真加速,并行仿真,仿真服务web可视化,仿真场景重现,中观与微观一体化仿真,大规模路网实时在线仿真等技术要点。最后呈现一个大规模在线实时仿真的demo。
作者提示:sumo运行环境: win10+sumoV1.2.0+python3.7
- SUMO 软件安装
官网提供Windows和Linux版本
软件包网址:http://sumo.sourceforge.net/userdoc/Downloads.html
windos 下载: sumo-win64-1.3.1.msi 下载后直接安装就可以了。
Linux 根据自己的系统选择,如ubantu,centos. - 静态路网建模
首先声明,sumo官方提供类似于vissim的一个可视化的路网建模工具NETEdit。大家可以用它搭建简单的仿真路网。本文介绍脚本形式搭建路网文件,前期阶段会稍微用到一点netedit工具,方便初学者使用,后期将完全抛弃netedit。 - 本篇公众号将介绍一个简单的十字交叉口仿真文件,并加载随机流量的案例。
首先介绍sumo中一个仿真模型的文件结构:更多信息:http://sumo.sourceforge.net/userdoc/Networks/PlainXML.html#joining_nodes
sumo中一个路网文件,分为路网net文件和交通需求(路径)route文件。
net文件由node文件和edge文件组成。其中node表示节点,如一个交叉口。
关系如下:
现在我们新建一个十字交叉口0,平面坐标为(0m,0m),其东西南北四个进口方向的边缘节点分别为东边缘节点,结合交叉口的示意图,介绍sumo中节点(node.xml)和路段文件(edge.xml)的格式:
1、编写node.xml文件,文件名test.nod.xml
<nodes> <!-- 开始标签 --><node id="0" x="0.0" y="0.0" type="traffic_light"/> <!-- 定义节点0,类型为信控交叉口 "0" --><node id="1" x="500.0" y="0.0" type="priority"/> <!-- 定义东方向边缘节点 "1" --><node id="2" x="-500.0" y="0.0" type="priority"/> <!--西节点 "2" --><node id="3" x="0.0" y="-500.0" type="priority"/> <!-- 南节点 "3" --><node id="4" x="0.0" y="+500.0" type="priority"/> <!-- 北节点 "4" --></nodes> <!-- 结束标签-->
指定节点类型为信控交叉口,节点属性设置为type=“traffic_light”,sumo自身会根据交叉口车道等信息,计算出一个默认的信控配时方案。后续文章会详细介绍sumo中的信控方案格式和常用操作技巧。更多关于节点的信息:https://sumo.dlr.de/docs/Networks/PlainXML.html#node_descriptions。
2、编写edge.xml文件,文件名及后缀test.edge.xml
<edges>
<!--四个方向进口道 ,3车道,道路优先级为2,其数值越高越优先--><edge id="0_1" from="1" to="0" priority="2" numLanes="3" speed="11.11"/><edge id="0_2" from="2" to="0" priority="2" numLanes="3" speed="11.11"/><edge id="0_3" from="3" to="0" priority="2" numLanes="3" speed="11.11"/><edge id="0_4" from="4" to="0" priority="2" numLanes="3" speed="11.11"/> <!--四个方向出口道 --><edge id="1_2" from="0" to="1" priority="3" numLanes="3" speed="13.89"/><edge id="2_1" from="0" to="2" priority="3" numLanes="3" speed="13.89"/><edge id="3_4" from="0" to="3" priority="3" numLanes="3" speed="13.89"/><edge id="4_3" from="0" to="4" priority="3" numLanes="3" speed="13.89"/></edges>
edge即为交通上的道路,路段。指定路段的起始节点和终止节点,并设置路段的优先级,车道数,车道限速(m/s)等属性.更多信息:https://sumo.dlr.de/docs/Networks/PlainXML.html#edge_descriptions 。
3、利用netconvert工具生成net.xml文件
netconvert --node-files=test.nod.xml --edge-files=test.edg.xml --output-file=test.net.xml
可在当前仿真文件所在目录下,打开cmd窗口,运行以上命令。netconvert工具的更多信息:https://sumo.dlr.de/docs/Networks/PlainXML.html#edge_descriptions 这个命令非常好用,可以好好研究一下。运行以上命令后,得到test.net.xml文件,我们通过netedit打开该文件,看到见下图所示,可以根据需要稍微修改一下连接器(交叉口进口道的车道类型,修改车道类型参考信息:https://sumo.dlr.de/docs/NETEDIT.html)
net文件截图(netedit打开)如需要手动修改一下车道类型,左直右等连接器
这里简单介绍一下如何利用netedit工具修改连接器:见下图三步走:
step1: 选中1所示图标
step2:选中(鼠标左键点击)索要修改的车道,比如图中2所示。此时路网颜色如图上所示:绿色表示当前联通的连接器,深绿表示可以联通,但是当前未联通,红色表示冲突。
step3:加入我们想去掉2车道的掉头连接器,则鼠标左键选中掉头所联通的车道(图中对应的是3)即可。
4、生成route.xml文件, 文件名:test.rou.xml
和生成net.xml一样,途径有很多,这里先介绍一个工具:randomtrips.py工具
工具地址:安装目录/tools下。更多信息https://sumo.dlr.de/docs/Tools/Trip.html#randomtripspy
例子:
python randomTrips.py -n test.net.xml -r route.rou.xml
具体的参数可以查看使用文档,或者 命令行:python randomTrips.py -h
5、直接运行sumo仿真文件或者生成配置文件
命令行运行仿真:
sumo-gui -n test.net.xml -r test.rou.xml (gui界面手动控制仿真开启关闭)sumo-gui -n test.net.xml -r test.rou.xml -S True -Q True (gui界面自动控制仿真开启关闭)
tips: 命令行模式可以控制仿真自动开始和结束,命令选项为 -S True -Q True。更多信息:https://sumo.dlr.de/docs/SUMO.html
- 命令行保存生成配置文件
sumo -n test.net.xml -r test.rou.xml -C test.sumocfg
- 手写配置文件test.sumocfg,运行仿真
配置文件也是一个xml,格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration><input><net-file value="test.net.xml"/><route-files value="test.rou.xml"/></input><processing><begin value="0"/> <!--指定开始结束时间,可选项 --><end value="3600"/></processing></configuration>
其他
本人将致力于SUMO软件先关技术贴的写作交流,大家觉得有用,可以关注我的个人公众号,随时交流。公众号名:**林大的日常**
# SUMO 仿真建模相关推荐
- SUMO 仿真建模--事件模拟
SUMO 仿真建模–事件模拟 本篇介绍几种常见交通事件场景在sumo软件中如何模拟.交通事件包括: 停车事件(车辆事故) 车道临时关闭 交叉口溢流死锁 长话短说,模拟的方法有两种: 在xml文件中硬编 ...
- VOIP业务仿真建模,使用间歇泊松过程模型,能够图形显示业务的突发特性
VOIP业务仿真建模,使用间歇泊松过程模型,能够图形显示业务的突发特性 clc; clear; close all; %题设和假设的参数 E_intval = 0.4; C2 = 2; % IPP时间 ...
- svpwm仿真_三相三线逆变_并网仿真建模
1 设计指标 输入电压:700Vdc 电网电压:线电压380V±15% 并网功率:10kW 开关频率:50kHz 系统时钟:100MHz MCU类型:浮点 2 仿真模型详细设计 2.1主回路 图1 ...
- python建模仿真 matlab_清华大学出版社-图书详情-《仿真建模与MATLAB实用教程》
MATLAB语言是目前世界上最为流行的科学计算语言之一,它的特点是能够快速地完成诸如矩阵运算.微分.寻优等计算任务.由于它配备了很多应用领域的专业工具箱,诸如金融.信号处理.图像处理.神经网络.嵌入式 ...
- Anylogic 仿真建模(一)
一.解析方法与仿真建模 1.1 解析模型 即直接写出一个公式,但是直接的公式(解析法)是具有局限性的,公式适合表达静态的变量间依赖关系,而另外一些具有动态行为的系统并不适用,如具有以下特点: 行为的非 ...
- 2022(一等奖)B2548基于群体智慧的中国人口多情景时空仿真建模与预测
作品介绍 1 设计思想 1.1 作品背景 作为人口大国,人口问题始终是中国高度关注的重要战略问题,深刻影响着国家政治改革.经济发展.社会进步和文化建设等方面.然而,目前中国人口发展面临着深刻而复杂的形 ...
- 地铁牵引供电系统MATLAB/Simulink仿真建模
地铁牵引供电系统MATLAB/Simulink仿真建模 1. 牵引网建模--24脉波整流 参考文献: 西南交大 边宏超 硕士毕业论文 仿真结果--空载电压 2. 牵引电机建模--异步电机 参考文献: ...
- AVL-Cruise纯电动汽车仿真建模教程-能量回收策略的实现
目录 0.前言 1.能量回收策略分类 2.能量回收策略建立 2.1能量回收策略逻辑 2.2控制策略输入输出信号 2.3 Cruise模型设置 2.4 Function 策略代码 3.仿真分析 4.结语 ...
- SUMO仿真教程(3)—— 仿真运行(net file、rou file、sumocfg file)
文章目录 一.基本介绍: 1.简述: 二.文件说明: 1.路网文件(*.net.xml): 2.自定义编写路由文件(*.rou.xml): 3.生成运行仿真文件(*.sumocfg): 4.进行运行仿 ...
- 怎么利用matlab建模仿真,仿真建模与MATLAB
MATLAB语言是一种目前世界上最为流行的科学计算语言,它的特点是能够快速地完成诸如矩阵运算.微分.寻优等计算任务.由于它配备了很多应用领域的专业工具箱,诸如金融.信号处理.图像处理.神经网络.嵌入式 ...
最新文章
- Express结合Webpack的全栈自动刷新
- ERROR while rich displaying an object: Error: Continuous value supplied to discrete scale
- Ruby 2.5.0概览
- 虚拟化-第二篇-DC,vCenter,ESXI的安装和配置
- BroadcastReceiver的思考(3)
- 乌班图14.04安装搜狗输入法
- Android构建boot.img(一):root目录与ramdisk.img的生成
- 深度学习目标检测相关论文资源合辑
- url、base64、blob,三者之间的转化
- 什么情况下会导致@Async异步方法会失效?
- 如何在Google文档中的图片周围换行
- 使用Module自定义网站定义(Site Definition)
- redhat server 5.3内核升极2.6.18 升级到 3.5 装systemtap 原创
- AngularJs+bootstrap搭载前台框架——基础页面
- php GD绘图技术(实战)
- 数字后端概念——MIM cell
- win10启用smb3多通道_关于win10无法使用smb访问局域网内的计算机
- python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...
- 爬虫逆向 js逆向常用工具简单介绍
- 量化对冲基金的国内发展史
热门文章
- StringUtils工具类常用方法汇总1(判空、转换、移除、替换、反转)
- AJAX 简单例程示例
- Java运行linux和windows系统命令
- 删除OSX中第三方的「偏好设置」程序(.prefPane)
- Android Open Source Projects(汇总与整理)
- Yii在控制层中引入模版进行渲染的几种方式。
- SpringNet整合NHibernate相关配置
- OpenCV五种平滑处理(模糊处理)
- python writelines_详解详解Python中writelines()方法的使用
- c++数据结构中 顺序队列的队首队尾_数据结构与算法(三)栈和队列