Commit 4590f140 authored by Paul Rougieux's avatar Paul Rougieux
Browse files

Add road closure cost spec and traffic jam note

parent 25b921f8
Loading
Loading
Loading
Loading
Loading
+2 −1
Changes for events/20261021/spec_road_closure_cost.md: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -15,7 +15,8 @@ bridge is closed?
  so other durations can be scaled.
- Every trip that used the bridge takes the shortest alternative route. We
  assume free-flow speeds, no congestion on the detour and no cancelled trips.
  The result is therefore a **lower bound**.
  The result is therefore a **lower bound**. See
  `traffic_jam_counts_to_time.md` for how to add congestion.

## Data

+72 −0
Changes for events/20261021/traffic_jam_counts_to_time.md: 72 added lines, 0 removed lines.
Original line number Diff line number Diff line
# From counts to time lost when there is a traffic jam

How can a model infer the time spent from traffic counts if there is a
traffic jam? Note for the road closure spec (`spec_road_closure_cost.md`).

## The problem

A count alone cannot tell you whether there is a jam. A detector reads low
flow both on an empty road and in a standstill, and during a jam it records
how many vehicles get through, not how many wanted to. A model has to add
**capacity**, and then infer time in one of three ways.

## 1. Volume-delay function (standard in traffic assignment)

Travel time on a link rises with the ratio of traffic to capacity. The most
common form is the BPR function:

    t = t0 · (1 + α · (V/C)^β),   typically α = 0.15, β = 4

- `t0` is the free-flow time and `V` is the traffic per hour.
- `C` is the capacity per hour, which you can take from the German highway
  capacity manual (HBS, *Handbuch für die Bemessung von
  Straßenverkehrsanlagen*) by road type: roughly 1,500–1,800 Pkw-units/h per
  lane on a rural road, and an Lkw counts as about 2 Pkw.
- For a bridge closure, the detour roads carry their **own existing traffic
  plus the diverted traffic**. Their V/C rises, so the delay hits both the
  diverted drivers and the people already on those roads. Free-flow routing
  misses both effects.

## 2. Queueing at a bottleneck (for jams)

When arrivals exceed capacity `C`, a queue builds:

- Use the hourly counts at the closed bridge as the **demand** (how many
  vehicles want to travel).
- Plot cumulative arrivals and cumulative departures (departures are limited
  to `C`) over the day.
- The **area between the two curves is the total vehicle-hours lost**. The
  queue clears once demand falls below `C` again.

This is why the **hourly** profile matters. A daily average of 15,000
vehicles may never exceed capacity, while the 7–8 am peak does. The 2023
hourly BASt files support this directly.

## 3. Measure speeds instead of inferring them

The BASt files contain only counts, with no speeds. Observed travel times
would come from:

- loop detectors on the Mobilithek, Germany's national mobility data portal
  (some report speed);
- commercial floating-car data (TomTom, HERE, Google).

These can validate or calibrate methods 1 and 2.

## Caveats

- During a jam, counts measure throughput, not demand. Use counts from an
  unjammed period (before the closure, e.g. 2023) as the demand.
- A capacity drop of about 10–20% often follows a breakdown, which makes the
  queue last longer.
- People adapt over a one-year closure: they leave earlier, change route or
  skip trips. A static model overstates the long-run delay and understates
  the first weeks.

## Implications for the spec

- Keep free-flow routing as the lower bound.
- Add an optional BPR step on the detour links, using HBS capacities, existing
  traffic on those roads where a BASt station exists, and hourly demand from
  the B19 station.
- Bottleneck queueing would be a later extension.