{ "cells": [ { "cell_type": "markdown", "id": "7469ee4f", "metadata": {}, "source": [ "# `algb` — Algorithm B (Dial 2006) on the Braess network\n", "\n", "**What.** Algorithm B is the bush-based method that shifts flow between the longest and shortest used segments of each origin bush, restructuring the bush as costs change. It refined origin-based assignment into the reliably machine-precision UE solver, still link-order storage per origin.\n", "\n", "**Why it is in the benchmark.** It is the bush-based workhorse of the convergence race (`[dial2006path]`). 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: `[dial2006path]` ([docs/REFERENCES.md](../../docs/REFERENCES.md))." ] }, { "cell_type": "markdown", "id": "2717f828", "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": "6c422872", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:12.855149Z", "iopub.status.busy": "2026-07-21T13:45:12.854784Z", "iopub.status.idle": "2026-07-21T13:45:14.917848Z", "shell.execute_reply": "2026-07-21T13:45:14.916971Z" } }, "outputs": [], "source": [ "# Setup. `algb` 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", " AlgorithmBModel,\n", " Budget,\n", " Evaluator,\n", " RngBundle,\n", " Trace,\n", " braess_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "0c865c16", "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": "986d9159", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:14.922561Z", "iopub.status.busy": "2026-07-21T13:45:14.922117Z", "iopub.status.idle": "2026-07-21T13:45:14.928178Z", "shell.execute_reply": "2026-07-21T13:45:14.927335Z" } }, "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": "7cad25b3", "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": "4e73515b", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:14.931860Z", "iopub.status.busy": "2026-07-21T13:45:14.931692Z", "iopub.status.idle": "2026-07-21T13:45:14.956460Z", "shell.execute_reply": "2026-07-21T13:45:14.955590Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "model : algb\n", "budget spent : 50 iterations, 173 shortest-path calls\n", "checkpoints : 50\n", "emitted flows : [4. 2. 2. 2. 4.]\n", "self-reported gap: -2.060e-16 (provenance only)\n" ] } ], "source": [ "model = AlgorithmBModel()\n", "bundle = model.solve(scenario, Budget(iterations=50), 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": "1352d496", "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))." ] }, { "cell_type": "code", "execution_count": 4, "id": "d64f57ac", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:14.960507Z", "iopub.status.busy": "2026-07-21T13:45:14.960200Z", "iopub.status.idle": "2026-07-21T13:45:14.981228Z", "shell.execute_reply": "2026-07-21T13:45:14.980445Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "certified relative gap : -2.060e-16\n", "feasible : 1\n", "Beckmann objective : 386.000008\n", "route time (TSTT/D) : 92.000000 (analytic UE: 92)\n", "checkpoints certified : 50 (first gap 3.341e-08, last -2.060e-16)\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", "# Algorithm B's max/min-segment bush shifts reach machine precision on Braess — the\n", "# reliable high-accuracy rung.\n", "assert metrics[\"feasible\"] == 1.0\n", "assert abs(certified_gap) < 1e-10\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=1e-4)\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) < 1e-3\n", "\n", "# Certify EVERY checkpoint the same way — the trace feeds the visual below.\n", "trace_gaps = [\n", " evaluator.evaluate(c.link_flows)[\"relative_gap\"] for c in bundle.trace.checkpoints\n", "]\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": "21481896", "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": "318aaf61", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:14.984986Z", "iopub.status.busy": "2026-07-21T13:45:14.984810Z", "iopub.status.idle": "2026-07-21T13:45:15.279791Z", "shell.execute_reply": "2026-07-21T13:45:15.278849Z" } }, "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": [ "# 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), {\"algb\": final.link_flows}))" ] }, { "cell_type": "markdown", "id": "6a739ace", "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", "- **Segment shifts.** Moving flow between a bush's longest and shortest used segments converges reliably to machine precision with per-origin link storage.\n", "- **Where next.** the origin-based precursor: [`oba`](07-oba.ipynb); the proportionality refinement: [`tapas`](09-tapas.ipynb); the path-based sibling: [`gp`](06-gp.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": "algb" } }, "nbformat": 4, "nbformat_minor": 5 }