在 MATSim 中计算最安全的路线

Calculating safest route in MATSim

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

谢谢!

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

我不知道你是如何计算你的安全指数的,但你应该以某种方式通过 link 的长度对其进行归一化。否则,一个长 link 可能比一系列短 link 更受欢迎,即使它们可能都具有相同的安全值。

实现后,您可以使用 Guice 绑定它。在 class org.matsim.run.InitRoutes 中可以找到这方面的示例。然后它应该用于MATSim中的路由。