淘先锋技术网

首页 1 2 3 4 5 6 7

2.1 运行MATSim

MATSim的项目导入参照:

Idea导入MATSim项目-github源码版本_doboto昂的博客-CSDN博客

一个相当小的配置文件包含以下信息:

2.2 构建和运行基本场景

2.2.1 单位、约定和坐标系

2.2.1.1 单位

MATSim 试图对实际单位做出一些假设,但有时对于某些估计是必要的。

距离:距离单位例如用于链接的长度。它们应该在坐标系统使用的同一单位中指定,允许 MATSim 计算直线距离。由于它们使用 UTM(通用横轴墨卡托)投影坐标系统使用米作为距离单位,这是最常用的MATSim 中的距离单位。

时间:MATSim 在多个地方支持小时:分钟:秒表示法但在内部,它使用秒作为默认时间单位。这意味着,例如,必须以每秒距离来指定链接速度,通常是每秒米。该规则的一个显着例外是评分参数,其中 MATSim 期望每小时的值。

金钱:金钱是无单位的。单位由货币的边际效用隐含地给出(参见下面的方程(3.4))。因此,当一个人从德国搬到瑞士时,参数 βc 必须从“每欧元效用”变为“每瑞士法郎效用”。

2.2.1.2 约定

MATSim 大量使用 ID。这些标识符可以是任意字符串,但以下情况除外: ID 不应包含任何空白字符(包括制表符、换行符等)或逗号、分号等,因为这些字符通常用于将不同的 ID 与每个其他在 ID 列表中。

2.2.1.3 坐标系

在适当的坐标系中准备数据:在几个输入文件中,您需要指定坐标,例如,对于网络节点。我们强烈建议不要使用 WGS84 坐标(即 GPS(全球定位系统)坐标)或任何其他球坐标(东西方向坐标范围为 -180 至 +180,南北方向范围为 -90 至 +90). MATSim 必须在代码的几个部分中计算两点之间的距离。球坐标之间距离的计算非常复杂并且可能很慢。相反,MATSim 使用简单的毕达哥拉斯定理,但这需要笛卡尔坐标系坐标。因此,我们强烈建议使用笛卡尔坐标系和 MATSim,最好是距离单位对应于一米的坐标系。许多国家和地区都定义了自定义坐标系,并针对当地使用进行了优化。最好向您感兴趣的地区的 GIS(地理信息系统)专家询问那里最常用的坐标系并将其用于您的数据。如果您没有关于您所在地区使用的坐标系的信息,最好使用 UTM 坐标系。该系统将世界划分为多个带,每个带 6 度宽,并分为北部和南部,称为 UTMzones。对于每个区域,定义了一个优化的坐标系。为您的区域选择 UTM 区域并使用其坐标系。

告诉 MATSim 您的坐标系:您的数据使用的坐标系可以在配置文件中指定:

 

这允许 MATSim 使用您的坐标并在需要时进行转换。您有多种方法来指定您使用的坐标系。最简单的一种是使用所谓的“EPSG(欧洲石油调查组)代码”。大多数常用的坐标系都已标准化和编号。 EPSGcode 标识一个坐标系,可以直接被 MATSim 使用。要为您的坐标系找到正确的 EPSG 代码(例如,对于 UTMzone 之一),网站 http://www.spatialreference.org 非常有用。在此网站上搜索您的坐标系,例如“WGS 84 / UTMZone 8N”(用于北半球 UTMZone 8),以找到匹配坐标系的列表及其 EPSG 代码(在本例中为 EPSG:32608)。作为替代方案,MATSim 还可以解析 WKT(知名文本)格式的坐标系描述。

2.2.2 典型输入数据

MATSim 最少需要文件 :

•config.xml,包含 MATSim 的配置选项

•network.xml,带有(道路)网络的描述

•population.xml,提供有关旅行需求的信息,即代理列表及其一日计划。

因此,population.xml 和 network.xml 可能会变得非常大。为了节省空间,MATSim 支持以压缩格式读写数据。 MATSim 为此使用 GZIP 压缩。因此,许多文件名都有附加的后缀 .gz,如 population.xml.gz。 MATSim 根据文件名确认文件是否被压缩,或者应该被压缩。

2.2.2.1 本书第二部分扩展MATSim的展望

第7 章提供了一些关于MATSim 用于初始输入生成的技术工具的信息。使用基本设置,MATSim 代理在特定链接上执行其活动。如果需要指定有关活动地点的更多信息,可以使用第 6.4 节中描述的设施来执行。此外,对于公共交通的模拟,必须通过附加文件扩展基本场景,如第 16.4.1 节和第 16 章所示。计数数据是交通规划中的常用评估措施。在MATSim中,可以为仿真提供计数数据,如6.3节所示。

2.2.2.2 network.xml

网络是代理(或车辆)可以在其上移动的基础设施。网络由节点和链接组成(在图论中,通常称为顶点和边)。 MATSim 的 XML(可扩展标记语言)数据格式的简单网络描述可能包含大约以下信息:

每个元素都有一个标识符 id。节点由 x 和 y 坐标值描述。链接具有更多功能; from 和 to 属性参考节点并描述网络几何。其他属性描述了与流量相关的链路方面:

链路的长度,通常以米为单位

链路的流量,即通过链路的车辆数量,通常以每小时车辆为单位。

• 自由速度是允许车辆沿链路行驶的最大速度,通常以米/秒为单位。

• 在“from”和“to”节点指定的方向上可用的通道数(permlanes)。

• 链接上允许的模式列表。这是一个逗号分隔的列表,例如,modes="car,bike,tax"

所有链接都是单向的。如果一条道路可以双向行驶,则必须使用交替的往返属性定义两个链接。

2.2.2.3 population.xml

文件格式 MATSim 出行需求由代理商的一天计划描述。全套代理也称为人口,因此文件名为population.xml。或者,plans.xml 也常用于 MATSim,因为总体文件本质上包含一个日计划列表。总体包含分层结构中的数据,如以下示例所示。这个例子说明了数据结构;最小的输入文件需要更少的信息,如后所述。

 

人口包含人员列表每个人包含计划列表每个计划包含活动和行程列表。每人恰好有一个计划被标记为已选择。每个代理选择的计划由移动模拟执行。在重新计划阶段,可能会选择不同的计划。计划可以包含分数作为属性。在计分阶段通过移动性模拟计算并存储在计划执行后的分数。每个计划中的活动和分支列表描述了每个代理的计划行动。活动被分配了一种类型,并且通常具有定义的结束时间(一天计划中的最后一项活动除外)。在某些例外情况下,活动具有持续时间而不是结束时间。此类活动通常由路由算法自动生成,本书不予介绍。为了描述活动发生的位置,通过给它一个 x 和 y 属性值来为活动分配一个坐标,或者给它分配一个链接,描述从哪个链接可以到达活动。因为模拟需要链接属性,当链接属性缺失时,Controler 会计算给定坐标的最近链接。一条腿描述了代理计划如何从一个位置旅行到下一个位置;每条支线都必须分配一个运输模式。可选地,腿可以有一个属性,trav_time,描述腿的预期旅行时间。要模拟一条腿,它必须包含一条路线。路线的格式取决于航段的模式。对于汽车段,路线列出了代理必须按给定顺序遍历的链接,而对于公交段,则存储有关停靠点位置和预期公交服务的信息。 MATSim 自动为不包含它们的初始计划计算初始路线。

代理在前一个活动(或分支)结束后直接开始一个分支。 mobsim 中代理的处理取决于模式。默认情况下,mobsim 很好地支持汽车和运输腿。如果遇到它不知道的模式,它默认为传送。在这种情况下,代理从模拟现实中移除,并在腿的预期行程时间过去后重新插入其目标位置。

最小人口文件:人口数据格式是 MATSim 中最核心的数据结构之一。人口文件大约只需要以下信息:

 

以下项目可用于简化:

•每个人都需要一个计划。

•计划不必被选择或有分数。

活动可以仅通过它们的坐标来定位。

活动应该有一个合理的结束时间。

腿只需要一个模式,不需要路线。

当模拟开始时,MATSim 的控制器将加载这样的文件,然后自动分配离每个活动最近的链接,并为每条腿计算合适的路线。

2.2.3 典型输出数据

MATSim 创建可用于分析结果以及监控当前仿真设置进度的输出数据。一些文件总结了完整的 MATSim 运行,而另一些文件仅用于特定的迭代。第一种文件类型直接进入输出文件夹的顶层,可以在配置文件的控制器部分中指定。其他文件存储在迭代特定的文件夹 ITERS/it.{iteration number} 中,这些文件夹在输出文件夹中不断创建。对于某些文件(通常是大型文件,例如人口),可以在配置文件中指定输出频率。然后,它们仅转到相应的迭代文件夹。总结完整 MATSim 运行的文件是“即时”构建的,即每次迭代后,当前计算的迭代值都被存储,允许对运行进行连续监控。有些文件是默认创建的(比如分数统计文件);其他需要由相应的配置文件部分(例如计数数据文件)触发。

日志文件:在 MATSim 运行期间,将打印一个日志文件,其中包含您稍后可能需要用于分析或运行崩溃的信息。

警告和错误日志文件:有时,MATSim 会识别模拟或其配置中的问题;然后它将警告和错误消息写入日志文件。由于日志文件包含大量信息,因此可以忽略这些警告。出于这个原因,在运行输出目录中会生成一个单独的日志文件,其中仅包含警告和错误消息。在运行期间/运行后检查此文件是否存在可能的问题非常重要。

分数统计:分数统计以图片 (scorestats.png) 和文本文件 (scorestats.txt) 的形式提供。它们显示了所有代理每次迭代计划的平均最佳、最差、执行和总体平均值。

腿部行驶距离统计:腿部行驶距离统计(文件 traveldistancestats.png 和 traveldistancestats.txt)与分数统计相当,但它们绘制行驶距离。

秒表:秒表文件 (stopwatch.txt) 包含计算机时间(所谓的挂钟时间),例如重新计划或每次迭代的 mobsim 执行等动作。该数据有助于计算性能分析,例如,与移动性模拟相比,重新规划需要多长时间?

为特定的迭代创建以下输出文件:

事件:模拟中的每个动作都被记录为 MATSim 事件,无论是活动开始还是网络链接的变化。每个事件都具有一个或多个属性。默认情况下,包括事件发生的时间。此外,可以包括触发事件的代理 ID 或发生事件的链接 ID 等信息。事件文件是后期分析的重要基础,例如可视化工具。

计划:在可配置的迭代中,打印人口的当前状态以及代理的计划。最终迭代的计划也在输出文件夹的顶层生成。

腿直方图:在每次迭代中,都会绘制一个腿直方图。腿部直方图描述了每个时间单位到达、离开或途中的代理数量。为每种运输方式和所有运输方式的总和创建直方图。每个文件以迭代号开始,以传输模式结束(例如,1.legHistogram_car.png 或 1.legHistogram_all.png)。还创建了一个文本文件(例如 1.legHistogram.txt),其中包含所有运输模式的数据。

旅行持续时间:对于每次迭代,旅行持续时间文本文件(例如,1.tripdurations.txt),在生成每个活动(例如,从工作到家或从家到购物)对的时间箱级别上列出旅行次数及其持续时间。

链接统计:在每次迭代中,都会打印一个链接统计文件,其中包含每个网络链接的每小时计数值和行程时间。链接统计数据对于与真实世界的计数数据进行比较特别重要。

2.2.4 一个示例场景

MATSim 版本附带一个名为 equil 的示例场景,位于文件夹 examples/equil 中,包含以下文件:config.xml、network.xml、plans100.xml 和 plan2000。 xml.gz,分别包含 100 人和 2000 人的日程安排,仅使用汽车模式。还提供了一个仅包含 2 个人 (plans2.xml) 的小群体,其中一个使用公共交通工具,另一个使用汽车模式。在文件夹 (counts100.xml) 中还可以找到计数数据的示例。此外,还有一个包含 100 次行程的文件(plans100trips.xml),即需求仅从一个位置到另一个位置,在每一端使用一个虚拟活动类型。这是为了表明 MATSim 也可以作为完全基于行程的方法运行,而无需考虑任何活动。显然,它失去了一些表现力,但基本概念,包括路线甚至出发时间调整,仍然以完全相同的方式工作。场景网络如图所示。

以下几行通过讨论配置文件 config.xml 中最重要的部分来解释该场景。

配置文件的“策略”部分:如下面的配置文件摘录所示,此方案使用重新计划。 10% 的代理重新路由他们当前的路由(模块 ReRoute)。剩下的 90% 选择他们在当前迭代中重新执行的得分最高的计划(模块 BestScore)。如果计划已满,则从代理的内存中删除计划,由 maxAgentPlanMemorySize 定义。默认情况下,得分最低的计划被删除;这是可配置的。

 

 配置文件的“planCalcScore”部分:planCalcScore 部分定义了用于评分的参数。如示例中所示,指定了两种活动类型,h(家庭)和 w(工作)。人口文件中包含的所有活动类型必须在配置文件的 planCalcScore 部分中定义。

 

配置文件的“controler”部分:该场景运行 10 次迭代,将输出文件写入 ./output/equil并使用 QSim 作为 mobsim。

可视化:仿真结果可以通过Via或 OTFVis(On The Fly Visualizer)进行可视化。

 

2.2.5 数据要求

2.2.5.1 人口和活动时间表

需求估计是MATSim的一个重要组成部分。这意味着,理论上,只有从一个模拟平均工作日到下一个模拟工作日不变的需求组件才需要提供给 MATSim。例如:人口及其居住和工作地点。然而,在实践中,MATSim 还没有准备好对完整的旅行需求进行内生建模。例如,必须提供活动的顺序和首选持续时间作为输入。因此,必须对 MATSim 循环未涵盖的所有旅行需求选择进行外生估计。对于人口生成,存在两种可能性:舒适的方式是翻译完整的人口普查,而要求稍高的方式是根据样本或结构调查生成综合人口。对于 MATSim,这两种方法都基于例如瑞士联邦统计局使用。旅行需求通常来自调查:对于瑞士,来自小规模人口普查。目前正在研究更新的数据源,例如 GPS 或智能手机旅行日记。

需求和人口产生的一个关键主题是工作场所分配,因为通勤交通仍然是一个主要问题,尤其是在高峰时段。瑞士的完整人口普查工作地点在市一级进行了调查。然而,这种舒适的数据库很少见。在生成了研究区域的居住人口之后,可能需要额外的需求组件,例如跨境和货运。由于这些组件通常无法进行内生建模,MATSim 提供了以不同方式处理不同亚群的功能。例如,可以指定不允许过境代理在研究区域内选择目的地,或者不允许货运代理将其交付活动更改为休闲活动。

2.2.5.2 网络

在模拟实践中,使用了两种不同的网络类型:规划网络和导航网络。前者更精简,通常用作初始探索性​​模拟运行,而后者通常用于策略运行,通常提供更多细节,例如自行车甚至行人链接。数据可从OSM (OpenStreetMap) 等免费来源和包括导航网络提供商在内的商业来源获得。

2.2.6 示例场景输入数据

一些示例场景包含在 MATSim 主发行版的“示例”目录中。更多预打包的场景可以在 http://www.matsim.org/datasets 下找到。

2.3 MATSim 生存指南

MATSim 有许多选项和可能性,找到它们可能是一项艰巨的任务。这里有一些建议。

1.总是从一个小例子开始并测试。

2.始终先以 1% 的运行测试大型场景(例如,从您的初始需求中随机抽取子样本)。 MATSim GUI允许使用命令 Tools...Create Sample Population 创建样本种群。

3.如果您的设置不再工作,请立即返回工作版本并从那里逐步进行。

4.检查日志文件WarningErrors.log。

5.检查附加到配置文件选项的注释。可以在文件 output_config.xml.gz 或 logfile.log 开头附近找到它们。

6. 尝试设置尽可能少的配置文件选项。这有两个优点: (i) 除了有意设置的选项外,您的模拟将随着更改的 MATSim 默认值一起移动,因此社区目前认为是最佳配置。 (ii) 只要配置文件语法的更改与您自己的设置不同,您就不会受到影响。

7. 通过 http://matsim.org/javadoc 搜索文档。

8. 通过 http://matsim.org/docs 搜索最新教程。