我决定从翻译官方文档开始,并加上自己的理解和工作上的经验,对matsim的学习过程进行梳理。(不是对于官方文档的逐字翻译)对于matsim中的英语专有名词,将不进行翻译,直接引用。如有纰漏,请读者进行指正,不吝赐教。
第一章 介绍
1.1 什么是MATSim
MATSim 提供一个用来进行 “large-scale agent-based transport simulations" 的框架。 这个框架由一些不同的模块组成,这些模块可以进行组合,也可以分开使用。当然这些模块也可以由使用者自行编写和替换。MATSim 仿真的特点可以用以下几个关键词来概括:demand-modeling,agent-based,re-planning,iteratively run。这些关键词会在下文进行详细讲解。仿真完成后MATSim内置的数据分析模块也会提供一些对于仿真数据的总结,以图表的形式进行生成。
对于MATSim的学习,应该分为一下三个阶段 : (一)理解MATSim的基本结构,可以通过使用config文件改变仿真配置,并且具备分析仿真结果的能力。在这个部分,使用者不需要对MATSim源代码有所了解,对于编程也没有什么要求。 (二)对于MATSim的源代码有所了解,可以不通过config文件的设置,而是通过代码的修改,对仿真环境进行不同的配置。同时具备调用MATSim内置扩展包的能力,比如可以调用出租车模块。 (三) 在这一阶段,使用者已经具备了编写自己的扩展包的能力,可以根据需求,改变MATSim的内置设置。比如使用者可以编写自己的仿真评分模块,plan选择模块等等。
1.2 MATSim 特性介绍
Agent-Based, Multi-Modal Simulation of Daily Mobility Behavior. 首先,Agent就是研究区域的交通参与实体——人,可以是乘客,也可以是司机。在MATSim的世界中统称为agent,是我们的主要研究对象。 Multi Modal 意味着多种交通工具的研究是可行的,可以在MATSim的仿真世界中,投入不同的交通工具承载交通任务。Daily Mobility 是指我们的仿真通常情况下研究的是一天的交通情况,一般是从0点到24点。MATSim可以仿真的是Agent在这一天中的交通出行,且仿真是很细化的,通常来讲,仿真结束后,可以知道每一个agent,几点从哪里出发,使用什么交通工具,走了哪几条路,去干嘛,什么时候到达目的地这样的详细信息,以此类推。
Fast, even for Large Scenarios. MATSim主要都是用于大型区域的交通仿真研究,从研究范围来看属于宏观仿真,从研究方法来看,又具有微观仿真的特点。同时绝大多数的仿真一部家用电脑就可以完成,仿真效率还是很高的。
Versatile Analyses and Simulation Output. 如第一部分所说,MATSim仿真结束后,会通过内置的分析模块,对于仿真结果进行分析,并以图标的形式报告给使用者。而同时,也会把原始的数据一并交给使用者。参考前文提到的第一个特点,MATSim可以报告给使用者每个agent的具体行为,使用者可以自行使用分析代码或者分析工具,对该结果进行分析。说的再具体一点,MATSim的内置分析模块可以告诉我们比如交通工具使用比例的信息。而如果使用者想知道具体的比如早高峰六点到八点,汽车的使用比例,那么就要直接读取记录所有event的流文件,自己编写代码,自己进行分析。后面章节会具体介绍如何对流文件eventsfile进行分析。
Modular Approach. MATSim 将不同的功能封装成了模块,比如replanning模块,plan的评分模块,路径选择模块等等。使用者可以通过编写自己的算法,来替换相关模块, 比如使用者想测试自己的路径选择算法,就可以将写一个自己的路径选择模块,并用它替换原有的默认路径选择模块。这样,其他的设置都不会改变,工作量也小很多。
Open Source & Multi-Platform. 不做过多解释,MATSim是基于java的开源软件,可以在Github中找到,并且使用Eclipse等IDE进行使用。任何主流系统都可以使用MATSim。
Active Development and Versatile Usage of MATSim. 目前从事开发MATSim的研究者越来越多,主要的研发单位是柏林工业大学的VSP学院和苏黎世理工的交通学院。越来越多的MATSim功能也在不断的开发当中。笔者目前就读于柏林工业大学,最近在德国的大众总部实习,工作内容也是和MATSim相关的交通仿真,可见MATSim已经在不断壮大发展,有慢慢成为主流仿真软件的趋势。