Extending travel-time based models for dynamic network loading and assignment, to achieve adherence to ﬁrst-in-ﬁrst-out and link capacities

An important class of models for macroscopic dynamic network loading (DNL) and dynamic trafﬁc assignment (DTA) is based on treating link travel times as a function of link occupancy. However, these models suffer from some problems or deﬁciencies namely (a) the link outﬂows can violate ﬁrst-in-ﬁrst-out (FIFO), (b) the link outﬂows can exceed the link outﬂow capacities, (c) the link inﬂows can exceed the link inﬂow capacities, and (d) the link occupancies can exceed the link occupancy capacities. In this paper we introduce methods to overcome each of these problems. To remove problems (a) and (b) we extend the link travel-time model to better reﬂect behaviour when trafﬁc ﬂow is varying over time. To remove problems (c) and (d) we introduce more substantial changes in the model, to introduce capacities, spillback and queues compatible with the model. These extensions strengthen the realism, behavioural basis and usability of the link travel-time model and the DNL and DTA models that are based on it. They have no obvious adverse implications or side effects and require little additional computational effort. The original model is a special case of the new/extended model: the above extensions are activated if and only if any of the problems (a)–(d) arise, otherwise the new model reduces to the original model. (cid:2) 2014 The Authors. Published by Elsevier Ltd. ThisisanopenaccessarticleundertheCCBY

The model suffers from some problems or deficiencies which we can categorise as the following four: (a) the link outflows can violate first-in-first-out (FIFO), (b) the link outflows can exceed link outflow capacities, (c) the link inflows can exceed link inflow capacities, and (d) the link occupancies can exceed the link occupancy capacities.In this paper we extend the model to remove each of these problems.To remove problems (a) and (b) we revise the model to delay traffic (increase its travel time) if traffic ahead is travelling more slowly.To remove problems (c) and (d) requires more substantial changes in the model, to introduce spillback, queues and capacity constraints to keep traffic from flowing into links when this would exceed its inflow or occupancy capacity.These revisions and extensions strengthen the realism of the model, have no obvious adverse implications or side effects, and require little additional computational effort.How to obtain numerical estimates for the capacities referred to in (b), (c) and (d) is discussed in Appendix A.
An important feature of the new/revised model introduced in this paper is that, if no violations of the types (a) to (d) above are encountered, then the new model reduces to the current model.Each of the features of new model is triggered if and only if the current model violates, or is about to violate, the corresponding feature (a)-(d) above.In that sense, we lose none of the properties or features of the current model, except when it would otherwise violate FIFO or some of the various capacities.The new model can thus be viewed as an extension of the current model that is activated only when needed to avoid any or all of the problems (a)- (d).When FIFO violations occur in the current model then the model breaks down, yields negative outflows and hence no meaningful solution (see Section 4.1).Also, since capacities are not included in the current model there is nothing to prevent them being unintentionally violated and in that case the model yields solution that may not be feasible in practice (see Section 4.1).Hence the choice is not between a revised/extended model and the original model, but is a choice between a revised/extended model and the original model in circumstances when the latter provides no solution or a solution that is not feasible in practice.
Problem (a) above, namely FIFO violation, has been mentioned or discussed in most of the papers referenced here but the discussion has generally been concerned with how to define or identify it or the conditions under which it would not occur, as in Section 2 below, rather than how to adapt or correct the model so that it does not occur.Problems (b)-(d), though equally important, have been considered much less often.2Problems (a) and (b) can be fully described and analysed within a single link hence in this paper we consider them for single links rather than a network.To consider problems (c) and (d), at least some elements of a network are needed since spillback of traffic to preceding links is involved.
First-in-first-out is generally considered an essential property of solutions in macroscopic (flow based) models for dynamic network loading and dynamic traffic assignment for road traffic networks.That is not because it is though that in practice vehicles do not overtake each other or that they adhere strictly to FIFO.Rather, it is for two other reasons.First, if such dynamic traffic assignment models violate FIFO then the resulting solutions can include substantial movements of traffic that are physically impossible or implausible or are not supported by any theory or model of traffic behaviour or traffic control.Second, in practice it seems that vehicles tend on average to exit from links and paths in the same order as they entered them, though there are significant deviations from that (Jin et al. (2006), Jin and Li (2007)).Adherence to FIFO would not need to be enforced in macroscopic DNL models if the overtaking behaviour of vehicles was explicitly or implicitly included in the models.However, that has not yet been done, and even if that were done for some macroscopic DNL models, adherence to FIFO would still be needed or desirable for the remaining DNL models.
It has been shown that if the travel-time functions used in the above DNL or DTA models are linear they will satisfy FIFO (shown by Astarita (1996), Friesz et al. (1993), Xu et al. (1999) Theorem 3.2, Corollary 3.1, Zhu and Marcotte (2000) Theorem 5.1 and Nie and Zhang (2005a)).However, it is important to also have the option of using nonlinear travel-time functions, for reasons that include the following: (a) In the static or steady state case we have the identity x = qs where x is link occupancy, q is the flow rate and s is the link trip time.Substituting a linear travel-time function, i.e. s = a + bx, in x = qs gives a flow-occupancy function q = x/ (a + bx).The latter is everywhere increasing and is asymptotic from below to q = 1/b.Hence linear travel-time functions imply flow-occupancy functions, and flow-density functions, that have no downward sloping part, hence cannot capture the congestion represented by the latter.(b) Nie and Zhang (2005a) have shown that linear travel-time functions can substantially overestimate link travel times due to a so-called double-counting effect.This occurs when the linear functions are applied over a time span with time-varying link occupancies, as in the above class of DNL and DTA models.(c) There does not appear to be empirical evidence that travel-time functions are linear rather than nonlinear, and indeed the linearity assumption is contradicted by empirical evidence from speed-density and flow-density functions, as in (a) above.Linear travel-time functions are often used in the above class of DTA models because, in those models, they happen to satisfy a FIFO property, and not because they are necessarily otherwise realistic.But FIFO should not be the only criterion used in choosing travel-time functions.
As noted above, in most of this paper we focus on single links and, in that case, the distinction between DNL and DTA is not so important.However, in Section 6 we consider DNL for a network hence, as a reminder and for reference it is worth briefly noting what is meant by DNL and how it differs from DTA.In DNL the inflow of traffic to each spatial path at each point in time is taken as given.The DNL problem is then to assign or 'load' these spatial path flows onto the network over time, while respecting conservation of flows within each link and at nodes or junctions where links meet, and respecting whatever methods are being used to propagate the traffic through each link.A DTA, or at least a dynamic user-equilibrium (DUE), is similar to a DNL except that in a DTA the travel times or costs should be the same for all utilised paths associated with each OD pair, and should not be less than the travel times or costs for any unutilised path for that O-D pair.A DTA solution is typically sought by repeatedly solving a DNL, revising or adjusting the inflows to spatial paths each time and re-solving.For example, after each iteration some of the inflow may be taken from paths that were found to have higher travel costs and reallocated to paths that had lower travel costs.
In the next section we consider various current definitions and criteria that test whether FIFO is adhered to, and derive a new test for FIFO for link flows that are based on a link travel-time model.In the light of these tests, in Section 3 we note severe problems that arise when seeking to ensure FIFO for existing DNL and DTA models that are based on link travel-time functions.In Section 4 we revise the travel-time model to remove these FIFO violations and also remove outflow violations.In Section 5 we illustrate this revised/extended model by setting out a numerical example comparing the original model and the extended model.In Section 6 we further revise the DNL model to remove problems (c) and (d) above, namely link inflows exceeding link inflow capacity and link occupancies exceeding link capacities, and in Section 7 we reflect on the results.

Testing for first-in-first-out
FIFO for a road traffic link can be stated as follows.Let t 0 and t 00 be any two times such that t 0 > t 00 .Then FIFO holds if and only if where s(t 0 ) and sðt 00 Þ are the link travel times for traffic entering the link at times t 0 and t 00 respectively.Rearranging (1) gives (Astarita (1996) and Friesz et al. (1993)), thus Another equivalent definition is: FIFO holds if and only if where the prime denotes the first derivative and U(t) and V(t) are the cumulative inflows and outflows respectively for the link up to time t, starting from an empty link (Carey (2004), Zhang and Nie (2005)).
The above characterisations of FIFO do not require that there be an explicit functional relationship between the link travel time s(t), or link exit time s(t), and the time of entry t or link occupancy x(t) at time of entry.They also apply to exit flow models, in which there is no such relationship.However, in the rest of this paper we are concerned with the explicit travel-time functions used in the DNL and DTA literature referred to above and, for those, more specific FIFO conditions can be derived as follows.
Let u(t), v(t) and x(t) denote the inflow rate, outflow rate and occupancy respectively for a link at time t, so that x 0 (t) = u(t) À v(t).Let s(x(t)) be the link travel time for vehicles setting out on the link at time t, where s(x) is a nondecreasing function.
where s 0 (x(t)) of course denotes the derivative with respect to x(t) rather than t.When considering a dynamic loading model, neither x(t) nor x 0 (t) in ( 4) are known in advance, hence (4), like (1) and (2), does not allow one to test for FIFO in advance.In view of that, from (4) we derive a FIFO condition that is somewhat more operational than (4), as follows.
Proposition 1.Let the link travel-time function be s(x) with s(x) > 0 and s 0 ðxÞ P 0. Then s(x) satisfies FIFO for all x P 0 if for all x P 0 where B out is the maximum possible outflow rate for the link.3 Proof.Consider the FIFO condition (4b), (4c).Condition (4b) is always satisfied since both x 0 (t) and s 0 (x) are assumed positive, so that the left-hand-side is positive and the right-hand-side is negative.Now consider (4c), i.e. x 0 (t) negative.The right-hand-side of (4c) is smallest when x 0 (t) is most negative.Since x 0 (t) = u(t) À v(t), x 0 (t) is at its most negative when u(t) = 0 and v(t) is at its maximum B out , in which case x 0 (t) = ÀB out .
Substituting the latter in (4c) gives (5).h Xu et al. (1999), Theorem 3.1, derived a FIFO condition that is similar to (5) except that the maximum possible outflow rate B out is replaced by B in , the maximum possible inflow rate.Using a method very different than above, they showed that, FIFO is ensured if for all x up to the total cumulative inflow.Zhu and Marcotte (2000), Theorem 5.2, introduced a slightly stronger version of (6) to ensure a stronger form of FIFO.Conditions ( 5) and ( 6) do not seem very intuitive and we have not seen any intuitive interpretation in the literature.For those interested in an intuitive interpretation, some intuition may be found in the proof of Proposition 1 and perhaps in the following.From (4a), FIFO holds if and only if ds/dt > À1 where ds/dt = s 0 (x(t))x 0 (t).For simplicity here we drop the t parameter and replace x 0 (t) with Dx so that the FIFO condition is approximated by s 0 (x)Dx > À1, i.e.Ds > À1.The intuition there is that a FIFO violation occurs if and only if Ds < À1, since in that case traffic that enters in time step t exits before traffic that entered one time step earlier.Since s 0 ðxÞ P 0, s 0 (x)Dx > À1 implies that a FIFO violation can occur only if Dx < 0. The intuition is that a FIFO violation can occur only if the travel time s(x) is decreasing, which occurs only if x is decreasing, i.e. when Dx < 0. Also, s(x) will decrease faster when its gradient s 0 (x) is larger, since in that case a small decrease in occupancy x will cause a large fall in the link travel time.Hence a FIFO violation (s 0 (x)Dx > À1) is more likely to occur when s 0 (x) is larger.Let us consider the most negative possible value of Dx, since that will determine how fast x can decrease, and hence determine when the condition s 0 (x)Dx > À1 will hold or be violated.Dx is most negative when there is no inflow to the link and the outflow is at its maximum, namely B out , in which case Dx = ÀB out and the above FIFO condition becomes s 0 (x)(ÀB out ) > À1 or s 0 (x) < 1/B out as in (5).

Restrictiveness of FIFO conditions for existing formulations of DNL/DTA
Neither of the FIFO conditions ( 5), ( 6), nor indeed any of the FIFO conditions (1)-( 4), enables one to determine in advance whether a travel-time function will satisfy FIFO.The conditions ( 5) and ( 6) use an upper bound on inflows or outflows (B in or B out ) but, in the standard forms of the macroscopic DNL model based on travel-time functions s(x(t)), there are no explicit or implicit upper bounds such as B in or B out on link inflows or outflows and no mechanisms for imposing such bounds.For example, in the standard model the outflows from two or more links may merge into a single downstream link and these outflows may far exceed the inflow capacity of the downstream link.To ensure that (5), ( 6) are satisfied we could choose very high values for B in and B out , but that would so restrict s 0 (x) that it would not allow any useful nonlinear travel-time functions s(x).
The FIFO conditions (5) and ( 6) are even more restrictive than noted above, since it seems that there are no nonlinear travel-time functions s(x) will always satisfy (5), (6) to ensure FIFO (Nie and Zhang (2005a)).The only form of travel-time function that has been shown to always ensure FIFO is the linear form, as shown by several authors already noted in the introduction.This has led to a retreat from using nonlinear travel-time functions in favour of using only a linear form, with authors giving the above FIFO problem as the reason.Let time be divided into time steps t = 1,2,. ..., each of length d, so that the clock time at the end of time step t is td.In the rest of this paper we let d = 1 so that td = t.Then t denotes a discrete time step and also denotes the clock time at the instant that time step t ends.To avoid confusion between these two uses of t we will use ''time step'' when referring to the former, otherwise the time t is clock time.
When time is treated as discrete, dynamic network loading for a single link can be set out as follows.Let u(t), v(t) and x(t) denote the inflow, outflow and occupancy respectively for a link in time step t.Then conservation of flow implies The link travel time for traffic entering the link at time t is s(x(t)) so that this traffic exits from the link at time Hence, the outflow v(t) from the link in a discrete time step t is where t 0 = s À1 (t À 1) and t 00 ¼ s À1 ðtÞ denote the link entry times for traffic that exits from the link at the beginning and end respectively of time step t.Eqs. ( 7)-( 9), processed sequentially forward over time, define a dynamic link loading model.

The extended discrete-time model
There a number of problems with above model ( 7)-( 9), which are referred to as problems (a)-(d) in the Abstract and Introduction.In this section we deal with two of these, namely (a) and (b).These problems reflect ways in which the model can deviate from the behaviour of real traffic and to remedy these deviations we need to first discuss how they occur and hence what adjustments or extensions to the model are needed to overcome or eliminate them.
To better understand these deviations we first introduce a new exit flow variable, namely e(t), which is defined differently than the exit flow variable v(t) in ( 9) above.Let e(t) denote the exit rate for traffic u(t) that enters the link in time step t and hence exits from it between times s(x(t À 1)) and s(x(t)).It follows that In contrast, recall that v(t) was defined as the exit flow rate for traffic that exits from the link in time step t and hence entered between times t 0 = s À1 (t À 1) and t 00 ¼ s À1 ðtÞ.Using e(t) rather than v(t) will help in explaining the problems (a) and (b) above and also is a key to remedying these problems.
We can now consider how problems (a) and (b) arise and hence how to overcome them so as to better reflect traffic behaviour.As already discussed in Sections 1-3, the travel-time Eq. ( 8) and the model ( 7)-( 9) allow FIFO violations.That is, it allows traffic u(t), that enters at time t, to exit at time s(t) = t + s(x(t)) even if this means that it overtakes (passes) traffic that entered in previous time steps.In the real world, the traffic u(t) would be held back and slowed down by the preceding traffic so that it would exit after the latter.When traffic is held back by traffic ahead, we can assume that its flow rate builds up to the capacity flow rate B out .Hence, when the original model would yield sðtÞ 6 sðt À 1Þ, we will reset the exit flow rate e(t) to equal the flow capacity B out , which also ensures s(t) > s(t À 1).
An implication of the above FIFO violation, i.e. s(t) < s(t À 1), is that the exit flows ( 9) and (10) become negative, in which case conservation of flow is violated and the model breaks down.The exit flow v(t) in each time step t is given by ( 9) and when s(t) < s(t À 1) the lower limit of integration in (9) exceeds the upper limit, so that the outflow v(t) becomes negative, which is not possible in the real world.In that case, the link occupancy, given by ( 7), will appear to increase as traffic flows out of it, even if no traffic flows into it, which violates flow conservation and produces nonsense results.Eliminating FIFO violations will eliminate the above problems.
There is a second problem that arises even if there are no FIFO violations so that the above problems do not arise.This problem is that the original model allows the link exit flow rate (10) to exceed the maximum (capacity) flow rate for the link.There is nothing in the original model to prevent that.The model assumes that the traffic u(t), which enters in time step t, will exit at time s(t) = t + s(x(t)) even if this is so close to the exit time s(t À 1) of the preceding cohort that the denominator in (10) becomes arbitrarily small.In that case (10) yields an outflow rate e(t) that far exceeds the link exit flow capacity B out .
The flow rate e(t) will even go to +1 if s(t) becomes sufficiently close to s(t À 1), as can be seen from ( 10).When the flow rate e(t) would exceed capacity B out we will reduce the former to just equal the latter, since this reflects what happens in real traffic.In reality, when the flow rate reaches the capacity flow rate, traffic is held back slower by traffic ahead hence has to slow down so that capacity is not exceeded.Capacity is of course not an exact concept since, for example, when traffic catches up with slower traffic ahead it may for a short time adopt a shorter headway than usual, until it adjusts to the speed of the vehicles ahead.This variation in headway implies a variation in flow capacity, since the flow rate is the inverse of headway.However, a fixed capacity is assumed in deterministic traffic flow models, such as the cell transmission model and other exit flow models, and we follow that practice here.We can infer a flow capacity from the given travel-time function s(x(t)) or from the corresponding flow-density or flow-occupancy function, as explained in Appendix A.
We thus propose a new or revised model which consists of taking the original model and making the two adjustments noted in the three paragraphs above.The adjustment for the 'first' of the two problems noted above yields (11a) below and the adjustment for the 'second' of the two problems yields (11b).The resulting exit flow rate is as follows. 4 new ðtÞ ¼ B out if sðxðtÞÞ 6 sðxðt À 1ÞÞ ð11aÞ e new ðtÞ ¼ minfB out ; uðtÞ=½sðxðtÞÞ À sðxðt À 1ÞÞg if sðxðtÞÞ > sðxðt À 1ÞÞ: Adjusting the exit flow rate from e(t) in ( 10) to e new (t) in (11) implies that the travel time must changes from s(t) to s new (t), since the same inflow u(t) now exits at a different rate e new (t) hence takes a longer time to exit.Traffic u(t) enters the link at spread over a single time step t and exits at the flow rate e new (t) hence by conservation of flow we have u(t) Ã 1 = e new (t) Ã (exit time span) hence (exit time span) = u(t)/e new (t).Traffic that enters the link at the beginning of time step t exits at time s(t À 1) and traffic that enters at the end of time step t exits at time s new (t), hence the traffic u(t) exits over a time span s new (t) À s(t À 1).Hence we have s new (t) À s(t À 1) = u(t)/e new (t) and s new ðtÞ ¼ sðt À 1Þ þ uðtÞ=e new ðtÞ ð12Þ and, recalling that link travel time equals the link exit time minus t, we obtain the new link travel time s new (t) = s new (t) À t.
In the above Eqs.( 9), ( 11) and ( 12), the exit time s(x(t À 1)) from the preceding time step t À 1 is assumed known.However, when applying this model sequentially over time, s(x(t À 1)) will be replaced by the new exit time s new (t À 1) that was computed in the preceding time step t À 1.The current s(x(t)) in (11) will continue to be computed using (8).Substituting s new (t À 1) for s(x(t À 1)) in ( 9) gives that is, (9) with t 0 = s À1 (t À 1) and t 00 ¼ s À1 ðtÞ replaced by t 0 = (s new ) À1 (t À 1) and t 00 ¼ ðs new Þ À1 ðtÞ, and substituting s new (t À 1) for s(x(t À 1)) in ( 11) and ( 12) gives the final form of the new extended link loading model, as follows.
Algorithm 1.An algorithm to implement the new travel time and exit flow model (11 0 )-(13 0 ).
At each time t, all terms on the right-hand-side of (11 0 ) are known since s new (t À 1) is known from the previous iteration and s(x(t)) is known from (8).Hence compute e new (t) from (11 0 ) and use the resulting e new (t) to compute s new (t) from (12 0 ).
(b) Satisfies the link outflow capacity B out .That is, e new ðtÞ 6 B out for all t.
(c) Is easily computable.The solution (e new (t), s new (t)) at each time step t is obtained by computing (11 0 )-( 130 ) once in one pass.(d) Reduces to the original model ( 7)-( 9) if the upper bound B out on outflows from the link is not binding, i.e. if it can be omitted from (11 0 ) without affecting the solution.
(e) Yields a solution (e new (t), s new (t)) that can depend on all previous values of x(t).Hence the solution cannot be written as functions of only the current link occupancy x(t).In this way it is unlike the solution of the original model, which can be expressed as (e(x(t)), s(x(t))) for all t. Proof.

The continuous-time model
Though the above discrete-time model will be used in computations, it is also of interest to set out a continuous-time version, as follows.

The original continuous-time model
When time is treated as continuous, the original dynamic network loading for a link can be set out as follows.The travel time t now denotes a point in continuous time rather than a time step.Similarly, u(t), v(t) and x(t) denote the link inflow rate, outflow rate and occupancy respectively at time t.In the conservation equation ( 7), x(t) À x(t À 1) becomes x 0 (t), which reduces (7) to x 0 ðtÞ ¼ uðtÞ À vðtÞ: The travel-time Eq. ( 8) continues to hold, thus where s(x(t)) is still the link travel time for traffic entering the link at time t.Eq. ( 9), which defined v(t), now becomes where sðtÞ ¼ R t 0 s 0 ðrÞdr.Eqs.(7 C ), (8 C ), (9 C ) are the continuous-time equivalent of the discrete-time Eqs. ( 7)-( 9) and define a continuous-time dynamic network loading model for a link.

The extended continuous-time model
In Section 4.1 we extended a discrete-time link flow model to ensure that it satisfied FIFO and exit-flow capacity.The simplest way to introduce the continuous-time equivalent of that model is to take the equations of that model one at a time and, for each equation, set out its continuous-time equivalent.That is what we now do.
Eqs. (7 C ), (8 C ), (9 C ) above have already been converted to continuous time.To extend them to the new extended model we need only replace s(t) with s new (t) in (9 C ), thus The continuous-time version of the extended link loading model is then given by ((11a 0 C ), (12 ), (13 ).The only unknowns on the right-hand-side of (11a 0 C ), (11b 0 C ) are s(x(t)) and s new (t).The former (i.e.s(x(t))) is given by (8 C ) and the latter (i.e.s new (t)) is obtained by integrating (s new (t)) 0 over all earlier values, that is s new ðtÞ ¼ R t r¼0 ðs new ðrÞÞdr, where the earlier values of (s new (t)) 0 are given by ( 120 C ).
The revised link exit time and traversal time can be written s new (t) and s new (t) respectively but cannot be written as s new (x(t)) or s new (x(t)).That is because s new (t) depends on all earlier values of (s new (.)) 0 which, from (12 ), depend on earlier values of u(t) and e new (t) which, from (11b 0 C ), depend on all earlier values of x(.).Hence, s new (t) and s new (t) do not depend only on the current values of x(t).

An example, comparing the original model and the extended model for a single link
To illustrate the difference between the original model and the new extended model we will set out a simple numerical example in this section.Let the inflow rate u(t) be constant u for a sufficiently large number of time steps to ensure that the outflow rate v(t) has settled down to equal the inflow rate u(t) = u and the link travel time and occupancy have also become constant.Then, from time step t onwards let the inflow rate drop to u(t) = ku, where 1 > k > 0. Let the link travel-time function be of the quartic form used in the BPT (Bureau of Public Roads) travel-time function, i.e. let s(x(t)) = a + bx(t) 4 .When the link inflow and travel time are constant, the link occupancy is given by x = (trip time)(flow rate) = s(x)u hence u = x/s(x) = x/ (a + bx 4 ).For simplicity in the numerical example below we let a = b = 1, k = 0.3 and u = 0.337.When u = 0.337 the flowoccupancy function u = x/(a + bx 4 ) implies x = 1.3.

Solution using the original travel-time model (7)-(9)
When the inflow rate drops from u to ku at time step t, the outflow rate v remains unchanged at v = u for a few time steps, because v is determined by ( 9), that is, by traffic flows that entered the link some time steps earlier.Hence, in time step t + 1, substituting u(t) = ku and v(t + 1) = u in the conservation Eq. ( 7), we obtain x(t + 1) = x(t) Using the data assumed above, the inequality in ( 14) reduces to 3.85 > 3.28 so that FIFO is violated by 0.57 time units.FIFO will also be violated in ( 14) if we use any values of u and x such that u > 0.446 and x > 1.10, if we retain the same parameter values as above, i.e., a = b = 1 and k = 0.3.These are just illustrative parameter values and there is a wide range of values of a, b, k, x and u that will yield FIFO violations in the above example.
In time steps after the FIFO violation at time step t + 1, the original model ( 7)-( 9) will yield an incorrect solution.That is because, in the outflow Eq. ( 9), the upper limit of integration in (9) may be lower than the lower limit and, even if it is not, the path between these limits will not be strictly increasing if there are FIFO violations.In that case, over all or part of the time step t, the outflow v(t) computed from (9) will be negative, which makes the occupancies and travel times computed from ( 7)-( 9) erroneous for all future time steps.

Solution using the extended model
The extended model (11 0 )-( 130 ) was run with the data set out in the first paragraph above.There is also a parameter B out , an upper bound on the outflow rate, which is not in the data above as it is not used in the original model.For B out we experimented with various values including B out = 2.0 which is used in Table 1 below.Based on this data the solution is summarised in Table 1.It can be seen that the values of u(t), v(t), x(t) and s(t) are constant over time steps t = 1, 2 and 3: they have converged to constants by holding the inflow u(t) = 0.34 constant for several time steps but only the last three of these time steps are shown.From time step t = 4 onwards the inflow drops from u(4) = 0.3 to u(3) = 0.10 and it is this change in inflows that drives all of the other changes in the other variables.By time step 10 the values of u(t), v(t), x(t) and s(t) have again settled down to a constant level, so our further comments are restricted to time steps 4-9 where the changes take place.
The following features of the solution in Table 1 illustrate some properties of the extended model.
Feature 1.In time steps 4 and 5 the computed exit time s(x(t)) falls from 7.86 to 7.28, which would cause a FIFO violation.Also, in time steps 5 and 6, s(x(t)) is less than the exit time s new (t À 1) of the traffic that entered in the preceding time steps 4 and 5 respectively, which would again be a FIFO violation.In the extended model, these potential FIFO violations are eliminated by increasing the exit times from s(x(t)) to s new (t), so that s new ðtÞ Ps new (t À 1).
Feature 2. In feature 1 above, the potential FIFO violation at time step 5 could have been eliminated by increasing the exit time from s(x(t)) = 7.28 to s new (t À 1) = 7.86.However, it was instead increased to s new (t) = 7.91, which is 0.05 = (7.91À 7.86) more than the minimum needed to ensure FIFO.The reason for that is, if the exit time was increased to just the point where s new (t) = s new (t À 1), then FIFO would not be violated but the implied outflow rate e(t) = u(t)/[s new (t) = s new (t À 1) ] would be infinite, since the inflow u(t) would have to exit in an instant at time s new (t) = s new (t À 1).Because of that, s new (t) is increased further to ensure that the outflow is spread over a sufficiently long time span to ensure that the outflow rate does not exceed B out .That is the purpose of Eqs.(11 0 )-( 130 ) in the extended model.
Feature 3. When the inflow rate u(t) was held at u(t) = 0.34 for several time steps the outflow rate v(t) converged to the same level, v(t) = 0.34 and when the inflow dropped to u(t) = 0.10 for several time steps the outflow v(t) converged to the same level, v(t) = 0.10.However, the decline in v(t) was not monotonic, since its value in time steps 5 to 9 are 0.34, 0.30, 0.31, 0.18, 0.10 and 0.10.That is, v started to decline, then increased again a little and then declined again.This temporary fluctuation in the outflow rate, in response to a fall in inflows, may seem counterintuitive so it is worth explaining it here.First, note that if we set B out = 4 instead of 2, then the above outflows in time steps 5-9 become 0.34, 0.30, 0.33, 0.16, 0.10, 0.10 and if we make B out arbitrarily large they become 0.34, 0.30, 0.34, 0.15, 0.10, 0.10.In both cases the fluctuation (down, up, down) in outflows is larger than in Table 1 above.As explained later below, such fluctuations can be arbitrarily large in the original model but are greatly reduced and damped the extended model.The explanation for the above fluctuation in the outflow rate is as follows.The fall in inflows u(t) from 0.34 to 0.10 caused a fall in the occupancy x(t) which in turn caused a fall in the travel times s(t).But the outflow rate u(t) fell by more than the travel time s(t) hence in the outflow rate equation e(t) = u(t)/[(s(t) À s(t À 1)] the numerator fell by more than the denominator so the outflow rate e(t) falls.After the initial fall in inflow, the inflow u(t) does not fall any further hence the further decreases in travel times s(t) increases the outflow rate, since the outflow is being spread over a shorter time.The traffic that entered in time step 5 exits in time step s new (t) = 7.91, just 0.05 time steps after the traffic that entered in the previous time step 4. Similarly, the traffic that entered in time step 6 exits in time step 7.96, again just 0.05 time steps after the traffic that entered in the previous time step, 5.This crowding together of outflows, caused by the substantial falls in travel times, has the effect of increasing the outflow rate v(t), which explains its temporary increase from 0.30 to 0.31.
After this temporary increase, the outflow continues its decline until it arrives at the same level as the new lower level of inflows 0.10.For different values of the parameters, e.g. a higher value of k, we find that instead of a single fluctuations in the outflow rate there can be two or more such fluctuations in succession before outflow rate settles down to the same lower level as inflows.
The above cycles or fluctuations in the outflow rate, in response to a simple single step drop in inflow, is damped by B out in the extended model.In the original model these fluctuations can be unbounded in size, that is, the outflows can temporarily increase to +infinity in response to even a simple one step fall in the inflow rate.This is because, in the original model, even if we rule out FIFO violations, so that sðtÞ Ps(t À 1), there is nothing in the model to prevent s(t) becoming so close to s(t À 1) that the computed outflow rate e(t) = u(t)/[(s(t) À s(t À 1)] goes to + infinity.Even if outflow rate does not go to + infinity it may become very large, and then fall again and increase again as outlined in the previous paragraphs.In the extended model this fluctuation is reduced or eliminated by the upper bound B out on outflows.
The travel-time functions s = a + bx 4 used in the above example do not have any inherent upper bound or asymptote for x: they imply s ?+ 1 as x ?+1.Since they do not place any upper bound on x we have to choose an appropriate value for B out as discussed in the last paragraph in Appendix A.

A series of consecutive links, omitting merges and diverges
In the original DNL model ( 7)-( 9), link inflow capacity is not included in the model hence the inflows u(t) to a link can easily exceed its inflow capacity.The obvious way to ensure that link inflows do not exceed capacities would seem to be to impose these capacities as upper bounds on the link inflows.However, that is not feasible in the existing model, nor in the revised/ extended model set out in Section 4.1 above, for the following reason.If we place bounds on link inflows, that would restricts the outflows from the preceding links.But the computations for the model proceed sequentially forward over time and space and the outflows from the preceding links have already been determined some time earlier, when those outflows were first entering the preceding links.They were determined by ( 9) in the original model and by ( 90 ) in the revised model.If we place upper bounds on the inflows to links then art of the already determined outflows from the preceding links would have nowhere else to go hence there would be no feasible solution.In the node conservation equations the sum of the outflows from the links pointing into some nodes would exceed the sum of the (capacity bounded) inflows to links pointing out of the node.Fortunately there is a way out of the above seeming impasse, namely provide somewhere else for the link outflows to go if they are not allowed into one of the next downstream links due to an upper bound on the inflows.To do that, introduce a point queue at the exit end of the preceding links, hence at the exit of each link.Traffic can wait in the queue until the inflow capacities on the next downstream links will allow it to move forward out of the queue.To represent this queue in a network, we introduce a new artificial link at the end of each of the given links, which we now refer to as travel links to distinguish them from the new queuing links.
Consider a spatial network consisting of spatial nodes i 2 N connected by spatial links j 2 A, and let t = 1,. .., T, denote time steps over which flows traverse this network.Let k 2 K denote traffic type, and here let k specifically denote a path.We need to introduce paths since (a) some of the equations in the model below refer to each path and some (e.g. the travel-time equations) are based on aggregate flows (sums of path flows) and (b) because the distinction between aggregate flows and path flows is needed when allocating limited inflow capacity among competing inflows.
For each time step t = 1,. .., T, and path k 2 K let: u jk (t) and v jk (t) denote the inflow and outflow respectively for travel link j.
B in and B out denote the capacities for the inflow and outflow respectively for travel link j. u q jk ðtÞ and v q jk ðtÞ denote the inflow and outflow respectively for the queue at the exit end of link j. x jk (t) and x q jk ðtÞ denote the occupancy of travel link j and queue j respectively.
Let the above variables without the k subscript denote their sum over k 2 K(j) where K(j) is the set of paths that use link j.We refer to these sums as aggregate values.
The outflow v jk (t) from each travel link is the inflow u q jk ðtÞ to the associated queuing link, thus v jk ðtÞ ¼ u q jk ðtÞ: ð15:1Þ which also ensures equality of the aggregate flows, thus v j ðtÞ ¼ u q j ðtÞ: ð15:2Þ The conservation equations for the travel links and queues respectively can be written as x jk ðt þ 1Þ ¼ x jk ðtÞ þ u jk ðtÞ À v jk ðtÞ: ð16:1Þ x q jk ðt þ 1Þ ¼ x q jk ðtÞ þ u q jk ðtÞ À v q jk ðtÞ ð16:2Þ These also ensure conservation for the aggregate quantities, thus x j ðt þ 1Þ ¼ x j ðtÞ þ u j ðtÞ À v j ðtÞ: ð16:3Þ x q j ðt þ 1Þ ¼ x q j ðtÞ þ u q j ðtÞ À v q j ðtÞ ð16:4Þ Using the aggregate occupancies x j (t) given by ( 16.3), we can now compute the link travel time, exit time and outflow for each link j.If we use the original model ( 7)-( 9) for this, rather than the extended model from Section 4.1, then these are obtained by simply attaching a j subscript throughout Eqs. ( 8) and ( 9) as follows.The link travel time for traffic entering link j at time t is s j (x j (t)) so that the exit time for this traffic is s j ðx j ðtÞÞ ¼ t þ s j ðx j ðtÞÞ ð17Þ hence, following (9), the outflow from link j in time step t is where t 0 ¼ s À1 j ðt À 1Þ and t 00 ¼ s À1 j ðtÞ denote the link entry times for traffic that exits at the beginning and end respectively of time step t.However, if we instead use the revised model (11 0 )-( 130 ) from Section 4,1, as we would recommend, then we obtain different results than ( 17) and ( 18), but we do not set these out here.The reader can obtain them by adding j subscripts as appropriate throughout Section 4.1.Since the queue is just a device to hold back the outflow from the link, set the queue exit capacity equal to the link exit capacity B out j and the queue outflow v q j ðtÞ should not be let exceed this, thus v q j ðtÞ 6 B out j ð19aÞ Also, the current outflow v q j ðtÞ from the queue cannot exceed the current occupancy of the queue, namely x q j ðtÞ.Thus v q j ðtÞ 6 x q j ð19bÞ Note that the queue can remain empty for a number of time steps even if the travel link is occupied.That is because it takes at least bsð0Þc time steps to traverse the travel link, where bsð0Þc denotes the largest integer less than the free-flow travel time s(0).As a result, if the travel link and queue are both initially empty and traffic then starts flowing into the travel link, it takes at least bsð0Þc time steps before any of this traffic reaches the queue.
Combining (19a) and (19b) gives v q j ðtÞ 6 min½B out j ; x q j ðtÞ ð19cÞ and the right-hand-side of (19c) can be described as the ''sending capacity'' of queue j in time step t.Now consider the capacity restrictions on inflows to a travel link, to obtain the link ''receiving capacity''.The inflow u j (t) to travel link j should not exceed its inflow capacity.The maximum inflow capacity is given by the peak of the flow-occupancy function (see Appendix A) and is denoted here by B in j .Thus we have However, when a link is congested its inflow capacity decreases as its density or occupancy increases above the critical density where flow is maximised.This can be modelled as in the CTM, in which the inflow capacity, or receiving capacity, is described by taking the downward-sloping (congested) part of the unimodal flow-occupancy curve and extending it with a horizontal straight line from its peak back to the vertical (flow) axis.Following the notation introduced above, the flowoccupancy function can be written as B j (x j (t)) and the inflow capacity function can be written as B in j ðx j ðtÞÞ À , which is the downward sloping part extended backwards as described above.We can use this endogenous capacity function to replace the fixed inflow capacity in (19d) thus u j ðtÞ 6 B in j ðx j ðtÞÞ À ð19d 0 Þ The flow u j (t) and capacity B in j ðx j ðtÞÞ À are in units of flow per time step hence are proportional to the length of the time steps used in the model.That raises the possibility, especially if the time steps are large, that the inflow allowed by (19 0 ) could exceed the occupancy capacity of the link or, more specifically, exceed the available occupancy capacity of the link.
The latter is the link occupancy (or jam capacity) x j ðtÞ minus the current link occupancy (the currently utilised capacity).To prevent this violation of occupancy capacity we introduce the following constraint u j ðtÞ 6 x j ðtÞ À ðx j ðtÞ þ x q j ðtÞÞ ð19eÞ This constraint can be explained as follows.In DNL and DTA a queue at the exit end of a link is often treated as ''point'' queue that takes up no physical space and has unbounded capacity.We do not make either of these assumptions here.In the real world the queue at the exit of a link is not just a point but is a physical queue that spreads back along the travel link and occupies space and capacity on the travel link, so that when the queue increases in length then the remaining link length devoted to travel reduces by the same amount.To reflect that we here treat the link capacity as shared flexibly between travel and queue.We can assume that when traffic on the link is at capacity occupancy (jam occupancy) it has the same number of vehicles per unit distance (same density) as traffic in the queue at the exit end of the link.For that reason, when estimating the remaining available occupancy capacity of a link, we take the currently utilised capacity as the total number of vehicles on the link, that is the number of vehicles travelling on the link plus the number in the queue approaching the exit end, i.e. x j ðtÞ þ x q j ðtÞ.Hence the remaining available capacity in the link at time t is x j ðtÞ À ðx j ðtÞ þ x q j ðtÞÞ and (19e) ensures that the inflow u j (t) does not exceed this.
As a result of constraints (19d 0 ) and (19e), potential inflow to a link that would exceed these capacity limits will instead be held back in the queues at the ends of the immediately preceding links, and if these queues are at capacity then the excess will spill further back into queues in earlier links.Note that this also helps reduce potential spillbacks from later links, since it reduces the inflow to these, which in turn reduces the likelihood that they will hit their capacity bounds (19 0 ) or (19e).
If, for whatever reason, one were to use the fixed capacity constraints (19d) instead of (19d 0 ) then the constraints (19e) would become more important.That is because the constraints (19d) would allow larger inflows to the link than (19d 0 ), which would increase the likelihood of the inflows exceeding the available occupancy capacity, which is prevented by (19e).
Combining (19d 0 ) and (19e) gives u j ðtÞ 6 minfB in j ðx j ðtÞÞ À ; x j ðtÞ À ðx j ðtÞ þ x q j ðtÞÞg ð19fÞ and the right-hand-side of (19f) can be described as the ''receiving capacity'' of travel link j in time step t.Now consider a simple scenario in which queue j is followed immediately by travel link denoted j Ã , without any other queues or links merging or diverging at the junction of these two (we consider merges and diverges later below).This implies that the outflow v q j ðtÞ from queue j is the inflow u j Ã ðtÞ to travel link j Ã , that is, v q j ðtÞ ¼ u j Ã ðtÞ.The flows v q j ðtÞ and u j Ã ðtÞ are bounded above by (19c) and (19f) respectively and, in the real world, we can assume that as much traffic as possible will keep moving forward until it hits one or other, or both, of these two bounds.That is,combining (19c),(19f) and v q j ðtÞ ¼ u j Ã ðtÞ gives v q j ðtÞ ¼ u j Ã ðtÞ ¼ minf½B out j ; x q j ðtÞ; ½B in j Ã ðx j Ã ðtÞÞ À ; x j Ã ðtÞ À ðx j Ã ðtÞ þ x q j Ã ðtÞÞg: ð19gÞ That is, the flow from queue j to travel link j Ã is the minimum of the sending capacity of the former and the receiving capacity of the latter.There are similarities between (19g) and the equation for flows from cell to cell in the cell transmission model (Daganzo (1994(Daganzo ( , 1995a(Daganzo ( , 1995c))).Eq. (19g) applies to the whole link while the CTM equation applies to each cell into which the link is divided.

Introducing merges
In DNL the spatial paths are pre-specified.If there is more than one link j which points into link j Ã then a 'merge' rule is needed to allocate the limited inflow capacity B in j Ã ðx j Ã ðtÞÞ À among the competing outflows from the preceding queues.This issue is already well-known and has been discussed for the cell transmission model by Daganzo (1995a), Cayford et al. (1997), Lin and Liu (2010) and others.There it has been found convenient to decompose junctions into a merges and diverges, where a merge consists of two in-links pointing into a single out-link and a diverge consists of a single in-link branching into two out-links.This avoids the complexity of trying to handle merges and diverges simultaneously.
In view of the above literature on merges and diverges, we do not discuss merges further here, except for the following simple example.Suppose that all of the inflow to link j Ã consists of all of the outflows from two or more preceding links j.Introducing a merge rule will require revising Eq. (19g), since the inflow capacity B in j Ã ðx j Ã ðtÞÞ À on the right hand side of (19g) will then have to be shared among the outflows from two or more upstream links.Ultimately, the sharing rule is intended to reflect reality and should be based on empirical observation.For illustration here, let each of the upstream links j that wish to flow into link j Ã be allocated a fraction a jj Ã or a jj Ã ðtÞ, with P j a jj Ã ðtÞ ¼ 1, of the inflow capacity B in j Ã ðx j Ã ðtÞÞ À .For example, these fractions might be based on the outflow capacities of the upstream links j.However, some of the links j may not need to use all of their share a jj Ã ðtÞB in j Ã ðx j Ã ðtÞÞ À , since they are already restricted by the other two variables B out j and x q j ðtÞ on the righthand-side of (19g).In that case, reallocate the unused part of their share among the other upstream links in the existing proportions a jj Ã ðtÞ.For simplicity in the rest of this section we will assume that the inflow capacity B in j Ã ðx j Ã ðtÞÞ À in (19g) is replaced by a capacity e B in j Ã ðx j Ã ðtÞÞ À that reflects the above issues, thus v q j ðtÞ ¼ u j Ã ðtÞ ¼ minf½B out j ; x q j ðtÞ; ½ e B in j Ã ðx j Ã ðtÞÞ À ; x j Ã ðtÞ À ðx j Ã ðtÞ þ x q j Ã ðtÞÞg: ð19g 0 Þ

Introducing diverges
As well as the above merge phenomenon there is also a diverge phenomenon.That is, there may be more than one path using link j and the next DNL assigned downstream link j Ã may be different for some or all of these paths.However, all of this traffic can be shared out properly among the downstream links j Ã by keeping track of the traffic in the queuing link j as follows.Give two labels to each cohort of traffic in queuing link j, one label to denote the time at which it entered the queuing link j and the other label to indicate which path it is scheduled to take when it exits from link j, hence which link j Ã it will enter next.Then let the traffic exit from queue j in the same order as it entered queue j, i.e. exit in FIFO order, and send it to the link j Ã that is already determined by its path label.If the receiving link j Ã can take only some of this traffic, because of its limited inflow capacity, that can leave some traffic at the front of queue j unable to exit from j in the current time step.That in turn can block traffic further back in the queue j from exiting even though it is intended to go to a different downstream link that currently has plenty of inflow capacity available.This is not an artefact or phenomenon caused by the present model but reflects real world reality.Also, it has already been noted for diverges in the cell transmission model, e.g. in Daganzo (1995a).
The above merge and diverge phenomena impose very different kinds of restrictions on link flows.The issues raised in the two above paragraphs are well-known and, as already noted, have been discussed for the cell transmission model and have been implemented in the many dozens of implementations and applications of the cell transmission model.In view of that, we do not discuss these issues further here.
If the above process is followed for all queues pointing into a node or junction i and all travel links pointing out of it, then the following node conservation equations are automatically satisfied without having to be imposed as separate constraints.where B(i) and A(i) respectively denote the set of links pointing into and out of node i.

Discussion and concluding remarks
Link travel-time functions s(x) are widely used as the basis of a class of DNL and DTA models.Since x varies over time in these models, the travel-time functions can be rewritten as s(x(t)), where t can represent discrete or continuous time.When these are applied over time they can violate link FIFO and/or the link outflow, link inflow or link occupancy capacities.The underlying problem is that the link travel-time functions s(x) are essentially static relationships and adding a time parameter is not sufficient to make them truly dynamic.In a static context, link flows, occupancies and hence travel times are constant over time and the problems considered in this paper do not arise.It is our implicit contention in this paper that the FIFO violations and/or outflow capacity violations that arise when using the travel-time functions s(x) in a dynamic context, are due to these functions being static and not adapted to take account of traffic behaviour in a dynamic context.Rather than letting these problems lead to abandoning the use of these functions in dynamic assignment models -there is evidence that this is happening -it seems instead appropriate to suitably adapt them to a dynamic context and that is one of the main purposes of the present paper.
The original travel-time functions s(x(t)) give rise to FIFO violations when there is a sufficiently rapid decline in the link occupancy x, which causes a rapid fall in the travel time s(x(t)).This rapid fall in the travel time can cause the newly entering traffic to travel so much faster than traffic that entered earlier that it catches up with and passes the latter.But this is not what would happen in reality.In reality, the new faster traffic would be slowed down by the slower denser traffic ahead so that FIFO would be preserved, at least in the usual average or approximate sense.In this paper (Section 4) we adapted the travel-time model s(x(t)) to reflect this reality and hence respect FIFO.Also, as observed earlier, the original travel-time functions s(x(t)) can give rise to violations of outflow capacity, for much the same reasons as the FIFO violations above.That is, in the original model, traffic that is travelling faster than the traffic ahead is oblivious of the traffic ahead and hence can exit at the same time as, or almost the same time as, the slower traffic ahead, so that the combined outflow exceeds the link outflow capacity.In reality, the faster traffic would be slowed down by, or held back by, the slower denser traffic ahead so that the traffic would exit spread over a longer time span sufficient to respect the outflow capacity.In this paper (Section 4) we adjust the travel-time model to reflect this reality.
When the travel-time model is revised as above, to remove violations of FIFO and outflow capacity, the resulting revised travel-time model, for traffic entering at any time t, yields a unique well-behaved value for the link travel time and the link outflow rate.This is true whether time is treated as continuous or discrete, though in the latter case the travel times or outflows at times within time steps are obtained by interpolation and hence can depend on the interpolation method.If the original model satisfies both FIFO and outflow capacity then the new/extended model reduces to the original model.Also, if the inflows are constant over time then the extended model reduces to the original model which in turn reduces to a static model with constant travel times and outflows.
The revised travel-time model satisfies a causality condition that is important in dynamic traffic assignment.The causality condition states that traffic entering a link at any time t can be affected only by traffic ahead of it and not by traffic behind it, that is, it can be affected only by traffic that entered at or before time t rather than after time t.The method set out in this paper takes traffic entering at each time t and, if necessary, adjusts (increases) its travel time without adjusting any variables (travel times or flows) for traffic that entered at any earlier times.Also, the method progresses sequentially forward through time to further ensure causality.The original unrevised model s(x(t)) satisfies causality only when it satisfies FIFO.
As well as violating link outflow capacities, the original travel-time functions s(x(t)) can also violate link inflow capacities.The above revision, to remove violations of FIFO and outflow capacities, will tend to reduce but not eliminate the problem of inflow capacity violations, as follows.If link outflows in the original model would exceed outflow capacities, then reducing them to satisfy the outflow capacities will also reduce the inflows to some downstream links, which in turn reduces the likelihood that the inflows to these downstream links will exceed their capacities.
To eliminate violations of link inflow capacities (problem (c) in the abstract and introduction), requires more substantial changes in the model.To avoid exceeding link inflow capacities it was necessary to provide somewhere else to store the traffic until sufficient inflow capacity became available to take it.In the real world this storage location is usually just before the exit end of the preceding links, hence in Section 6 we introduced a queuing link or queue just before the exit of each link.The original travel link thus becomes a travel link followed by a queue.We then impose capacity bounds on inflows to links, knowing that the traffic that is prevented from entering these links can wait in the queues at the ends of preceding links.These link inflow capacities can be the same as, or differ from, the link outflow capacities introduced earlier.To prevent link occupancies exceeding link occupancy capacities (problem (d) in the abstract and introduction) we introduced (19e) and (19f) as described in the paragraphs in which these occur.
As indicated in the above paragraph, the extended model set out in Section 6 eliminates inflow capacity violations for travel links and also eliminates violations of outflow capacities for queues.It does not remove violations of outflow capacity for travel links, but that was dealt with in Section 4. Hence, the two methods, from Sections 4 and 6, complement each other and are to be used together, as noted just after ( 17) and ( 18) above.
In this paper the revisions and extensions of the travel-time functions and the DNL model, and hence DTA model, are designed to solve the problems (a)-(d) set out in the introduction.As already noted, many papers have been written discussing the properties and solution methods for the original travel-time functions and the DNL and DTA models based on those.Some of those discussions may need to be revisited to consider possible implications of the above revised models.
further outflow from the link and the DNL model breaks down.Because of that, the travel-time curves need to be terminated or ''capped'' at some realistic value of (x, s) which we can denote by ð x; sð xÞÞ.
(ii) Travel-time functions s = h(x) that do not have any upper bound or asymptote for s.In that case, s ?+1 as x ?+1.
Again, this is of course physically impossible, since x ?+1 implies an infinitely large number of vehicles per unit distance, which can produce physically impossible results in DNL.To prevent this, again a realistic jam occupancy can be chosen and the travel-time curve terminated at that point, i.e. at (x, s) = ð x; sð xÞÞ.
The jam occupancy x referred to above can be estimated in various ways.For example it can be estimated as (link length)/ (average vehicle spacing), where (average vehicle spacing) = (average vehicle length + average headway).Average vehicle spacing is sometimes taken as about 8 or 9 yards or about 7 or 8 m but it can vary by region and even by traffic lane where there special lanes for different traffic types.

4.
Revising the travel-time model to ensure that exit capacity and FIFO are adhered to 4.1.The discrete-time model 4.1.1.The original discrete-time model ðtÞ ¼ D ik ðtÞ þ X j2AðiÞ u jk ðtÞ for all i 2 N and k 2 K ð20:1Þ X j2BðiÞ v q j ðtÞ ¼ D i ðtÞ þ X j2AðiÞ u j ðtÞ for all i 2 N ð20:2Þ Traffic enters the link at time t and exits at time s(t) = t + s(x(t)) hence FIFO holds if and only if s(t) increases as t increases, i.e. if and only if ds(t)/dt > 0, hence if and only if 1 þ s 0 ðxðtÞÞx 0 ðtÞ > 0: ð4aÞ or equivalently, if and only if s 0 ðxðtÞÞ > À1=x 0 ðtÞ if x 0 ðtÞ is positive and ð4bÞ s 0 ðxðtÞÞ < À1=x 0 ðtÞ if x 0 ðtÞ is negative Traffic that entered in time step t exits at time s(t)) = t + [a + bx(t) 4 ].Hence, for traffic entering in time steps t and t + 1, FIFO is violated if and only if t + [a + bx(t) 4

Table 1
Solution of a numerical example using the extended model.The 'potential FIFO gap' in column 8 is s(t) À s new (t À 1) and is negative if there is a potential FIFO violation.The numbers in bold in this table are featured in the text discussing the table.