我有興趣根據使用MATSim API進行交通模擬的鏈路權重來計算路線。每條鏈路都有一個安全索引屬性,計算出的路由應該代表最安全的路徑。 Dijkstra路由算法計算最短路徑。如果我只能指定算法應該考慮安全索引而不是長度,那麼使用它是完美的。我不知道是否可以在MATSim中做到這一點,以及如何。或者在MATSim中實現的其他路由算法可以更好地適應。在MATSim中計算最安全的路線
謝謝!
我有興趣根據使用MATSim API進行交通模擬的鏈路權重來計算路線。每條鏈路都有一個安全索引屬性,計算出的路由應該代表最安全的路徑。 Dijkstra路由算法計算最短路徑。如果我只能指定算法應該考慮安全索引而不是長度,那麼使用它是完美的。我不知道是否可以在MATSim中做到這一點,以及如何。或者在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中的路由。
那麼...你的問題是什麼? – Gendarme