SUMO使用教程Word文档格式.docx

上传人:b****1 文档编号:663071 上传时间:2023-04-29 格式:DOCX 页数:26 大小:964.30KB
下载 相关 举报
SUMO使用教程Word文档格式.docx_第1页
第1页 / 共26页
SUMO使用教程Word文档格式.docx_第2页
第2页 / 共26页
SUMO使用教程Word文档格式.docx_第3页
第3页 / 共26页
SUMO使用教程Word文档格式.docx_第4页
第4页 / 共26页
SUMO使用教程Word文档格式.docx_第5页
第5页 / 共26页
SUMO使用教程Word文档格式.docx_第6页
第6页 / 共26页
SUMO使用教程Word文档格式.docx_第7页
第7页 / 共26页
SUMO使用教程Word文档格式.docx_第8页
第8页 / 共26页
SUMO使用教程Word文档格式.docx_第9页
第9页 / 共26页
SUMO使用教程Word文档格式.docx_第10页
第10页 / 共26页
SUMO使用教程Word文档格式.docx_第11页
第11页 / 共26页
SUMO使用教程Word文档格式.docx_第12页
第12页 / 共26页
SUMO使用教程Word文档格式.docx_第13页
第13页 / 共26页
SUMO使用教程Word文档格式.docx_第14页
第14页 / 共26页
SUMO使用教程Word文档格式.docx_第15页
第15页 / 共26页
SUMO使用教程Word文档格式.docx_第16页
第16页 / 共26页
SUMO使用教程Word文档格式.docx_第17页
第17页 / 共26页
SUMO使用教程Word文档格式.docx_第18页
第18页 / 共26页
SUMO使用教程Word文档格式.docx_第19页
第19页 / 共26页
SUMO使用教程Word文档格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SUMO使用教程Word文档格式.docx

《SUMO使用教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《SUMO使用教程Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。

SUMO使用教程Word文档格式.docx

同样的,-n.xml表示输入,-n表述输入的类型是net类型,其实-n等价于--net,-n是一种简写的方式。

后面的-l-e600是随机工具的配置,就像随机数生成函数需要一个种子一样。

后面输出的命令就一目了然了。

这是生成的文件

但是,这样的一个过程生成的是一个旅程随机过程文件,而我们需要的是一个rou.xml文件。

所以,最后,我们把随机的旅程和道路信息结合起来就获得了车流文件(rou.xml)了。

我们要用到的工具是bin文件夹下的duarouter.exe。

不知道这个文件为什么这么命名,dua不明何意。

这样的命令行想必很容易理解。

两个输入,一个输出。

所以,最后得到了这些文件。

3.配置文件

为了仿真方便,我们写一个仿真的配置文件,这一类配置文件可以直接被sumo-gui使用

稍微了解xml语言和会一些英语的同学应该能明白大概。

将之前生成的net.xml和rou.xml文件作为输入。

后面time标签就是对仿真时间的一些设置。

最后的最后,我们应该有的是上面这些文件。

用sumo-gui打开sumo.cfg文件之后,点击开始仿真(绿色)箭头之后就可以开心的看仿真效果了。

最后的最后的最后,上两张图:

(似乎透露了输入法)

(这车可以再丑一点吗)

SUMO使用教程

(二)

在教程一当中,我们用了osm和SUMO的工具,生成了一些列文件,最后得以仿真。

其实,仔细一看之后,这些生成的文件和配置文件本质上都是xml文件,换句话说,我们完全可以自己用一个记事本编辑这些文件。

首先是net.xml文件。

作为一个道路文件,抽象成图之后,其实就是由节点和边构成,所谓的节点,映射到物理世界就是十字路口或者三叉路口,反正就是两条路的交汇处,而边就是道路。

换句话说,只要我们有了节点和边就可以得到net.xml文件。

我们先编写nod.xml和edg.xml,然后将其结合,而不是直接写出net.xml,这有一点模块化和封装的思想在里面。

1.nod.xml。

这是一个简单的nod.xml文件。

node文件的node标签里面有四个属性,id,x,y,type。

(新浪博客竟然无法显示xml文件,只能截图了)

 

id就是交叉路口的名字,x,y是交叉口的坐标,不像opencv或者显示屏驱动一下,这里的坐标就是左下角是原点。

type属性复杂一些:

priority:

车辆必须等待,直到它们右侧车辆完全通过路口。

Vehicleshavetowaituntilvehiclesrighttothemhavepassedthejunction(并不知道这要表达什么。

• 

traffic_light:

交叉口被交通灯控制着

right_before_left:

来自右边的车辆优先通过

Vehicleswillletvehiclescomingfromtheirrightsidepass.(还是不知道)

2.edg.xml文件

下面是一个简单的edg.xml文件:

要注意的是,edge文件对于节点有两个方向,当只存在一个方向的时候,就是单行线。

笔者不禁想起家乡坑爹的单行线。

3.有了这两个文件之后,可以用netconvert转换成net.xml。

同样的,node文件和edge文件作为输入,而net.xml作为输出。

最后,我们可以用SUMO-gui看一下地图,

共有12个nodes,所以如上图所示。

根据坐标,可以知道左下角是node1,下边中间的是node2,类型分别为traffic_light和priority,所以下面展示的是不一样的。

edge的numlane都是2,所以都是双车道。

到这里,笔者提出了一个问题,像自己家附近单车道管制的地方怎么仿真?

SUMO使用教程(三)

这次主要来看一下需求文件的内容,也就是rou.xml文件的构成。

打开上次教程生成的rou.xml文件之后,可以看到大部分内容是这样的:

vehicle标签下面有一个子标签route,vehicle标签指的就是一辆车,而route则是这辆车将行驶过的路径。

vehicle标签的id属性就是车辆的名称,depart就是出现在仿真中的时间。

我们修改一下这个rou.xml文件,变成容易观测:

保存之后仿真,就可以很好的看到结果。

vehicle除了id和depart属性外,还有别的属性,譬如:

type。

这个就是车辆的类型。

这里就定义了一个vType标签,并且吧vehicle0的type设置为type1.这时候保存之后运行仿真,发现车辆就会有点不一样哦~

当然啦,vType还有别的一些属性,具体可以看官方文档。

SUMO使用教程(四)

osm文件下载之后并没有交通灯,挺头疼的,目前只找到了手工加入的方法。

1.用josm打开osm文件。

josm在windows下可以用jar版的或者windows安装版本的。

理论上jar的稍稍会卡一点,但是不用安装,大家可以XX自己去官网下。

打开osm地图后,选择公路的连接点,可以一个一个点击,也可以拖出矩形框多选择几个。

在右侧的界面中,会显示选中的连接点的id,似乎不能复制这些id略微有点头疼。

2.根据这些id编辑nod.xml文件。

3.最后,用netconvert合成nod文件和之前没有交通灯信息的net.xml文件。

重新配置net文件命后Reload之后,就可以看到效果了。

SUMO使用教程(五)

再来讨论一下SUMO仿真需要的文件。

官方资料给的图:

从根部往上看,用于仿真的需要rou.xml文件和net.xml文件。

而net.xml文件则由上面四种文件产生。

分别是nod,edg,typ,con,各自的含义就是node,edge,type,connection。

node和edge之前都讲过了,type也比较简单,就是对edge的类型做个一个封装,这样的话描述就比较简单了。

至于connection,就是车道合并的规则。

SUMO默认是向右合并。

也就是说,当三车道变成二车道的时候,右对齐,左边两个车道变成一个车道。

当然啦,并不是所有的道路都是右对齐的,所以就有了这一文件的产生。

举个例子:

这样就可以实现L2公路与L12公路连接的时候,0车道和0,1车道对齐。

当然啦,这四个文件并不是必须的,比如type文件可以内置在edge里面,当然,当公路条数比较多而且很多参数一样的时候这样会比较麻烦。

con文件既然有默认的选项,当然就不是必须的了。

有了四个文件,我们怎么一气呵成生成net文件呢?

infact,写这样一个配置文件就可以了,文件的后缀名是.netc.cfg

netconvert–cXXXX.netc.cfg

最后,只要敲一下这样命令行,让netconvert执行这个配置文件就可以成功生成net.xml文件了。

SUMO使用教程(六)

今天一直在设置SUMO中的交通灯,但是官方文档对具体配置文件的编辑说的很详细,但是怎么导入到其中就一笔带过了,根据上下文猜测,数次尝试也不行,最后曲线救国,毕竟所有的网路信息,包括交通信号灯的默认设置信息都在里面,所以直接修改net.xml文件或许可以实现。

果不其然,在测试的net文件中,发现了下面这样一段代码:

很显然,这一段就是对node5节点上的交通信号灯的完全描述。

tlLgic节点中id就是node的id,所以说,交通信号灯其实适合node一一对应的。

type就是交通信号灯的属性,是动态的还是静态的。

动态的就是用API接口利用Phyton编程实现。

这里我面用静态的。

programID这个就是这段交通信号灯硬编码的id,也就是说,其实交通信号灯在仿真过程中是可以改变的,而就是根据这个programID来确定需要改变的方向。

offset就是这段编码启动的时间。

接下来就是phase这个子标签了。

一个十字路口的红路灯的每一个不同情况都叫做一个相位,所有的相位按照顺序合在一起就是一个周期,所以说,对交通信号灯编辑,本质上就是编辑各个相位,并对其进行组合和时间设置(duration).

从上往下我们依次观察每一个相位如下:

 

改变相位时长(duration)就可以改变红绿灯改变的速率。

改变相位状态,就可以控制每个相位信号灯的不同通行状况。

SUMO使用教程(七)

这次的教程主要说明net.xml文件中connection标签的作用。

偷个小懒,用官方文档来说明。

随便写一个十字路口的nod文件和edge文件之后,用netconvert(默认配置)生成的net文件效果是这样的:

用记事本或者ue打开net文件之后,会发现在文件后面部分有好多标签,这些标签是干什么的呢?

大家要记住一句话,net.xml文件是对网路的全描述,就像html和浏览器的关系一样,sumo软件自身不含有任何内容。

我们更改一下connection标签如下:

然后就会发现横向的道路的路标发生了变化,而纵向的还是默认设置,变化就是只能右拐弯和直行。

原因很简单,横向的edge分别叫做1si和2si,上面的connection标签只允许1si往2o和3o两个edge行驶,所以就少了一种车道的方向。

在connection标签中,没有提到的行驶路径会被认为是不允许的。

除了可以设置edge的允许方向之外,对于edge内部的lane也是可以设置的,这样可以认为规定变道的规则。

SUMO使用教程(八)

好久没更新SUMO的博客了。

今天来看一下之前生成的一个Trips文件。

下面这个就是随机生成的Trips问价的部分截图,trip,中文意思就是旅程,其实就是车辆走过的轨迹。

之前我们在router文件里面定义了车辆行驶的路径,很显然,相当费力气,需要一条一条的去规划,但是在trip文件中,我们只需要说明起始点就可以了,SUMO的duarouter.exe工具会自动计算最优化路径,并且生成router文件。

这也就是为什么在教程一中我们randomTrips生成的是trip文件而不直接是router文件的原因。

不可否认,SUMO的模块化工作是做的很细致的。

这是我用于测试的一个trip文件,从徐汇区一个小区域左下端开始,自动规划后行驶到上端。

但是,似乎用trip文件有一个问题,就是一个trip标签只能有一辆车。

其实还有一个flows文件,这个文件可以设置走同一条路径的车辆数,可以等间隔的从指定起点发车。

从SUMO的输出文件中获得队列转移矩阵

SUMO的功能是很强大,不过可视化和后期期望结果的多样性似乎就不太如人意了。

本次我们利用SUMO的dump仿真输出文件来获取一个队列转移矩阵(lanechangeratematrix)。

这一矩阵在优化中有着很重要的地位。

1.首先来看一下dump文件

在仿真配置文件中的output部分加入下面这样的语句,就会生成dump文件

[html]viewplaincopy

1.<

output>

2. 

<

netstate-dump 

value="

FILE>

"

/>

3.<

/output>

其中FILE是你希望的文件名。

文件里面是这样的,具体是什么我们等会儿转换成csv导入Python之后再看。

netstate>

timestep 

time="

TIME_STEP>

>

3. 

edge 

id="

EDGE_ID>

4. 

lane 

LANE_ID>

5. 

vehicle 

VEHICLE_ID>

pos="

VEH_POSITION>

speed="

VEH_SPEED>

6. 

7. 

... 

more 

vehicles 

if 

any 

on 

this 

8. 

9. 

/lane>

10. 

11. 

lanes 

the 

possesses 

12. 

13. 

/edge>

14. 

15. 

edges 

.... 

16. 

17. 

/timestep>

18. 

19.... 

next 

20. 

21.<

/netstate>

2.dump文件转csv

dump文件是xml格式的,其实也可以用BeautifulSoup和python联合来处理,但是,这样比较繁琐,至少在程序上是这样的。

况且,sumo自带的tools里面有xml2csv的程序,可以好好利用一下。

在sumo,tools文件夹下面的xml子文件夹,里面有一个xml2csv.py的python程序,可以在命令行中运行它。

就像这样就可以了。

[python]viewplaincopy

1. 

如果dump文件比较大,需要等等待一些时间。

特别注意,dump.xml需要和python文件同文件夹下。

3.python处理

获取csv,那么之后的处理就方便多了。

我们可以轻易的把csv文件导入到python,利用python强大的pandas和numpy模块处理。

导入之后,查看一下,发现dump中含有的信息还是很多的,比如仿真时间、edge编号,lane编号、车辆编号等等,下图只是截取了部分。

1.import 

pandas 

as 

pd 

2.import 

numpy 

np 

3.data 

pd.read_csv('

E:

/dump.csv'

sep 

'

;

) 

4.dataFrame 

pd.DataFrame(data) 

5.dataNtNd= 

dataFrame[['

lane_id'

'

vehicle_id'

]] 

7.dataNtNd 

dataClearNt.dropna() 

9.dataClearNt 

dataNtNd.drop_duplicates() 

12.dataNtNdSort 

dataNtNd.sort(columns='

14.dataNtNdSort.to_csv('

/lc.csv'

16.lane 

dataNtNdSort['

17.lane=lane.drop_duplicates() 

18.lane.to_csv('

/lane.csv'

上面的python代码,从dump文件生成的csv文件中截取了需要的字段,同时做了一些数据清理工作。

最后,生成lc.csv文件用于计算队列转移矩阵的值,lane.csv文件用于形成矩阵的行列坐标。

当然啦,这里我们只是生成了两个csv文件,而没有直接生成矩阵。

原因是转移矩阵要求在excel中展现,而且之前有写过vba程序,所以这里python只是做一个数据清洗,毕竟几百万条的记录,直接用excel处理,电脑就挂了。

4.excelVBA生成矩阵

把生成的数据,按照上图,相同间隔相同空行放置。

从左往右前两列为python导出的cl.csv中的数据,要把列名删除。

H列就是生成的lane.csv中的数据。

位置正确之后,我们就可以利用excel的VBA自动实现了。

VBA代码如下。

[vb]viewplaincopy

1.Private 

Sub 

Workbook_Activate() 

Dim 

Dic, 

Arr 

define 

Dic 

for 

get 

matrix 

asix,and 

to 

process 

cnt 

As 

Long 

counter 

probability 

calucatino 

Long, 

is 

axis 

cntSum 

sum 

of 

amount 

turn-line 

generate 

For 

To 

109 

Cells(i, 

j) 

Next 

clear 

content 

Cells(1, 

i) 

8) 

19. 

calculate 

21. 

calaulate 

avaliable 

line 

change 

22. 

If 

Cells(cnt, 

2) 

Cells(cnt 

1, 

Then 

same 

23. 

24. 

End 

25. 

26. 

27. 

fill 

28. 

29. 

MsgBox 

30. 

Set 

Rows

(1).Find(Cells(cnt, 

1)) 

31. 

Columns(8).Find(Cells(cnt 

32. 

33. 

Cells(c.Row, 

f.Column) 

34. 

35. 

Else 

36. 

f.Column).Value 

37. 

38. 

39. 

40.End 

最后就是一个这样子的转移矩阵

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2