Realistic micro-simulations also need to simulate other modes of transportation besides the car, such as buses, light rail, walking, bicycle. This makes micro-simulation codes considerably more complicated to program and to run, the latter in particular since all the additional information needs to be coded into file, which need to be interpreted correctly by the simulation.
There is however a trick which considerably simplifies the situation in many cases: As long as there is no congestion and no interaction between modes, modes can be treated as ``following there schedule''. That is, without congestion a subway or a bus will just depart and arrive as noted in the schedule, and a pedestrian will walk exactly with the expected speed. Since this means predictable behavior, such trips or legs can be preplanned by the router, and the microsimulation just follows the plan. More technically, if a car-only microsimulation encounters a leg which is not car-based, it would process the leg according to departure and arrival information from the plan. In this way, the problem of multi-modal traffic is delegated to the router.
The situation changes when the other modes suffer from congestion, or when there is interaction between modes. Examples of the former are pedestrian congestion in subway stations, or overcrowded buses. An example of the latter is the interaction between pedestrians and cars on crosswalks. In those cases, a direct implementation of other modes into the micro-simulation will be necessary. Some elements, such as buses or light rail stuck in traffic, can be modeled within the queue model. For other aspects, more realistic micro-simulations will be necessary.
In such a more realistic micro-simulation, some aspects can in fact be modeled without too much effort. For example, buses are treated similarly to cars (i.e. they follow a route), with the distinction that every time they approach a bus stop, they move into the right lane and stop there. A light rail (``Tram'') is modelled essentially a bus but with very strong lane restrictions, that is, it has to stay on its tracks. If the tracks are embedded in regular traffic, then the tram will just do standard car following; if the tracks are separate, then the tram will run at free speed except for stops.
Other interactions are more difficult to model and need additional or separate models. For example, pedestrian congestion follows different rules than traffic congestion; there are computer codes which simulate this. One could connect such a pedestrian code with a traffic simulation code. Major implementation problems occur when such simulations need to be coupled, for example, when pedestrians crossing a street interact with the car traffic on the street. Little technology seems to be known to couple these simulations without having to rewrite at least one of them to integrate it into the code of the other. Our own expectation is that for the foreseeable future enough progress can be made by working on other aspects of the problem, until some better technology becomes available. Clearly, other areas of simulation have similar problems.