{
"cells": [
{
"cell_type": "markdown",
"id": "7d8922ca",
"metadata": {},
"source": [
"# Telemetry & Solver Diagnostics\n",
"\n",
"Explore a sample heuristic telemetry log and visualise convergence metrics."
]
},
{
"cell_type": "markdown",
"id": "18618ecb",
"metadata": {},
"source": [
"**Telemetry analysis not found**: generate reports"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "ddc43779",
"metadata": {
"execution": {
"iopub.execute_input": "2026-10-05T12:57:17.600084Z",
"iopub.status.busy": "2026-10-05T12:57:17.599966Z",
"iopub.status.idle": "2026-10-05T12:57:17.998562Z",
"shell.execute_reply": "2026-10-05T12:57:17.997855Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" iteration | \n",
" objective | \n",
" accepted | \n",
" temperature | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" 200 | \n",
" 10 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" | 1 | \n",
" 50 | \n",
" 195 | \n",
" 11 | \n",
" 0.500000 | \n",
"
\n",
" \n",
" | 2 | \n",
" 100 | \n",
" 190 | \n",
" 12 | \n",
" 0.333333 | \n",
"
\n",
" \n",
" | 3 | \n",
" 150 | \n",
" 185 | \n",
" 13 | \n",
" 0.250000 | \n",
"
\n",
" \n",
" | 4 | \n",
" 200 | \n",
" 180 | \n",
" 14 | \n",
" 0.200000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" iteration objective accepted temperature\n",
"0 0 200 10 1.000000\n",
"1 50 195 11 0.500000\n",
"2 100 190 12 0.333333\n",
"3 150 185 13 0.250000\n",
"4 200 180 14 0.200000"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import sys\n",
"from pathlib import Path\n",
"\n",
"PROJECT_ROOT = Path.cwd().resolve()\n",
"while PROJECT_ROOT != PROJECT_ROOT.parent and not (PROJECT_ROOT / \"pyproject.toml\").exists():\n",
" PROJECT_ROOT = PROJECT_ROOT.parent\n",
"if not (PROJECT_ROOT / \"pyproject.toml\").exists():\n",
" raise RuntimeError(\n",
" \"Notebook must be executed within a FHOPS checkout (pyproject.toml not found).\"\n",
" )\n",
"if str(PROJECT_ROOT) not in sys.path:\n",
" sys.path.insert(0, str(PROJECT_ROOT))\n",
"\n",
"\n",
"import json\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"\n",
"TELEMETRY_PATH = PROJECT_ROOT / \"docs/examples/analytics/data/telemetry_tiny7.jsonl\"\n",
"with TELEMETRY_PATH.open(\"r\", encoding=\"utf-8\") as f:\n",
" telemetry = [json.loads(line) for line in f]\n",
"telemetry_df = pd.DataFrame(telemetry)\n",
"telemetry_df.head()"
]
},
{
"cell_type": "markdown",
"id": "76329d09",
"metadata": {},
"source": [
"## Objective Trace"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "cb58d9d4",
"metadata": {
"execution": {
"iopub.execute_input": "2026-10-05T12:57:18.000950Z",
"iopub.status.busy": "2026-10-05T12:57:18.000786Z",
"iopub.status.idle": "2026-10-05T12:57:18.090849Z",
"shell.execute_reply": "2026-10-05T12:57:18.090168Z"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(6, 3))\n",
"ax.plot(telemetry_df[\"iteration\"], telemetry_df[\"objective\"], marker=\"o\")\n",
"ax.set_xlabel(\"Iteration\")\n",
"ax.set_ylabel(\"Objective\")\n",
"ax.set_title(\"Objective Convergence\")\n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"id": "f1c58f45",
"metadata": {},
"source": [
"## Acceptance Summary"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "384caa5f",
"metadata": {
"execution": {
"iopub.execute_input": "2026-10-05T12:57:18.092196Z",
"iopub.status.busy": "2026-10-05T12:57:18.092076Z",
"iopub.status.idle": "2026-10-05T12:57:18.097224Z",
"shell.execute_reply": "2026-10-05T12:57:18.096538Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" iteration | \n",
" accepted | \n",
" temperature | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" 10 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" | 1 | \n",
" 50 | \n",
" 11 | \n",
" 0.500000 | \n",
"
\n",
" \n",
" | 2 | \n",
" 100 | \n",
" 12 | \n",
" 0.333333 | \n",
"
\n",
" \n",
" | 3 | \n",
" 150 | \n",
" 13 | \n",
" 0.250000 | \n",
"
\n",
" \n",
" | 4 | \n",
" 200 | \n",
" 14 | \n",
" 0.200000 | \n",
"
\n",
" \n",
" | 5 | \n",
" 250 | \n",
" 15 | \n",
" 0.166667 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" iteration accepted temperature\n",
"0 0 10 1.000000\n",
"1 50 11 0.500000\n",
"2 100 12 0.333333\n",
"3 150 13 0.250000\n",
"4 200 14 0.200000\n",
"5 250 15 0.166667"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"telemetry_df[[\"iteration\", \"accepted\", \"temperature\"]]"
]
}
],
"metadata": {
"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.11.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}