{ "cells": [ { "cell_type": "markdown", "id": "3795b3ef", "metadata": {}, "source": [ "# `msa` — Method of successive averages (MSA) on the Braess network\n", "\n", "**What.** MSA takes a predetermined `1/k` step toward the all-or-nothing point each iteration — no line search, no objective — the simplest convergent link-based UE solver, drawn from the Robbins–Monro stochastic-approximation lineage. The trade is very slow, non-adaptive convergence, which is exactly why it is the reference slow baseline.\n", "\n", "**Why it is in the benchmark.** It is the canonical slow baseline of the convergence ladder — it converges for the convex UE program but needs no line search, so it works even where one is unavailable (`[sheffi1985urban]`; convergence `[powell1982convergence]`). See its entry in the\n", "[model compendium](../../docs/MODELS.md) and the certificate design in\n", "[docs/ARCHITECTURE.md](../../docs/ARCHITECTURE.md) (P1).\n", "\n", "**Scope.** This notebook runs the solver on the built-in Braess scenario (5 links,\n", "one OD pair, no download) and certifies the result; it does not benchmark solver\n", "families against each other — for that, see `demos/demo_quickstart.py`.\n", "\n", "Primary reference: `[sheffi1985urban]` / `[powell1982convergence]` ([docs/REFERENCES.md](../../docs/REFERENCES.md))." ] }, { "cell_type": "markdown", "id": "8e514e48", "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": "4664d551", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:44:42.880236Z", "iopub.status.busy": "2026-07-21T13:44:42.879920Z", "iopub.status.idle": "2026-07-21T13:44:44.789001Z", "shell.execute_reply": "2026-07-21T13:44:44.788330Z" } }, "outputs": [], "source": [ "# Setup. `msa` 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", " MSAModel,\n", " Budget,\n", " Evaluator,\n", " RngBundle,\n", " Trace,\n", " braess_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "91fa5419", "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": "95dd6b8f", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:44:44.792563Z", "iopub.status.busy": "2026-07-21T13:44:44.792344Z", "iopub.status.idle": "2026-07-21T13:44:44.796541Z", "shell.execute_reply": "2026-07-21T13:44:44.796038Z" } }, "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": "28e81252", "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": "c3216934", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:44:44.799397Z", "iopub.status.busy": "2026-07-21T13:44:44.798851Z", "iopub.status.idle": "2026-07-21T13:44:44.849658Z", "shell.execute_reply": "2026-07-21T13:44:44.848937Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "model : msa\n", "budget spent : 200 iterations, 201 shortest-path calls\n", "checkpoints : 200\n", "emitted flows : [4.01005 1.98995 1.98995 2.020101 3.979899]\n", "self-reported gap: 1.577e-03 (provenance only)\n" ] } ], "source": [ "model = MSAModel()\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\"checkpoints : {len(bundle.trace.checkpoints)}\")\n", "print(f\"emitted flows : {np.round(final.link_flows, 6)}\")\n", "print(f\"self-reported gap: {final.self_report['relative_gap']:.3e} (provenance only)\")" ] }, { "cell_type": "markdown", "id": "4a27d87f", "metadata": {}, "source": [ "## Certify (P1)\n", "\n", "The harness, never the model, computes every scored metric: the relative gap is a\n", "property of `(link_flows, scenario)`, recomputed here by the same `Evaluator` that\n", "scores every model in the benchmark. We also recompute the analytic Braess anchor\n", "in-cell rather than quoting it: at UE the flows are (4, 2, 2, 2, 4) and every used\n", "route costs 92 (pinned in [`tests/test_braess.py`](https://github.com/UMN-Choi-Lab/TABenchmark/blob/main/tests/test_braess.py)).\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "eeb9c616", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:44:44.852192Z", "iopub.status.busy": "2026-07-21T13:44:44.851883Z", "iopub.status.idle": "2026-07-21T13:44:44.913070Z", "shell.execute_reply": "2026-07-21T13:44:44.912552Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "certified relative gap : 1.577e-03\n", "feasible : 1\n", "Beckmann objective : 386.002836\n", "route time (TSTT/D) : 91.933942 (analytic UE: 92)\n", "checkpoints certified : 200 (first gap 1.912e-01, last 1.577e-03)\n" ] } ], "source": [ "evaluator = Evaluator(scenario)\n", "metrics = evaluator.evaluate(final.link_flows)\n", "\n", "certified_gap = metrics[\"relative_gap\"]\n", "print(f\"certified relative gap : {certified_gap:.3e}\")\n", "print(f\"feasible : {metrics['feasible']:.0f}\")\n", "print(f\"Beckmann objective : {metrics['beckmann_objective']:.6f}\")\n", "\n", "# MSA converges but slowly: after 200 predetermined 1/k steps the gap is small yet\n", "# orders above a line-search solver — honest, not machine precision.\n", "assert metrics[\"feasible\"] == 1.0\n", "assert abs(certified_gap) < 1e-2\n", "\n", "# Honesty diff (P1): this white box's self-report must match the certificate.\n", "assert np.isclose(final.self_report[\"relative_gap\"], certified_gap, rtol=1e-9, atol=1e-12)\n", "\n", "# Analytic anchor, recomputed in-cell.\n", "ref_flows = np.array([4.0, 2.0, 2.0, 2.0, 4.0])\n", "assert evaluator.evaluate(ref_flows)[\"relative_gap\"] < 1e-6\n", "assert np.allclose(final.link_flows, ref_flows, atol=5e-2)\n", "route_time = metrics[\"tstt\"] / scenario.demand.total\n", "print(f\"route time (TSTT/D) : {route_time:.6f} (analytic UE: 92)\")\n", "assert abs(route_time - 92.0) < 0.1\n", "\n", "# Certify EVERY checkpoint the same way — the trace feeds the visual below.\n", "trace_iters = [c.coords.iterations for c in bundle.trace.checkpoints]\n", "trace_gaps = [evaluator.evaluate(c.link_flows)[\"relative_gap\"] for c in bundle.trace.checkpoints]\n", "print(f\"checkpoints certified : {len(trace_gaps)} \"\n", " f\"(first gap {trace_gaps[0]:.3e}, last {trace_gaps[-1]:.3e})\")" ] }, { "cell_type": "markdown", "id": "50fa4eda", "metadata": {}, "source": [ "## Visualize\n", "\n", "Both figures come from `tabench.viz`, the house visualizer — one visual style across\n", "every tutorial, every plotted number certified above. Left/top: the certified\n", "equilibrium link flows on the Braess diamond. Right/bottom: the emitted flows against\n", "the analytic UE recomputed in the previous cell — points on the `y = x` guide mean\n", "the solver reproduced the certified equilibrium link-for-link." ] }, { "cell_type": "code", "execution_count": 5, "id": "6652405e", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:44:44.915837Z", "iopub.status.busy": "2026-07-21T13:44:44.915400Z", "iopub.status.idle": "2026-07-21T13:44:45.214273Z", "shell.execute_reply": "2026-07-21T13:44:45.213590Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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K1bi6quvxgMPjINOp4PBYECvXr2a9ssDuPHGIcjMzHR/zZ49u1H7EUJg2rRp0Ol06NChA7p16+Z+nQDA6XTh4YenYOvWbfjkk0+QlpbWqOfZvHkzjEYjHnzwQajVavTp0we33HILPvzwIwBA37593WW9detWTJ36ZK3b1157baOel6gmliZFrJUrV6Jv32vRsmUrZGZmYvPmz1BYWFBrm5SUFPf3UVEG99GizWbDX/7yV1x55ZVo0SLDPTdYUFD756vddddd+PDDDwEAy5Z9iFtvHVPvRZbrc+rUKbRp08ajbdVqNex2R5377XYHVKral8/auPETnDx50v3V2FWqsbExMBgM7ts1XycA+O2301i+fDkef/xxJCTEN+o5qvZzps4ip1atWuHMmTMAqkpz+/btMJlMMJkKMGbMGJw8eRJFRWbs2PENS5N8gqVJEenUqVOYMGEipk+fjqNHf8HJkycxcOCAeodX6zN//nzs27cPn376KU6fPoX9+/cDQIM/f8sto/HDD/tw+PBhrF27ptZKVYXi4v8bZmRk4NixYx7lysjIgNVqrXUVewA4fvx4vatqAyEzMxPLln2AcePG1Tts66n09DScPHmy1n0nT550H7leffVVsNsrsXjxYvdQbI8ePbBo0UKo1Wp07NixSb8HEcDSpAhVVlYGIQSSk41QKBTYvHkzvvjiS49/vqTEAp1Oi/j4eJSWlmL69Jcuun1sbCyGDx+GcePGITOzJa6++mr3Y8nJKfj1118bLNxbbx2DvXv34u23l6KiogJWqxXffPNNvdump6ejT5/eeOaZZ1BUZIbD4cDmzZuxceNG3HLLaI9/P18bMGAA3nrrLdxzzx/x1VdfN3IfA5Gfn4+33loCh8OBb775BqtWrcLtt98GAFAqlejVqxcWLcpB3759AQDXXXctFi3KQZ8+fYLiIsoU+liaFJEuu+wyPPbYXzFs2HC0apWFNWvW4MYbPZtjBICHHpoMhUKJdu3ao2fPnujWreslf+buu+/GTz8dwF131f485D333IMzZ86iZctW9c5VpqenY/36dVi9ehXatWuHK6+8yj0/Wp+lS5dCkiT07NkTrVu3xowZM7F06dvo1KlTre0GDhxU63Oa/ftf79kv30jZ2Tdg6dKluPfee/H55194/fMJCfH4+OPVWLlyJbKyWmPKlEcwb95c9OzZ071N3759UVJS4h6Kve6662rdJmoqyeGwezYeRURNcurUKVxzzR9w5MhhJCYmyh2HiBqBR5pEAeB0OvH3v/8DI0fezMIkCmE8IxCRn/3666/o2bMXWrZsiVWrVsodh4iagMOzREREHuLwLBERkYdYmkRERB5iaRIREXmIpUlEROQhliYREZGHWJpEREQeYmkSERF5iKVJRETkof8HlOyOukbwqlkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Certified equilibrium flows on the network (house style via tabench.viz).\n", "display(viz.plot_network_flows(net, final.link_flows))\n", "\n", "# Emitted flows vs the analytic UE recomputed above (off-diagonal == disagreement).\n", "display(viz.plot_flow_scatter((\"analytic UE\", ref_flows), {\"msa\": final.link_flows}))" ] }, { "cell_type": "markdown", "id": "6ac391f4", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Certified, not self-reported.** The gap above came from `Evaluator`, recomputed\n", " from the emitted flows here; the self-report was only diffed against it.\n", "- **Slow on purpose.** 200 predetermined `1/k` steps and the gap is still orders above `fw`/`cfw`/`bfw` — MSA trades speed for needing no objective (run it, don't quote it).\n", "- **Where next.** the line-search solvers that leave MSA behind: [`fw`](03-fw.ipynb) · [`cfw`](04-cfw.ipynb) · [`bfw`](05-bfw.ipynb); the honest baseline: [`aon`](01-aon.ipynb); the lineage in the\n", " [model compendium](../../docs/MODELS.md); the full matrix via `run_experiment(...)`\n", " as in `demos/demo_quickstart.py`." ] } ], "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": "msa" } }, "nbformat": 4, "nbformat_minor": 5 }