{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import json\n", "\n", "import matplotlib.pyplot as plt\n", "from dataclasses import dataclass\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "this_dir = os.path.dirname(os.path.abspath(''))\n", "# results is in \"../results\"\n", "results_dir = os.path.join(this_dir, \"results\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "experiment_folder = \"casestudy_example\"\n", "experiment_name = \"cs_example_edf\"\n", "\n", "experiment_file = os.path.join(results_dir, experiment_folder, experiment_name + \".json\")\n", "if not os.path.exists(experiment_file):\n", " print(\"Experiment file not found: \", experiment_file)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "with open(experiment_file) as f:\n", " experiment_data_raw = json.load(f)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of records: 12118\n", "First record: {'entry': {'operation': 'start_work', 'chain': 0, 'node': 'node_0', 'count': 500, 'next_release_us': 99886}, 'time': 0.0001}\n", "Operation types: ['get_next_executable', 'next_deadline', 'wait_for_work', 'end_work', 'start_work']\n" ] } ], "source": [ "def pre_process_data(data):\n", " for record in data:\n", " record[\"time\"] = int(record[\"time\"])\n", "\n", " min_time = min([record[\"time\"] for record in data])\n", " for record in data:\n", " record[\"time\"] -= min_time\n", " record[\"time\"] /= (1000 * 1000)\n", "\n", " if record[\"entry\"][\"operation\"] == \"next_deadline\":\n", " #print(\"Record: \", record)\n", " record[\"entry\"][\"deadline\"] = int(record[\"entry\"][\"deadline\"])\n", " record[\"entry\"][\"deadline\"] -= min_time\n", " record[\"entry\"][\"deadline\"] /= (1000 * 1000)\n", "\n", " # data = sorted(data, key=lambda x: x[\"time\"])\n", " return data\n", "\n", "experiment_data = pre_process_data(experiment_data_raw)\n", "\n", "print(\"Number of records: \", len(experiment_data))\n", "print(\"First record: \", experiment_data[0])\n", "operation_types = list(set([record[\"entry\"][\"operation\"] for record in experiment_data]))\n", "print(\"Operation types: \", operation_types)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "@dataclass\n", "class Record:\n", " start_time: float\n", " end_time: float\n", " node_name: str\n", "\n", "@dataclass\n", "class RecordLine:\n", " node_name: str\n", " count: int\n", "\n", " def __eq__(self, other):\n", " return self.node_name == other.node_name and self.count == other.count\n", "\n", " def __hash__(self):\n", " return hash((self.node_name, self.count))\n", "\n", "def get_records(data) -> list[Record]:\n", " # used to match start_work and end_work records\n", " current_records: dict[RecordLine, Record] = {}\n", " records = []\n", " for record in data:\n", " if record[\"entry\"][\"operation\"] == \"start_work\":\n", " current_record = Record(start_time=record[\"time\"], node_name=record[\"entry\"][\"node\"], end_time=None)\n", " current_record_line = RecordLine(node_name=record[\"entry\"][\"node\"], count=record[\"entry\"][\"count\"])\n", " if current_record_line in current_records:\n", " raise Exception(\"Overlapping records\")\n", " current_records[current_record_line] = current_record\n", " elif record[\"entry\"][\"operation\"] == \"end_work\":\n", " current_record_line = RecordLine(node_name=record[\"entry\"][\"node\"], count=record[\"entry\"][\"count\"])\n", " if current_record_line not in current_records:\n", " raise Exception(\"No start record\")\n", " current_record = current_records[current_record_line]\n", " current_record.end_time = record[\"time\"]\n", " records.append(current_record)\n", " del current_records[current_record_line]\n", " return records\n", "\n", "records = get_records(experiment_data)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of nodes: 4\n" ] } ], "source": [ "num_nodes = len(set([record.node_name for record in records]))\n", "print(\"Number of nodes: \", num_nodes)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3c172c35015c4ffd92a176ce80ffd18d", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJHtJREFUeJzt3X+M1/V9wPHXlx8eCNzh6YS7eVoQW37kqA4UQSNYLu7YEsnaFWqIP5bTTtyKratYkwGHxdOqTVn8sSl0igmZsszMxJq507XMtHCKk1Xh2tSDCpUCqwintpzKffZH4zdeBT30+/3e9+79eCTfcD8+38/7x31zPPM5Pkcuy7IsAABIxqC+ngAAAKUlAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEjOkryfQn3V3d8eePXti1KhRkcvl+no6AEAvZFkWb775ZtTW1sagQWleCxOAn8KePXuirq6ur6cBAHwCu3fvjtNOO62vp9EnBOCnMGrUqIj4/QuosrKyj2cDAPRGZ2dn1NXV5f8eT5EA/BTe/7FvZWWlAASAfiblf76V5g++AQASJgABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwDLWC5XmGMKea5Sj9db1jfwXwu5XOnn3hvluleF0p/H66+v9d4qx7mXen18cgIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDH9JgCbm5vj7LPP7utpAAD0e/0mAAvpl7/8ZTQ1NcW4ceNi+PDhceaZZ8aKFSvinXfe6eupAQAU3ZC+nkBf+NnPfhbd3d1x//33x4QJE+Lll1+Oa665Jt5+++246667+np6AABFVZQrgHPmzIklS5bE0qVLo7q6OsaOHRvNzc35z+/atSvmz58fI0eOjMrKyliwYEHs27evxzluv/32GDNmTIwaNSqampri8OHDHxpn7dq1MWnSpBg2bFhMnDgx7rvvvl7Nr7GxMR588MG45JJLYvz48XHppZfGN7/5zXjsscc+1boBAPqDov0IeN26dTFixIhoa2uLO+64I2655ZZobW2N7u7umD9/fhw4cCA2btwYra2tsWPHjli4cGH+uRs2bIjm5uZoaWmJLVu2RE1NzYfibv369bF8+fK49dZbo729PVpaWmLZsmWxbt26TzTfQ4cORXV19adaMwBAf5DLsiwr9EnnzJkTR44ciWeffTb/sfPOOy++8IUvxNy5c2PevHmxc+fOqKuri4iI7du3x5QpU+K5556Lc889N2bNmhXnnHNO3Hvvvfnnn3/++XH48OHYunVrRERMmDAhvv3tb8dll12WP2bVqlXx5JNPxk9+8pPjmu8rr7wS06ZNi7vuuiuuueaaYx7X1dUVXV1d+fc7Ozujrq4uDh06FJWVlcc1Zm/kchEf99XpzTGFPFepx+st6xv4r4Vc7vd/lnLuvVGue1WO6yv1eP31td5b5Tj3Uq/vk+rs7Iyqqqqi/f3dHxTtCuDUqVN7vF9TUxP79++P9vb2qKury8dfRMTkyZNj9OjR0d7eHhER7e3tMWPGjB7PnzlzZv7tt99+Ozo6OqKpqSlGjhyZf6xatSo6OjqOa56vvfZaNDY2xpe//OWPjL+IiNtuuy2qqqryjw+uAQCgvyjaTSBDhw7t8X4ul4vu7u6CnPutt96KiIg1a9Z8KBQHDx7c6/Ps2bMnLr744pg1a1Y88MADH3v8zTffHDfccEP+/fevAAIA9Cclvwt40qRJsXv37ti9e3ePHwEfPHgwJk+enD+mra0trrjiivzzNm/enH97zJgxUVtbGzt27IhFixZ9onm89tprcfHFF8e0adPiwQcfjEGDPv5iaEVFRVRUVHyi8QAAykXJA7ChoSHq6+tj0aJFsXr16njvvffiuuuui9mzZ8f06dMjIuL666+Pq666KqZPnx4XXHBBrF+/PrZt2xbjx4/Pn2flypWxZMmSqKqqisbGxujq6ootW7bEG2+80eMq3dG89tprMWfOnDjjjDPirrvuiv/7v//Lf27s2LHFWTgAQJkoeQDmcrl4/PHH42tf+1pcdNFFMWjQoGhsbIy77747f8zChQujo6Mjli5dGocPH44vfelLsXjx4njqqafyx1x99dVx4oknxp133hk33nhjjBgxIurr6+PrX//6x86htbU1XnnllXjllVfitNNO6/G5ItwTAwBQVopyF3Aqin0XUX++w6sc7xazvsKey13AhR+vv96JWa7j9dfXem+V49zdBdx/JPlfwQEApGxABmBLS0uPXw/zwce8efP6enoAAH1qQP5fwNdee20sWLDgqJ8bPnx4iWcDAFBeBmQAVldX+2/dAACOYUD+CBgAgGMTgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkRgAAAiRGAAACJEYAAAIkZ0tcT4NiyrDDHFPJcpR6vt6xv4L8WfG0KP15v9OfxvPbKd696o5Dn4sNcAQQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAsY7lcYY4p5LlKPV5vGa9vxivl66rU4/WW9ZXveL7vle/ce6PU46VGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkpt8EYHNzc5x99tl9PQ0AgH6v3wRgoR04cCAWLVoUlZWVMXr06Ghqaoq33nqrr6cFAFB0yQbgokWLYtu2bdHa2hpPPPFE/Pd//3d89atf7etpAQAUXVECcM6cObFkyZJYunRpVFdXx9ixY6O5uTn/+V27dsX8+fNj5MiRUVlZGQsWLIh9+/b1OMftt98eY8aMiVGjRkVTU1McPnz4Q+OsXbs2Jk2aFMOGDYuJEyfGfffd16v5tbe3x3/8x3/E2rVrY8aMGXHhhRfG3XffHY888kjs2bPnU60dAKDcFe0K4Lp162LEiBHR1tYWd9xxR9xyyy3R2toa3d3dMX/+/Dhw4EBs3LgxWltbY8eOHbFw4cL8czds2BDNzc3R0tISW7ZsiZqamg/F3fr162P58uVx6623Rnt7e7S0tMSyZcti3bp1Hzu3TZs2xejRo2P69On5jzU0NMSgQYOira3tmM/r6uqKzs7OHg8AgP5mSLFOPHXq1FixYkVERJx11llxzz33xDPPPBMRES+99FLs3Lkz6urqIiLi4YcfjilTpsTzzz8f5557bqxevTqampqiqakpIiJWrVoVTz/9dI+rgCtWrIjvfve78cUvfjEiIsaNGxfbt2+P+++/P6688sqPnNvevXvj1FNP7fGxIUOGRHV1dezdu/eYz7vtttti5cqVx7kTAADlpWhXAKdOndrj/Zqamti/f3+0t7dHXV1dPv4iIiZPnhyjR4+O9vb2iPj9j2hnzJjR4/kzZ87Mv/32229HR0dHNDU1xciRI/OPVatWRUdHR7GWFDfffHMcOnQo/9i9e3fRxgIAKJaiXQEcOnRoj/dzuVx0d3cX5Nzv3627Zs2aD4Xi4MGDP/b5Y8eOjf379/f42HvvvRcHDhyIsWPHHvN5FRUVUVFR8QlmDABQPkp+F/CkSZNi9+7dPa6ebd++PQ4ePBiTJ0/OH/OH/xZv8+bN+bfHjBkTtbW1sWPHjpgwYUKPx7hx4z52DjNnzoyDBw/GCy+8kP/Yf/3Xf0V3d/eHghIAYKAp2hXAY2loaIj6+vpYtGhRrF69Ot5777247rrrYvbs2fmbMq6//vq46qqrYvr06XHBBRfE+vXrY9u2bTF+/Pj8eVauXBlLliyJqqqqaGxsjK6urtiyZUu88cYbccMNN3zkHCZNmhSNjY1xzTXXxD/90z/Fu+++G3/7t38bX/nKV6K2trao6wcA6GslvwKYy+Xi8ccfj5NOOikuuuiiaGhoiPHjx8ejjz6aP2bhwoWxbNmyWLp0aUybNi1effXVWLx4cY/zXH311bF27dp48MEHo76+PmbPnh0PPfRQr64ARvz+LuKJEyfG3Llz48/+7M/iwgsvjAceeKCgawUAKEe5LMuyvp5Ef9XZ2RlVVVVx6NChqKysLPj5c7mIj/vq9OaYQp6r1OP1lvH6ZryI0r2uSj1eb1lf+Y7n+175zr03ijlesf/+7g+S/Z9AAABSNSADsKWlpcevh/ngY968eX09PQCAPlXym0BK4dprr40FCxYc9XPDhw8v8WwAAMrLgAzA6urqqK6u7utpAACUpQH5I2AAAI5NAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRmSF9PgGPLssIcU8hzlXq83jJe+Y7ntWd9fTWer035zr03Sj1ealwBBABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAsc7lcYY7pi/EKda6+WF+hxuyL/Szlvpd6vOM518cdV45zOp5zleqY4zlXIfb8eMYr5bkG+ni9VervHRSPAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABITL8JwObm5jj77LP7ehoAAP1evwnAQrv00kvj9NNPj2HDhkVNTU1cfvnlsWfPnr6eFgBA0SUbgBdffHFs2LAhfv7zn8e//du/RUdHR/zlX/5lX08LAKDoihKAc+bMiSVLlsTSpUujuro6xo4dG83NzfnP79q1K+bPnx8jR46MysrKWLBgQezbt6/HOW6//fYYM2ZMjBo1KpqamuLw4cMfGmft2rUxadKkGDZsWEycODHuu+++Xs/xG9/4Rpx//vlxxhlnxKxZs+Jb3/pWbN68Od59991PvG4AgP6gaFcA161bFyNGjIi2tra444474pZbbonW1tbo7u6O+fPnx4EDB2Ljxo3R2toaO3bsiIULF+afu2HDhmhubo6WlpbYsmVL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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib widget\n", "\n", "# swimlane plot\n", "name_to_id = {name: i for i, name in enumerate(set([record.node_name for record in records]))}\n", "fig, ax = plt.subplots()\n", "for i, record in enumerate(records):\n", " # ax.plot([record.start_time, record.end_time], [name_to_id[record.node_name], name_to_id[record.node_name]], label=record.node_name)\n", " ax.broken_barh([(record.start_time, record.end_time - record.start_time)], (name_to_id[record.node_name] - 0.4, 0.8), facecolors='blue')\n", "ax.set_yticks(range(num_nodes))\n", "ax.set_yticklabels(name_to_id.keys())\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[Deadline(chain_id=1, deadline=0.0003, on_time=1), Deadline(chain_id=0, deadline=0.0003, on_time=0), Deadline(chain_id=0, deadline=0.0004, on_time=1), Deadline(chain_id=1, deadline=0.0004, on_time=0), Deadline(chain_id=1, deadline=0.0005, on_time=1), Deadline(chain_id=0, deadline=0.0005, on_time=1), Deadline(chain_id=0, deadline=0.0006, on_time=1), Deadline(chain_id=1, deadline=0.0006, on_time=1), Deadline(chain_id=0, deadline=0.0007, on_time=1), Deadline(chain_id=1, deadline=0.0007, on_time=1), Deadline(chain_id=1, deadline=0.0008, on_time=1), Deadline(chain_id=0, deadline=0.0008, on_time=1), Deadline(chain_id=0, deadline=0.0009, on_time=1), Deadline(chain_id=1, deadline=0.0009, on_time=1), Deadline(chain_id=1, deadline=0.001, on_time=1), Deadline(chain_id=0, deadline=0.001, on_time=1), Deadline(chain_id=0, deadline=0.0011, on_time=1), Deadline(chain_id=1, deadline=0.0011, on_time=1), Deadline(chain_id=1, deadline=0.0012, on_time=1), Deadline(chain_id=0, deadline=0.0012, on_time=1), Deadline(chain_id=0, deadline=0.0013, on_time=1), Deadline(chain_id=1, deadline=0.0013, on_time=1), Deadline(chain_id=1, deadline=0.0014, on_time=1), Deadline(chain_id=0, deadline=0.0014, on_time=1), Deadline(chain_id=1, deadline=0.0015, on_time=1), Deadline(chain_id=0, deadline=0.0015, on_time=1), Deadline(chain_id=1, deadline=0.0016, on_time=1), Deadline(chain_id=0, deadline=0.0016, on_time=1), Deadline(chain_id=0, deadline=0.0017, on_time=1), Deadline(chain_id=1, deadline=0.0017, on_time=1), Deadline(chain_id=1, deadline=0.0018, on_time=1), Deadline(chain_id=0, deadline=0.0018, on_time=1), Deadline(chain_id=0, deadline=0.0019, on_time=1), Deadline(chain_id=1, deadline=0.0019, on_time=1), Deadline(chain_id=1, deadline=0.002, on_time=1), Deadline(chain_id=0, deadline=0.002, on_time=1), Deadline(chain_id=0, deadline=0.0021, on_time=1), Deadline(chain_id=1, deadline=0.0021, on_time=0), Deadline(chain_id=1, deadline=0.0022, on_time=1), Deadline(chain_id=0, deadline=0.0022, on_time=1), Deadline(chain_id=1, deadline=0.0023, on_time=1), Deadline(chain_id=0, deadline=0.0023, on_time=1), Deadline(chain_id=0, deadline=0.0024, on_time=1), Deadline(chain_id=1, deadline=0.0024, on_time=1), Deadline(chain_id=0, deadline=0.0025, on_time=1), Deadline(chain_id=1, deadline=0.0025, on_time=1), Deadline(chain_id=1, deadline=0.0026, on_time=1), Deadline(chain_id=0, deadline=0.0026, on_time=1), Deadline(chain_id=0, deadline=0.0027, on_time=1), Deadline(chain_id=1, deadline=0.0027, on_time=1), Deadline(chain_id=1, deadline=0.0028, on_time=1), Deadline(chain_id=0, deadline=0.0028, on_time=1), Deadline(chain_id=0, deadline=0.0029, on_time=1), Deadline(chain_id=1, deadline=0.0029, on_time=1), Deadline(chain_id=1, deadline=0.003, on_time=1), Deadline(chain_id=0, deadline=0.003, on_time=1), Deadline(chain_id=0, deadline=0.0031, on_time=1), Deadline(chain_id=1, deadline=0.0031, on_time=0), Deadline(chain_id=1, deadline=0.0032, on_time=1), Deadline(chain_id=0, deadline=0.0032, on_time=0), Deadline(chain_id=1, deadline=0.0033, on_time=1), Deadline(chain_id=0, deadline=0.0033, on_time=0), Deadline(chain_id=1, deadline=0.0034, on_time=1), Deadline(chain_id=0, deadline=0.0034, on_time=1), Deadline(chain_id=0, deadline=0.0035, on_time=1), Deadline(chain_id=1, deadline=0.0035, on_time=0), Deadline(chain_id=0, deadline=0.0036, on_time=1), Deadline(chain_id=1, deadline=0.0036, on_time=1), Deadline(chain_id=0, deadline=0.0037, on_time=1), Deadline(chain_id=1, deadline=0.0037, on_time=0), Deadline(chain_id=1, deadline=0.0038, on_time=1), Deadline(chain_id=0, deadline=0.0038, on_time=0), Deadline(chain_id=0, deadline=0.0039, on_time=1), Deadline(chain_id=1, deadline=0.0039, on_time=0), Deadline(chain_id=1, deadline=0.004, on_time=1), Deadline(chain_id=0, deadline=0.004, on_time=0), Deadline(chain_id=0, deadline=0.0041, on_time=1), Deadline(chain_id=1, deadline=0.0041, on_time=0), Deadline(chain_id=0, deadline=0.0042, on_time=1), Deadline(chain_id=1, deadline=0.0042, on_time=0), Deadline(chain_id=1, deadline=0.0043, on_time=1), Deadline(chain_id=0, deadline=0.0043, on_time=0), Deadline(chain_id=1, deadline=0.0044, on_time=1), Deadline(chain_id=0, deadline=0.0044, on_time=0), Deadline(chain_id=0, deadline=0.0045, on_time=1), Deadline(chain_id=1, deadline=0.0045, on_time=1), Deadline(chain_id=1, deadline=0.0046, on_time=1), Deadline(chain_id=0, deadline=0.0046, on_time=0), Deadline(chain_id=1, deadline=0.0047, on_time=1), Deadline(chain_id=0, deadline=0.0047, on_time=0), Deadline(chain_id=0, deadline=0.0048, on_time=1), Deadline(chain_id=1, deadline=0.0048, on_time=0), Deadline(chain_id=0, deadline=0.0049, on_time=1), Deadline(chain_id=1, deadline=0.0049, on_time=0), Deadline(chain_id=0, deadline=0.005, on_time=1), Deadline(chain_id=1, deadline=0.005, on_time=0), Deadline(chain_id=1, deadline=0.0051, on_time=1), Deadline(chain_id=0, deadline=0.0051, on_time=0), Deadline(chain_id=0, deadline=0.0052, on_time=1), Deadline(chain_id=1, deadline=0.0052, on_time=0), Deadline(chain_id=1, deadline=0.0053, on_time=1), Deadline(chain_id=0, deadline=0.0053, on_time=0), Deadline(chain_id=1, deadline=0.0054, on_time=1), Deadline(chain_id=0, deadline=0.0054, on_time=0), Deadline(chain_id=1, deadline=0.0055, on_time=1), Deadline(chain_id=0, deadline=0.0055, on_time=0), Deadline(chain_id=0, deadline=0.0056, on_time=1), Deadline(chain_id=1, deadline=0.0056, on_time=0), Deadline(chain_id=0, deadline=0.0057, on_time=1), Deadline(chain_id=1, deadline=0.0057, on_time=0), Deadline(chain_id=1, deadline=0.0058, on_time=1), Deadline(chain_id=0, deadline=0.0058, on_time=1), Deadline(chain_id=0, deadline=0.0059, on_time=1), Deadline(chain_id=1, deadline=0.0059, on_time=0), Deadline(chain_id=0, deadline=0.006, on_time=1), Deadline(chain_id=1, deadline=0.006, on_time=0), Deadline(chain_id=1, deadline=0.0061, on_time=1), Deadline(chain_id=0, deadline=0.0061, on_time=0), Deadline(chain_id=1, deadline=0.0062, on_time=1), Deadline(chain_id=0, deadline=0.0062, on_time=0), Deadline(chain_id=0, deadline=0.0063, on_time=1), Deadline(chain_id=1, deadline=0.0063, on_time=0), Deadline(chain_id=0, deadline=0.0064, on_time=1), Deadline(chain_id=1, deadline=0.0064, on_time=0), Deadline(chain_id=1, deadline=0.0065, on_time=1), Deadline(chain_id=0, deadline=0.0065, on_time=0), Deadline(chain_id=0, deadline=0.0066, on_time=1), Deadline(chain_id=1, deadline=0.0066, on_time=1), Deadline(chain_id=0, deadline=0.0067, on_time=1), Deadline(chain_id=1, deadline=0.0067, on_time=0), Deadline(chain_id=1, deadline=0.0068, on_time=1), Deadline(chain_id=0, deadline=0.0068, on_time=0), Deadline(chain_id=1, deadline=0.0069, on_time=1), Deadline(chain_id=0, deadline=0.0069, on_time=0), Deadline(chain_id=0, deadline=0.007, on_time=1), Deadline(chain_id=1, deadline=0.007, on_time=0), Deadline(chain_id=0, deadline=0.0071, on_time=1), Deadline(chain_id=1, deadline=0.0071, on_time=0), Deadline(chain_id=0, deadline=0.0072, on_time=1), Deadline(chain_id=1, deadline=0.0072, on_time=0), Deadline(chain_id=1, deadline=0.0073, on_time=1), Deadline(chain_id=0, deadline=0.0073, on_time=0), Deadline(chain_id=0, deadline=0.0074, on_time=1), Deadline(chain_id=1, deadline=0.0074, on_time=0), Deadline(chain_id=0, deadline=0.0075, on_time=1), Deadline(chain_id=1, deadline=0.0075, on_time=0), Deadline(chain_id=0, deadline=0.0076, on_time=1), Deadline(chain_id=1, deadline=0.0076, on_time=0), Deadline(chain_id=0, deadline=0.0077, on_time=1), Deadline(chain_id=1, deadline=0.0077, on_time=0), Deadline(chain_id=1, deadline=0.0078, on_time=1), Deadline(chain_id=0, deadline=0.0078, on_time=0), Deadline(chain_id=0, deadline=0.0079, on_time=1), Deadline(chain_id=1, deadline=0.0079, on_time=0), Deadline(chain_id=1, deadline=0.008, on_time=1), Deadline(chain_id=0, deadline=0.008, on_time=0), Deadline(chain_id=1, deadline=0.0081, on_time=1), Deadline(chain_id=0, deadline=0.0081, on_time=0), Deadline(chain_id=0, deadline=0.0082, on_time=1), Deadline(chain_id=1, deadline=0.0082, on_time=0), Deadline(chain_id=1, deadline=0.0083, on_time=1), Deadline(chain_id=0, deadline=0.0083, on_time=0), Deadline(chain_id=0, deadline=0.0084, on_time=1), Deadline(chain_id=1, deadline=0.0084, on_time=0), Deadline(chain_id=0, deadline=0.0085, on_time=1), Deadline(chain_id=1, deadline=0.0085, on_time=0), Deadline(chain_id=0, deadline=0.0086, on_time=1), Deadline(chain_id=1, deadline=0.0086, on_time=0), Deadline(chain_id=0, deadline=0.0087, on_time=1), Deadline(chain_id=1, deadline=0.0087, on_time=1), Deadline(chain_id=1, deadline=0.0088, on_time=1), Deadline(chain_id=0, deadline=0.0088, on_time=0), Deadline(chain_id=1, deadline=0.0089, on_time=1), Deadline(chain_id=0, deadline=0.0089, on_time=0), Deadline(chain_id=0, deadline=0.009, on_time=1), Deadline(chain_id=1, deadline=0.009, on_time=0), Deadline(chain_id=0, deadline=0.0091, on_time=1), Deadline(chain_id=1, deadline=0.0091, on_time=1), Deadline(chain_id=0, deadline=0.0092, on_time=1), Deadline(chain_id=1, deadline=0.0092, on_time=1), Deadline(chain_id=1, deadline=0.0093, on_time=1), Deadline(chain_id=0, deadline=0.0093, on_time=1), Deadline(chain_id=0, deadline=0.0094, on_time=1), Deadline(chain_id=1, deadline=0.0094, on_time=1), Deadline(chain_id=0, deadline=0.0095, on_time=1), Deadline(chain_id=1, deadline=0.0095, on_time=1), Deadline(chain_id=0, deadline=0.0096, on_time=1), Deadline(chain_id=1, deadline=0.0096, on_time=1), Deadline(chain_id=1, deadline=0.0097, on_time=1), Deadline(chain_id=0, deadline=0.0097, on_time=1), Deadline(chain_id=0, deadline=0.0098, on_time=1), Deadline(chain_id=1, deadline=0.0098, on_time=0), Deadline(chain_id=1, deadline=0.0099, on_time=1), Deadline(chain_id=0, deadline=0.0099, on_time=1), Deadline(chain_id=1, deadline=0.01, on_time=1), Deadline(chain_id=0, deadline=0.01, on_time=1), Deadline(chain_id=1, deadline=0.0101, on_time=1), Deadline(chain_id=0, deadline=0.0101, on_time=1), Deadline(chain_id=0, deadline=0.0102, on_time=1), Deadline(chain_id=1, deadline=0.0102, on_time=0), Deadline(chain_id=1, deadline=0.0103, on_time=1), Deadline(chain_id=0, deadline=0.0103, on_time=0), Deadline(chain_id=0, deadline=0.0104, on_time=1), Deadline(chain_id=1, deadline=0.0104, on_time=0), Deadline(chain_id=1, deadline=0.0105, on_time=1), Deadline(chain_id=0, deadline=0.0105, on_time=0), Deadline(chain_id=0, deadline=0.0106, on_time=1), Deadline(chain_id=1, deadline=0.0106, on_time=0), Deadline(chain_id=1, deadline=0.0107, on_time=1), Deadline(chain_id=0, deadline=0.0107, on_time=0), Deadline(chain_id=1, deadline=0.0108, on_time=1), Deadline(chain_id=0, deadline=0.0108, on_time=1), Deadline(chain_id=0, deadline=0.0109, on_time=1), Deadline(chain_id=0, deadline=0.011, on_time=1), Deadline(chain_id=1, deadline=0.0109, on_time=1), Deadline(chain_id=0, deadline=0.0111, on_time=1), Deadline(chain_id=1, deadline=0.011, on_time=0), Deadline(chain_id=1, deadline=0.0111, on_time=1), Deadline(chain_id=0, deadline=0.0112, on_time=1), Deadline(chain_id=0, deadline=0.0113, on_time=1), Deadline(chain_id=1, deadline=0.0112, on_time=0), Deadline(chain_id=0, deadline=0.0114, on_time=1), Deadline(chain_id=1, deadline=0.0113, on_time=0), Deadline(chain_id=1, deadline=0.0114, on_time=1), Deadline(chain_id=0, deadline=0.0115, on_time=1), Deadline(chain_id=0, deadline=0.0116, on_time=1), Deadline(chain_id=1, deadline=0.0115, on_time=0), Deadline(chain_id=1, deadline=0.0116, on_time=1), Deadline(chain_id=0, deadline=0.0117, on_time=1), Deadline(chain_id=0, deadline=0.0118, on_time=1), Deadline(chain_id=1, deadline=0.0117, on_time=0), Deadline(chain_id=0, deadline=0.0119, on_time=1), Deadline(chain_id=1, deadline=0.0118, on_time=0), Deadline(chain_id=0, deadline=0.012, on_time=1), Deadline(chain_id=1, deadline=0.0119, on_time=1), Deadline(chain_id=1, deadline=0.012, on_time=1), Deadline(chain_id=1, deadline=0.0121, on_time=1), Deadline(chain_id=0, deadline=0.0121, on_time=1), Deadline(chain_id=1, deadline=0.0122, on_time=1), Deadline(chain_id=0, deadline=0.0122, on_time=1), Deadline(chain_id=0, deadline=0.0123, on_time=1), Deadline(chain_id=1, deadline=0.0123, on_time=1), Deadline(chain_id=0, deadline=0.0124, on_time=1), Deadline(chain_id=1, deadline=0.0124, on_time=1), Deadline(chain_id=1, deadline=0.0125, on_time=1), Deadline(chain_id=0, deadline=0.0125, on_time=1), Deadline(chain_id=0, deadline=0.0126, on_time=1), Deadline(chain_id=1, deadline=0.0126, on_time=1), Deadline(chain_id=0, deadline=0.0127, on_time=1), Deadline(chain_id=1, deadline=0.0127, on_time=1), Deadline(chain_id=0, deadline=0.0128, on_time=1), Deadline(chain_id=1, deadline=0.0128, on_time=1), Deadline(chain_id=0, deadline=0.0129, on_time=1), Deadline(chain_id=1, deadline=0.0129, on_time=1), Deadline(chain_id=1, deadline=0.013, on_time=1), Deadline(chain_id=0, deadline=0.013, on_time=1), Deadline(chain_id=1, deadline=0.0131, on_time=1), Deadline(chain_id=0, deadline=0.0131, on_time=1), Deadline(chain_id=0, deadline=0.0132, on_time=1), Deadline(chain_id=1, deadline=0.0132, on_time=1), Deadline(chain_id=1, deadline=0.0133, on_time=1), Deadline(chain_id=0, deadline=0.0133, on_time=1), Deadline(chain_id=1, deadline=0.0134, on_time=1), Deadline(chain_id=0, deadline=0.0134, on_time=1), Deadline(chain_id=0, deadline=0.0135, on_time=1), Deadline(chain_id=1, deadline=0.0135, on_time=1), Deadline(chain_id=0, deadline=0.0136, on_time=1), Deadline(chain_id=1, deadline=0.0136, on_time=1), Deadline(chain_id=0, deadline=0.0137, on_time=1), Deadline(chain_id=1, deadline=0.0137, on_time=1), Deadline(chain_id=0, deadline=0.0138, on_time=1), Deadline(chain_id=1, deadline=0.0138, on_time=1), Deadline(chain_id=1, deadline=0.0139, on_time=1), Deadline(chain_id=0, deadline=0.0139, on_time=1), Deadline(chain_id=1, deadline=0.014, on_time=1), Deadline(chain_id=0, deadline=0.014, on_time=1), Deadline(chain_id=1, deadline=0.0141, on_time=1), Deadline(chain_id=0, deadline=0.0141, on_time=1), Deadline(chain_id=1, deadline=0.0142, on_time=1), Deadline(chain_id=0, deadline=0.0142, on_time=1), Deadline(chain_id=1, deadline=0.0143, on_time=1), Deadline(chain_id=0, deadline=0.0143, on_time=1), Deadline(chain_id=0, deadline=0.0144, on_time=1), Deadline(chain_id=1, deadline=0.0144, on_time=1), Deadline(chain_id=1, deadline=0.0145, on_time=1), Deadline(chain_id=0, deadline=0.0145, on_time=1), Deadline(chain_id=1, deadline=0.0146, on_time=1), Deadline(chain_id=0, deadline=0.0146, on_time=1), Deadline(chain_id=0, deadline=0.0147, on_time=1), Deadline(chain_id=1, deadline=0.0147, on_time=1), Deadline(chain_id=0, deadline=0.0148, on_time=1), Deadline(chain_id=1, deadline=0.0148, on_time=1), Deadline(chain_id=0, deadline=0.0149, on_time=1), Deadline(chain_id=1, deadline=0.0149, on_time=1), Deadline(chain_id=0, deadline=0.015, on_time=1), Deadline(chain_id=1, deadline=0.015, on_time=1), Deadline(chain_id=1, deadline=0.0151, on_time=1), Deadline(chain_id=0, deadline=0.0151, on_time=1), Deadline(chain_id=1, deadline=0.0152, on_time=1), Deadline(chain_id=0, deadline=0.0152, on_time=1), Deadline(chain_id=1, deadline=0.0153, on_time=1), Deadline(chain_id=0, deadline=0.0153, on_time=1), Deadline(chain_id=1, deadline=0.0154, on_time=1), Deadline(chain_id=0, deadline=0.0154, on_time=1), Deadline(chain_id=1, deadline=0.0155, on_time=1), Deadline(chain_id=0, deadline=0.0155, on_time=1), Deadline(chain_id=1, deadline=0.0156, on_time=1), Deadline(chain_id=0, deadline=0.0156, on_time=1), Deadline(chain_id=0, deadline=0.0157, on_time=1), Deadline(chain_id=1, deadline=0.0157, on_time=1), Deadline(chain_id=1, deadline=0.0158, on_time=1), Deadline(chain_id=0, deadline=0.0158, on_time=1), Deadline(chain_id=0, deadline=0.0159, on_time=1), Deadline(chain_id=1, deadline=0.0159, on_time=1), Deadline(chain_id=0, deadline=0.016, on_time=1), Deadline(chain_id=1, deadline=0.016, on_time=1), Deadline(chain_id=0, deadline=0.0161, on_time=1), Deadline(chain_id=1, deadline=0.0161, on_time=1), Deadline(chain_id=1, deadline=0.0162, on_time=1), Deadline(chain_id=0, deadline=0.0162, on_time=1), Deadline(chain_id=1, deadline=0.0163, on_time=1), Deadline(chain_id=0, deadline=0.0163, on_time=1), Deadline(chain_id=0, deadline=0.0164, on_time=1), Deadline(chain_id=1, deadline=0.0164, on_time=1), Deadline(chain_id=1, deadline=0.0165, on_time=1), Deadline(chain_id=0, deadline=0.0165, on_time=1), Deadline(chain_id=0, deadline=0.0166, on_time=1), Deadline(chain_id=1, deadline=0.0166, on_time=1), Deadline(chain_id=1, deadline=0.0167, on_time=1), Deadline(chain_id=0, deadline=0.0167, on_time=1), Deadline(chain_id=0, deadline=0.0168, on_time=1), Deadline(chain_id=1, deadline=0.0168, on_time=1), Deadline(chain_id=1, deadline=0.0169, on_time=1), Deadline(chain_id=0, deadline=0.0169, on_time=1), Deadline(chain_id=1, deadline=0.017, on_time=1), Deadline(chain_id=0, deadline=0.017, on_time=1), Deadline(chain_id=0, deadline=0.0171, on_time=1), Deadline(chain_id=1, deadline=0.0171, on_time=1), Deadline(chain_id=0, deadline=0.0172, on_time=1), Deadline(chain_id=1, deadline=0.0172, on_time=1), Deadline(chain_id=1, deadline=0.0173, on_time=1), Deadline(chain_id=0, deadline=0.0173, on_time=1), Deadline(chain_id=0, deadline=0.0174, on_time=1), Deadline(chain_id=1, deadline=0.0174, on_time=1), Deadline(chain_id=1, deadline=0.0175, on_time=1), Deadline(chain_id=0, deadline=0.0175, on_time=1), Deadline(chain_id=0, deadline=0.0176, on_time=1), Deadline(chain_id=1, deadline=0.0176, on_time=1), Deadline(chain_id=0, deadline=0.0177, on_time=1), Deadline(chain_id=1, deadline=0.0177, on_time=1), Deadline(chain_id=1, deadline=0.0178, on_time=1), Deadline(chain_id=0, deadline=0.0178, on_time=1), Deadline(chain_id=0, deadline=0.0179, on_time=1), Deadline(chain_id=1, deadline=0.0179, on_time=1), Deadline(chain_id=1, deadline=0.018, on_time=1), Deadline(chain_id=0, deadline=0.018, on_time=1), Deadline(chain_id=0, deadline=0.0181, on_time=1), Deadline(chain_id=1, deadline=0.0181, on_time=1), Deadline(chain_id=0, deadline=0.0182, on_time=1), Deadline(chain_id=1, deadline=0.0182, on_time=1), Deadline(chain_id=1, deadline=0.0183, on_time=1), Deadline(chain_id=0, deadline=0.0183, on_time=1), Deadline(chain_id=0, deadline=0.0184, on_time=1), Deadline(chain_id=1, deadline=0.0184, on_time=1), Deadline(chain_id=1, deadline=0.0185, on_time=1), Deadline(chain_id=0, deadline=0.0185, on_time=1), Deadline(chain_id=1, deadline=0.0186, on_time=1), Deadline(chain_id=0, deadline=0.0186, on_time=1), Deadline(chain_id=0, deadline=0.0187, on_time=1), Deadline(chain_id=1, deadline=0.0187, on_time=1), Deadline(chain_id=1, deadline=0.0188, on_time=1), Deadline(chain_id=0, deadline=0.0188, on_time=1), Deadline(chain_id=0, deadline=0.0189, on_time=1), Deadline(chain_id=1, deadline=0.0189, on_time=1), Deadline(chain_id=1, deadline=0.019, on_time=1), Deadline(chain_id=0, deadline=0.019, on_time=1), Deadline(chain_id=0, deadline=0.0191, on_time=1), Deadline(chain_id=1, deadline=0.0191, on_time=1), Deadline(chain_id=1, deadline=0.0192, on_time=1), Deadline(chain_id=0, deadline=0.0192, on_time=1), Deadline(chain_id=0, deadline=0.0193, on_time=1), Deadline(chain_id=1, deadline=0.0193, on_time=1), Deadline(chain_id=1, deadline=0.0194, on_time=1), Deadline(chain_id=0, deadline=0.0194, on_time=1), Deadline(chain_id=0, deadline=0.0195, on_time=1), Deadline(chain_id=1, deadline=0.0195, on_time=1), Deadline(chain_id=1, deadline=0.0196, on_time=1), Deadline(chain_id=0, deadline=0.0196, on_time=1), Deadline(chain_id=1, deadline=0.0197, on_time=1), Deadline(chain_id=0, deadline=0.0197, on_time=1), Deadline(chain_id=0, deadline=0.0198, on_time=1), Deadline(chain_id=1, deadline=0.0198, on_time=1), Deadline(chain_id=0, deadline=0.0199, on_time=1), Deadline(chain_id=1, deadline=0.0199, on_time=1), Deadline(chain_id=1, deadline=0.02, on_time=1), Deadline(chain_id=0, deadline=0.02, on_time=1), Deadline(chain_id=0, deadline=0.0201, on_time=1), Deadline(chain_id=1, deadline=0.0201, on_time=1), Deadline(chain_id=1, deadline=0.0202, on_time=1), Deadline(chain_id=0, deadline=0.0202, on_time=1), Deadline(chain_id=0, deadline=0.0203, on_time=1), Deadline(chain_id=1, deadline=0.0203, on_time=1), Deadline(chain_id=1, deadline=0.0204, on_time=1), Deadline(chain_id=0, deadline=0.0204, on_time=1), Deadline(chain_id=0, deadline=0.0205, on_time=1), Deadline(chain_id=1, deadline=0.0205, on_time=1), Deadline(chain_id=1, deadline=0.0206, on_time=1), Deadline(chain_id=0, deadline=0.0206, on_time=1), Deadline(chain_id=1, deadline=0.0207, on_time=1), Deadline(chain_id=0, deadline=0.0207, on_time=1), Deadline(chain_id=0, deadline=0.0208, on_time=1), Deadline(chain_id=1, deadline=0.0208, on_time=1), Deadline(chain_id=0, deadline=0.0209, on_time=1), Deadline(chain_id=1, deadline=0.0209, on_time=1), Deadline(chain_id=1, deadline=0.021, on_time=1), Deadline(chain_id=0, deadline=0.021, on_time=1), Deadline(chain_id=0, deadline=0.0211, on_time=1), Deadline(chain_id=1, deadline=0.0211, on_time=1), Deadline(chain_id=1, deadline=0.0212, on_time=1), Deadline(chain_id=0, deadline=0.0212, on_time=1), Deadline(chain_id=0, deadline=0.0213, on_time=1), Deadline(chain_id=1, deadline=0.0213, on_time=1), Deadline(chain_id=1, deadline=0.0214, on_time=1), Deadline(chain_id=0, deadline=0.0214, on_time=1), Deadline(chain_id=0, deadline=0.0215, on_time=1), Deadline(chain_id=1, deadline=0.0215, on_time=1), Deadline(chain_id=1, deadline=0.0216, on_time=1), Deadline(chain_id=0, deadline=0.0216, on_time=1), Deadline(chain_id=0, deadline=0.0217, on_time=1), Deadline(chain_id=1, deadline=0.0217, on_time=1), Deadline(chain_id=1, deadline=0.0218, on_time=1), Deadline(chain_id=0, deadline=0.0218, on_time=1), Deadline(chain_id=0, deadline=0.0219, on_time=1), Deadline(chain_id=1, deadline=0.0219, on_time=1), Deadline(chain_id=1, deadline=0.022, on_time=1), Deadline(chain_id=0, deadline=0.022, on_time=1), Deadline(chain_id=0, deadline=0.0221, on_time=1), Deadline(chain_id=1, deadline=0.0221, on_time=1), Deadline(chain_id=1, deadline=0.0222, on_time=1), Deadline(chain_id=0, deadline=0.0222, on_time=1), Deadline(chain_id=0, deadline=0.0223, on_time=1), Deadline(chain_id=1, deadline=0.0223, on_time=1), Deadline(chain_id=0, deadline=0.0224, on_time=1), Deadline(chain_id=1, deadline=0.0224, on_time=1), Deadline(chain_id=0, deadline=0.0225, on_time=1), Deadline(chain_id=1, deadline=0.0225, on_time=1), Deadline(chain_id=1, deadline=0.0226, on_time=1), Deadline(chain_id=0, deadline=0.0226, on_time=1), Deadline(chain_id=0, deadline=0.0227, on_time=1), Deadline(chain_id=1, deadline=0.0227, on_time=1), Deadline(chain_id=1, deadline=0.0228, on_time=1), Deadline(chain_id=0, deadline=0.0228, on_time=1), Deadline(chain_id=0, deadline=0.0229, on_time=1), Deadline(chain_id=1, deadline=0.0229, on_time=1), Deadline(chain_id=1, deadline=0.023, on_time=1), Deadline(chain_id=0, deadline=0.023, on_time=1), Deadline(chain_id=0, deadline=0.0231, on_time=1), Deadline(chain_id=1, deadline=0.0231, on_time=1), Deadline(chain_id=1, deadline=0.0232, on_time=1), Deadline(chain_id=0, deadline=0.0232, on_time=1), Deadline(chain_id=0, deadline=0.0233, on_time=1), Deadline(chain_id=1, deadline=0.0233, on_time=1), Deadline(chain_id=1, deadline=0.0234, on_time=1), Deadline(chain_id=0, deadline=0.0234, on_time=1), Deadline(chain_id=0, deadline=0.0235, on_time=1), Deadline(chain_id=1, deadline=0.0235, on_time=1), Deadline(chain_id=1, deadline=0.0236, on_time=1), Deadline(chain_id=0, deadline=0.0236, on_time=1), Deadline(chain_id=0, deadline=0.0237, on_time=1), Deadline(chain_id=1, deadline=0.0237, on_time=1), Deadline(chain_id=0, deadline=0.0238, on_time=1), Deadline(chain_id=1, deadline=0.0238, on_time=1), Deadline(chain_id=1, deadline=0.0239, on_time=1), Deadline(chain_id=0, deadline=0.0239, on_time=1), Deadline(chain_id=0, deadline=0.024, on_time=1), Deadline(chain_id=1, deadline=0.024, on_time=1), Deadline(chain_id=1, deadline=0.0241, on_time=1), Deadline(chain_id=0, deadline=0.0241, on_time=1), Deadline(chain_id=1, deadline=0.0242, on_time=1), Deadline(chain_id=0, deadline=0.0242, on_time=1), Deadline(chain_id=1, deadline=0.0243, on_time=1), Deadline(chain_id=0, deadline=0.0243, on_time=1), Deadline(chain_id=0, deadline=0.0244, on_time=1), Deadline(chain_id=1, deadline=0.0244, on_time=1), Deadline(chain_id=0, deadline=0.0245, on_time=1), Deadline(chain_id=1, deadline=0.0245, on_time=1), Deadline(chain_id=1, deadline=0.0246, on_time=1), Deadline(chain_id=0, deadline=0.0246, on_time=1), Deadline(chain_id=0, deadline=0.0247, on_time=1), Deadline(chain_id=1, deadline=0.0247, on_time=1), Deadline(chain_id=0, deadline=0.0248, on_time=1), Deadline(chain_id=1, deadline=0.0248, on_time=1), Deadline(chain_id=1, deadline=0.0249, on_time=1), Deadline(chain_id=0, deadline=0.0249, on_time=1), Deadline(chain_id=1, deadline=0.025, on_time=1), Deadline(chain_id=0, deadline=0.025, on_time=1), Deadline(chain_id=0, deadline=0.0251, on_time=1), Deadline(chain_id=1, deadline=0.0251, on_time=1), Deadline(chain_id=0, deadline=0.0252, on_time=1), Deadline(chain_id=1, deadline=0.0252, on_time=1), Deadline(chain_id=1, deadline=0.0253, on_time=1), Deadline(chain_id=0, deadline=0.0253, on_time=1), Deadline(chain_id=0, deadline=0.0254, on_time=1), Deadline(chain_id=1, deadline=0.0254, on_time=1), Deadline(chain_id=1, deadline=0.0255, on_time=1), Deadline(chain_id=0, deadline=0.0255, on_time=1), Deadline(chain_id=0, deadline=0.0256, on_time=1), Deadline(chain_id=1, deadline=0.0256, on_time=1), Deadline(chain_id=1, deadline=0.0257, on_time=1), Deadline(chain_id=0, deadline=0.0257, on_time=1), Deadline(chain_id=1, deadline=0.0258, on_time=1), Deadline(chain_id=0, deadline=0.0258, on_time=1), Deadline(chain_id=0, deadline=0.0259, on_time=1), Deadline(chain_id=1, deadline=0.0259, on_time=1), Deadline(chain_id=0, deadline=0.026, on_time=1), Deadline(chain_id=1, deadline=0.026, on_time=1), Deadline(chain_id=1, deadline=0.0261, on_time=1), Deadline(chain_id=0, deadline=0.0261, on_time=1), Deadline(chain_id=0, deadline=0.0262, on_time=1), Deadline(chain_id=1, deadline=0.0262, on_time=1), Deadline(chain_id=1, deadline=0.0263, on_time=1), Deadline(chain_id=0, deadline=0.0263, on_time=1), Deadline(chain_id=0, deadline=0.0264, on_time=1), Deadline(chain_id=1, deadline=0.0264, on_time=1), Deadline(chain_id=1, deadline=0.0265, on_time=1), Deadline(chain_id=0, deadline=0.0265, on_time=1), Deadline(chain_id=0, deadline=0.0266, on_time=1), Deadline(chain_id=1, deadline=0.0266, on_time=1), Deadline(chain_id=1, deadline=0.0267, on_time=1), Deadline(chain_id=0, deadline=0.0267, on_time=1), Deadline(chain_id=0, deadline=0.0268, on_time=1), Deadline(chain_id=1, deadline=0.0268, on_time=1), Deadline(chain_id=1, deadline=0.0269, on_time=1), Deadline(chain_id=0, deadline=0.0269, on_time=1), Deadline(chain_id=0, deadline=0.027, on_time=1), Deadline(chain_id=1, deadline=0.027, on_time=1), Deadline(chain_id=1, deadline=0.0271, on_time=1), Deadline(chain_id=0, deadline=0.0271, on_time=1), Deadline(chain_id=0, deadline=0.0272, on_time=1), Deadline(chain_id=1, deadline=0.0272, on_time=1), Deadline(chain_id=1, deadline=0.0273, on_time=1), Deadline(chain_id=0, deadline=0.0273, on_time=1), Deadline(chain_id=0, deadline=0.0274, on_time=1), Deadline(chain_id=1, deadline=0.0274, on_time=1), Deadline(chain_id=1, deadline=0.0275, on_time=1), Deadline(chain_id=0, deadline=0.0275, on_time=1), Deadline(chain_id=0, deadline=0.0276, on_time=1), Deadline(chain_id=1, deadline=0.0276, on_time=1), Deadline(chain_id=0, deadline=0.0277, on_time=1), Deadline(chain_id=1, deadline=0.0277, on_time=1), Deadline(chain_id=1, deadline=0.0278, on_time=1), Deadline(chain_id=0, deadline=0.0278, on_time=1), Deadline(chain_id=0, deadline=0.0279, on_time=1), Deadline(chain_id=1, deadline=0.0279, on_time=1), Deadline(chain_id=1, deadline=0.028, on_time=1), Deadline(chain_id=0, deadline=0.028, on_time=1), Deadline(chain_id=1, deadline=0.0281, on_time=1), Deadline(chain_id=0, deadline=0.0281, on_time=1), Deadline(chain_id=0, deadline=0.0282, on_time=1), Deadline(chain_id=1, deadline=0.0282, on_time=1), Deadline(chain_id=1, deadline=0.0283, on_time=1), Deadline(chain_id=0, deadline=0.0283, on_time=1), Deadline(chain_id=0, deadline=0.0284, on_time=1), Deadline(chain_id=1, deadline=0.0284, on_time=1), Deadline(chain_id=1, deadline=0.0285, on_time=1), Deadline(chain_id=0, deadline=0.0285, on_time=1), Deadline(chain_id=0, deadline=0.0286, on_time=1), Deadline(chain_id=1, deadline=0.0286, on_time=1), Deadline(chain_id=1, deadline=0.0287, on_time=1), Deadline(chain_id=0, deadline=0.0287, on_time=1), Deadline(chain_id=0, deadline=0.0288, on_time=1), Deadline(chain_id=1, deadline=0.0288, on_time=1), Deadline(chain_id=0, deadline=0.0289, on_time=1), Deadline(chain_id=1, deadline=0.0289, on_time=1), Deadline(chain_id=0, deadline=0.029, on_time=1), Deadline(chain_id=1, deadline=0.029, on_time=1), Deadline(chain_id=1, deadline=0.0291, on_time=1), Deadline(chain_id=0, deadline=0.0291, on_time=1), Deadline(chain_id=0, deadline=0.0292, on_time=1), Deadline(chain_id=1, deadline=0.0292, on_time=1), Deadline(chain_id=1, deadline=0.0293, on_time=1), Deadline(chain_id=0, deadline=0.0293, on_time=1), Deadline(chain_id=0, deadline=0.0294, on_time=1), Deadline(chain_id=1, deadline=0.0294, on_time=1), Deadline(chain_id=1, deadline=0.0295, on_time=1), Deadline(chain_id=0, deadline=0.0295, on_time=1), Deadline(chain_id=0, deadline=0.0296, on_time=1), Deadline(chain_id=1, deadline=0.0296, on_time=1), Deadline(chain_id=1, deadline=0.0297, on_time=1), Deadline(chain_id=0, deadline=0.0297, on_time=1), Deadline(chain_id=0, deadline=0.0298, on_time=1), Deadline(chain_id=1, deadline=0.0298, on_time=1), Deadline(chain_id=1, deadline=0.0299, on_time=1), Deadline(chain_id=0, deadline=0.0299, on_time=1), Deadline(chain_id=0, deadline=0.03, on_time=1), Deadline(chain_id=1, deadline=0.03, on_time=1), Deadline(chain_id=1, deadline=0.0301, on_time=1), Deadline(chain_id=0, deadline=0.0301, on_time=1), Deadline(chain_id=0, deadline=0.0302, on_time=1), Deadline(chain_id=1, deadline=0.0302, on_time=1), Deadline(chain_id=1, deadline=0.0303, on_time=1), Deadline(chain_id=0, deadline=0.0303, on_time=1), Deadline(chain_id=1, deadline=0.0304, on_time=1), Deadline(chain_id=0, deadline=0.0304, on_time=1), Deadline(chain_id=0, deadline=0.0305, on_time=1), Deadline(chain_id=1, deadline=0.0305, on_time=1), Deadline(chain_id=0, deadline=0.0306, on_time=1), Deadline(chain_id=1, deadline=0.0306, on_time=1), Deadline(chain_id=0, deadline=0.0307, on_time=1), Deadline(chain_id=1, deadline=0.0307, on_time=1), Deadline(chain_id=1, deadline=0.0308, on_time=1), Deadline(chain_id=0, deadline=0.0308, on_time=1), Deadline(chain_id=1, deadline=0.0309, on_time=1), Deadline(chain_id=0, deadline=0.0309, on_time=1), Deadline(chain_id=1, deadline=0.031, on_time=1), Deadline(chain_id=0, deadline=0.031, on_time=1), Deadline(chain_id=1, deadline=0.0311, on_time=1), Deadline(chain_id=0, deadline=0.0311, on_time=1), Deadline(chain_id=0, deadline=0.0312, on_time=1), Deadline(chain_id=1, deadline=0.0312, on_time=1), Deadline(chain_id=0, deadline=0.0313, on_time=1), Deadline(chain_id=1, deadline=0.0313, on_time=1), Deadline(chain_id=1, deadline=0.0314, on_time=1), Deadline(chain_id=0, deadline=0.0314, on_time=1), Deadline(chain_id=0, deadline=0.0315, on_time=1), Deadline(chain_id=1, deadline=0.0315, on_time=1), Deadline(chain_id=0, deadline=0.0316, on_time=1), Deadline(chain_id=1, deadline=0.0316, on_time=1), Deadline(chain_id=1, deadline=0.0317, on_time=1), Deadline(chain_id=0, deadline=0.0317, on_time=1), Deadline(chain_id=1, deadline=0.0318, on_time=1), Deadline(chain_id=0, deadline=0.0318, on_time=1), Deadline(chain_id=0, deadline=0.0319, on_time=1), Deadline(chain_id=1, deadline=0.0319, on_time=1), Deadline(chain_id=1, deadline=0.032, on_time=1), Deadline(chain_id=0, deadline=0.032, on_time=1), Deadline(chain_id=1, deadline=0.0321, on_time=1), Deadline(chain_id=0, deadline=0.0321, on_time=1), Deadline(chain_id=0, deadline=0.0322, on_time=1), Deadline(chain_id=1, deadline=0.0322, on_time=1), Deadline(chain_id=1, deadline=0.0323, on_time=1), Deadline(chain_id=0, deadline=0.0323, on_time=1), Deadline(chain_id=0, deadline=0.0324, on_time=1), Deadline(chain_id=1, deadline=0.0324, on_time=1), Deadline(chain_id=1, deadline=0.0325, on_time=1), Deadline(chain_id=0, deadline=0.0325, on_time=1), Deadline(chain_id=0, deadline=0.0326, on_time=1), Deadline(chain_id=1, deadline=0.0326, on_time=1), Deadline(chain_id=1, deadline=0.0327, on_time=1), Deadline(chain_id=0, deadline=0.0327, on_time=1), Deadline(chain_id=1, deadline=0.0328, on_time=1), Deadline(chain_id=0, deadline=0.0328, on_time=1), Deadline(chain_id=0, deadline=0.0329, on_time=1), Deadline(chain_id=1, deadline=0.0329, on_time=1), Deadline(chain_id=1, deadline=0.033, on_time=1), Deadline(chain_id=0, deadline=0.033, on_time=1), Deadline(chain_id=1, deadline=0.0331, on_time=1), Deadline(chain_id=0, deadline=0.0331, on_time=1), Deadline(chain_id=0, deadline=0.0332, on_time=1), Deadline(chain_id=1, deadline=0.0332, on_time=1), Deadline(chain_id=1, deadline=0.0333, on_time=1), Deadline(chain_id=0, deadline=0.0333, on_time=1), Deadline(chain_id=0, deadline=0.0334, on_time=1), Deadline(chain_id=1, deadline=0.0334, on_time=1), Deadline(chain_id=1, deadline=0.0335, on_time=1), Deadline(chain_id=0, deadline=0.0335, on_time=1), Deadline(chain_id=0, deadline=0.0336, on_time=1), Deadline(chain_id=1, deadline=0.0336, on_time=1), Deadline(chain_id=0, deadline=0.0337, on_time=1), Deadline(chain_id=1, deadline=0.0337, on_time=1), Deadline(chain_id=0, deadline=0.0338, on_time=1), Deadline(chain_id=0, deadline=0.0339, on_time=1), Deadline(chain_id=1, deadline=0.0338, on_time=1), Deadline(chain_id=1, deadline=0.0339, on_time=1), Deadline(chain_id=0, deadline=0.034, on_time=1), Deadline(chain_id=1, deadline=0.034, on_time=1), Deadline(chain_id=0, deadline=0.0341, on_time=1), Deadline(chain_id=0, deadline=0.0342, on_time=1), Deadline(chain_id=1, deadline=0.0341, on_time=1), Deadline(chain_id=1, deadline=0.0342, on_time=1), Deadline(chain_id=0, deadline=0.0343, on_time=1), Deadline(chain_id=0, deadline=0.0344, on_time=1), Deadline(chain_id=1, deadline=0.0343, on_time=1), Deadline(chain_id=0, deadline=0.0345, on_time=1), Deadline(chain_id=1, deadline=0.0344, on_time=1), Deadline(chain_id=1, deadline=0.0345, on_time=1), Deadline(chain_id=0, deadline=0.0346, on_time=1), Deadline(chain_id=0, deadline=0.0347, on_time=1), Deadline(chain_id=1, deadline=0.0346, on_time=1), Deadline(chain_id=1, deadline=0.0347, on_time=1), Deadline(chain_id=0, deadline=0.0348, on_time=1), Deadline(chain_id=1, deadline=0.0348, on_time=1), Deadline(chain_id=0, deadline=0.0349, on_time=1), Deadline(chain_id=0, deadline=0.035, on_time=1), Deadline(chain_id=1, deadline=0.0349, on_time=1), Deadline(chain_id=1, deadline=0.035, on_time=1), Deadline(chain_id=0, deadline=0.0351, on_time=1), Deadline(chain_id=1, deadline=0.0351, on_time=1), Deadline(chain_id=0, deadline=0.0352, on_time=1), Deadline(chain_id=1, deadline=0.0352, on_time=1), Deadline(chain_id=0, deadline=0.0353, on_time=1), Deadline(chain_id=0, deadline=0.0354, on_time=1), Deadline(chain_id=1, deadline=0.0353, on_time=1), Deadline(chain_id=0, deadline=0.0355, on_time=1), Deadline(chain_id=1, deadline=0.0354, on_time=1), Deadline(chain_id=0, deadline=0.0356, on_time=1), Deadline(chain_id=1, deadline=0.0355, on_time=1), Deadline(chain_id=0, deadline=0.0357, on_time=1), Deadline(chain_id=1, deadline=0.0356, on_time=1), Deadline(chain_id=0, deadline=0.0358, on_time=1), Deadline(chain_id=1, deadline=0.0357, on_time=1), Deadline(chain_id=0, deadline=0.0359, on_time=1), Deadline(chain_id=1, deadline=0.0358, on_time=1), Deadline(chain_id=1, deadline=0.0359, on_time=1), Deadline(chain_id=0, deadline=0.036, on_time=1), Deadline(chain_id=0, deadline=0.0361, on_time=1), Deadline(chain_id=1, deadline=0.036, on_time=1), Deadline(chain_id=1, deadline=0.0361, on_time=1), Deadline(chain_id=0, deadline=0.0362, on_time=1), Deadline(chain_id=0, deadline=0.0363, on_time=1), Deadline(chain_id=1, deadline=0.0362, on_time=1), Deadline(chain_id=1, deadline=0.0363, on_time=1), Deadline(chain_id=0, deadline=0.0364, on_time=1), Deadline(chain_id=0, deadline=0.0365, on_time=1), Deadline(chain_id=1, deadline=0.0364, on_time=1), Deadline(chain_id=1, deadline=0.0365, on_time=1), Deadline(chain_id=0, deadline=0.0366, on_time=1), Deadline(chain_id=0, deadline=0.0367, on_time=1), Deadline(chain_id=1, deadline=0.0366, on_time=1), Deadline(chain_id=1, deadline=0.0367, on_time=1), Deadline(chain_id=0, deadline=0.0368, on_time=1), Deadline(chain_id=0, deadline=0.0369, on_time=1), Deadline(chain_id=1, deadline=0.0368, on_time=1), Deadline(chain_id=1, deadline=0.0369, on_time=1), Deadline(chain_id=0, deadline=0.037, on_time=1), Deadline(chain_id=0, deadline=0.0371, on_time=1), Deadline(chain_id=1, deadline=0.037, on_time=1), Deadline(chain_id=1, deadline=0.0371, on_time=1), Deadline(chain_id=0, deadline=0.0372, on_time=1), Deadline(chain_id=0, deadline=0.0373, on_time=1), Deadline(chain_id=1, deadline=0.0372, on_time=1), Deadline(chain_id=1, deadline=0.0373, on_time=1), Deadline(chain_id=0, deadline=0.0374, on_time=1), Deadline(chain_id=0, deadline=0.0375, on_time=1), Deadline(chain_id=1, deadline=0.0374, on_time=1), Deadline(chain_id=1, deadline=0.0375, on_time=1), Deadline(chain_id=0, deadline=0.0376, on_time=1), Deadline(chain_id=0, deadline=0.0377, on_time=1), Deadline(chain_id=1, deadline=0.0376, on_time=1), Deadline(chain_id=1, deadline=0.0377, on_time=1), Deadline(chain_id=0, deadline=0.0378, on_time=1), Deadline(chain_id=0, deadline=0.0379, on_time=1), Deadline(chain_id=1, deadline=0.0378, on_time=1), Deadline(chain_id=1, deadline=0.0379, on_time=1), Deadline(chain_id=0, deadline=0.038, on_time=1), Deadline(chain_id=0, deadline=0.0381, on_time=1), Deadline(chain_id=1, deadline=0.038, on_time=1), Deadline(chain_id=1, deadline=0.0381, on_time=1), Deadline(chain_id=0, deadline=0.0382, on_time=1), Deadline(chain_id=0, deadline=0.0383, on_time=1), Deadline(chain_id=1, deadline=0.0382, on_time=1), Deadline(chain_id=1, deadline=0.0383, on_time=1), Deadline(chain_id=0, deadline=0.0384, on_time=1), Deadline(chain_id=1, deadline=0.0384, on_time=1), Deadline(chain_id=0, deadline=0.0385, on_time=1), Deadline(chain_id=1, deadline=0.0385, on_time=1), Deadline(chain_id=0, deadline=0.0386, on_time=1), Deadline(chain_id=0, deadline=0.0387, on_time=1), Deadline(chain_id=1, deadline=0.0386, on_time=1), Deadline(chain_id=1, deadline=0.0387, on_time=1), Deadline(chain_id=0, deadline=0.0388, on_time=1), Deadline(chain_id=0, deadline=0.0389, on_time=1), Deadline(chain_id=1, deadline=0.0388, on_time=1), Deadline(chain_id=0, deadline=0.039, on_time=1), Deadline(chain_id=1, deadline=0.0389, on_time=1), Deadline(chain_id=1, deadline=0.039, on_time=1), Deadline(chain_id=0, deadline=0.0391, on_time=1), Deadline(chain_id=1, deadline=0.0391, on_time=1), Deadline(chain_id=0, deadline=0.0392, on_time=1), Deadline(chain_id=0, deadline=0.0393, on_time=1), Deadline(chain_id=1, deadline=0.0392, on_time=1), Deadline(chain_id=1, deadline=0.0393, on_time=1), Deadline(chain_id=0, deadline=0.0394, on_time=1), Deadline(chain_id=0, deadline=0.0395, on_time=1), Deadline(chain_id=1, deadline=0.0394, on_time=1), Deadline(chain_id=1, deadline=0.0395, on_time=1), Deadline(chain_id=0, deadline=0.0396, on_time=1), Deadline(chain_id=0, deadline=0.0397, on_time=1), Deadline(chain_id=1, deadline=0.0396, on_time=1), Deadline(chain_id=1, deadline=0.0397, on_time=1), Deadline(chain_id=0, deadline=0.0398, on_time=1), Deadline(chain_id=1, deadline=0.0398, on_time=1), Deadline(chain_id=0, deadline=0.0399, on_time=1), Deadline(chain_id=0, deadline=0.04, on_time=1), Deadline(chain_id=1, deadline=0.0399, on_time=1), Deadline(chain_id=1, deadline=0.04, on_time=1), Deadline(chain_id=0, deadline=0.0401, on_time=1), Deadline(chain_id=0, deadline=0.0402, on_time=1), Deadline(chain_id=1, deadline=0.0401, on_time=1), Deadline(chain_id=0, deadline=0.0403, on_time=1), Deadline(chain_id=1, deadline=0.0402, on_time=1), Deadline(chain_id=1, deadline=0.0403, on_time=1), Deadline(chain_id=0, deadline=0.0404, on_time=1), Deadline(chain_id=0, deadline=0.0405, on_time=1), Deadline(chain_id=1, deadline=0.0404, on_time=1), Deadline(chain_id=0, deadline=0.0406, on_time=1), Deadline(chain_id=1, deadline=0.0405, on_time=1), Deadline(chain_id=1, deadline=0.0406, on_time=1), Deadline(chain_id=0, deadline=0.0407, on_time=1), Deadline(chain_id=0, deadline=0.0408, on_time=1), Deadline(chain_id=1, deadline=0.0407, on_time=1), Deadline(chain_id=1, deadline=0.0408, on_time=1), Deadline(chain_id=0, deadline=0.0409, on_time=1), Deadline(chain_id=1, deadline=0.0409, on_time=1), Deadline(chain_id=0, deadline=0.041, on_time=1), Deadline(chain_id=0, deadline=0.0411, on_time=1), Deadline(chain_id=1, deadline=0.041, on_time=1), Deadline(chain_id=0, deadline=0.0412, on_time=1), Deadline(chain_id=1, deadline=0.0411, on_time=1), Deadline(chain_id=1, deadline=0.0412, on_time=1), Deadline(chain_id=0, deadline=0.0413, on_time=1), Deadline(chain_id=0, deadline=0.0414, on_time=1), Deadline(chain_id=1, deadline=0.0413, on_time=1), Deadline(chain_id=1, deadline=0.0414, on_time=1), Deadline(chain_id=0, deadline=0.0415, on_time=1), Deadline(chain_id=0, deadline=0.0416, on_time=1), Deadline(chain_id=1, deadline=0.0415, on_time=1), Deadline(chain_id=1, deadline=0.0416, on_time=1), Deadline(chain_id=0, deadline=0.0417, on_time=1), Deadline(chain_id=0, deadline=0.0418, on_time=1), Deadline(chain_id=1, deadline=0.0417, on_time=1), Deadline(chain_id=0, deadline=0.0419, on_time=1), Deadline(chain_id=1, deadline=0.0418, on_time=1), Deadline(chain_id=1, deadline=0.0419, on_time=1), Deadline(chain_id=0, deadline=0.042, on_time=1), Deadline(chain_id=1, deadline=0.042, on_time=1), Deadline(chain_id=0, deadline=0.0421, on_time=1), Deadline(chain_id=0, deadline=0.0422, on_time=1), Deadline(chain_id=1, deadline=0.0421, on_time=1), Deadline(chain_id=0, deadline=0.0423, on_time=1), Deadline(chain_id=1, deadline=0.0422, on_time=1), Deadline(chain_id=1, deadline=0.0423, on_time=1), Deadline(chain_id=0, deadline=0.0424, on_time=1), Deadline(chain_id=0, deadline=0.0425, on_time=1), Deadline(chain_id=1, deadline=0.0424, on_time=1), Deadline(chain_id=1, deadline=0.0425, on_time=1), Deadline(chain_id=0, deadline=0.0426, on_time=1), Deadline(chain_id=0, deadline=0.0427, on_time=1), Deadline(chain_id=1, deadline=0.0426, on_time=1), Deadline(chain_id=0, deadline=0.0428, on_time=1), Deadline(chain_id=1, deadline=0.0427, on_time=1), Deadline(chain_id=0, deadline=0.0429, on_time=1), Deadline(chain_id=1, deadline=0.0428, on_time=1), Deadline(chain_id=1, deadline=0.0429, on_time=1), Deadline(chain_id=0, deadline=0.043, on_time=1), Deadline(chain_id=1, deadline=0.043, on_time=1), Deadline(chain_id=0, deadline=0.0431, on_time=1), Deadline(chain_id=1, deadline=0.0431, on_time=1), Deadline(chain_id=0, deadline=0.0432, on_time=1), Deadline(chain_id=0, deadline=0.0433, on_time=1), Deadline(chain_id=1, deadline=0.0432, on_time=1), Deadline(chain_id=1, deadline=0.0433, on_time=1), Deadline(chain_id=0, deadline=0.0434, on_time=1), Deadline(chain_id=1, deadline=0.0434, on_time=1), Deadline(chain_id=0, deadline=0.0435, on_time=1), Deadline(chain_id=0, deadline=0.0436, on_time=1), Deadline(chain_id=1, deadline=0.0435, on_time=1), Deadline(chain_id=0, deadline=0.0437, on_time=1), Deadline(chain_id=1, deadline=0.0436, on_time=1), Deadline(chain_id=1, deadline=0.0437, on_time=1), Deadline(chain_id=0, deadline=0.0438, on_time=1), Deadline(chain_id=1, deadline=0.0438, on_time=1), Deadline(chain_id=0, deadline=0.0439, on_time=1), Deadline(chain_id=1, deadline=0.0439, on_time=1), Deadline(chain_id=0, deadline=0.044, on_time=1), Deadline(chain_id=0, deadline=0.0441, on_time=1), Deadline(chain_id=1, deadline=0.044, on_time=1), Deadline(chain_id=1, deadline=0.0441, on_time=1), Deadline(chain_id=0, deadline=0.0442, on_time=1), Deadline(chain_id=1, deadline=0.0442, on_time=1), Deadline(chain_id=0, deadline=0.0443, on_time=1), Deadline(chain_id=1, deadline=0.0443, on_time=1), Deadline(chain_id=0, deadline=0.0444, on_time=1), Deadline(chain_id=1, deadline=0.0444, on_time=1), Deadline(chain_id=0, deadline=0.0445, on_time=1), Deadline(chain_id=1, deadline=0.0445, on_time=1), Deadline(chain_id=0, deadline=0.0446, on_time=1), Deadline(chain_id=1, deadline=0.0446, on_time=1), Deadline(chain_id=0, deadline=0.0447, on_time=1), Deadline(chain_id=1, deadline=0.0447, on_time=1), Deadline(chain_id=0, deadline=0.0448, on_time=1), Deadline(chain_id=1, deadline=0.0448, on_time=1), Deadline(chain_id=0, deadline=0.0449, on_time=1), Deadline(chain_id=0, deadline=0.045, on_time=1), Deadline(chain_id=1, deadline=0.0449, on_time=1), Deadline(chain_id=1, deadline=0.045, on_time=1), Deadline(chain_id=0, deadline=0.0451, on_time=1), Deadline(chain_id=1, deadline=0.0451, on_time=1), Deadline(chain_id=0, deadline=0.0452, on_time=1), Deadline(chain_id=1, deadline=0.0452, on_time=1), Deadline(chain_id=0, deadline=0.0453, on_time=1), Deadline(chain_id=1, deadline=0.0453, on_time=1), Deadline(chain_id=0, deadline=0.0454, on_time=1), Deadline(chain_id=1, deadline=0.0454, on_time=1), Deadline(chain_id=0, deadline=0.0455, on_time=1), Deadline(chain_id=0, deadline=0.0456, on_time=1), Deadline(chain_id=1, deadline=0.0455, on_time=1), Deadline(chain_id=0, deadline=0.0457, on_time=1), Deadline(chain_id=1, deadline=0.0456, on_time=1), Deadline(chain_id=0, deadline=0.0458, on_time=1), Deadline(chain_id=0, deadline=0.0459, on_time=1), Deadline(chain_id=1, deadline=0.0457, on_time=1), Deadline(chain_id=0, deadline=0.046, on_time=1), Deadline(chain_id=1, deadline=0.0458, on_time=1), Deadline(chain_id=1, deadline=0.0459, on_time=1), Deadline(chain_id=0, deadline=0.0461, on_time=1), Deadline(chain_id=1, deadline=0.046, on_time=1), Deadline(chain_id=0, deadline=0.0462, on_time=1), Deadline(chain_id=1, deadline=0.0461, on_time=1), Deadline(chain_id=0, deadline=0.0463, on_time=1), Deadline(chain_id=0, deadline=0.0464, on_time=1), Deadline(chain_id=1, deadline=0.0462, on_time=1), Deadline(chain_id=1, deadline=0.0463, on_time=1), Deadline(chain_id=0, deadline=0.0465, on_time=1), Deadline(chain_id=1, deadline=0.0464, on_time=1), Deadline(chain_id=0, deadline=0.0466, on_time=1), Deadline(chain_id=0, deadline=0.0467, on_time=1), Deadline(chain_id=1, deadline=0.0465, on_time=1), Deadline(chain_id=1, deadline=0.0466, on_time=1), Deadline(chain_id=0, deadline=0.0468, on_time=1), Deadline(chain_id=1, deadline=0.0467, on_time=1), Deadline(chain_id=0, deadline=0.0469, on_time=1), Deadline(chain_id=1, deadline=0.0468, on_time=1), Deadline(chain_id=0, deadline=0.047, on_time=1), Deadline(chain_id=1, deadline=0.0469, on_time=1), Deadline(chain_id=0, deadline=0.0471, on_time=1), Deadline(chain_id=1, deadline=0.047, on_time=1), Deadline(chain_id=0, deadline=0.0472, on_time=1), Deadline(chain_id=1, deadline=0.0471, on_time=1), Deadline(chain_id=0, deadline=0.0473, on_time=1), Deadline(chain_id=0, deadline=0.0474, on_time=1), Deadline(chain_id=1, deadline=0.0472, on_time=1), Deadline(chain_id=1, deadline=0.0473, on_time=1), Deadline(chain_id=0, deadline=0.0475, on_time=1), Deadline(chain_id=1, deadline=0.0474, on_time=1), Deadline(chain_id=0, deadline=0.0476, on_time=1), Deadline(chain_id=0, deadline=0.0477, on_time=1), Deadline(chain_id=1, deadline=0.0475, on_time=1), Deadline(chain_id=0, deadline=0.0478, on_time=1), Deadline(chain_id=1, deadline=0.0476, on_time=1), Deadline(chain_id=1, deadline=0.0477, on_time=1), Deadline(chain_id=0, deadline=0.0479, on_time=1), Deadline(chain_id=1, deadline=0.0478, on_time=1), Deadline(chain_id=0, deadline=0.048, on_time=1), Deadline(chain_id=1, deadline=0.0479, on_time=1), Deadline(chain_id=0, deadline=0.0481, on_time=1), Deadline(chain_id=1, deadline=0.048, on_time=1), Deadline(chain_id=0, deadline=0.0482, on_time=1), Deadline(chain_id=1, deadline=0.0481, on_time=1), Deadline(chain_id=0, deadline=0.0483, on_time=1), Deadline(chain_id=0, deadline=0.0484, on_time=1), Deadline(chain_id=1, deadline=0.0482, on_time=1), Deadline(chain_id=1, deadline=0.0483, on_time=1), Deadline(chain_id=0, deadline=0.0485, on_time=1), Deadline(chain_id=1, deadline=0.0484, on_time=1), Deadline(chain_id=0, deadline=0.0486, on_time=1), Deadline(chain_id=0, deadline=0.0487, on_time=1), Deadline(chain_id=1, deadline=0.0485, on_time=1), Deadline(chain_id=0, deadline=0.0488, on_time=1), Deadline(chain_id=1, deadline=0.0486, on_time=1), Deadline(chain_id=0, deadline=0.0489, on_time=1), Deadline(chain_id=1, deadline=0.0487, on_time=1), Deadline(chain_id=0, deadline=0.049, on_time=1), Deadline(chain_id=1, deadline=0.0488, on_time=1), Deadline(chain_id=1, deadline=0.0489, on_time=1), Deadline(chain_id=0, deadline=0.0491, on_time=1), Deadline(chain_id=1, deadline=0.049, on_time=1), Deadline(chain_id=0, deadline=0.0492, on_time=1), Deadline(chain_id=1, deadline=0.0491, on_time=1), Deadline(chain_id=0, deadline=0.0493, on_time=1), Deadline(chain_id=1, deadline=0.0492, on_time=1), Deadline(chain_id=0, deadline=0.0494, on_time=1), Deadline(chain_id=0, deadline=0.0495, on_time=1), Deadline(chain_id=1, deadline=0.0493, on_time=1), Deadline(chain_id=1, deadline=0.0494, on_time=1), Deadline(chain_id=0, deadline=0.0496, on_time=1), Deadline(chain_id=1, deadline=0.0495, on_time=1), Deadline(chain_id=0, deadline=0.0497, on_time=1), Deadline(chain_id=0, deadline=0.0498, on_time=1), Deadline(chain_id=1, deadline=0.0496, on_time=1), Deadline(chain_id=1, deadline=0.0497, on_time=1), Deadline(chain_id=0, deadline=0.0499, on_time=1), Deadline(chain_id=1, deadline=0.0498, on_time=1), Deadline(chain_id=0, deadline=0.05, on_time=1), Deadline(chain_id=1, deadline=0.0499, on_time=1), Deadline(chain_id=0, deadline=0.0501, on_time=1), Deadline(chain_id=1, deadline=0.05, on_time=1), Deadline(chain_id=0, deadline=0.0502, on_time=1), Deadline(chain_id=1, deadline=0.0501, on_time=1), Deadline(chain_id=0, deadline=0.0503, on_time=1), Deadline(chain_id=1, deadline=0.0502, on_time=1), Deadline(chain_id=0, deadline=0.0504, on_time=1)]\n" ] } ], "source": [ "@dataclass\n", "class Deadline:\n", " chain_id: int\n", " deadline: float\n", " on_time: bool\n", "\n", "def get_deadlines(data) -> list[Deadline]:\n", " deadlines = []\n", " for record in data:\n", " if record[\"entry\"][\"operation\"] == \"next_deadline\" and \"on_time\" in record[\"entry\"]:\n", " deadlines.append(Deadline(chain_id=record[\"entry\"][\"chain_id\"], deadline=record[\"entry\"][\"deadline\"], on_time=record[\"entry\"][\"on_time\"]))\n", " return deadlines\n", "\n", "deadlines = get_deadlines(experiment_data)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4b5ad85d09334daea239c16327571d7f", "version_major": 2, "version_minor": 0 }, "image/png": "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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot with lines for deadlines\n", "fig, ax = plt.subplots()\n", "for i, record in enumerate(records):\n", " ax.broken_barh([(record.start_time, record.end_time - record.start_time)], (name_to_id[record.node_name] - 0.4, 0.8), facecolors='blue')\n", "\n", "# draw a vertical line for each deadline\n", "for deadline in deadlines:\n", " # may have to adjust the y value depending on your chain layout\n", " ax.plot([deadline.deadline, deadline.deadline], [0, num_nodes], color='red')\n", "\n", "ax.set_yticks(range(num_nodes))\n", "ax.set_yticklabels(name_to_id.keys())\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.16" } }, "nbformat": 4, "nbformat_minor": 4 }