我有兴趣使用 MATSim API 根据流量模拟的链接权重计算路线。每个链接都有一个安全指数属性,计算出的路线应该代表最安全的路径。Dijkstra 路由算法计算最短路径。使用它是完美的,只要我可以指定算法应该考虑安全指数而不是长度。我不知道是否可以在 MATSim 中做到这一点以及如何做到这一点。或者也许在 MATSim 中实现的其他路由算法更适合。
谢谢!
我有兴趣使用 MATSim API 根据流量模拟的链接权重计算路线。每个链接都有一个安全指数属性,计算出的路线应该代表最安全的路径。Dijkstra 路由算法计算最短路径。使用它是完美的,只要我可以指定算法应该考虑安全指数而不是长度。我不知道是否可以在 MATSim 中做到这一点以及如何做到这一点。或者也许在 MATSim 中实现的其他路由算法更适合。
谢谢!
这应该可以实现您自己的 TravelDisutility-Class。看看界面org.matsim.core.router.util.TravelDisutility
。可以在 中找到仅查看免费速度的实现org.matsim.core.router.costcalculators.FreespeedTravelTimeAndDisutility
。您可以从这个开始并对其进行调整,以便getLinkTravelDisutility()
返回一个不是基于速度而是基于您的保存索引的值。请注意,值必须大于0
,并且较小的值(即接近 0)优于较大的值。
我不知道你如何计算你的安全指数,但你应该通过链接的长度以某种方式对其进行标准化。否则,一个长链接可能优于一系列短链接,即使它们都可能具有相同的安全值。
一旦你有了你的实现,你就可以使用 Guice 来绑定它。这方面的一个例子可以在类中找到org.matsim.run.InitRoutes
。然后它应该用于 MATSim 中的路由。