前言
上篇博客提到了最基础的实现仿真过程,不过是单车辆的。但是实际道路上肯定不只有一辆车,一般城市道路上车流量都是每小时三位数,如果采用复制的方法不仅慢,而且可操作性不强。SUMO是提供了flow来生成车流进行仿真,这样就能快速生成符合实际条件的大量车,下面说说怎么实现。
flow基本认识
我们看一下文档里怎么说的,同样在安装目录下的userdoc里。
里面有关于flow的一些基本内容,比如它有哪些属性,用什么格式去写等等。
可以发现它和vehicle很像,很多属性都是共通的,比如都要先写它的id,都可以利用先前定义好的type和route。我这里讲讲它的其他属性,拿下面这个举例子。
<flow id="f1" begin="0" end="10000" type="myType" vehsPerHour="455"
departLane='random' route="w_st" maxSpeed="50"/>
上图的代码就定义了一次车流,车流运行的时间是从0s到10000s,车流的类型是我们自己定义好的myType。vehsPerHour
是小时流量的意思,这里生成的是等间距、小时流量为455的车流,随机进入车道位置,走的路线是我们自己定义的w_st,最大速度是50km/h。
设置打开文件自动仿真
后面我们要用代码控制sumo-gui打开文件进行仿真,如果每次代码运行后还需要我们自己点击开始运行,那还要代码干啥。SUMO可以在配置文件里设置gui_only属性,实现打开文件自动运行仿真。在配置文件里添加如下代码,我们打开该配置文件后自动运行,结束时自动关闭gui界面。
<gui_only>
<start value='t'/>
<quit-on-end value='true'/>
</gui_only>
把我们的flow写入路由文件,用sumo-gui打开配置文件,仿真效果如下:
我们可以多定义不同流向的车流,这样看起来就比较符合实际。
设置车辆的颜色、显示方式等
不去设置的话仿真显示的是一个个黄色箭头,我感觉不太好看,所以我就想去找找看怎么改变颜色。我发现改变的办法是在仿真的时候,点击下图所示的地方。
点击后会跳出来下面这个对话框,再点击vehicles,就可以修改颜色和显示的方式啦。
如果想每次都用这个,还可以点击最上面的保存,保存成一个xml文件。在配置文件里加入下面的代码,以后仿真就一直是这个样子。
<gui-settings-file value="viewRandomColor.xml"/>
value里面是刚才保存的样式文件名字。
写在最后
目前我比较熟悉的仿真方式就是用车流去进行仿真,因为实际车流量我们一般会调查到。后面我再介绍下怎么用python的traci库连接到sumo,实现仿真自动化。