matsim-libs
matsim-libs copied to clipboard
How exactly does routing (car, pt) work in MATSim 13 and is it changeable?
Hello everyone,
when I was performing GEH analysis of MATSim model results and real world data, there were only 5% of road profiles that fit into the 5% difference limits. Initial plans were calibrated, so agents mostly have reasonable origins and destinations, that corresponds with statistics. Default routing algorithm for cars is A* Landmarks, but the problem is, that all available algorithms search for the shortest path. It does not always work in the real world, where people often choose the most convenient and easily predictable ways, especially when there are roadsigns, that lead them. They stick to this convenient route no matter how jammed it is.
So I wonder, if there is an algorithm, that takes this behaviour into account, and if so, is it aplicable in MATSim? By that I mean, that some agents will look for true shortest path, and others - for convenient, straightforward one, using mostly roads with higher speed limit and bigger capacity, and, if it is full, waiting in queue.
My second question is: Does SwissRailRaptor reroute agents that use pt, or it chooses always the fastest path at the moment as well? And how is stop choise arranged? Suppose, we have an agent, that has the nearest stop in 50 meters, buses here operate every hour, but the second nearest stop, that is in 200 meters, is serviced by trams every 5 minutes, and real person would rather walk farther, but will depart sooner. I am not sure, that SRR algorithm handles this kind of situations.
Thank you for explanation in advance!
So I wonder, if there is an algorithm, that takes this behaviour into account, and if so, is it aplicable in MATSim? By that I mean, that some agents will look for true shortest path, and others - for convenient, straightforward one, using mostly roads with higher speed limit and bigger capacity, and, if it is full, waiting in queue.
By default, the router searches for the fastest path considering the travel times of the previous iteration. Other options are possible as one can define a Disutilities for traveling a link freely. The Interface for this is TravelDisutility
. Your CustomTravelDisutility
could then consider the preferences of each agent which gets a new route.
I am not sure, that SRR algorithm handles this kind of situations.
It doesn't consider those cases. The PT-Router assumes that everything works out perfectly. Therefore, the advantage of a more frequent service doesn't have an effect on routing descisions.
A little bit late answer from my side, but thank you for bringing some light into this topic, @Janekdererste .
By default, the router searches for the fastest path considering the travel times of the previous iteration
Does it mean, that if I pre-define links that I want agents to pass through in the initial plans, they will more or less stick to that path, if it has enough capacity and they get to their activity in time? If I have, say, 100 or 200 iterations, will the effect of this be negligible after some part of iterations?
I would rather not be using Java interfaces for changing TravelDisutility, because I know basically nothing in Java, but if this is the only way to make agents drive the way we expect them to drive, I need to be aware of that, and sacrifice some time to figurie out how to get it done in Java.
The behaviour I want to implement is similar to how VISSIM (I guess? Maybe I mean other simulator) can treat pre-defined values of flow intensity, it is enough just to set that value on some link and router will try to guide as many cars as the flow value says through that link.