{ "cells": [ { "cell_type": "markdown", "id": "f8932d6c", "metadata": {}, "source": [ "# `so-bfw` — System optimum by bi-conjugate Frank–Wolfe on the Braess network\n", "\n", "**What.** The system optimum (SO) minimises TOTAL travel time rather than letting\n", "each traveller minimise their own — Wardrop's *second* principle. It is the same\n", "Beckmann machinery run on **marginal-cost** link functions, so `so-bfw` reuses the\n", "bi-conjugate Frank–Wolfe solver against `t_a + v_a t_a'` (`[sheffi1985urban]`,\n", "[docs/REFERENCES.md](../../docs/REFERENCES.md)).\n", "\n", "**Why it is in the benchmark.** It is the reference for the price of anarchy and\n", "marginal-cost tolling, and the SO half of the equilibrium picture. See the\n", "[model compendium](../../docs/MODELS.md) and\n", "[docs/ARCHITECTURE.md](../../docs/ARCHITECTURE.md) (P1).\n", "\n", "**Scope.** Runs on the built-in Braess scenario and certifies the SO gap; it then\n", "contrasts the SO flows with the selfish (UE) equilibrium recomputed in-cell — the\n", "Braess point. It is not a Wardrop UE solver — see [`bfw`](05-bfw.ipynb)." ] }, { "cell_type": "markdown", "id": "34f01859", "metadata": {}, "source": [ "## How this notebook is graded\n", "\n", "**A notebook never claims a number it does not compute in that cell.** Every scored\n", "quantity below is recomputed live by the P1 `Evaluator` from the flows the model\n", "emitted, in the cell where it is claimed. Model self-reports are shown only as\n", "provenance and diffed against the certificate as an honesty check, exactly as the\n", "harness treats them ([README](../../README.md), *Certified, not self-reported*)." ] }, { "cell_type": "code", "execution_count": 1, "id": "67f9d3b3", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:33.457420Z", "iopub.status.busy": "2026-07-21T13:45:33.457090Z", "iopub.status.idle": "2026-07-21T13:45:35.343107Z", "shell.execute_reply": "2026-07-21T13:45:35.342159Z" } }, "outputs": [], "source": [ "# Setup. `so-bfw` is a core model: a plain `pip install -e .` suffices — no\n", "# optional extra, so no guard cell. The inline backend is Agg-based (headless CI\n", "# renders into the notebook); NEVER matplotlib.use(\"Agg\") in-kernel — it silently\n", "# suppresses inline figure capture.\n", "%matplotlib inline\n", "import numpy as np\n", "\n", "from tabench import (\n", " Budget,\n", " Evaluator,\n", " RngBundle,\n", " SystemOptimumModel,\n", " Trace,\n", " braess_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "3fe08197", "metadata": {}, "source": [ "## The scenario\n", "\n", "The built-in Braess network: 4 nodes, 5 links, a single OD pair (1 → 2) with demand\n", "6. Scenarios are frozen and content-hashed (P2) — the hash printed below is the\n", "identity of the benchmark instance, so a silently edited network cannot masquerade\n", "as it." ] }, { "cell_type": "code", "execution_count": 2, "id": "c7b65e06", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:35.347663Z", "iopub.status.busy": "2026-07-21T13:45:35.347433Z", "iopub.status.idle": "2026-07-21T13:45:35.352726Z", "shell.execute_reply": "2026-07-21T13:45:35.352037Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scenario : braess\n", "content hash : cf00f411cdccec88…\n", "links : 5 (tail→head: 1->3, 1->4, 3->4, 3->2, 4->2)\n", "total demand : 6.0\n" ] } ], "source": [ "scenario = braess_scenario()\n", "net = scenario.network\n", "\n", "print(f\"scenario : {scenario.name}\")\n", "print(f\"content hash : {scenario.content_hash()[:16]}…\")\n", "print(f\"links : {net.n_links} (tail→head: \"\n", " + \", \".join(f\"{i}->{j}\" for i, j in zip(net.init_node, net.term_node)) + \")\")\n", "print(f\"total demand : {scenario.demand.total}\")" ] }, { "cell_type": "markdown", "id": "693baaaf", "metadata": {}, "source": [ "## Solve\n", "\n", "The model contract ([CONTRIBUTING.md](../../CONTRIBUTING.md)): a model receives\n", "`(scenario, budget, rng, trace)`, records checkpoints, and respects the budget.\n", "Budgets are hardware-free (iterations / shortest-path calls; wall-clock is recorded\n", "but never the ranking axis, P7). Whatever the model writes into `self_report` is\n", "provenance, not a score." ] }, { "cell_type": "code", "execution_count": 3, "id": "c246fb33", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:35.356815Z", "iopub.status.busy": "2026-07-21T13:45:35.356446Z", "iopub.status.idle": "2026-07-21T13:45:35.363186Z", "shell.execute_reply": "2026-07-21T13:45:35.362526Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "model : so-bfw\n", "budget spent : 4 iterations, 5 shortest-path calls\n", "emitted SO flows : [3. 3. 0. 3. 3.]\n", "self-reported SO gap: 0.000e+00 (provenance only)\n" ] } ], "source": [ "model = SystemOptimumModel()\n", "bundle = model.solve(scenario, Budget(iterations=200), RngBundle(0), Trace())\n", "\n", "final = bundle.final\n", "print(f\"model : {model.name}\")\n", "print(f\"budget spent : {final.coords.iterations} iterations, \"\n", " f\"{final.coords.sp_calls} shortest-path calls\")\n", "print(f\"emitted SO flows : {np.round(final.link_flows, 6)}\")\n", "print(f\"self-reported SO gap: {final.self_report['so_relative_gap']:.3e} (provenance only)\")" ] }, { "cell_type": "markdown", "id": "65cb97cf", "metadata": {}, "source": [ "## Certify (P1)\n", "\n", "The SO is scored by its own relative gap on the **marginal** cost, recomputed by an\n", "`Evaluator` with `so_metrics=True`. We then recompute the selfish UE in-cell to make\n", "the Braess point concrete: the SO AVOIDS the paradox-inducing bypass 3→4 entirely,\n", "and its total travel time is strictly below the UE's — the price of anarchy." ] }, { "cell_type": "code", "execution_count": 4, "id": "4a684d1c", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:35.367455Z", "iopub.status.busy": "2026-07-21T13:45:35.366969Z", "iopub.status.idle": "2026-07-21T13:45:35.374412Z", "shell.execute_reply": "2026-07-21T13:45:35.373751Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "certified SO relative gap : 0.000e+00\n", "feasible : 1\n", "bypass (3->4) SO flow : 0.000e+00\n", "SO total time (TSTT) : 498.000\n", "UE total time (TSTT) : 552.000\n", "price of anarchy (UE/SO) : 1.1084\n" ] } ], "source": [ "ue_flows = np.array([4.0, 2.0, 2.0, 2.0, 4.0]) # the Wardrop UE, for contrast\n", "\n", "evaluator = Evaluator(scenario, so_metrics=True, root_seed=0)\n", "metrics = evaluator.evaluate(final.link_flows)\n", "so_gap = metrics[\"so_relative_gap\"]\n", "print(f\"certified SO relative gap : {so_gap:.3e}\")\n", "print(f\"feasible : {metrics['feasible']:.0f}\")\n", "\n", "assert metrics[\"feasible\"] == 1.0\n", "assert abs(so_gap) < 1e-8\n", "\n", "# Honesty diff (P1): the SO self-report matches the certificate.\n", "assert np.isclose(final.self_report[\"so_relative_gap\"], so_gap, rtol=1e-9, atol=1e-12)\n", "\n", "# Anchor RECOMPUTED: the Braess SO puts ZERO flow on the bypass 3->4, and its total\n", "# travel time is strictly below the selfish UE's (the price of anarchy).\n", "bypass = next(\n", " k for k in range(net.n_links) if net.init_node[k] == 3 and net.term_node[k] == 4\n", ")\n", "print(f\"bypass (3->4) SO flow : {final.link_flows[bypass]:.3e}\")\n", "assert final.link_flows[bypass] < 1e-6\n", "\n", "so_tstt = metrics[\"tstt\"]\n", "ue_tstt = evaluator.evaluate(ue_flows)[\"tstt\"]\n", "print(f\"SO total time (TSTT) : {so_tstt:.3f}\")\n", "print(f\"UE total time (TSTT) : {ue_tstt:.3f}\")\n", "print(f\"price of anarchy (UE/SO) : {ue_tstt / so_tstt:.4f}\")\n", "assert so_tstt < ue_tstt" ] }, { "cell_type": "markdown", "id": "6e4fe1d9", "metadata": {}, "source": [ "## Visualize\n", "\n", "Both figures come from `tabench.viz`. Left/top: the SO link flows on the Braess\n", "diamond — the 3→4 bypass carries ZERO flow (the SO refuses the paradox link).\n", "Right/bottom: the SO flows against the selfish UE recomputed above; the points sit\n", "OFF the `y = x` guide — SO and UE are different flows, which is the whole point." ] }, { "cell_type": "code", "execution_count": 5, "id": "4f0e5482", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:35.378184Z", "iopub.status.busy": "2026-07-21T13:45:35.377761Z", "iopub.status.idle": "2026-07-21T13:45:35.666434Z", "shell.execute_reply": "2026-07-21T13:45:35.665596Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(viz.plot_network_flows(net, final.link_flows))\n", "display(viz.plot_flow_scatter((\"Wardrop UE\", ue_flows), {\"so-bfw\": final.link_flows}))" ] }, { "cell_type": "markdown", "id": "d94664b4", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Certified, not self-reported.** The SO gap came from `Evaluator(so_metrics=True)`;\n", " the self-report was only diffed against it.\n", "- **The Braess point, computed.** The SO avoids the bypass and beats the UE's total\n", " time — the price of anarchy printed above, recomputed in-cell, not quoted.\n", "- **Where next.** The selfish equilibrium it improves on: [`bfw`](05-bfw.ipynb); the SO\n", " design and marginal-cost tolls in the [model compendium](../../docs/MODELS.md)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "tabench": { "covers": [], "requires_extra": null, "track": "static", "unit": "so-bfw" } }, "nbformat": 4, "nbformat_minor": 5 }