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

  1. SUMO 软件安装
    官网提供Windows和Linux版本
    软件包网址:http://sumo.sourceforge.net/userdoc/Downloads.html
    windos 下载: sumo-win64-1.3.1.msi 下载后直接安装就可以了。
    Linux 根据自己的系统选择,如ubantu,centos.
  2. 静态路网建模
    首先声明,sumo官方提供类似于vissim的一个可视化的路网建模工具NETEdit。大家可以用它搭建简单的仿真路网。本文介绍脚本形式搭建路网文件,前期阶段会稍微用到一点netedit工具,方便初学者使用,后期将完全抛弃netedit。
  3. 本篇公众号将介绍一个简单的十字交叉口仿真文件,并加载随机流量的案例。

首先介绍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 仿真建模相关推荐

  1. SUMO 仿真建模--事件模拟

    SUMO 仿真建模–事件模拟 本篇介绍几种常见交通事件场景在sumo软件中如何模拟.交通事件包括: 停车事件(车辆事故) 车道临时关闭 交叉口溢流死锁 长话短说,模拟的方法有两种: 在xml文件中硬编 ...

  2. VOIP业务仿真建模,使用间歇泊松过程模型,能够图形显示业务的突发特性

    VOIP业务仿真建模,使用间歇泊松过程模型,能够图形显示业务的突发特性 clc; clear; close all; %题设和假设的参数 E_intval = 0.4; C2 = 2; % IPP时间 ...

  3. svpwm仿真_三相三线逆变_并网仿真建模

    1  设计指标 输入电压:700Vdc 电网电压:线电压380V±15% 并网功率:10kW 开关频率:50kHz 系统时钟:100MHz MCU类型:浮点 2  仿真模型详细设计 2.1主回路 图1 ...

  4. python建模仿真 matlab_清华大学出版社-图书详情-《仿真建模与MATLAB实用教程》

    MATLAB语言是目前世界上最为流行的科学计算语言之一,它的特点是能够快速地完成诸如矩阵运算.微分.寻优等计算任务.由于它配备了很多应用领域的专业工具箱,诸如金融.信号处理.图像处理.神经网络.嵌入式 ...

  5. Anylogic 仿真建模(一)

    一.解析方法与仿真建模 1.1 解析模型 即直接写出一个公式,但是直接的公式(解析法)是具有局限性的,公式适合表达静态的变量间依赖关系,而另外一些具有动态行为的系统并不适用,如具有以下特点: 行为的非 ...

  6. 2022(一等奖)B2548基于群体智慧的中国人口多情景时空仿真建模与预测

    作品介绍 1 设计思想 1.1 作品背景 作为人口大国,人口问题始终是中国高度关注的重要战略问题,深刻影响着国家政治改革.经济发展.社会进步和文化建设等方面.然而,目前中国人口发展面临着深刻而复杂的形 ...

  7. 地铁牵引供电系统MATLAB/Simulink仿真建模

    地铁牵引供电系统MATLAB/Simulink仿真建模 1. 牵引网建模--24脉波整流 参考文献: 西南交大 边宏超 硕士毕业论文 仿真结果--空载电压 2. 牵引电机建模--异步电机 参考文献: ...

  8. AVL-Cruise纯电动汽车仿真建模教程-能量回收策略的实现

    目录 0.前言 1.能量回收策略分类 2.能量回收策略建立 2.1能量回收策略逻辑 2.2控制策略输入输出信号 2.3 Cruise模型设置 2.4 Function 策略代码 3.仿真分析 4.结语 ...

  9. SUMO仿真教程(3)—— 仿真运行(net file、rou file、sumocfg file)

    文章目录 一.基本介绍: 1.简述: 二.文件说明: 1.路网文件(*.net.xml): 2.自定义编写路由文件(*.rou.xml): 3.生成运行仿真文件(*.sumocfg): 4.进行运行仿 ...

  10. 怎么利用matlab建模仿真,仿真建模与MATLAB

    MATLAB语言是一种目前世界上最为流行的科学计算语言,它的特点是能够快速地完成诸如矩阵运算.微分.寻优等计算任务.由于它配备了很多应用领域的专业工具箱,诸如金融.信号处理.图像处理.神经网络.嵌入式 ...

最新文章

  1. Express结合Webpack的全栈自动刷新
  2. ERROR while rich displaying an object: Error: Continuous value supplied to discrete scale
  3. Ruby 2.5.0概览
  4. 虚拟化-第二篇-DC,vCenter,ESXI的安装和配置
  5. BroadcastReceiver的思考(3)
  6. 乌班图14.04安装搜狗输入法
  7. Android构建boot.img(一):root目录与ramdisk.img的生成
  8. 深度学习目标检测相关论文资源合辑
  9. url、base64、blob,三者之间的转化
  10. 什么情况下会导致@Async异步方法会失效?
  11. 如何在Google文档中的图片周围换行
  12. 使用Module自定义网站定义(Site Definition)
  13. redhat server 5.3内核升极2.6.18 升级到 3.5 装systemtap 原创
  14. AngularJs+bootstrap搭载前台框架——基础页面
  15. php GD绘图技术(实战)
  16. 数字后端概念——MIM cell
  17. win10启用smb3多通道_关于win10无法使用smb访问局域网内的计算机
  18. python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...
  19. 爬虫逆向 js逆向常用工具简单介绍
  20. 量化对冲基金的国内发展史

热门文章

  1. StringUtils工具类常用方法汇总1(判空、转换、移除、替换、反转)
  2. AJAX 简单例程示例
  3. Java运行linux和windows系统命令
  4. 删除OSX中第三方的「偏好设置」程序(.prefPane)
  5. Android Open Source Projects(汇总与整理)
  6. Yii在控制层中引入模版进行渲染的几种方式。
  7. SpringNet整合NHibernate相关配置
  8. OpenCV五种平滑处理(模糊处理)
  9. python writelines_详解详解Python中writelines()方法的使用
  10. c++数据结构中 顺序队列的队首队尾_数据结构与算法(三)栈和队列