我感兴趣的是使用MATSim API计算基于链路权重的交通仿真路线。每个环节都有一个安全指标的属性,计算出的路径应该代表最安全的路径。Dijkstra路由算法计算最短路径。如果我能指定算法应该考虑安全指数而不是长度,那么使用它是非常完美的。我不知道在MATSim中是否可能做到这一点,也不知道是如何做到的。或者其他在MATSim中实现的路由算法可以更好地适应。
谢谢!
发布于 2016-06-08 10:11:19
这应该是可能的,实现您自己的TravelDisutility。查看一下org.matsim.core.router.util.TravelDisutility接口。在org.matsim.core.router.costcalculators.FreespeedTravelTimeAndDisutility中可以找到一个只考虑自由速度的实现。您可以从这个开始并对其进行调整,这样getLinkTravelDisutility()将返回一个值,而不是基于速度,而是基于您的精明索引。请注意,值必须大于0,小值(即接近0)优于较大值。
我不知道你是如何计算你的安全指数的,但是你应该用链接的长度来规范它。否则,与一系列短链接相比,可以选择一个长链接,尽管它们都具有相同的安全值。
一旦有了实现,就可以使用Guice绑定它。这方面的一个例子可以在类org.matsim.run.InitRoutes中找到。然后,它应该用于MATSim中的路由。
https://stackoverflow.com/questions/37682169
复制相似问题