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-008 — Boundedly-rational user equilibrium: a band-relaxed UE with a necessary link-flow certificate¶

Status: accepted (shipped in v1) File: docs/design/adr-008-boundedly-rational-ue.md

Context¶

Every equilibrium so far is perfectly rational: at Wardrop UE every used route is exactly the minimum cost. Boundedly-rational UE (Mahmassani & Chang 1987) imports Herbert Simon’s bounded rationality: a traveler does not switch routes to save less than an indifference band ε (in native cost units). A flow is an ε-BRUE iff for every OD pair and every route,

h_π > 0   ⟹   c_π ≤ κ_rs + ε

— used routes lie within an absolute band ε above the OD minimum κ_rs. This relaxes Wardrop’s equality to a one-sided band, with two consequences that this ADR must handle:

  1. The equilibrium is a SET, not a point. For ε > 0 the conditions are inequalities, so the acceptable flows form a region; the link flows are not unique and there is no Beckmann convex program (Boyles, Lownes & Unnikrishnan, Transportation Network Analysis ch. 5; the rigorous static set formulation is Di, Liu, Pang & Ban 2013, TR-B 57:300–313). ε → 0 recovers Wardrop UE; ε → ∞ admits any feasible flow.

  2. The band is a per-route condition, but the harness sees only link flows.

Sourcing¶

Concept: Mahmassani & Chang (1987), Transportation Science 21(2):89–99 — paywalled, a behavioural (departure-time + route-search) paper, attributed unread. The static ε-BRUE condition, non-uniqueness, and the ε-monotone acceptable set are from Di–Liu–Pang–Ban (2013) and cross-verified in Boyles TNA ch. 5 (used-path band condition; “no convex program; link-flow uniqueness not guaranteed”). The absolute band + VI form were cross-checked against open restatements. No numeric result from the primary is claimed.

Decision 1 — Represent the band as content-hashed scenario data¶

Scenario.br_epsilon: float | None (core/scenario.py) carries the band width. Validated > 0 and finite; mutually exclusive with sue_theta / elastic_demand / combined_demand (BR-UE is a deterministic fixed-demand route equilibrium; those make demand non-fixed); content-hashed only when set, appended last, so every existing scenario keeps its byte-identical hash (golden Braess cf00f411… asserted preserved). Two scenarios differing only in ε are different benchmark instances, and the model cannot choose its own ε. The band unit is network-specific (scenario cards state it, P9).

Decision 2 — Find an acceptable flow at the BAND EDGE (not an early-stopped UE)¶

br-ue (BoundedlyRationalUEModel, paradigm static_br_ue) reuses the gp gradient-projection skeleton (per-OD path sets, column generation, exact route→link resync) with a band-thresholded Newton shift: from a pinned free-flow all-or-nothing start, for each OD pair shift flow off every route whose cost exceeds the OD minimum by more than the band, onto the cheapest (“basic”) route, by a projected Newton step sized to reduce that route’s excess to exactly ε — not to zero. Routes already inside the band are never touched (the incentive is boundedly-rational). It stops at a rest point where no used route on any OD exceeds its OD minimum by more than ε — ε-BRUE by construction.

This is a genuine BR-UE, not a renamed early-stopped UE. A UE solver stopped at gap ≤ ε truncates the trajectory inside an ε-ball of the unique UE point (used-route excess ≈ 0). The band-thresholded shift instead stops at the band edge (used-route excess ≈ ε), generally far from UE, and stable under bounded-rational perturbation. On the two-route anchor the emitted split is f_A* + ε/2 (excess exactly ε), not f_A* — the distinctness gate, regression-tested. Because the shift is a Newton step (not a proportional route swap, which drains a low-flow out-of-band route only at a rate ∝ its vanishing flow — verified to need ~30× more iterations and to leave the band violated on congested nets within budget), convergence is fast (one step per OD on a linear network) and the band is satisfied on congested multi-OD networks (0 band violations over a 107-net power-4 fuzz). Path-dependence/hysteresis is real (different starts → different edges); the pinned free-flow-AON start makes it deterministic.

Decision 3 — A necessary link-flow certificate, honest about its one-sidedness¶

The identity TSTT − SPTT = Σ_rs Σ_π h_π (c_π − κ_rs) = D · AEC makes the average excess cost the demand-weighted mean per-traveler excess. So from link flows the harness scores

br_acceptable = 1.0  iff  AEC ≤ ε        (metrics/gaps.py, gated on scenario.br_epsilon)

Necessary: a true ε-BRUE has every used route within ε of κ, so mean excess ≤ ε and AEC ≤ ε — every BR-UE flow passes.

Not sufficient, and we do not pretend otherwise. Because AEC averages excess weighted by flow, a flow can concentrate a little traffic on a route far outside the band and still average under it: 1% of an OD’s travelers at excess 50ε and 99% at excess 0 give a per-route violation of 50ε yet AEC = 0.5ε ≤ ε. This is the same aggregate-vs-disaggregate limitation the node-balance audit documents (and elastic/combined inherit): link flows never carry the per-route information a fully sufficient check needs (route flows are not emitted). It is pinned transparently by test_certificate_is_necessary_not_sufficient (the false accept) and its complement (a grossly out-of-band flow is rejected). The two-route anchor is the exception where per-route band membership is link-visible (|c_A − c_B| ≤ ε directly), so the anchor validates tightly; a sufficient longest-positive-flow-path certificate for general acyclic-positive-flow instances is possible and left as future work.

Consequences¶

  • New: Scenario.br_epsilon; paradigm static_br_ue; the br-ue model; br_acceptable scored flag; br_two_route_scenario anchor (f_A* = (D+1)/2 = 5.5, band edge f_A* + ε/2, half-width ε/(b_A+b_B); at D=10, ε=1 flows (6,6,4,4), AEC = 0.6 ≤ 1, band edge regression-tested against the UE’s 5.5); tabench run --scenario br-tworoute.

  • Unchanged: every prior scenario hash (golden Braess preserved); all other certificate paths; all prior models and tests.

  • Honest limitation: the scored br_acceptable is necessary, not sufficient (documented, pinned) — the one-sidedness is inherent to a link-flow-only certificate for a per-route condition.

  • Post-commit hardening (adversarial review). Two defects were found after the first commit and fixed: (M2) br-ue no longer honors a caller’s Wardrop target_relative_gap — the wrong stop for a band equilibrium (it could stop before the band and certify a non-BR-UE); it stops only on the band rest condition. (M1) the undamped Newton shift can oscillate on extreme synthetic high-curvature instances; an adaptive scale (halve when the true band_excess rises, recover when it falls) mitigates it while keeping the full step on the monotone case. A residual limit remains and is documented in the model: on such pathological instances the model may not reach the band within budget, and the necessary-only certificate can then false-accept the concentrated residual. Real benchmark networks (Sioux Falls, Anaheim) converge cleanly; the sufficient longest-positive-flow-path certificate would close the gap and is deferred.

  • Deferred: the sufficient longest-positive-flow-path certificate (when the positive-flow subnetwork is acyclic); per-OD / relative bands; the full path-dependent acceptable-set characterisation (Di–Liu–Ban).

Next
ADR-009 — Side-constrained UE: hard link capacities with a link-visible feasibility certificate
Previous
ADR-007 — Combined trip distribution + assignment (Evans 1976): a P1-pure certificate
Copyright © 2026, UMN Choi Lab
Made with Sphinx and @pradyunsg's Furo
On this page
  • ADR-008 — Boundedly-rational user equilibrium: a band-relaxed UE with a necessary link-flow certificate
    • Context
    • Sourcing
    • Decision 1 — Represent the band as content-hashed scenario data
    • Decision 2 — Find an acceptable flow at the BAND EDGE (not an early-stopped UE)
    • Decision 3 — A necessary link-flow certificate, honest about its one-sidedness
    • Consequences