Flow project 介绍
微观仿真主要有:MATLAB 元胞自动机;VISSIM;SUMO。
SUMO的界面其实比较简陋,本文将介绍SUMO的二次开发。对于SUMO的二次开发需要用到TraCI接口,但是网上的资料还是比较少,加州伯克利实验室对此进行了二次封装,项目名为flow project(可以在Github搜索),但是我在现在的安装过程中发现了依赖包的冲突,然后我在Stackoverflow上面看到了很多网友的类似问题,但是已经好久没人回答了,这个项目应该没人用心维护了,所以有些BUG也解决不了。
有一位博主顺利地解决了bug,并且对此项目做了优化,这是我的主要参考资料,点击超链接查看。但是参考他的安装过程,身为小白的我,自身也遇到了很多问题,历经坎坷,最终成功安装。因此把这个记录下来,也希望能给同样安装这个项目的人一些更细致的帮助。本文所有的系统,环境都是尽量接近上面博主,不然很可能出错误。
安装的整个过程中,如果发现还是会有错误提示,就把整个错误提示代码复制下来进行搜索,或许会有很好的解决方法。
本文软件配置:
VMware workstation Pro 16
Ubuntu 16.04.07 LTS
Anaconda3-2019.07-Linux-x86_64(conda 4.7.10)
Ubuntu 安装
首先得利用Linux的Ubuntu系统,因此可以选择安装双系统或者在虚拟机安装Ubuntu系统。对于性能稍微较高的可以选用虚拟机。本文采用后者。
1.本文下载了VMware workstation Pro 16
2.下载Ubuntu 16.04.07 LTS镜像文件(由于在官网下载比较慢,所以用镜像;以及对于Flow项目,只涉及14;16;18这三个版本,博主第一次安装的20.04之后又删除重新下载了)
3.在VM里面安装ubuntu 16.04
如果这个链接失效了可预览
可以输入永久注册密匙,YF390-0HF8P-M81RQ-2DXQE-M2UT6
如果失效可以查一下最新的
我与上面不同,我在安装时选择了中文语言。并且硬盘我设置了40G(我看了下我现在已经用了20+的空间了。这个后面可以拓展,但是应该比较麻烦)。虚拟机内存设置了9472MB(这个可以在虚拟机设置里面更改)。
Anaconda安装
我之前下载了好多版本的anaconda,但是不知道是不是自己的其他操作问题还是版本的问题,我前面几次没有成功,会出现一些依赖包等等的问题。Anacond2里面的python版本是2,Anaconda3里面的版本是3.最终我的成功的版本是Anaconda3-2019.07-Linux-x86_64.sh
这个在官网很难下载的,搜一下历史版本下载。我是把这个安装包放在home/user目录了,其他地方应该也没问题。然后在这个目录下运行终端,进行安装。
终端依次输入
bash Anaconda3-2019.07-Linux-x86_64.sh
安装过程中一直按enter,直到提醒你安装目录,还是按 enter(默认目录),之后提示你要不要添加环境变量还是初始化啥的,输入NO,之后输入
which conda
conda --version
如果运行上面之后啥信息也没有,说明anaconda没安装成功,如果有信息那么恭喜你安装成功了。关闭终端。
Flow 安装
下载flow(两种方式,推荐第二种)
1.云盘下载
可以在提前在windows用云盘下载,速度更快,然后用U盘拷贝到Ubuntu,注意需要把VM设置里面的USB设置成为3.0+的接口,不然U盘不能被识别,然后直接把U盘里面的文件拷贝到Ubuntu.注意如果下载的flow文件夹点开来里面只有一个也叫flow的二级文件夹,那只要把这个二级文件夹拖入Ubuntu,不要外面这个一级文件夹了,不然对于不理解接下来ubantu命令行操作的人可能会出错。
2. 或者直接命令行下载(推荐)
终端输入(ctrl+alt+T)
git clone https://github.com/BingLiHanShuang/flow.git
3.设置全局清华源,切换到flow文件夹,且切换到highway_newfunc分支,配置属于flow的专属环境(flow_new2),安装此环境的需求文件(需要的各种包),安装flow
终端依次输入
1.pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
(之前如果下载的anaconda2,这个好像就用不了,config会有问题)
2. cd flow
(切换到flow目录)
3. git checkout highway_newfunc
(切换到highway_newfunc分支)
4.conda env create -f environment.yml
(创建专属环境,建立依赖,可以自己点开这个文件去看看这里面有什么)
5.conda env list
(或者 conda info --envs
可以查看现在存在什么环境,目前又处在哪个环境里面(后面带星星号的就是目前的环境,如果不切换环境的话,就是默认的Base环境)还可以运行conda list
,看看环境里面有什么)
6.conda activate flow_new2
(切换到新环境)
7.如果上面切换不了,有错误提示CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’,则依次输入
source activate
(输入之后,后面的命令行前面会有一个括号,里面是你目前的环境,如果提示命令过时的话,或许可以用 conda activate)
conda activate flow_new2
(切换环境,之后的语句前面会带着括号flow_new2,说明你处在这个环境里面,环境切换成功)
8.pip install -r requirements.txt
(安装需求文件,一定要在flow_new2的环境里面下载,也就是前面显示了包含这个环境名的括号)
9.python setup.py develop
(经过之间的步骤,我们为flow建立了专属环境,并且在这个环境里面安装了许多依赖包,保障flow 的顺利安装。这一步就是安装flow,前面的一切都是为了给它做准备。如果这个超时,可以多运行几遍。运行成功,退出终端。)
SUMO 安装
似乎SUMO不需要从flow_new2安装?没试过。
我是直接ctrl+alt+T进入终端
如果输入
./flow/scripts/setup_sumo_ubuntu1604.sh
你发现它提示权限不足,则运行此脚本之前,需要提权。而且提权之后,很可能发现下载会很慢,或者无法进入下载链接,导致有一些依赖库无法下载,因此需要设置源(加快下载速度)。而且会有pip3找不到命令的提示,需要安装python3-pip。
首先设置源:
一开始我按照一个方法去更改配置文件,把/var/lib/apt/lists 用rm全部删除了,后面又叫我去更改一个文件,我怕改了之后万一没成功就弄不回来了,就没改,我就查到了下面的方法,亲测方便有效。
在系统-软件与更新-bantu软件中,在那个“下载自”的下拉框中选择其他站点,然后点 “选择最佳服务器”
系统会测试并自动给你匹配最佳的服务器,比如我就匹配到了cqu重庆大学的服务器
这里我把勾勾都取消了,最终结果也没影响
这里要勾选前面两个,否则有冲突( “无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”
“有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的”)
然后在终端输入
sudo apt-get update
进行更新,然后升级Pip (如果之前安装的是anaconda2,那么它的默认环境中的python是2,对应的pip也是2.貌似无法直接升级pip,有点麻烦,所以还是选3吧)
sudo apt install python3-pip
给脚本提权
Chmod 777 ./flow/scripts/setup_sumo_ubuntu1604.sh
执行SUMO脚本(点进去看这个脚本文件就知道,里面包括安装SUMO环境依赖,安装SUMO等等)
./flow/scripts/setup_sumo_ubuntu1604.sh
反正你要看到所有的链接都执行了,否则就不会安装成功。
检查SUMO
which sumo
sumo --version
sumo-gui
到这里就结束了。全部安装完成。
如果上面的命令没用,试试执行:
source ~/.bashrc
大概也没啥用
如果上面都成功了,就可以开始你的仿真啦!