如何创建多主体传输模型

哈Ha!

想象一下,我们有一项建设新道路的任务。您可以在每个方向上建立两条车道的高速公路,但是如果这还不够呢?或者相反,事实证明,一块土地就足够了,但是对于项目的实施,有必要购买许多土地吗?在这两种情况下,该决定都是无效的。为了最大程度地降低此类风险,运输计划人员会向计算机建模寻求帮助。本文是对多主体建模领域的简要介绍。



使用模型(该模型是实际运输系统的副本),您可以估计预计道路的每个部分的必要吞吐量,尝试不同的跟踪选项,或者例如在公私合营框架下估计收费公路的项目投资回收期。但是还有其他重要的任务可以解决:如何组织最佳的公共交通路线并计算运营商的潜在收入,如何评估特定区域中停车位不足的存在,等等。

最有趣的是,在自由软件时代,任何人都可以构建类似的模型!

开源是最常见的多主体建模工具之一。MATSim(多代理传输仿真)

MATSim模拟单个代理的行为。代理是现实世界中个人的计算机表示。每个这样的代理都有一个日常计划,他根据该计划从一项活动转移到另一项活动(例如,家庭工作家庭,家庭研究所工作家庭,家庭商店工作1-工作2-家庭等),创建因此对道路基础设施的需求。每日计划的示意图表示如下:

图片

为了创建能反映白天人们真实行为的代理商的现实计划,要考虑代理商居民的总数,他们的安置,工作地点,学习场所,商店,购物中心,火车站和其他活动场所。为了验证需求,还基于现场调查对模型进行了校准:使用神经网络或(例如)道路强度的手动测量来识别和计算监视摄像机和无人机的流量。

图片

在模拟过程中,代理商分布在网络上,模仿人们的真实行为:实施他们的计划,汽车在道路和停车位上占据一席之地,公交用户在公交车上占位,并且彼此交互,如果许多代理商一次选择一条道路,造成交通堵塞和拥堵。一切都像现实世界一样!

模拟完成后,将评估座席的日常计划的执行情况,称为得分。代理人在活动过程中获得公用事业单位,而在活动过程中丢失它们。因此,陷入交通拥堵的代理商比沿自由道路移动的代理商损失更多的公用事业单位。

每次迭代之后,某些代理商都会根据有关路网负荷的信息来重建其计划,以提高其性能:代理商可以更改出发时间,更改运输方式或更改路线。其余代理遵循其先前的计划,这些计划存储在程序存储器中。

理想情况下,在模拟之后,应达到Nash平衡-也就是说,没有任何代理人可以提高其位置而不恶化其他代理人的位置。通常,考虑到居民每天对前一天的经历的重新思考,这种情况会随着时间在城市道路上逐步发展。为此,在一种情况下至少执行200次迭代。整个MATSim工作周期如下所示:

图片

从理论到实践!


要运行第一种情况,我们需要板载Java 1.8的Intellij IDEA(或Eclipse)。
我们打开IDE,从github 克隆MATSim存储库,第一个方案已准备就绪!很简单。但是首先让我们看看我们使用什么输入文件。对于最简单的模拟,共有三个:网络,计划,配置。

网络


网络文件是代理程序在其上移动的网络。它由节点和节点/链接组成。每个链接具有不同的属性:类型,路段长度,吞吐量,最大速度,车道数量,单向交通,允许的运输方式等。

图片

手动创建城市网格非常困难,不切实际且效率低下。例如,我们的圣彼得堡网格由26,000个节点和46,000个链接组成。但是有个好消息。可以从OpenStreetMap转换网格,然后使用也是开源的JOSM进行编辑。

计划


计划文件是代理商日常计划的结构化表示。在最初的情况下,我们有100名特工在早上(end_time =“ 05:59”)从家中(类型=“ h”,链接=“ 1”)开车(工作方式=“汽车”)离开工作(类型= “ W”,链接=“ 20”),之后一段时间(dur =“ 02:30”),他们返回家中。



设定档


最后,在配置文件中,所有必需的设置都已设置为运行脚本。MATSim包含您可以根据需要自定义,添加或删除的模块。
配置文件中的许多设置都很直观,但是您也可以随时查看所谓的。MATSim书现在,我们将仅考虑两个模块。
计分参数在planCalcScore模块中设置:例如,特工收到18个单位的迟到罚款。每小时的效用(分别是,延迟10分钟相当于损失3个效用单位);某项活动(例如表演)的表现每小时可带来6个效用单位,而驾车的成本则为每小时6个效用单位。时间。”

在策略模块,重新规划的参数配置,例如,什么药(ModuleProbability)的比例将尝试下一个迭代过程中新的路由(重路由)。



因此,仿真的目标是帮助从A点代理获取到B点以最低的成本。

脚本运行


是时候打开RunMatsim运行程序并运行我们的第一个脚本了!

仿真结果将位于项目根目录的输出文件夹中。可视化的主要文件是网络和事件。事件文件包含有关每个代理的所有动作的每秒信息,因此,基于该文件,您可以恢复所有代理的运动的全貌。您可以使用Via可视化结果
为了获得更具代表性的结果,我将代理数量增加到500。这是第一次迭代后500个代理的分布情况……



迭代开始时,代理使用Dijkstra计算出了最短的方法结果,网络的一个部分中的流量强度超过其吞吐量,形成了拥塞。但是,如果您给他们机会尝试不同的路线怎么办?



经过200次迭代(〜5分钟)后,代理已通过网络重新分配,链路负载级别现在不超过0.5,所有代理的平均旅行时间减少了14%(5分钟)。万岁,我们已经克服了软木塞!

哦,就这么简单!实际上,运输系统要复杂得多。在以下文章中,我将告诉您如何参与圣彼得堡和其他城市的模型开发以及如何解决实际案例中的实际问题。Scientia潜力EST!



由OTSLab运输分析师Andrey Kolomatsky发表。

All Articles