SUMO(二)——与Python的基本联合

文章目录

  • 0 基础准备
    • 0.1 知识准备
    • 0.2 文件准备
  • 1 生成相关数据
    • 1.1 生成路由文件
      • 1.1.1 生成随机车流
      • 1.1.2 其他生成方式
    • 1.2 对仿真结果进行处理
    • 1.3 主函数
  • 2 数据处理

0 基础准备

0.1 知识准备

在看这篇文章之前,你需要:

  • 掌握基本的 P y t h o n Python Python 知识(链接是我的好兄弟 川 s h i t shit shit 整理的相关知识);
  • 掌握基本的 N u m P y NumPy NumPy 知识;
  • 掌握基本的 x m l . e t r e e . E l e m e n t T r e e xml.etree.ElementTree xml.etree.ElementTree (或者其他处理 x m l xml xml 文件的方法)知识;
  • 掌握基本的 M a t p l o t l i b Matplotlib Matplotlib 知识;
  • 掌握基本的 S U M O SUMO SUMO 相关文件 的知识。

0.2 文件准备

在项目文件夹中,你需要:

  • 一个路 文件( . n e t . x m l .net.xml .net.xml)
  • 一个仿真文件 ( . s u m o c f g .sumocfg .sumocfg)

我的路 文件名称是 c r o s s . n e t . x m l cross.net.xml cross.net.xml ,内容则是一个很简单的十字路口。

cross.net.xml

仿真文件的内容为:

(仿真了1000秒的)

完成了这些工作,我们就继续进行吧!

1 生成相关数据

在项目文件夹里新建 m a i n . p y main.py main.py ,开始编写程序吧!

1.1 生成路由文件

1.1.1 生成随机车流

这是最简单的生成路由文件的方法,一般来说就会用这种方法。

代码部分解释:

  • 函数参数中的 p a t h path path 是指 S U M O SUMO SUMO 文件夹中 t o o l s tools tools 文件夹的路径。 p e r i o d period period 是指每隔多长时间生成一辆车,单位为秒,实际上也就是到达率的倒数。
  • 2 2 2 3 3 3行就是 S U M O SUMO SUMO 自带的一些命令,通过 o s os os 模块来模拟命令提示符的使用来输入指令。第二行就是生成随机车流,我们设定仿真时间为 1000 1000 1000。第三行将其转化为路由文件。
  • 后面则是对仿真文件进行转换。由于我们会调用好多次生成路由文件的函数,而每次调用的 p e r i o d period period 都不一样,我们要保留每种情况的仿真结果。于是我们让每次仿真的仿真结果保存为 c r o s s . o u t p u t + s t r ( p e r i o d ) + . x m l cross.output + str(period) + .xml cross.output+str(period)+.xml 形式。比如说我们某一次仿真的 p e r i o d

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月22日
下一篇 2022年4月22日

相关推荐