【问题标题】:Calculating safest route in MATSim在 MATSim 中计算最安全的路线
【发布时间】:2016-06-07 14:30:57
【问题描述】:

我有兴趣使用 MATSim API 根据链接的权重计算路线以进行交通模拟。每个链接都有一个安全指数属性,计算出的路线应该代表最安全的路径。 Dijkstra 路由算法计算最短路径。使用它是完美的,只要我可以指定算法应该考虑安全指数而不是长度。我不知道是否可以在 MATSim 中做到这一点以及如何做到这一点。或者也许其他在 MATSim 中实现的路由算法更适合。

谢谢!

【问题讨论】:

  • 那么...你的问题是什么?

标签: java dijkstra traffic-simulation


【解决方案1】:

这应该可以实现您自己的 TravelDisutility-Class。看看界面org.matsim.core.router.util.TravelDisutility。在org.matsim.core.router.costcalculators.FreespeedTravelTimeAndDisutility 中可以找到仅查看免费速度的实现。您可以从这个开始并对其进行调整,以便getLinkTravelDisutility() 将返回一个值,而不是基于速度,而是基于您的保存索引。请注意,值必须大于0,并且较小的值(即接近 0)优于较大的值。

我不知道您是如何计算安全指数的,但您应该通过链接长度以某种方式对其进行标准化。否则,一个长链接可能优于一系列短链接,即使它们都具有相同的安全值。

一旦你有了你的实现,你就可以使用 Guice 绑定它。这方面的一个例子可以在org.matsim.run.InitRoutes 类中找到。那么它应该用于MATSim中的路由。

【讨论】:

  • 感谢您的帮助!我直接在 network.xml 文件中将 freespeed 的值更改为安全指数。首先,我运行了 XY2Links.run 方法,该方法创建了新的计划文件,其中包含用于起点和终点的规定链接。在我运行 InitRoutes.run 方法之后。
  • @DanaKazi:滥用免费速度作为安全指标是非常危险的!它只有在你只计算路线时才有效,没有别的!一旦你使用同一个网络进行模拟,模拟就会使用安全指数作为限速,那么你的模拟中的流量就会非常错误!
猜你喜欢
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多