软件说明
MATSim是一个基于活动、可扩展、多代理的Java仿真框架,它可以在给定的交通网络上,模拟在一整天的时长内大量出行个体的出行及活动行为。(在学习MATSim之前,一定得知道它的机理,还有活动的概念等基础知识).
MATSim的仿真和优化过程如下图所示:
下面对这五个过程进行简要介绍:
⑴ 初始需求
主要用于模拟个体的移动性行为。这部分包含个体的一整天的计划列表,包含活动列表(如工作、居家等活动项目类别)、出行信息(如drive to work等执行不同活动所选择的出行方式)、出行时间信息(如上午7:28离家、下午5:45下班等)以及路网信息、车辆信息等。初始需求模块描述了个体初始的每日计划,但在实际仿真过程中可能因道路网络产生交通拥堵等而导致仿真结果无法完全实现个体的每日初始活动计划。
⑵ 执行计划
该模块主要模拟个体每日活动计划的执行过程,也称为移动性仿真(Mobsim)。在执行计划期间,个体通过占用虚拟路网中的空间来影响彼此的每日活动计划。当较多的个体选择在某时段内沿同一条路段出行时,则可能产生交通拥堵。
此外,在仿真系统Controller模块的控制下,执行计划模块主要执行两项任务:一是合理分配车辆,用MATSim中内置的Dijkstra的算法将初始出行路线分配给每个个体,以此保证不同的交通方式在整个道路网络上的运行;二是根据个体的每日活动计划,保证每个个体都能选择相应交通方式出行并执行相关活动。其中MobSim(使用Qsim引擎和先进先出(FIFO)单队列模型将计划加载到道路网络上,并设置容量因子)会在MATSim循环的每个步骤之后和之前以及每次迭代时生成“events”文件,记录所有个体的活动过程,包含个体在特定时间的各类出行活动计划等。
完成上述过程之后,可以得到不同个体的所选的交通方式以及某路段的断面流量等仿真结果数据。每次迭代中所有个体的出行计划的评价得分情况都记录在“scorestats.txt”中,并绘制相应的评分折线图来表示每次迭代中活动计划的个人和平均性能。
⑶ 评分
所有个体的计划执行完成后,该模块会根据计划执行情况进行评分。评分模块可以根据不同的交通方式来自定义它们的效用函数,但一般认为执行活动会产生正效用,而出行过程会产生负效用。每个个体可以通过选择短途出行以及执行较长时间的活动来累积更多的得分。
⑷ 重新计划
重新计划模块中个体会重新计划他们的每日活动来避免出现评分较低的情景,它是MATSim的创新模块。由于初始计划大多是根据实际调查数据生成,每个个体的出行计划生成过程相互独立,缺乏对不同个体之间相互关系和相互影响的考虑,导致仿真结果并不是最贴近实际的更优计划。而该模块可以修改活动结束时间、下一项活动的开始时间、出行选择的交通方式以及出行路线(即出发时间选择,模式选择,路线选择)等活动计划的内容来调整个体的每日活动计划。此过程在MATSim中是通过“strategy”模块进行以上更改的,并使用ML模型从多个生成的备选方案中选择评分最高的计划 。
MATSim会随着迭代的进行不断生成新的每日活动计划,也就是个体会随着仿真的运行积累计划和创建不同于现有计划的新计划,并随时间的增长建立选择计划集,其中每个个体的每日活动计划是根据其实际运行情况进行调整的,并且每个个体都能“记住”自己一定数量的出行计划(一般设为5个),此过程遵循“计划选择机制”,即当个体记录的出行计划数超过规定数量时,多余的计划将会被删除。随着仿真的不断迭代,所有个体每日活动计划的评分不断提高,整个仿真系统的效用和性能也不断达到更优。
⑸ 分析结果
在仿真模拟结束后,需要对评价指标和关键性能进行比较和分析。
MATSim软件在此过程中对每个个体实施协同进化算法,初始需求是出行者的日常活动计划,在一个场景模拟运行中执行多次迭代直到更优值为止,该需求通过三个模块(执行计划、评分和重新计划)执行,其中可以基于一些预设参数来确定出行者效用的优化距离,出行时间,设施的开放时间以及提早或延迟抵达的罚款,该循环持续进行多次迭代,直到代理不再能够提高其得分,此时认为达到用户平衡。