 
 
 
 
 
 
 
  
 , where the unit of
velocity is [cells per time-step].  It turns out that reasonable
values are (87,9):
, where the unit of
velocity is [cells per time-step].  It turns out that reasonable
values are (87,9):
 7.5 m (
 7.5 m ( density of
vehicles in a jam).
 density of
vehicles in a jam).
 1 sec
 1 sec
 5 boxes per time step
 5 boxes per time step 
 
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
 meters/sec  95 km/h (59 mph)
and
 95 km/h (59 mph)
and 
 meters/sec
 meters/sec  121 km/h (75 mph).
 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 stored and
the configuration at time step  is computed from that ``old''
information.  Computationally we calculate in 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).
 (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:
 simultaneously, do the following:
IF (  )
 ) 
ELSE IF (  )
 )
        
 (acceleration)
 (acceleration)
ELSE  (i.e. (  AND
 AND  )
 )
        
 (free driving)
 (free driving)
ENDIF
Move all particles  to
 to 
 .
.
 its
maximum speed, gap(i) the number of empty cells
ahead, and
 its
maximum speed, gap(i) the number of empty cells
ahead, and  is a randomization parameter.
 is a randomization parameter.
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 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
, 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
, 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
(with probability  ) and
) and  (with probability
 (with probability
 ).  Note that a vehicle which is set to
).  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
 will go
through the acceleration step next time, thus in the next time step
either staying at  with probability
 with probability  or getting
back to
 or getting
back to  .  Note that the resulting average speed of a freely
driving vehicle is thus
.  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:
 , where
, where  is the
speed.  This would be computationally more burdensome; nevertheless,
studies about the effect are under way.  The effect on the principal
traffic dynamics seem to be minimal (82).
 is the
speed.  This would be computationally more burdensome; nevertheless,
studies about the effect are under way.  The effect on the principal
traffic dynamics seem to be minimal (82). 
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 
![$a(t)
\propto V[\Delta x(t)] - v(t)$](img774.png) or
 or 
![$v(t+\tau) \propto V[\Delta x(t)]$](img775.png) ,
where
,
where  is the acceleration,
 is the acceleration,  is the vehicle's velocity,
 is the vehicle's velocity,  is the space headway,
 is the space headway,  is a desired speed function,
and
 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.
 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.
 ), the gap forward in the target lane (
), the gap forward in the target lane ( ), and the gap
backward in the target lane (
), and the gap
backward in the target lane ( ).  With these results we
calculate the
).  With these results we
calculate the  to
 to  described above. Finally if the
weight comparisons render true the car will change to the new lane.
After executing the lane changing decision we calculate the new
velocity for all cars and move them according to this velocity.
 described above. Finally if the
weight comparisons render true the car will change to the new lane.
After executing the lane changing decision we calculate the new
velocity for all cars and move them according to this velocity.
This lane changing implementation follows a usual structure (110,50):
 ,
is consistent with the condition
,
is consistent with the condition  for the car following;
the backward condition for the target lane,
 for the car following;
the backward condition for the target lane, 
 is
simply a worst case scenario which nevertheless does not perform, in
the analysis of the emergent properties, any worse than a condition
which depends on the velocity of the other
car (compare, e.g., (123)
with (121)).
 is
simply a worst case scenario which nevertheless does not perform, in
the analysis of the emergent properties, any worse than a condition
which depends on the velocity of the other
car (compare, e.g., (123)
with (121)). 
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:
 ) AND (
) AND (
 )
)
THEN change lane
 is calculated according to
 is calculated according to
![\begin{displaymath}
weight4 = \max\left[ { d^* - d \over v_{max} } , 0 \right]
\end{displaymath}](img797.png) 
 is the
remaining distance to the intersection,
 is the
remaining distance to the intersection,  is a parameter; both are
given in the unit of ``cells''.
 is a parameter; both are
given in the unit of ``cells''.   is currently set to 70 cells,
i.e. approx. 500 m or 1/3 of a mile, throughout the simulation.  In
consequence,
 is currently set to 70 cells,
i.e. approx. 500 m or 1/3 of a mile, throughout the simulation.  In
consequence,  increases from zero to
 increases from zero to 
 during
the approach to the intersection.  If
 during
the approach to the intersection.  If  , then it does not
influence lane changing decision.
, then it does not
influence lane changing decision.   has the same effect
as a slower vehicle ahead on the same lane.  Further increases of
 has the same effect
as a slower vehicle ahead on the same lane.  Further increases of
 more and more override the security criterions that the
forward and the backward gap on the destination lane need to be large
enough.
 more and more override the security criterions that the
forward and the backward gap on the destination lane need to be large
enough.  
 lets the vehicle make the lane change
even if only the neighboring cell on the destination lane is free.
 lets the vehicle make the lane change
even if only the neighboring cell on the destination lane is free.
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
 is the result of the last update.  Let
 ,
,  , etc. be intermediate partial time steps.
, etc. be intermediate partial time steps.
 information.
information.
 to calculate
situation at time
 to calculate
situation at time  .
.
 information.
 information.
 information.
 information.
 set to zero, i.e. if it
turns out that the result of the velocity update indeed brings them
into the intersection, they need to go to the site on the destination
lane which was reserved earlier.  Result:
 set to zero, i.e. if it
turns out that the result of the velocity update indeed brings them
into the intersection, they need to go to the site on the destination
lane which was reserved earlier.  Result:  information.
 information.
 
 
 
 
 
 
