|
MATSIM
|
Packages | |
| package | costcalculators |
| package | priorityqueue |
| package | speedy |
| package | util |
Contains different routing algorithms and org.matsim.core.population.algorithms.PlanAlgorithm PlanAlgorithms} to use the routing algorithms on plans.
The routing algorithms, responsible for finding the least-cost-path between two nodes in the network, all implement the interface org.matsim.core.router.util.LeastCostPathCalculator. Currently implemented are PlansCalcRouteDijkstra Dijkstra's shortest path algorithm} and some optimizing variants of it (e.g. AStarLandmarks A* with Landmarks}).
As the routing algorithms are all time-dependent, they need not only weights on the links, but time-dependent weights and additionally the (estimated) travel times on these links. This data is provided by the interfaces org.matsim.core.router.util.TravelTime, org.matsim.core.router.util.TravelDisutility and org.matsim.core.router.util.TravelMinDisutility. A few commonly used implementations of these interfaces can be found in the subpackage costcalculators.
All modes are not necessarily routed on the network; moreover, a trip may consist in a series of stages (movements with one vehicle, reprensented by legs), which may be separated by "dummy" activities ("<i>stage activities</i>"). A trip is defined as the longest sequence of consecutive plan elements consisting only of legs and stage activities. For this, the following three layer architecture is provided:
The behaviour can be modified by implementing custom org.matsim.core.router.RoutingModules.
The previous behavior was based on legs rather than trips: the corresponding classes are temporarily kept in the org.matsim.core.router.old package for backward compatibility.
Note that the routing algorithms are generally seen as not thread-safe! If threads are used, one must ensure that each thread uses its own instance of a routing algorithm.
1.8.13