Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
TABenchmark
TABenchmark

Overview

  • TABenchmark
  • TABenchmark Architecture
  • The TABenchmark Model Compendium
  • Numerical Validation
  • Implementation Roadmap
  • The TABenchmark Reference Canon
  • Contributing to TABenchmark

Tutorials

  • TABenchmark tutorials
  • aon — All-or-nothing assignment on the Braess network
  • msa — Method of successive averages (MSA) on the Braess network
  • fw — Frank–Wolfe (LeBlanc et al. 1975) on the Braess network
  • cfw — Conjugate Frank–Wolfe (Mitradjieva & Lindberg 2013) on the Braess network
  • bfw — Bi-conjugate Frank–Wolfe on the Braess network
  • gp — Gradient projection (Jayakrishnan et al. 1994) on the Braess network
  • oba — Origin-based assignment (Bar-Gera 2002) on the Braess network
  • algb — Algorithm B (Dial 2006) on the Braess network
  • tapas — TAPAS — traffic assignment by paired alternative segments (Bar-Gera 2010) on the Braess network
  • sue-msa — Logit stochastic user equilibrium by MSA on the two-route network
  • sue-probit-msa — Probit SUE by MSA, certified by pinned Monte Carlo
  • so-bfw — System optimum by bi-conjugate Frank–Wolfe on the Braess network
  • fw-elastic — Elastic-demand user equilibrium (Florian & Nguyen 1974)
  • evans — Combined trip distribution + assignment (Evans 1976)
  • br-ue — Boundedly-rational user equilibrium (Mahmassani & Chang 1987)
  • sc-tap — Side-constrained (capacitated) user equilibrium (Larsson & Patriksson 1995)
  • vi-asym — Asymmetric variational-inequality UE (Dafermos 1980 / Smith 1979)
  • multiclass — Multiclass-user equilibrium (Dafermos 1972)
  • learned-surrogate — A learned UE surrogate, and how the harness CENSORS it
  • dtd-swap — Smith’s (1984) route-swap day-to-day dynamics
  • dtd-swap-sue — Smith & Watling’s (2016) route-swap SUE dynamics
  • dtd-link — He, Guo & Liu’s (2010) link-based day-to-day dynamics
  • dtd-friesz — Friesz et al.’s (1994) route-based projected dynamical system
  • dtd-horowitz — Horowitz’s (1984) cost-smoothing SUE dynamics
  • dtd-stochastic — Cascetta’s (1989) stochastic-process day-to-day model
  • dtd-unifying — Cantarella & Cascetta’s (1995) unifying day-to-day process
  • dtd-cumlog — Li, Wang & Nie’s (2024) cumulative-logit day-to-day dynamics
  • gls — Generalized Least Squares OD estimation (covers prior)
  • spiess — Spiess’s (1990) count-misfit-only OD estimation
  • vzw-entropy — Van Zuylen & Willumsen’s (1980) entropy-balancing OD estimation
  • od-congested — Yang, Sasaki, Iida & Asakura’s (1992) bilevel OD estimation
  • spsa — Spall’s (1992) simultaneous perturbation stochastic approximation
  • od-kalman — Davis & Nihan’s (1993) linear-Gaussian OD estimation
  • od-dynamic — Cascetta, Inaudi & Marquis’s (1993) within-day dynamic OD estimation
  • bo4mob-estimation — BO4Mob held-out-count OD estimation (D2 observational)
  • odme-dtalite — DTALite’s static ODME as one more guarded T2 estimator (Zhou & Taylor 2014)
  • transit-strategy — Spiess & Florian’s (1989) optimal strategies
  • ctm — Daganzo’s (1994, 1995) Cell Transmission Model
  • ltm — Yperman’s (2007) Link Transmission Model
  • godunov — Lebacque’s (1996) Godunov scheme + the Greenshields FD
  • node-model — Tampere et al.’s (2011) generic first-order node model
  • vickrey — Vickrey’s (1969) single-bottleneck departure-time equilibrium
  • vi-due — Friesz et al.’s (1993) variational-inequality dynamic user equilibrium
  • merchant-nemhauser — Merchant & Nemhauser’s (1978) exit-function SO-DTA
  • lp-so-dta — Ziliaskopoulos’s (2000) LP single-destination SO-DTA on CTM cells
  • pm-td — Peeta & Mahmassani’s (1995) time-dependent UE and SO
  • newell-3det — Newell’s (1993) interior kinematic-wave reconstruction
  • implicit-ue-nn — user equilibrium as an implicit layer (act two)
  • het-gnn — heterogeneous-GNN traffic assignment (act three)
  • sumo-marouter — SUMO’s macroscopic assignment as an external-simulator adapter
  • sumo-duaiterate — the first external-dynamic (EDOC-1) row
  • dtalite-tap — DTALite’s static Frank-Wolfe, an IDENTITY compile map
  • spsa-sumo — SPSA calibration against a production simulator (Balakrishna 2007)
  • matsim — the first agent-based, stochastic-track EDOC row
  • dtalite-simulation — the third EDOC row, the first DETERMINISTIC-track external engine
  • xu2024 — the 20-US-city cross-domain axis (Honolulu / San Francisco)
  • bo4mob — the BO4Mob San Jose freeway instances (stage 1: data + liveness)
  • profiles — SimOpt-style progress curves and solvability profiles

API reference

  • API reference
    • tabench.core
    • tabench.models
    • tabench.metrics
    • tabench.estimation
    • tabench.edoc

Design records (ADRs)

  • ADR-001 — Logit SUE: Dial’s STOCH loading, MSA-SUE, and the fixed-point certificate
  • ADR-002 — T2 estimation track: OD demand from link counts, and the pinned-assignment certificate
  • ADR-003 — Probit SUE: Monte Carlo fixed-point certificate with a pinned evaluation stream
  • ADR-004 — Route-flow proportionality: a diagnostic now, a scored certificate proposed
  • ADR-005 — Elastic (variable) demand: a new problem class with a P1-pure certificate
  • ADR-006 — Learned (black-box) models: certified by P1, gated by lineage
  • ADR-007 — Combined trip distribution + assignment (Evans 1976): a P1-pure certificate
  • ADR-008 — Boundedly-rational user equilibrium: a band-relaxed UE with a necessary link-flow certificate
  • ADR-009 — Side-constrained UE: hard link capacities with a link-visible feasibility certificate
  • ADR-010: dnl-core — generic supply/demand dynamic-network-loading foundation
  • ADR-011: vi-asym — asymmetric variational-inequality UE (non-separable costs)
  • ADR-012: od-kalman — Davis & Nihan (1993) linear-Gaussian OD estimation from a time series of link counts
  • ADR-013: multiclass — Dafermos (1972) multiclass-user equilibrium
  • ADR-014: transit-strategy — Spiess & Florian (1989) optimal-strategy transit assignment
  • ADR-015: ctm — Daganzo (1994/1995) cell transmission model link
  • ADR-016: ltm — Yperman (2007) link transmission model
  • ADR-017: node-model — Tampère et al. (2011) generic first-order node model
  • ADR-018: godunov — Lebacque (1996) Godunov scheme + the first non-triangular FD
  • ADR-019: vickrey — Vickrey (1969) single-bottleneck departure-time equilibrium
  • ADR-020: merchant-nemhauser — Merchant & Nemhauser (1978) exit-function SO-DTA
  • ADR-021: lp-so-dta — Ziliaskopoulos (2000) LP single-destination SO-DTA on CTM cells
  • ADR-022: vi-due — Friesz et al. (1993) VI dynamic user equilibrium
  • ADR-023: od-dynamic — Cascetta, Inaudi & Marquis (1993) within-day dynamic OD estimation
  • ADR-024: newell-3det — Newell (1993) three-detector interior reconstruction
  • ADR-025 — Implicit-NN user equilibrium: the first torch model, feasibility as architecture
  • ADR-026 — Heterogeneous-GNN traffic assignment: the third learned model, feasibility as a decode
  • ADR-027 — SUMO marouter: the first external-simulator adapter, and the simulator-to-benchmark model gap
  • ADR-028 — spsa-sumo: SPSA calibration against a production simulator, as one more estimator row
  • ADR-029 — DTALite assignment(): the second external engine, and the identity-map static-UE row
  • ADR-030 — MATSim / DynaMIT / DYNASMART adapters: measured deferral, and the ADR that unblocks them
  • ADR-031: pm-td-ue / pm-td-so — Peeta & Mahmassani (1995) time-dependent SO/UE
  • ADR-032: simopt-profiles — SimOpt-style progress curves and solvability profiles
  • ADR-033: xu2024-dataset — the Xu et al. (2024) 20-US-city cross-domain axis
  • ADR-034: bo4mob-scenarios — the BO4Mob San Jose freeway OD-estimation instances (stage 1)
  • ADR-035: tutorials-visualizer — the house visualizer and the per-unit tutorial notebooks
  • ADR-036: edoc-1 — the external-dynamic-engine observational certificate
  • ADR-037 — sumo-duaiterate: the first EDOC-1 row, and the shipped external-dynamic substrate
  • ADR-038 — Cumulative-logit day-to-day dynamics: boundedly-rational logit choice with an exact-Wardrop-UE limit
  • ADR-039 — matsim: the second EDOC-1 row, the first agent-based / first stochastic-track external engine
  • ADR-040 — dtalite-simulation: the third EDOC-1 row, the first deterministic-track external engine, closing the adr-029 honest-sourcing loop
  • ADR-041 — bo4mob-estimation: the BO4Mob held-out-count OD-estimation family (stage 2), a D2 observational T2 certificate
  • ADR-042 — odme-dtalite: DTALite’s static ODME as one more guarded T2 estimator row
  • ADR-043 — bo4mob-joint-estimation: the joint (demand, supply) estimand is under-identified from counts+speeds — a measured deferral
  • TABenchmark Angle A: A Scenario × Model Cross-Evaluation Matrix with SimOpt-Style Experiment Machinery
  • TABenchmark — Angle A: The Scenario × Model Matrix
  • TABenchmark: An Observability-First Benchmark for 50 Years of Traffic Assignment Models
  • TABenchmark — Angle B: Observability-First Design
  • TABenchmark Design Proposal — Contract/Plugin-First Extensibility (Angle C)
  • TABenchmark: Contract-First Design Proposal (Angle C)
Back to top
View this page

ADR-016: ltm — Yperman (2007) link transmission model¶

Status: accepted (implemented) Date: 2026-07-09 Deciders: DNL-models track — the second DNL link model (the Newell-Daganzo method) File: docs/design/adr-016-ltm.md

Context¶

The Link Transmission Model (Yperman 2007) is the second DNL link sprint after ctm (adr-015). It is the Newell-Daganzo cumulative-curve method: instead of discretising the link interior into cells, it evaluates Newell’s two shifted cumulative curves directly at the link’s two ends, trading interior state for a need to remember the boundary cumulative curves back L/vf and L/w in time — which the LinkModel base already retains in full.

Decision¶

  1. LTMLink(LinkModel) in src/tabench/dnl/ltm.py, additive on the frozen sending/receiving interface. It is stateless beyond the base cumulative curves n_in (upstream) / n_out (downstream): no cells, _advance_state is the inherited no-op, and it carries no turning logic (node models handle junctions). It requires a finite jam density (the kappa·L receiving term) — the mirror image of the point-queue reference’s kappa = inf.

  2. Newell-Daganzo sending/receiving (Yperman eq. 4.31/4.35 ≡ Boyles eq. 9.65/9.67):

    • sending(k)   = min(N_up(t_{k+1} - L/vf) - N_dn(t_k), q_max·dt) — byte- identical to the point queue’s;

    • receiving(k) = min(N_dn(t_{k+1} - L/w) + kappa·L - N_up(t_k), q_max·dt) — the kappa·L storage term is exactly what turns the point queue’s unconstrained receiving into a finite backward wave. The shifted terms use the base class’s exact linear interp_curve; n_out[k] / n_in[k] are read at grid edges directly. assert_wave_resolved (dt <= min(L/vf, L/w), already enforced at scenario construction) is both the stability and the causality guarantee — the look-ahead never reads a future value.

  3. No CFL=1 cell alignment (the LTM advantage). LTM has no cells, so — unlike CTM — a link length need not be an integer multiple of vf·dt; LTM runs on any wave-resolved grid, including coarser / non-cell-aligned ones CTMLink rejects at construction. This grid flexibility is LTM’s concrete, testable edge over CTM (anchor d).

On numerical diffusion (honest scope)¶

Boyles §9.5.4 states the Newell-Daganzo values are exact, with no backward-shock spreading, “which does happen in the cell transmission model.” That advantage is real in principle (LTM never discretises the interior), but on the small single-shock anchors here LTM and CTM agree to machine precision — CTM’s O((w/vf)^n_cells) spreading stays below the certificate tolerance at that scale, so the harness’s backward-wave residual (C5) is ~0 for both. The sprint therefore does not assert an “LTM exact / CTM diffuse” gap it cannot demonstrate; the demonstrable distinction is grid flexibility (anchor d).

Analytic anchors (hand-derived from the read primaries, machine-verified — test_dnl_ltm.py)¶

  • (a) Free-flow translation: L=4, vf=w=1, kappa=4, cap=2, inflow 1.0. n_out(t)=n_in(t-4) exactly, TSTT=16, zero delay — bit-identical to CTM (a).

  • (b) Symmetric bottleneck (CTM cross-check): the L=4 link feeds a 0.5 bottleneck at inflow 1.5. LTM reproduces CTM’s curves byte-for-byte — n_in=1.5t, n_out=max(0,0.5(t-4)), storage 3.5·4=14, RH shock speed -0.5.

  • (c) Asymmetric wave (w<vf): vf=2, w=1, kappa=3, cap=2, L=4, inflow 1.0, 0.5 bottleneck. RH speed s=(1-0.5)/(0.5-2.5)=-0.25, shock reaches x=0 at t=18; n_out=max(0,0.5(t-2)), storage k_B·L=2.5·4=10 (verified via the Yperman receiving recursion).

  • (d) Grid flexibility: L=3, vf=2, dt=1 gives L/vf=1.5 (non-integer) — CTMLink raises, LTM free-flow-translates by the 1.5 lag exactly.

Alternatives considered¶

  • Reusing PointQueueLink with a finite-kappa FD: rejected — the point queue’s receiving = q_max·dt (unbounded) has no backward wave; LTM’s whole content is the finite kappa·L receiving. But the shared sending confirms the “LTM = point queue + finite receiving” framing.

  • Cell-based like CTM: rejected — the interior-free formulation is LTM’s point (exactness + grid flexibility), and it reuses the base cumulative curves with no new state.

Consequences¶

The benchmark gains its second DNL link model and a diffusion-free, grid-flexible alternative to CTM, sharing the same interface, certifier, node models, and loader. All changes are additive (a new module + tests + exports), so the 562-test suite, every road/DNL hash, and the golden Braess content hash are byte-untouched.

Sourcing¶

Both primaries are open and were read: Yperman (2007) PhD thesis (KU Leuven, mech.kuleuven.be mirror) §4.6 eq. 4.31/4.35, and Boyles/Lownes/Unnikrishnan Transportation Network Analysis Vol. I (2025) §9.5.2 eq. 9.65/9.67 (worked example Table 9.6). Sign-convention note: Yperman typesets the backward term +L/w because his w is the signed (negative) backward-wave velocity; this repo (and Boyles) use wave_speed > 0 as a magnitude, so the equivalent form is - L/w — which this module uses, verified against Boyles’ R(10)=5 example.

Next
ADR-017: node-model — Tampère et al. (2011) generic first-order node model
Previous
ADR-015: ctm — Daganzo (1994/1995) cell transmission model link
Copyright © 2026, UMN Choi Lab
Made with Sphinx and @pradyunsg's Furo
On this page
  • ADR-016: ltm — Yperman (2007) link transmission model
    • Context
    • Decision
    • On numerical diffusion (honest scope)
    • Analytic anchors (hand-derived from the read primaries, machine-verified — test_dnl_ltm.py)
    • Alternatives considered
    • Consequences
    • Sourcing