{ "cells": [ { "cell_type": "markdown", "id": "c5084863", "metadata": {}, "source": [ "# `oba` — Origin-based assignment (Bar-Gera 2002) on the Braess network\n", "\n", "**What.** Origin-based assignment confines each origin's flow to an acyclic subnetwork (a 'bush') and equilibrates within it, so it captures the whole route set of an origin without enumerating paths. Bushes give near-Newton convergence with link-order storage, the departure that made high-accuracy equilibria routine.\n", "\n", "**Why it is in the benchmark.** It opens the bush-based branch of the convergence ladder (`[bargera2002origin]`). 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: `[bargera2002origin]` ([docs/REFERENCES.md](../../docs/REFERENCES.md))." ] }, { "cell_type": "markdown", "id": "7d6f42bc", "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": "367fed48", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:07.824787Z", "iopub.status.busy": "2026-07-21T13:45:07.824639Z", "iopub.status.idle": "2026-07-21T13:45:09.759277Z", "shell.execute_reply": "2026-07-21T13:45:09.758170Z" } }, "outputs": [], "source": [ "# Setup. `oba` 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", " OriginBasedModel,\n", " RngBundle,\n", " Trace,\n", " braess_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "a7aafad0", "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": "a649ba36", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:09.763145Z", "iopub.status.busy": "2026-07-21T13:45:09.762739Z", "iopub.status.idle": "2026-07-21T13:45:09.767608Z", "shell.execute_reply": "2026-07-21T13:45:09.767092Z" } }, "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": "ba9ea002", "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": "6cc7d297", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:09.770765Z", "iopub.status.busy": "2026-07-21T13:45:09.770203Z", "iopub.status.idle": "2026-07-21T13:45:09.815029Z", "shell.execute_reply": "2026-07-21T13:45:09.814528Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "model : oba\n", "budget spent : 50 iterations, 286 shortest-path calls\n", "checkpoints : 50\n", "emitted flows : [4. 2. 2. 2. 4.]\n", "self-reported gap: 0.000e+00 (provenance only)\n" ] } ], "source": [ "model = OriginBasedModel()\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": "31f3f00a", "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": "8bf753b4", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:09.817341Z", "iopub.status.busy": "2026-07-21T13:45:09.817077Z", "iopub.status.idle": "2026-07-21T13:45:09.837672Z", "shell.execute_reply": "2026-07-21T13:45:09.837169Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "certified relative gap : 0.000e+00\n", "feasible : 1\n", "Beckmann objective : 386.000008\n", "route time (TSTT/D) : 92.000000 (analytic UE: 92)\n", "checkpoints certified : 50 (first gap 2.767e-02, last 0.000e+00)\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", "# The origin bush equilibrates to machine precision on Braess — bush storage without\n", "# path enumeration, the origin-based advance.\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": "4583d40c", "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": "80214588", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:45:09.840502Z", "iopub.status.busy": "2026-07-21T13:45:09.840281Z", "iopub.status.idle": "2026-07-21T13:45:10.139491Z", "shell.execute_reply": "2026-07-21T13:45:10.138781Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAHXCAYAAADeCAHgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABL1klEQVR4nO3dd3xT5eIG8OckTdKku01baGmhzHtRBLRlTy1DZMgStz8VkOG+DlRcKEMRvFcpVECuC2UjoCKIi6EUBRFR8KIo27ZpmzZtU5rx/v6oDZ2QtGlOxvP9fPr5kOTk5CHGPrznfXOOZLVaBIiIiOiSFHIHICIi8hUsTSIiIiexNImIiJzE0iQiInISS5OIiMhJLE0iIiInsTSJiIicxNIkIiJyEkuTiIjISSxNIg+YMWMGpk6d6tS2K1euRJ8+fZo4UcO89dbbaN++AxISEvHjjz/KHYfI44LkDkBEvsFiseDxxx/Hxo0b0KtXL7njEMmCI00igtVqhRAXPw11dnY2ysrK0LFjxwa9hsViadDziLwJS5MIQKdOnbBgwUIMGDAQzZsnYOzYccjPL8DDD/8LycnJ6Nr1SmRlZTm2N5lMuP/+B9C+fQe0b98BDz74EEpKShyP79mzBz179kJCQiJuueVWmEzF1V7v+PE/MGHCBLRu3QaXX3455s+fD7vdfsmcGRkZGD58RLX71q/fgNTUNADAwYMHcc016WjRIgkpKa0xYcKEevcVERGJpUuXokePnmjePAHFxcX15vrxxx+RltYNANCx42Xo3LkLAKC4uBiPPPIoLrvscrRp0xb33HMPCgsLAQAnTpxAREQk3nvvPXTp0hX//GdHR8bhw4ejZctW6NKlK956621Hprlz52LChAl45JFHkZycjMsuuxzr129wPG6325GZmYnU1DQkJrZA165XYseOHQAAIYTjseTkZFx33XX49ddfL/meErmCpUn0t40bN+C9997F0aNHcObMGaSnp2PAgP74448/MH78ODz00EOObWfMmIHjx49j795v8e233+DYsf/hiSeeBAAUFBhx0003YdKkSTh58gRuvfUWrFmzxvHc0tJSjBo1Ev3798fRo0ewdetWrF+/Ae+9994lM44fPx579+7F6dOnHfetXr3aUY6PPvoYhg4dipMnT+Do0SO4//77L7q/tWvXYePGDTh9+hSUSmW9uTp3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48ePO5UrKSkJpaWl1a5gDwB//PFHnatqPSE5ORkrV76HiRMn1nnY1lmJiQk4efJktftOnjzpGLl27nwFLJZyLF261HEotkePHliyZDFUKhU6duzYqL8HEcDSpABVUlICIQRiY/VQKBTYvn07vvjiS6efX1RkQnCwBpGRkSguLsasWS9cdPvw8HCMHDkCEydORHJyS3Tu3NnxWGxsHP788896C/eGG8bjwIEDePPNFTh//jxKS0vxzTff1LltYmIi+vTpjaeeegoFBUZYrVZs374dW7duxbhxY53++7nboEGDsGzZMtx++x346quvG7iPwcjNzcWyZcthtVrxzTffYO3atbjpphsBAEqlEr169cKSJZno27cvAKB//35YsiQTffr08YoLKJPvY2lSQPrHP/6BRx75F0aMGIlWrVKwYcMGXHutc3OMAHDvvdOhUCjRrl179OzZE926pV3yObfddht++ukwbr21+vchb7/9dpw9ew4tW7aqc64yMTERmzdvwrp1a9GuXTt06nSFY360LitWrIAkSejZsydat26N2bPnYMWKN9GlS5dq2w0ePKTa9zQHDrzaub98A6WnX4MVK1bgzjvvxOeff+Hy86OiIrF+/TqsWbMGKSmt8cADD2LhwgXo2bOnY5u+ffuiqKjIcSi2f//+1W4TNZZktVqcOx5FRI1y6tQpXHnlVfj116OIjo6WOw4RNQBHmkQeYLPZ8O9//wejR1/PwiTyYTwjEFET+/PPP9GzZy+0bNkSa9eukTsOETUCD88SERE5iYdniYiInMTSJCIichJLk4iIyEksTSIiIiexNImIiJzE0iQiInISS5OIiMhJLE0iIiIn/T+Av8RqGZ/VwAAAAABJRU5ErkJggg==", "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), {\"oba\": final.link_flows}))" ] }, { "cell_type": "markdown", "id": "e3dfd098", "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", "- **Bushes, not paths.** Confining each origin's flow to an acyclic subnetwork gives near-Newton convergence with link-order storage.\n", "- **Where next.** the bush-based siblings: [`algb`](08-algb.ipynb) · [`tapas`](09-tapas.ipynb); the path-based precursor: [`gp`](06-gp.ipynb); link-based: [`bfw`](05-bfw.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": "oba" } }, "nbformat": 4, "nbformat_minor": 5 }