美文网首页MatSIM ABM模型模拟
004_有关配置MATSim的详细信息

004_有关配置MATSim的详细信息

作者: alphonseLin | 来源:发表于2021-05-17 13:17 被阅读0次

    4.1 通用

    本章介绍可与三个基本元素一起使用的配置选项:config、population和network。
    MATSim在多个位置写入配置文件;例如,在日志文件、迭代输出目录中,或者使用第2.1.3节中描述的CreateFullConfig功能。如第2.3节所述,这些文件带有解释配置选项的注释。这通常是配置选项的最佳来源。

    4.2 MatSIM 数据容器

    4.2.1 路网

    配置文件部分

    < module name= "networks" >
    ...
    </module>
    

    指定将在模拟中使用的路网文件(第2.1.3节和第2.2.1.1节)。更多配置选项,如时变路网规范,见第6.1节。

    4.2.2 人口

    配置文件部分

    < module name= "plans" >
    ...
    </module>
    

    指定将使用的人口文件及其日计划(第2.1.3节和第2.2.1.2节)。第6.2节介绍了进一步的配置选项,例如,任意个体人属性或子群的规范。

    第6章介绍了更多的MATSim容器。

    4.3 全局模块和全局方面

    4.3.1 controler配置文件部分

    controler 是运行MATSim不可缺少的模块,其参数在config文件部分设置

    <module name="controler">
    ...
    </module>
    

    MATSim运行的输出目录、迭代次数以及计划和事件输出的间隔可以在这里指定。可以定义预期的mobsim(第4.4节)。例如,在MATSim中路网选择的算法为

    <param name="routingAlgorithmType" value="{Dijkstra| FastDijkstra|
    AStarLandmarks| FastAStarLandmarks}"/>
    

    4.3.2 并行计算

    MATSim使用多线程加速计算速度。相关的配置参数可以在几个配置模块中找到;这里将它们合并到一个部分中。

    全局线程数:配置文件节包含全局设置

    <module name="global">
        <param name="numberOfThreads" value="2"/>
        ...
    </module>
    

    这个数字在几个地方都有使用;最重要的是用于创新策略,即将多个请求分发到多个线程。一个好的起点是指定的可用内核数量。
    并行事件处理:配置文件部分

    <modulename="parallelEventHandling">
        ...
    </module>
    

    该部分用于定义事件处理的线程数。如Waraich等人(2009)所述,当使用多线程处理事件时,模拟可以大大加快。

    并行QSIM:并行QSim的线程数(参见Dobler,2013)可以通过如下方式配置:

    <modulename="qsim">
        <param name="numberOfThreads"value="10"/>
        ...
    </module>
    

    通用建议:一般来说,使用多线程的计算不一定更块。场景和硬件的每个组合都需要做实验。以下是一些建议。

    • 对于线程的“全局”数量,一个好的起点是可用内核的数量。
    • 无法完全关闭并行事件处理;将其设置为“0”或“null”或“1”将获得相同的结果。将其设置为大于1的值有时会导致性能提高,但效果不一定显著。
    • 最敏感的参数是QSim。对于较新的硬件(例如,2014年推出的Apple Macbook Pro),使用QSim可用的8个内核中的6个可以使mobsim的速度提高2倍以上,并且机器仍然可以用于办公任务。从之前使用较旧服务器的经验表明,必须仔细研究mobsim的线程数,因为使用更多的线程往往会降低mobsim的速度(Dobler,2013)。目前没有使用新服务器的经验。
    • HPCC(highper formance computing clusters)可供研究人员使用,允许访问高质量的机器,同时减少管理开销。通常情况下,需要付出计算时间,也可以通过付出优先级的方式,但在这中间其付出的资源与保留的资源(即作业完成所用的时间)成比例,乘以保留的核心数。在这种情况下,整个过程中使用的核心数应该是稳定的,以避免为未使用的资源付费。因此,在这种情况下,建议将QSim的线程数设置为最佳值(见上文),例如n,parallel events handling设置为1,“global”线程数设置为n+1,并提交请求n+1内核的作业。还要注意的是,线程越少,效率就越好。此外,对于校准和“假设”场景探索,通常需要使用不同的参数或输入数据运行大量模拟。由于集群上的总RAM内存通常不是问题,因此使用少量线程、同时运行大量模拟通常比使用大量线程、运行少量模拟更有效。

    4.3.3 全局配置文件

    在配置文件部分

    <module name="global">
    ...
    </module>
    

    可定义模拟的随机种子、“全局” 线程数(参见第4.3.2节)和坐标系(参见第2.2.3节)。请注意,无论是否显式定义随机种子,MATSim总是从一个固定的随机种子开始,该种子可以是您定义的,也可以是一个内部常量。也就是说,如果从同一配置启动同一版本的MATSim两次,就会得到相同的随机数序列,从而得到完全相同的模拟。如果要更改此行为,则需要显式更改随机种子。

    4.4 移动模拟

    Mobsim within MATSim cycle

    Dobler和Axhausen(2011)对MATSim移动模拟进行了概述。QSim和JDEQSim都使用的队列模型实现以下元素:
    存储限制:只有当道路未满时,车辆才能进入道路。
    自由速度限制:车辆只有在自由速度行驶时间过后才能离开道路。
    流出约束:只有当流出能力在当前时间步长内尚未消耗时,车辆才能离开道路。
    参见第章??详情。

    4.4.1 QSim

    基于队列和基于时间步长的QSim(Gawron,1998;Simon et al.,1999;Cetin et al.,2003;Dobler and Axhausen,2011;Dobler,2010)是MATSim的默认模拟引擎。其参数在配置文件部分中设置

    < module name= "qsim" >
    ...
    </ module >
    

    重要参数是:

    • 通过指定
    <param name="numberOfThreads" value="..."/>
    

    基于上述代码,QSim可以并行运行,见第4.3.2节。

    • 参数:
    <param name="flowCapacityFactor" value="..."/>
    <param name="storageCapacityFactor" value="..."/>
    

    在运行示例场景时需要进行相应的设置。例如,对于10%的样本,这些因子必须为0.1。

    • QSim目前支持以下类型的交通动态:

      • 排队:当道路的存储容量耗尽时,车辆不能进入。
      • 道路空间:当车辆离开连接时,会产生一个所谓的道路空间,它以15 km/h的速度向上游移动,这是一个典型的运动波速。车辆只有在其上游端有道路空间时才能进入连接。道路在其上游端初始化的道路空间与其存储的道路空间相同。上述模式在某种程度上,对运动波进行建模。
      • 运动波:不只是上面提到的运动波移动速度,还包括了限制道路的流入。最大流入量根据基本图(a fundamental diagram)计算出的最大流量,其中自由流和阻塞支路均假定为线性。

      再次,参见第章??详情。这些设置变得越来越现实,但从上到下都没有经过很好的测试。可以通过下列参数进行配置:

      <param name="trafficDynamics"value="..."/>
      
    • 如第7.3节所示,QSim可以处理多模式场景。

    • 设置

    确定在不移动多少秒后,尽管违反了目的地道路的存储约束,车辆仍会穿过交叉口。这个参数被引入到解决网格锁的问题中,即没有车辆可以移动的几何布局。使用QSim模型,可以将超出存储限制的车辆添加到过度拥挤的道路。这相当于即使在非常拥挤的情况下也可以保持最小流量。此参数的默认值设置为10,即非移动车辆在经过10个非移动模拟时间步后向前移动。这似乎是一个相当短的时间,但系统的调查(不幸的是从来没有发表过)表明,与交通统计数据相比,当这个参数增加时,模拟变得不太现实。

    4.4.2 JDEQSim

    JDEQSim(Waraich et al.,2009)用于KTI项目频率(Balmer et al.,2010)。它是DEQSim的Java重新实现(Waraich et al.,2009;Charypar et al.,2007b,2009),提供并行事件处理,但不提供并行模拟(Balmer et al.,2010,p.11)。支持反向传播间隙/孔(见上文),但不支持交通灯、公共交通和日内重新规划。

    要运行JDEQSim,必须将controller config file section的参数mobsim设置为JDEQSim。

    <module name="jdeqsim">
    ...
    </module>
    

    4.5 得分

    Score within MATSim cycle.png

    配置文件部分

    <module name="planCalcScore">
    ...
    </module>
    

    指定用于评分个体人出行计划的参数(第2.1.3节);参数在第5章中解释。

    4.6 重新规划策略

    Replanning within MATSim cycle.png

    重新规划策略是MATSim提供的基本创新模块。我们不称之为选择模块,尽管它们参与了人们的选择。选择过程是通过隐式选择集在迭代中执行的,而不是基于显式概率函数。可以用于区分,可影响个体人持有的计划集模块,和仅在这些计划之间进行选择的模块。有关MATSim在choice建模环境中的详细讨论,请参见第章??。

    如第2.2.4节所示,重新规划的定义如下例所示:

    <module name="strategy">
        <parameterset type="strategysettings">
            <param name="strategyName"value="ReRoute"/>
            <param name="weight"value="0.2"/>
        </parameterset>
    
        <parameterset type="strategysettings">
            <param name="strategyName"value="TimeAllocationMutator"/>
            <param name="weight"value="0.1"/>
        </parameterset>
    
        <parameterset type="strategysettings">
            <param name="strategyName"value="ChangeSingleTripMode"/>
            <param name="weight"value="0.1"/>
        </parameterset>
    
        <parameterset type="strategysettings">
            <param name="strategyName"value="SelectExpBeta"/>
            <param name="weight"value="0.7"/>
        </parameterset>
    </module>
    

    每个模块都被赋予一个权重,以确定采取该模块所代表的行动过程的概率。如果策略的权重之和不等于1,则将其归一化。在本例中,每个代理更改其路径的权重为0.2,更改计划计时的概率为0.1,更改出行模式的概率也为0.1。否则,个体人将根据logit模型从她的一组计划中选择一个计划。另见图4.4。

    Replanning according to the above XML-specification
    在较旧版本的配置文件中,您将发现使用编号策略的配置语法(已过时)。
    请注意,将目的地创新和公共交通等扩展策略结合起来(见第3.1.1节)可能并不总是如预期的那样有效。需要小心地将它们结合起来,如有疑惑,与http://matsim.org/faq 联系。

    4.6.1计划生成和删除(选择集生成)

    本小节介绍修改选项集的配置方式。

    4.6.1.1 时间创新
    时间创新可通过下列方式进行添加:

    <param name="strategyName"value="TimeAllocationMutator"/>
    

    可以加上权重,作为计划的设定。如下配置:

    <module name="TimeAllocationMutator">
        ...
    </module>
    

    这种策略可在配置范围内,随机改变活动结束时间(Balmer 2005, Raney 2005)。

    4.6.1.2 路线创新
    路线创新可通过下列方式进行添加:

    <param name="strategyName"value="ReRoute"/>
    

    加上权重,可以作为计划的设定,并在ControllerConfigFile部分(第4.3.1节)中指定路线算法。MATSim 路线方式的描述可见Lefebvre和Balmer(2007)。

    4.6.1.3 出行方式创新
    出行方式创新可通过下列方式进行添加:

    <param name="strategyName"
        value="{ChangeTripMode | ChangeSingleTripMode | TripSubtourModeChoice}"/>
    

    可以加上权重,作为计划的设定。在配置文件中,需要添加一个附加部分:

    <module name="{changeMode | changeMode | subtourModeChoice}">
        <param name="modes"value="car,pt"/>
        ...
    </module>
    

    上述内容,将会在汽车和公共交通之间的模式进行切换。
    ChangeTripMode 随机选择一个人的一个计划并更改交通方式。默认情况下,支持的模式是:驾驶汽车和使用公共交通工具。每个计划只支持一种运输方式。当在一天内使用不同的子旅游模式时,需要使用子旅游模式选择策略。或者,需要考虑车辆可用性。ChangeSingleTripMode 随机选择一个人的计划,并更改一次出行(随机选择)的交通方式。与ChangeTripMode不同,它允许在一个计划中使用多种模式。默认情况下,支持的模式是:驾驶汽车和使用公共交通工具。此外,此策略还可以(可选)考虑车辆可用性。
    更多的模式创新方式可在下列文章中找到(Rieser 2009, Meister 2010, Ciari 2007,2008)

    4.6.1.4计划移除
    每个代理的最大计划数 可按照下面方式进行配置:

    <module name="strategy">
        <param name="maxAgentPlanMemorySize"value="5"/>
        ...
    </module>
    

    如果一个代理最终有更多的计划,MATSim将开始逐个删除计划,直到达到最大计划数。需要删除计划可按照下面方式进行配置:

    <module name="strategy">
        <param name="planSelectorForRemoval"value="..."/>
        ...
    </module>
    

    从版本0.8.x开始,配置文件的注释提供了尽可能的选项。
    这个选项还未研究完善,参见第???节??。默认情况下,如果代理的内存已满,则删除得分最低的计划。

    4.6.2方案选择(选择)

    选择器及其权重也被添加为计划中的一部分:

    <param name="strategyName" value="KeepLastSelected | BestScore | SelectExpBeta
    ChangeExpBeta | SelectRandom | SelectPathSizeLogit"/>
    

    选择器的工作方式如下:

    • KeepLastSelected 保持在上一次迭代中选择的计划。
    • BestScore 选择当前得分最高的计划。
    • SelectExpBeta 在计划之间执行MNL(多项式Logit模型)选择。它可以通过评分配置组2中的BrainExpBeta参数进行配置,该参数是离散选择模型中的比例参数,如公式???所示??。建议将此参数保持为默认值1.0。
    • ChangeExpBeta 更改为不同的计划,概率取决于eΔ得分,Δ分数是两个计划之间的分数差。可以从MNL中取样(见第节)。
    • SelectRandom 在计划之间执行随机选择。
    • SelectPathSizeLogit 根据Frejinger和Bierlaire(2007)描述的路径大小logit模型选择现有计划。它可以通过scoring config组中的PathSizeLogitBeta参数进行配置。此选择器从未被系统地研究过。
      注意,使用 BestScore 时要小心;它倾向于陷入次优计划:由于一次迭代中的随机波动(例如罕见的交通堵塞)而得分很差的计划将永远不会被再次测试。因此,我们建议仅将其与包含随机元素的选择器之一结合使用。

    4.6.3创新关闭

    出于理论上的原因(第???节),最终关闭创新策略是有意义的,因此从那时起保持每个代理的计划集不变。此行为可以通过如下方式进行配置:

    <param name=“fractionOfItrationsToDisableInovation” value = “…” />
    

    将其与MSA(连续平均法)分数平均法(第5.3.3节)一起使用是有意义的。

    4.7观测模块

    4.7.1行程时间计算器

    例如,寻路模块需要对所有道路路网进行出行时间估算。为了使计算工作可行,行程时间估算会被聚合到时间箱中。此聚合的参数(如bin size)可以在配置文件部分travelTimeCalculator中指定。

    4.7.2路网状态

    模拟是通过逐次迭代完成的,或者是多次迭代的平均值,可以通过修改配置文件,来指定各条道路模拟统计信息的输出间隔。作为其众多函数之一,linkstats用于与计数值进行比较,如第6.3节所述。

    4.8 更多信息

    模拟过程最终会生成一个文件 output_config.xml。此文件包含所有用于运行的配置数值,并对大多数配置开关添加注释。这应该是配置开关含义的主要信息来源。如果某些配置开关没有解释,您需要解释,请咨询 unterhttp://matsim.org/faq, 我们将尽快纠正这种状况。

    logfile.log 中还包含一个完整的配置转储,包括所有注释。或者,如第2.1.3节所述,可以生成所有开关(默认值)的完整配置文件。

    我们明确建议不要使用完整的配置文件;而是只指定那些需要特殊指定的参数。因为,根据我们的研究节奏,随着时间的推移,我们会将默认设置更改为我们认为最先进的设置。如果您一定坚持使用完整的配置文件(即自行应用配置所有数值,不允许通过只设置部分配置内容),那么随着时间的推移,您的模拟将偏离我们认为的最佳配置。此外,您的配置文件也会有兼容性问题,因为我们可能会随着时间的推移修改或删除某些配置。自动生成输出的 out_config_reduced.xml 可以用作指定配置文件的起点。

    相关文章

      网友评论

        本文标题:004_有关配置MATSim的详细信息

        本文链接:https://www.haomeiwen.com/subject/gjbrjltx.html