无论是你是更侧重于工程实践还是更侧重于理论研究,交通仿真总是一个绕不开的话题。常用的交通仿真软件包括Vissim、Paramics、Anylogic、Transcad等等。近年来,随着ABM概念的兴起,交通领域内也出现了以MATSim(the Multi-Agent Transport Simulation)为代表的多主体仿真软件。

入门指南

本文将为MATSim仿真软件做一个入门指南,内容主要分为以下四部分:

第一,什么是多智能体(主体、代理)仿真;

第二,MATSim是什么,能实现什么,有什么优势;

第三,如何配置MATSim开发环境,安装MATSim,并显示仿真结果;

最后,以柏林数据为例,完成MATSim的仿真操作。


多主体合作python仿真 多主体仿真建模_Java

1. 什么是多智能体仿真?

智能体基模型(agent-based model,ABM), 又称多智能体系统(multi-agent system, MAS)是一种用来模拟具有自主意识的智能体(独立个体或共同群体,例如组织、团队)的行动和相互作用的计算模型,通过图像展示评估智能体在系统整体中的作用。

基于多智能体模型是一个微观模型,通过模拟多个智能体的同时行动和相互作用以再现和预测复杂现象。这个过程是从低(微观)层次到高(宏观)层次的涌现。

常用的ABM模型工具箱有SWARM,Repast,MASON,mass,NetLogo等。

下图是NetLogo模型库中的Flocking模型。该模型试图模仿鸟类的成群结队(由此产生的运动也类似鱼群)。模型中并不存在领航鸟,每只鸟都遵循一套完全相同的规则,随着时间演化,鸟群由此而生。

多主体合作python仿真 多主体仿真建模_Java_02

Flocking模型初始态

多主体合作python仿真 多主体仿真建模_数据_03

Flocking模型演化一段时间后



多主体合作python仿真 多主体仿真建模_Java

多主体合作python仿真 多主体仿真建模_Java

2. MATSim是什么,能实现什么,有什么优势?

首先先看一个MATSim的仿真案例。

接下来引入MATSim的定义:

MATSim提供了一个框架来实现大规模的基于智能体的交通仿真。

该框架由几个模块组成,这些模块可以组合或单独使用,也可以用自己的成果替换模块,以测试自己工作的单个方面。

目前,MATSim提供的框架包括需求建模基于agent的出行仿真(交通流仿真)、重新规划、迭代仿真控制器以及分析模块生成输出的方法。

与其他传统交通仿真软件不同,MATSim的优势和特征体现在:

  • 基于智能体的日常出行行为的多模式仿真
  • 大场景中仍能保证很高的仿真效率
    MATSim能够在数十万路段的网络上模拟数百万agent的场景。你所需要的只是一台有足够内存、运行速度快的台式电脑,MATSim通常只需要几分钟就能模拟出完整的一天。
  • 开源性、多平台性。
    传统的交通仿真软件通常存在两个缺点:底层不易调试、成本高昂,而MATSim完美克服了这两个弊端。MATSim不但可以免费下载使用的,而且其是以模块化的方式存储源代码的,这意味着研究者可以在其基础上进行二次开发。

多主体合作python仿真 多主体仿真建模_Java

多主体合作python仿真 多主体仿真建模_Java

3. MATSim的安装

MATSim的运行是基于JAVA编译器实现的,其可视化可以基于VIA软件实现的,该软件免费下载,但对agents数量有限制,免费版最多加载500个agents。

因此我们需要首先配置Java和Eclipse开发环境,之后下载MATSim包,并通过Eclipse查看、编辑、运行MATSim源代码,最后下载VIA软件。

1. 关于Java环境和Eclipse的配置,网上有很多资料,这里就不再赘述,小伙伴们可以自行百度,但这里面有个坑,建议不要选择较新版本的JAVA环境,可能会与MATSim产生不兼容的问题。

2. 关于MATSim的安装,官网上目前提供两种类型,一种为jar类型,该类型安装更为方便,底层代码不可见,不可二次开发,也不利于后续的学习、使用,这里不再介绍;另一种是源代码包。

由于墙的限制,从官网下载MATSim时速度较慢,这里直接给出的源代码包(点击【阅读原文】)。

当环境配置好后,下面我们一步一步的将MATSim文件添加到Eclipse的project中,并让其运行起来。

Step1:在Eclipse中按照File——New——Java Project新建一个工程(project),如图下图所示。并按照红框的顺序依次配置改工程的名字、储存地址,最后点击完成。

多主体合作python仿真 多主体仿真建模_Java_08

Step2:找到刚才配置的project地址(笔者地址为D:\【学术】\【研究生】\【代码】ecplise\matsim_demo),并打开名为src的文件夹,把下载好的matsim-master文件夹打开,依此点击打开matsim/src/main/java,会看到里面有一个名为org的文件夹,复制并粘贴到刚才的src文件夹中。

Step3:在project的文件夹中新建一个名为lib的文件夹,将刚才下载的库文件matsim-lib打开,把其中libs文件夹中的所有.jar文件都复制粘贴到刚才新建的lib文件夹中。

Step4 :打开Eclipse,在刚才新建的matsim工程右击鼠标,并依次点选Bulid Path——Configure Build Path,打开后的窗口如下图所示,在Libraries页中点击Add JARs...选择我们刚才新建的project,并将其lib中的所有jar文件添加进来,然后依次点击确定。

多主体合作python仿真 多主体仿真建模_多主体合作python仿真_09

到这里,MATSim的配置基本结束,但如果你的project上面还有一个红色叉号,说明配置中有一些操作不正确。

3. VIA为免安装版,下载后直接点击Via64.exe使用即可,其安装包也已放入文末链接。

多主体合作python仿真 多主体仿真建模_java_10



多主体合作python仿真 多主体仿真建模_Java

多主体合作python仿真 多主体仿真建模_Java

4. MATSim仿真案例

最后我们基于MATSim实现一个小型路网的仿真。

Step1:打开Eclipse,在src下找到org.matsim.run.gui,如下图所示,右击Gui.java,依次点击run as——java application。

多主体合作python仿真 多主体仿真建模_数据_13

Step2: MATSim GUI界面如图所示,configuration file 框内输入配置文件路径,Output directory框内为默认的输出文件路径。这里以官方的柏林数据为例,其路径为“matsim-master\examples\scenarios\ berlin”,点击Start MATSim,开始仿真。

多主体合作python仿真 多主体仿真建模_数据_14

当界面窗口出现下图红框所示 shutdown completed 时,仿真结束。

多主体合作python仿真 多主体仿真建模_数据_15

Step3:打开对应文件,在via中依次点击File——Add data, 添加output文件夹的数据如下图所示。

多主体合作python仿真 多主体仿真建模_java 多模块项目 包路径冲突_16

再依次点击File——Add layer,添加network,vehicles,activities,如图所示。

多主体合作python仿真 多主体仿真建模_java_17

Step4:最后拖动仿真速度,使其不为0,即可得到仿真结果,如图所示。

多主体合作python仿真 多主体仿真建模_数据_18

MATSim及VIA

提取码:r4dg