001_MatSIM介绍
1.1 开始
1.2 简介
1.3 MATSim交通流模型
MATSim提供了两个内部mobsim: QSim和JDEQSim(Java离散事件队列模拟);此外,还可以插入外部移动模拟。几年前,用C++编写的离散事件队列仿真(Charypar 2008)。Charypar 于2007、2009年开发出的内容,已经插入MATSim并经常使用。多线程QSim当前是默认的mobsim。Charypar 2009年的文章中,区别了以下几项:
- 物理模拟,具有详细的跟车模型
- 元胞自动机,其中道路被离散为单元
- 基于队列的模拟,其中交通动力学通过等待队列建模
- 介观模型,使用聚集来确定行驶速度,
-
宏观模型,基于流量而不是单个出行者单位(如汽车)。
Traffic flow model.png
由于MATSim是为大规模场景设计的,因此它采用了计算效率高的基于队列的方法(见图1.3)。从交叉口进入网络连接(即路段)的车辆被添加到等待队列的尾部。它一直保持在那里,直到自由流动的链接的时间已经过去,直到他或她在等待队列的头,直到下一个链接允许进入。这种方法非常有效,但显然是以降低分辨率为代价的,即没有捕捉到跟车效应。在JDEQSim中,由于计算原因,等待队列方法与基于事件的更新步骤相结合(Charypar等人,2009)。换句话说,场景中没有基于时间步长的任何代理的更新过程。相反,代理只有在实际需要操作时才会被触碰。例如,代理遍历链接时不必处理链接。更新事件触发由全局调度程序管理。然而,QSim是基于时间步长的。
MATSim交通流模型强烈地基于两个链路属性:存储容量和流量容量。存储容量定义了行驶在道路网络上的汽车数量。
流量容量指定一条链路的流出容量,即每个时间步有多少旅客可以离开相应的链路。它是链接的单个属性。QSim的当前实现没有指定最大流入容量。相比之下,在早期的DEQSim和当前的JDEQSim中,还可以指定流入容量,这可能会将合并处的阻塞从第一个公共链路的末端(QSim生成阻塞)向上游移动到链路合并的位置以及它们合理应该在的位置(Charypar,2008,p.99)。然而,这方面还需要额外的数据,而这些数据通常是不可用的。
这个基本的交通流模型已经扩展到不同的模块:信号和多车道模型可用于QSim;根据Charypar(2008)的调查,向后移动的间隙包含在QSim(见第4.4.1节)和JDEQSim中。不同模式之间的相互作用在第7.1节和第15章中进行了描述。
1.4 MATSim’s Co-Evolutionary Algorithm

如图1.4所示,MATSim均衡通过协同进化算法进行搜索。这些算法通过相互作用(例如竞争)共同进化不同的物种。在MATSim中,个体由各自的计划来代表,其中一个人代表一个物种。利用协同进化算法,对agent的计划进行优化,即对整个日常活动和旅行计划进行优化。它实现了超过标准的交通流平衡,忽略了活动。最终,一个均衡被达成,受制于约束,代理人不能进一步改善他们的计划单方面。
注意,进化算法和协同进化算法的应用是有区别的。进化算法将导致一个系统优化,因为优化应用于一个全局(或人口)适应度函数。相反,协同进化算法导致了一个(随机)用户均衡,因为优化是在单个评分函数和一个代理的计划集内进行的。