ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:964.33KB ,
资源ID:20096011      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20096011.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SUMO使用教程Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SUMO使用教程Word文件下载.docx

1、同样的,-n .xml表示输入,-n表述输入的类型是net类型,其实-n等价于-net,-n是一种简写的方式。后面的-l -e 600是随机工具的配置,就像随机数生成函数需要一个种子一样。后面输出的命令就一目了然了。这是生成的文件但是,这样的一个过程生成的是一个旅程随机过程文件,而我们需要的是一个rou.xml文件。所以,最后,我们把随机的旅程和道路信息结合起来就获得了车流文件(rou.xml)了。我们要用到的工具是bin文件夹下的duarouter.exe。不知道这个文件为什么这么命名,dua不明何意。这样的命令行想必很容易理解。两个输入,一个输出。所以,最后得到了这些文件。3.配置文件为了

2、仿真方便,我们写一个仿真的配置文件,这一类配置文件可以直接被sumo-gui使用稍微了解xml语言和会一些英语的同学应该能明白大概。将之前生成的net.xml和rou.xml文件作为输入。后面time标签就是对仿真时间的一些设置。最后的最后,我们应该有的是上面这些文件。用sumo-gui打开sumo.cfg文件之后,点击开始仿真(绿色)箭头之后就可以开心的看仿真效果了。最后的最后的最后,上两张图:(似乎透露了输入法)(这车可以再丑一点吗)SUMO使用教程(二)在教程一当中,我们用了osm和SUMO的工具,生成了一些列文件,最后得以仿真。其实,仔细一看之后,这些生成的文件和配置文件本质上都是xm

3、l文件,换句话说,我们完全可以自己用一个记事本编辑这些文件。首先是net.xml文件。作为一个道路文件,抽象成图之后,其实就是由节点和边构成,所谓的节点,映射到物理世界就是十字路口或者三叉路口,反正就是两条路的交汇处,而边就是道路。换句话说,只要我们有了节点和边就可以得到net.xml文件。我们先编写nod.xml和edg.xml,然后将其结合,而不是直接写出net.xml,这有一点模块化和封装的思想在里面。1.nod.xml。这是一个简单的nod.xml文件。node文件的node标签里面有四个属性,id,x,y,type。 (新浪博客竟然无法显示xml文件,只能截图了)id就是交叉路口的名

4、字,x,y是交叉口的坐标,不像opencv或者显示屏驱动一下,这里的坐标就是左下角是原点。type属性复杂一些:priority: 车辆必须等待,直到它们右侧车辆完全通过路口。Vehicles have to wait until vehicles right to them have passed the junction(并不知道这要表达什么。)traffic_light: 交叉口被交通灯控制着right_before_left: 来自右边的车辆优先通过Vehicles will let vehicles coming from their right side pass.(还是不知道)2

5、.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,所以都是双车道。到这里,笔者提出了

6、一个问题,像自己家附近单车道管制的地方怎么仿真?SUMO使用教程(三) 这次主要来看一下需求文件的内容,也就是rou.xml文件的构成。 打开上次教程生成的rou.xml文件之后,可以看到大部分内容是这样的:vehicle标签下面有一个子标签route,vehicle标签指的就是一辆车,而route则是这辆车将行驶过的路径。vehicle标签的id属性就是车辆的名称,depart就是出现在仿真中的时间。我们修改一下这个rou.xml文件,变成容易观测:保存之后仿真,就可以很好的看到结果。vehicle除了id和depart属性外,还有别的属性,譬如:type。这个就是车辆的类型。这里就定义了一

7、个vType标签,并且吧vehicle0的type设置为type1.这时候保存之后运行仿真,发现车辆就会有点不一样哦当然啦,vType还有别的一些属性,具体可以看官方文档。SUMO使用教程(四) osm文件下载之后并没有交通灯,挺头疼的,目前只找到了手工加入的方法。1.用josm打开osm文件。josm在windows下可以用jar版的或者windows安装版本的。理论上jar的稍稍会卡一点,但是不用安装,大家可以XX自己去官网下。打开osm地图后,选择公路的连接点,可以一个一个点击,也可以拖出矩形框多选择几个。在右侧的界面中,会显示选中的连接点的id,似乎不能复制这些id略微有点头疼。2.根

8、据这些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的类型做个一个封装,这样的话描述就比较简单了。至于connect

9、ion,就是车道合并的规则。SUMO默认是向右合并。也就是说,当三车道变成二车道的时候,右对齐,左边两个车道变成一个车道。当然啦,并不是所有的道路都是右对齐的,所以就有了这一文件的产生。举个例子:这样就可以实现L2公路与L12公路连接的时候,0车道和0,1车道对齐。当然啦,这四个文件并不是必须的,比如type文件可以内置在edge里面,当然,当公路条数比较多而且很多参数一样的时候这样会比较麻烦。con文件既然有默认的选项,当然就不是必须的了。有了四个文件,我们怎么一气呵成生成net文件呢?in fact,写这样一个配置文件就可以了,文件的后缀名是.netc.cfgnetconvert c XX

10、XX.netc.cfg最后,只要敲一下这样命令行,让netconvert执行这个配置文件就可以成功生成net.xml文件了。SUMO使用教程(六)今天一直在设置SUMO中的交通灯,但是官方文档对具体配置文件的编辑说的很详细,但是怎么导入到其中就一笔带过了,根据上下文猜测,数次尝试也不行,最后曲线救国,毕竟所有的网路信息,包括交通信号灯的默认设置信息都在里面,所以直接修改net.xml文件或许可以实现。果不其然,在测试的net文件中,发现了下面这样一段代码:很显然,这一段就是对node5节点上的交通信号灯的完全描述。tlLgic节点中id就是node的id,所以说,交通信号灯其实适合node一一

11、对应的。type就是交通信号灯的属性,是动态的还是静态的。动态的就是用API接口利用Phyton编程实现。这里我面用静态的。programID这个就是这段交通信号灯硬编码的id,也就是说,其实交通信号灯在仿真过程中是可以改变的,而就是根据这个programID来确定需要改变的方向。offset就是这段编码启动的时间。接下来就是phase这个子标签了。一个十字路口的红路灯的每一个不同情况都叫做一个相位,所有的相位按照顺序合在一起就是一个周期,所以说,对交通信号灯编辑,本质上就是编辑各个相位,并对其进行组合和时间设置(duration).从上往下我们依次观察每一个相位如下: 改变相位时长(dura

12、tion)就可以改变红绿灯改变的速率。改变相位状态,就可以控制每个相位信号灯的不同通行状况。SUMO使用教程(七) 这次的教程主要说明net.xml文件中connection标签的作用。偷个小懒,用官方文档来说明。随便写一个十字路口的nod文件和edge文件之后,用netconvert(默认配置)生成的net文件效果是这样的:用记事本或者ue打开net文件之后,会发现在文件后面部分有好多标签,这些标签是干什么的呢?大家要记住一句话,net.xml文件是对网路的全描述,就像html和浏览器的关系一样,sumo软件自身不含有任何内容。我们更改一下connection标签如下:然后就会发现横向的道路

13、的路标发生了变化,而纵向的还是默认设置,变化就是只能右拐弯和直行。原因很简单,横向的edge分别叫做1si和2si,上面的connection标签只允许1si往2o和3o两个edge行驶,所以就少了一种车道的方向。在connection标签中,没有提到的行驶路径会被认为是不允许的。除了可以设置edge的允许方向之外,对于edge内部的lane也是可以设置的,这样可以认为规定变道的规则。SUMO使用教程(八) 好久没更新SUMO的博客了。今天来看一下之前生成的一个Trips文件。下面这个就是随机生成的Trips问价的部分截图,trip,中文意思就是旅程,其实就是车辆走过的轨迹。之前我们在rout

14、er文件里面定义了车辆行驶的路径,很显然,相当费力气,需要一条一条的去规划,但是在trip文件中,我们只需要说明起始点就可以了,SUMO的duarouter.exe工具会自动计算最优化路径,并且生成router文件。这也就是为什么在教程一中我们randomTrips生成的是trip文件而不直接是router文件的原因。不可否认,SUMO的模块化工作是做的很细致的。这是我用于测试的一个trip文件,从徐汇区一个小区域左下端开始,自动规划后行驶到上端。但是,似乎用trip文件有一个问题,就是一个trip标签只能有一辆车。其实还有一个flows文件,这个文件可以设置走同一条路径的车辆数,可以等间隔的

15、从指定起点发车。从SUMO的输出文件中获得队列转移矩阵 SUMO的功能是很强大,不过可视化和后期期望结果的多样性似乎就不太如人意了。本次我们利用SUMO的dump仿真输出文件来获取一个队列转移矩阵(lane change rate matrix)。这一矩阵在优化中有着很重要的地位。1.首先来看一下dump文件在仿真配置文件中的output部分加入下面这样的语句,就会生成dump文件html view plain copy1.2./3.其中FILE是你希望的文件名。文件里面是这样的,具体是什么我们等会儿转换成csv导入Python之后再看。netstatetimesteptime=TIME_ST

16、EP3.edgeid=EDGE_ID4.laneLANE_ID5.vehicleVEHICLE_IDpos=VEH_POSITIONspeed=VEH_SPEED6.7.morevehiclesifanyonthis8.9./lane10.11.lanesthepossesses12.13./edge14.15.edges.16.17./timestep18.19.next20.21.2.dump文件转csvdump文件是xml格式的,其实也可以用BeautifulSoup和python联合来处理,但是,这样比较繁琐,至少在程序上是这样的。况且,sumo自带的tools里面有xml2csv的程

17、序,可以好好利用一下。在sumo,tools文件夹下面的xml子文件夹,里面有一个xml2csv.py的python程序,可以在命令行中运行它。就像这样就可以了。python view plain copy1.如果dump文件比较大,需要等等待一些时间。特别注意,dump.xml需要和python文件同文件夹下。3.python处理获取csv,那么之后的处理就方便多了。我们可以轻易的把csv文件导入到python,利用python强大的pandas和numpy模块处理。导入之后,查看一下,发现dump中含有的信息还是很多的,比如仿真时间、edge编号,lane编号、车辆编号等等,下图只是截取了

18、部分。1.importpandasaspd2.importnumpynp3.data=pd.read_csv(E:/dump.csv,sep;)4.dataFramepd.DataFrame(data)5.dataNtNd=dataFramelane_id,vehicle_id7.dataNtNddataClearNt.dropna()9.dataClearNtdataNtNd.drop_duplicates()12.dataNtNdSortdataNtNd.sort(columns=14.dataNtNdSort.to_csv(/lc.csv16.lanedataNtNdSort17.lan

19、e=lane.drop_duplicates()18.lane.to_csv(/lane.csv上面的python代码,从dump文件生成的csv文件中截取了需要的字段,同时做了一些数据清理工作。最后,生成lc.csv文件用于计算队列转移矩阵的值,lane.csv文件用于形成矩阵的行列坐标。当然啦,这里我们只是生成了两个csv文件,而没有直接生成矩阵。原因是转移矩阵要求在excel中展现,而且之前有写过vba程序,所以这里python只是做一个数据清洗,毕竟几百万条的记录,直接用excel处理,电脑就挂了。4.excelVBA生成矩阵把生成的数据,按照上图,相同间隔相同空行放置。从左往右前两列

20、为python导出的cl.csv中的数据,要把列名删除。H列就是生成的lane.csv中的数据。位置正确之后,我们就可以利用excel的VBA自动实现了。VBA代码如下。vb view plain copy1.PrivateSubWorkbook_Activate()DimDic,ArrdefineDicforgetmatrixasix,andtoprocesscntAsLongcounterprobabilitycalucatinoiLong,risaxiscntSumsumofamountturn-linegenerateFor2To109jCells(i,7+j)NextclearcontentCells(1,i)8)19.calculate21.calaulateavaliablelinechange22.IfCells(cnt,2)Cells(cnt1,Thensame23.124.End25.26.27.fill28.29.MsgBox30.SetfRows(1).Find(Cells(cnt,1)31.cColumns(8).Find(Cells(cnt32.33.Cells(c.Row,f.Column)34./35.Else36.f.Column).Value37.38.39.40.End最后就是一个这样子的转移矩阵

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1