Note that this approach implies a coarse graining of the spatial and temporal resolution and therefore of the velocities. A vehicle which has a speed of, say, 4 in this model stands for a vehicle which has a speed anywhere between meters/sec 95 km/h (59 mph) and meters/sec 121 km/h (75 mph).
Vehicles move only in one direction. For an arbitrary configuration (velocity and position), one update of the traffic system consists of two steps: a velocity update step consisting of three consecutive rules, and a movement step according to the result of the velocity update. The whole update is performed simultaneously for all vehicles. The complete configuration at time step is stored and the configuration at time step is computed from that ``old'' information. Computationally we calculate in time step (with the three rules) the new velocity of each car and write this newly calculated velocity in the same site without moving the car (velocity update). After that we move all cars according to their newly calculated velocity (movement update).
For all particles simultaneously, do the following:
IF ( )
ELSE IF ( )
(acceleration)
ELSE (i.e. ( AND )
(free driving)
ENDIF
Move all particles to .
The first velocity rule represents noisy car following or braking. If the vehicle ahead is too close, the vehicle itself attempts to adjusts its velocity such that it would, in the next time-step, reach a position just behind where the vehicle ahead is at the moment. Yet, with probability , the vehicle is a bit slower than this.
The second velocity rule represents noisy acceleration. Essentially, the acceleration is linear (i.e. independent from current speed), but with probability , no acceleration happens in the current time step (maybe as a result of switching gears etc.). Instead of an acceleration sequence of , a possible acceleration sequence can now be .
The last velocity rule represents free driving. Instead of remaining always at the same speed, such vehicles fluctuate between (with probability ) and (with probability ). Note that a vehicle which is set to will go through the acceleration step next time, thus in the next time step either staying at with probability or getting back to . Note that the resulting average speed of a freely driving vehicle is thus .
In terms of a microscopic foundation, the model is composed of the following elements:
Somewhat shorter, the model enforces constant time headway for close following and for braking, but acceleration is ``delayed''. This puts the model into a large class of dynamically similar models which use ``time delayed'' constant time headway, e.g. of the type or , where is the acceleration, is the vehicle's velocity, is the space headway, is a desired speed function, and is a time delay. It is certainly arguable that this does not catch all aspects of traffic; yet, all of these models are remarkably robust with respect to their traffic dynamics behavior, both in microscopic (6,78,68) and in fluid-dynamical (62,69) implementations.
According to this lane changing rule set the vehicles are only moving sideways during the lane changing step; forwards movement is done in the vehicle movement step. One should, though, look at the combined effect of the lane changing and vehicle movement, and then vehicles will usually have moved sideways and forwards. The decision to change lane is implemented as strictly parallel update, i.e. each vehicle is making its decision based upon the configuration at the beginning of the update.
This lane changing implementation follows a usual structure (110,50):
For three or more lanes, a simultaneous implementation of the lane changing decision can lead to collisions. For example, in a three-lane road two vehicles on the left and right lane could decide to go to the same spot in the middle lane. From an algorithmic point of view, this is possible because the lane changing decision is based on the configuration on time t; but it is also an entirely realistic situation.32.6 To avoid collision we only allow lane changes in a certain direction in each time step:
THEN start procedure lane changing decision to the left for cars on the middle and then on the right lane
THEN start procedure lane changing decision to the right side for cars on the middle and then on the left lane
This is achieved in Transims by supplementing the basic lane changing rules with a bias towards the intended lanes. This bias increases with increasing urgency, i.e. with decreasing distance to the intersection. Technically, this is achieved by adding another weight to the acceptance conditions for lane changing:
THEN change lane
Once a vehicle is in one of the ``correct'' lanes within 70 cells (525 m) of the intersection, it is only allowed to change lanes if the target lane is also ``correct''. For movements that are allowed on multiple lanes through the intersection, this leads to equal usage of these lanes. This algorithm is not capable of leaving a single ``correct'' lane temporarily when encountering, say, a stopped bus on the same lane.
The general modeling principle for this in Transims is based on a gap acceptance in the opposing (in Transims sometimes called ``interfering'') lanes, see Fig. 32.1 (d). Opposing lanes are the lanes which have priority; for example, for a stop-controlled left turn onto a major road this would be all lanes coming from the left plus the leftmost lane coming from the right. In order to accept the turn, there has to be a sufficient gap in each of these lanes.
Note that ``gap divided by the velocity of the oncoming vehicle'' is the oncoming vehicle's time headway, so the dynamics of this follows the Highway Capacity Manual (114). If one wants a time headway on an opposing lane of at least 3 seconds, then a vehicle with a velocity of 4 cells/second would have to be at least 12 cells away from the intersection.
The current Transims microsimulation uses a gap acceptance (gap between intersection and nearest car to the intersection which is approaching) of 3 times the oncoming vehicle's velocity, i.e. when the gap on each opposing lane is larger than or equal to the first vehicle on that lane, the move is accepted. For example, if the oncoming vehicle has a speed of 3, at least 9 empty cells have to be between the oncoming vehicle and the intersection. A special case is if the oncoming vehicle has the velocity zero, in which case no gap is necessary.
When a simulated vehicle approaches a signalized intersection, the algorithm first decides if, according to its current speed, it potentially wants to leave the link, i.e. its current speed (in cells per update) is larger than or equal to the remaining number of cells on the link.32.7 If a vehicle wants to leave the link, the algorithm checks the ``traffic control'', which determines if the vehicle can leave the link. If it encounters a red light, it can not leave the link and no further action is taken. If it encounters a protected (green arrow) or caution (yellow) signal, the vehicle is allowed to enter the intersection. If it encounters a permitted signal (green, for example permitted left turn against oncoming traffic), the vehicle checks all opposing flows for a gap that is larger or equal to 3 times the oncoming vehicle's velocity (see Subsec. 32.4.4 above).
If the movement into the intersection is accepted, the vehicle is moved into an ``intersection queue''; there is one queue for each incoming lane. This queue models vehicle behavior inside an intersection. The vehicle gets a ``time stamp'', before which it is not allowed to leave the intersection; this time stamp is representative of the duration of the movement through the intersection. The intersection queues have finite capacity; once they are full, no more vehicles are accepted and the vehicles start to queue up on the link. This models the finite vehicle storing capacity of an intersection.
Once a vehicle is ready to leave the intersection, it moves to the first cell on the destination link if available. The speed of the vehicle is not changed when it is in the intersection queue so it exits on the destination link in the first cell with the same velocity that it had when it entered the queue.
Note that vehicles turning against opposing traffic make their decision to accept the turn when they enter the intersection queue, not when they leave it. This can have the effect that a vehicle enters the intersection queue when there is no oncoming traffic, but, because of other vehicles ahead of it in the same queue, cannot make its turn immediately. Yet, since the turn was already accepted, it will be executed as soon as all vehicles ahead in the same queue have cleared the queue and a cell on the destination link is available. The turn can occur during oncoming traffic. So in some sense vehicles will go ``through'' each other. Yet, note that on average the result is still correct. The approach described above will not let more vehicles through the intersection than a gap acceptance calculated when leaving the intersection queue. The above logic was chosen for simplification purposes since unsignalized intersections (see below) do not have queues and thus need to make their acceptance decisions when entering the intersection.
When a simulated vehicle approaches an unsignalized intersection, the algorithm first decides if, according to its current speed, it potentially wants to leave the link, i.e. its current speed (in cells per update) is larger than or equal to the remaining number of sites on the link. If a vehicle wants to leave the link, the algorithm checks the ``traffic control'', which determines if the vehicle can leave the link. Currently occuring traffic controls are: no control, yield, and stop.
If a ``no control'' is encountered, the vehicle is moved to its destination cell without any further checks. For example, if a vehicle has a velocity of 5 cells per update and 2 more cells to go on its link, then it attempts to go 3 cells into the destination link. If that cell is already reserved (either by another ``reservation'' or by a real vehicle), then the next closer cell is attempted, etc., until the algorithm either finds an empty cell or returns that the destination lane is full. ``No control'' is usually used for the major directions, i.e. for the lanes which have priority.
If a yield sign is encountered, the vehicle checks the gap on all opposing lanes. According to the same rules as above, on all opposing lanes the gap needs to be larger or equal three times the first vehicle's speed on that lane. If the movement is accepted, the destination cell is selected according to the same rules as with the ``no control'' case.
If it encounters a stop sign, the vehicle is brought to a stop. Only when the vehicle has a velocity of zero for at least one time step on the last cell of the link is it allowed to continue. If the result of the regular velocity update indeed accelerates the vehicle,32.9 then it attempts to go through the intersection. On all opposing lanes the gap, according to the same rules as above, needs to be larger or equal to three times the first vehicle's speed on that lane. If the movement is accepted, a vehicle coming from a stop sign will always go to the first cell on the destination link (if empty) and will have a velocity of one.
The current Transims microsimulation has these boundaries always in the middle of links. This is done in order to keep the complexity of the parallel computing logic as far away as possible from the complexity of the intersection logic.
Information needs to be exchanged at the boundaries several times per update in order to keep the dynamics consistent. For example, if a vehicle changes lanes and ends up close in front of another one, that other one is probably forced to brake. Now, if the lane changing vehicle is on one CPU and the following one on another, one needs to communicate the lane change. This will be called ``Update boundaries'' in the following section.
The complete update of the current Transims microsimulation is as follows. Assume that the state at time is the result of the last update. Let , , etc. be intermediate partial time steps.