From 7ab28354a815ceb4ed42fb092ce3e9bc774887ab Mon Sep 17 00:00:00 2001 From: TomMonks Date: Sat, 3 May 2025 19:31:35 +0100 Subject: [PATCH 1/3] feat(blocking): +bed blocking example --- content/11_blocking.ipynb | 801 ++++++++++++++++++++++++++++++++++++++ content/distributions.py | 139 +++++++ 2 files changed, 940 insertions(+) create mode 100644 content/11_blocking.ipynb create mode 100644 content/distributions.py diff --git a/content/11_blocking.ipynb b/content/11_blocking.ipynb new file mode 100644 index 0000000..4e95de0 --- /dev/null +++ b/content/11_blocking.ipynb @@ -0,0 +1,801 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0be7dabf-cb34-4faf-abb1-e2c8e735beda", + "metadata": {}, + "source": [ + "# Resource blocking\n", + "\n", + "In this notebook we will learn how to code simpy logic to mimic a process holding a resource while queuing for another resource. This simulates a blocking scenario in a process.\n", + "\n", + "We will work with a hypothetical stroke pathway where patients undergo acute treatment followed by rehabilitation in a separate hospital. A patient must remain in an acute stroke bed until a rehabilitation bed is free.\n", + "\n", + "\n", + "\n", + "| ID | Component | Distribution | Mean (days) | Std (days) |\n", + "| -- | ----------------- | ------------ | ----------- | ---------- |\n", + "| 1 | Interarrival time | Exponential | 1.5 | |\n", + "| 2 | Acute LoS | Lognormal | 7.0 | 1.0 |\n", + "| 3 | Rehab LoS | Lognormal | 30.0 | 5.0 |\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "0d9383eb-420c-49f8-b178-f2fe9e6b2a90", + "metadata": {}, + "source": [ + "## 1. Imports " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c1cee9f9-8696-4b13-94ff-bee2a2a2e5f8", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import itertools\n", + "import simpy" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ea3d507f-9e6d-4ff0-8b90-f9c63c8a8bdf", + "metadata": {}, + "outputs": [], + "source": [ + "from distributions import Exponential, Lognormal" + ] + }, + { + "cell_type": "markdown", + "id": "c422046d-488a-4743-8ad4-97e9f3dab420", + "metadata": {}, + "source": [ + "## 2. Constants" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1ecf0429-f03f-4ad2-abb4-46692a74e559", + "metadata": {}, + "outputs": [], + "source": [ + "# default mean inter-arrival times(exp)\n", + "# time is in days\n", + "IAT_STROKES = 1.5\n", + "\n", + "# resources\n", + "N_ACUTE_BEDS = 9\n", + "N_REHAB_BEDS = 15\n", + "\n", + "# Acute LoS (Lognormal)\n", + "ACUTE_LOS_MEAN = 7.0\n", + "ACUTE_LOC_STD = 1.0\n", + "\n", + "# Rehab LoS (Lognormal)\n", + "REHAB_LOS_MEAN = 30.0\n", + "REHAB_LOC_STD = 5.0\n", + "\n", + "# sampling settings\n", + "N_STREAMS = 3\n", + "DEFAULT_RND_SET = 0\n", + "\n", + "# Boolean switch to simulation results as the model runs\n", + "TRACE = False\n", + "\n", + "# run variables (units = days)\n", + "RUN_LENGTH = 100" + ] + }, + { + "cell_type": "markdown", + "id": "5f2a4ad9-6d5e-480d-850f-84d4882a738b", + "metadata": {}, + "source": [ + "## 2. Helper classes and functions" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "52c9271f-1d05-454d-a199-8768bdf5b6e8", + "metadata": {}, + "outputs": [], + "source": [ + "def trace(msg):\n", + " \"\"\"\n", + " Turing printing of events on and off.\n", + "\n", + " Params:\n", + " -------\n", + " msg: str\n", + " string to print to screen.\n", + " \"\"\"\n", + " if TRACE:\n", + " print(msg)" + ] + }, + { + "cell_type": "markdown", + "id": "5a8c050c-4bb6-408f-a805-3a4aaab56916", + "metadata": {}, + "source": [ + "## 3. Experiment class" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "576ae9b4-b21b-4ed0-9b13-e5898d423173", + "metadata": {}, + "outputs": [], + "source": [ + "class Experiment:\n", + " \"\"\"\n", + " Encapsulates the concept of an experiment 🧪 for the stroke pathway\n", + " bed blocking simulator. Manages parameters, PRNG streams and results.\n", + " \"\"\"\n", + " def __init__(\n", + " self,\n", + " random_number_set=DEFAULT_RND_SET,\n", + " n_streams=N_STREAMS,\n", + " iat_strokes=IAT_STROKES,\n", + " acute_los_mean=ACUTE_LOS_MEAN,\n", + " acute_los_std=ACUTE_LOC_STD,\n", + " rehab_los_mean=REHAB_LOS_MEAN,\n", + " rehab_los_std=REHAB_LOC_STD,\n", + " n_acute_beds=N_ACUTE_BEDS,\n", + " n_rehab_beds=N_REHAB_BEDS\n", + " ):\n", + " \"\"\"\n", + " The init method sets up our defaults.\n", + " \"\"\"\n", + " # sampling\n", + " self.random_number_set = random_number_set\n", + " self.n_streams = n_streams\n", + "\n", + " # store parameters for the run of the model\n", + " self.iat_strokes = iat_strokes\n", + " self.acute_los_mean = acute_los_mean\n", + " self.acute_los_std = acute_los_std\n", + " self.rehab_los_mean = rehab_los_mean\n", + " self.rehab_los_std = rehab_los_std\n", + "\n", + " # place holder for resources\n", + " self.acute_ward = None\n", + " self.rehab_unit = None\n", + " self.n_acute_beds = n_acute_beds\n", + " self.n_rehab_beds = n_rehab_beds\n", + " \n", + " # initialise results to zero\n", + " self.init_results_variables()\n", + "\n", + " # initialise sampling objects\n", + " self.init_sampling()\n", + "\n", + " def set_random_no_set(self, random_number_set):\n", + " \"\"\"\n", + " Controls the random sampling\n", + " Parameters:\n", + " ----------\n", + " random_number_set: int\n", + " Used to control the set of pseudo random numbers used by\n", + " the distributions in the simulation.\n", + " \"\"\"\n", + " self.random_number_set = random_number_set\n", + " self.init_sampling()\n", + "\n", + " def init_sampling(self):\n", + " \"\"\"\n", + " Create the distributions used by the model and initialise\n", + " the random seeds of each.\n", + " \"\"\"\n", + " # produce n non-overlapping streams\n", + " seed_sequence = np.random.SeedSequence(self.random_number_set)\n", + " self.seeds = seed_sequence.spawn(self.n_streams)\n", + "\n", + " # create distributions\n", + "\n", + " # inter-arrival time distributions\n", + " self.arrival_strokes = Exponential(\n", + " self.iat_strokes, random_seed=self.seeds[0]\n", + " )\n", + "\n", + " self.acute_los = Lognormal(\n", + " self.acute_los_mean, self.acute_los_std, random_seed=self.seeds[1]\n", + " )\n", + "\n", + " self.rehab_los = Lognormal(\n", + " self.rehab_los_mean, self.rehab_los_std, random_seed=self.seeds[2]\n", + " )\n", + "\n", + " def init_results_variables(self):\n", + " \"\"\"\n", + " Initialise all of the experiment variables used in results\n", + " collection. This method is called at the start of each run\n", + " of the model\n", + " \"\"\"\n", + " # variable used to store results of experiment\n", + " self.results = {}\n", + " self.results[\"n_arrivals\"] = 0\n", + " self.results[\"waiting_acute\"] = []\n", + " self.results[\"bed_blocking_times\"] = []" + ] + }, + { + "cell_type": "markdown", + "id": "94f0f9c5-22cb-493a-9f1f-4e2a8325beaa", + "metadata": {}, + "source": [ + "## 4. Pathway process logic\n", + "\n", + "The key things to recognise are \n", + "\n", + "* We request the bed from the acute stroke unit as usual using a `with` context manager\n", + "* We request the rehab bed within the acute bed `with` context manager. This means we do not release the acute bed while the patient waits for rehab.\n", + "* As we do not use a `with` context manager for rehab there is no teardown and we need to manually release the rehab bed." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bf2fae82-665f-4990-bc6c-4e43eb68bbeb", + "metadata": {}, + "outputs": [], + "source": [ + "def patient_pathway(patient_id, env, args):\n", + " \"\"\"Process a patient through the acute ward and rehab unit.\n", + " Simpy generator function.\n", + " \n", + " Parameters:\n", + " -----------\n", + " patient_id: int\n", + " A unique id representing the patient in the process\n", + "\n", + " env: simpy.Environment\n", + " The simulation environment\n", + "\n", + " args: Experiment\n", + " Container class for the simulation parameters/results.\n", + " \"\"\"\n", + " arrival_time = env.now\n", + "\n", + " with args.acute_ward.request() as acute_bed_request:\n", + " yield acute_bed_request\n", + " \n", + " acute_admit_time = env.now\n", + " wait_for_acute = acute_admit_time - arrival_time\n", + " args.results['waiting_acute'].append(wait_for_acute)\n", + " \n", + " trace(f\"{env.now:.2f}: Patient {patient_id} admitted to acute ward.\" \\\n", + " + f\"(waited {wait_for_acute:.2f} days)\")\n", + " \n", + " # Simulate acute care treatment\n", + " acute_care_duration = args.acute_los.sample()\n", + " yield env.timeout(acute_care_duration)\n", + " \n", + " # Patient is now medically ready for rehabilitation\n", + " medically_ready_time = env.now\n", + " trace(f\"{env.now:.2f}: Patient {patient_id} medically ready for rehab\")\n", + " \n", + " # Request a rehab bed but don't release the acute bed immediately\n", + " # Note we are still within the \"with\" context manager for the acute bed\n", + " # This is where bed blocking occurs. We wait here until the rehab bed\n", + " # is available. Make sure the indentation is correct or you will release\n", + " rehab_bed = args.rehab_unit.request()\n", + " yield rehab_bed\n", + " \n", + " # Now we have a rehab bed, we can transfer the patient\n", + " transfer_time = env.now\n", + " bed_blocking_duration = transfer_time - medically_ready_time\n", + " args.results['bed_blocking_times'].append(bed_blocking_duration)\n", + " \n", + " trace(f\"{env.now:.2f}: Patient {patient_id} transferred to rehab. \"\\\n", + " + f\"(blocked acute bed for {bed_blocking_duration:.2f} days)\")\n", + " \n", + " # Acute bed is now released\n", + " # Note the indentation! We are now outside of the with context manager.\n", + " # This automatically releases the simpy resource.\n", + " \n", + " # Simulate rehabilitation stay\n", + " rehab_duration = args.rehab_los.sample()\n", + " yield env.timeout(rehab_duration)\n", + " \n", + " # Patient completes rehabilitation and is discharged\n", + " discharge_time = env.now\n", + "\n", + " # Note: we need to explicitly call release on the rehab resource.\n", + " args.rehab_unit.release(rehab_bed)\n", + "\n", + " trace(f\"{env.now:.2f}: Patient {patient_id} discharged from Rehab.\")" + ] + }, + { + "cell_type": "markdown", + "id": "de8990c2-a330-4c02-ac77-26c30d3e0a41", + "metadata": {}, + "source": [ + "## 4. Arrivals generator\n", + "\n", + "This is a standard arrivals generator. We create stroke arrivals according to their distribution." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b3e686ce-5371-4471-a052-b9d43309bc85", + "metadata": {}, + "outputs": [], + "source": [ + "def stroke_arrivals_generator(env, args):\n", + " \"\"\"\n", + " Arrival process for strokes.\n", + "\n", + " Parameters:\n", + " ------\n", + " env: simpy.Environment\n", + " The simpy environment for the simulation\n", + "\n", + " args: Experiment\n", + " The settings and input parameters for the simulation.\n", + " \"\"\"\n", + " # use itertools as it provides an infinite loop\n", + " # with a counter variable that we can use for unique Ids\n", + " for patient_id in itertools.count(start=1):\n", + "\n", + " # the sample distribution is defined by the experiment.\n", + " inter_arrival_time = args.arrival_strokes.sample()\n", + " yield env.timeout(inter_arrival_time)\n", + "\n", + " args.results[\"n_arrivals\"] = patient_id\n", + " \n", + " trace(f\"{env.now:.2f}: Stroke arrival.\")\n", + "\n", + " # patient enters pathway\n", + " env.process(patient_pathway(patient_id, env, args))" + ] + }, + { + "cell_type": "markdown", + "id": "6058571e-9fdb-4961-be27-8a3b8c2fe26e", + "metadata": {}, + "source": [ + "## 5. Single run function" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0d0ea6cf-7d95-4d2c-9690-fcdbdae35d84", + "metadata": {}, + "outputs": [], + "source": [ + "def single_run(\n", + " experiment, \n", + " rep=0,\n", + " run_length=RUN_LENGTH\n", + "):\n", + " \"\"\"\n", + " Perform a single run of the model and return the results\n", + "\n", + " Parameters:\n", + " -----------\n", + "\n", + " experiment: Experiment\n", + " The experiment/paramaters to use with model\n", + "\n", + " rep: int\n", + " The replication number.\n", + "\n", + " rc_period: float, optional (default=RUN_LENGTH)\n", + " The run length of the model\n", + " \"\"\"\n", + "\n", + " # reset all results variables to zero and empty\n", + " experiment.init_results_variables()\n", + "\n", + " # set random number set to the replication no.\n", + " # this controls sampling for the run.\n", + " experiment.set_random_no_set(rep)\n", + "\n", + " # environment is (re)created inside single run\n", + " env = simpy.Environment()\n", + "\n", + " # simpy resources\n", + " experiment.acute_ward = simpy.Resource(env, experiment.n_acute_beds)\n", + " experiment.rehab_unit = simpy.Resource(env, experiment.n_rehab_beds)\n", + "\n", + " # we pass all arrival generators to simpy \n", + " env.process(stroke_arrivals_generator(env, experiment))\n", + "\n", + " # run model\n", + " env.run(until=run_length)\n", + "\n", + " # quick stats\n", + " results = {}\n", + " results['mean_acute_wait'] = np.array(\n", + " experiment.results[\"waiting_acute\"]\n", + " ).mean()\n", + " results['mean_bed_blocking'] = np.array(\n", + " experiment.results[\"bed_blocking_times\"]\n", + " ).mean()\n", + "\n", + " # return single run results\n", + " return results" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "caf52390-5455-4fa1-bb22-60b5b91ad8d0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.94: Stroke arrival.\n", + "4.94: Patient 1 admitted to acute ward.(waited 0.00 days)\n", + "6.08: Stroke arrival.\n", + "6.08: Patient 2 admitted to acute ward.(waited 0.00 days)\n", + "7.96: Stroke arrival.\n", + "7.96: Patient 3 admitted to acute ward.(waited 0.00 days)\n", + "8.30: Stroke arrival.\n", + "8.30: Patient 4 admitted to acute ward.(waited 0.00 days)\n", + "8.63: Stroke arrival.\n", + "8.63: Patient 5 admitted to acute ward.(waited 0.00 days)\n", + "11.33: Stroke arrival.\n", + "11.33: Patient 6 admitted to acute ward.(waited 0.00 days)\n", + "11.37: Patient 2 medically ready for rehab\n", + "11.37: Patient 2 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "11.43: Stroke arrival.\n", + "11.43: Patient 7 admitted to acute ward.(waited 0.00 days)\n", + "12.18: Patient 3 medically ready for rehab\n", + "12.18: Patient 3 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "12.71: Patient 1 medically ready for rehab\n", + "12.71: Patient 1 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "12.78: Stroke arrival.\n", + "12.78: Patient 8 admitted to acute ward.(waited 0.00 days)\n", + "13.23: Stroke arrival.\n", + "13.23: Patient 9 admitted to acute ward.(waited 0.00 days)\n", + "16.22: Patient 4 medically ready for rehab\n", + "16.22: Patient 4 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "16.68: Stroke arrival.\n", + "16.68: Patient 10 admitted to acute ward.(waited 0.00 days)\n", + "16.96: Patient 5 medically ready for rehab\n", + "16.96: Patient 5 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "17.93: Patient 6 medically ready for rehab\n", + "17.93: Patient 6 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "18.68: Patient 7 medically ready for rehab\n", + "18.68: Patient 7 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "18.76: Patient 8 medically ready for rehab\n", + "18.76: Patient 8 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "19.46: Stroke arrival.\n", + "19.46: Patient 11 admitted to acute ward.(waited 0.00 days)\n", + "19.49: Stroke arrival.\n", + "19.49: Patient 12 admitted to acute ward.(waited 0.00 days)\n", + "19.74: Patient 9 medically ready for rehab\n", + "19.74: Patient 9 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "24.39: Patient 10 medically ready for rehab\n", + "24.39: Patient 10 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "27.41: Patient 11 medically ready for rehab\n", + "27.41: Patient 11 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "27.70: Patient 12 medically ready for rehab\n", + "27.70: Patient 12 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "27.88: Stroke arrival.\n", + "27.88: Patient 13 admitted to acute ward.(waited 0.00 days)\n", + "29.08: Stroke arrival.\n", + "29.08: Patient 14 admitted to acute ward.(waited 0.00 days)\n", + "29.60: Stroke arrival.\n", + "29.60: Patient 15 admitted to acute ward.(waited 0.00 days)\n", + "32.56: Stroke arrival.\n", + "32.56: Patient 16 admitted to acute ward.(waited 0.00 days)\n", + "33.67: Stroke arrival.\n", + "33.67: Patient 17 admitted to acute ward.(waited 0.00 days)\n", + "33.68: Stroke arrival.\n", + "33.68: Patient 18 admitted to acute ward.(waited 0.00 days)\n", + "34.92: Stroke arrival.\n", + "34.92: Patient 19 admitted to acute ward.(waited 0.00 days)\n", + "35.09: Patient 13 medically ready for rehab\n", + "35.09: Patient 13 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "35.85: Stroke arrival.\n", + "35.85: Patient 20 admitted to acute ward.(waited 0.00 days)\n", + "36.02: Patient 15 medically ready for rehab\n", + "36.02: Patient 15 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "36.62: Patient 14 medically ready for rehab\n", + "36.62: Patient 14 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "36.76: Stroke arrival.\n", + "36.76: Patient 21 admitted to acute ward.(waited 0.00 days)\n", + "38.54: Patient 3 discharged from Rehab.\n", + "38.56: Patient 5 discharged from Rehab.\n", + "39.04: Patient 16 medically ready for rehab\n", + "39.04: Patient 16 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "39.97: Patient 18 medically ready for rehab\n", + "39.97: Patient 18 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "40.33: Patient 17 medically ready for rehab\n", + "41.02: Stroke arrival.\n", + "41.02: Patient 22 admitted to acute ward.(waited 0.00 days)\n", + "41.33: Patient 19 medically ready for rehab\n", + "41.37: Stroke arrival.\n", + "41.37: Patient 23 admitted to acute ward.(waited 0.00 days)\n", + "41.50: Patient 9 discharged from Rehab.\n", + "41.50: Patient 17 transferred to rehab. (blocked acute bed for 1.17 days)\n", + "42.66: Patient 20 medically ready for rehab\n", + "42.95: Patient 21 medically ready for rehab\n", + "45.13: Stroke arrival.\n", + "45.13: Patient 24 admitted to acute ward.(waited 0.00 days)\n", + "45.62: Stroke arrival.\n", + "45.62: Patient 25 admitted to acute ward.(waited 0.00 days)\n", + "45.95: Patient 2 discharged from Rehab.\n", + "45.95: Patient 19 transferred to rehab. (blocked acute bed for 4.62 days)\n", + "47.94: Stroke arrival.\n", + "47.94: Patient 26 admitted to acute ward.(waited 0.00 days)\n", + "49.03: Patient 23 medically ready for rehab\n", + "49.52: Stroke arrival.\n", + "49.52: Patient 27 admitted to acute ward.(waited 0.00 days)\n", + "49.94: Patient 22 medically ready for rehab\n", + "50.11: Stroke arrival.\n", + "50.11: Patient 28 admitted to acute ward.(waited 0.00 days)\n", + "50.81: Patient 7 discharged from Rehab.\n", + "50.81: Patient 20 transferred to rehab. (blocked acute bed for 8.16 days)\n", + "50.88: Patient 4 discharged from Rehab.\n", + "50.88: Patient 21 transferred to rehab. (blocked acute bed for 7.93 days)\n", + "51.13: Stroke arrival.\n", + "51.13: Patient 29 admitted to acute ward.(waited 0.00 days)\n", + "51.17: Patient 8 discharged from Rehab.\n", + "51.17: Patient 23 transferred to rehab. (blocked acute bed for 2.14 days)\n", + "51.20: Patient 1 discharged from Rehab.\n", + "51.20: Patient 22 transferred to rehab. (blocked acute bed for 1.27 days)\n", + "51.23: Patient 10 discharged from Rehab.\n", + "52.55: Patient 6 discharged from Rehab.\n", + "53.81: Patient 24 medically ready for rehab\n", + "53.81: Patient 24 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "54.05: Stroke arrival.\n", + "54.05: Patient 30 admitted to acute ward.(waited 0.00 days)\n", + "54.30: Patient 26 medically ready for rehab\n", + "54.30: Patient 26 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "54.82: Patient 25 medically ready for rehab\n", + "56.20: Patient 28 medically ready for rehab\n", + "56.79: Patient 27 medically ready for rehab\n", + "57.60: Patient 11 discharged from Rehab.\n", + "57.60: Patient 25 transferred to rehab. (blocked acute bed for 2.78 days)\n", + "57.62: Stroke arrival.\n", + "57.62: Patient 31 admitted to acute ward.(waited 0.00 days)\n", + "58.41: Patient 29 medically ready for rehab\n", + "58.87: Stroke arrival.\n", + "58.87: Patient 32 admitted to acute ward.(waited 0.00 days)\n", + "60.28: Patient 30 medically ready for rehab\n", + "62.00: Stroke arrival.\n", + "62.00: Patient 33 admitted to acute ward.(waited 0.00 days)\n", + "63.04: Stroke arrival.\n", + "63.04: Patient 34 admitted to acute ward.(waited 0.00 days)\n", + "63.74: Stroke arrival.\n", + "63.74: Patient 35 admitted to acute ward.(waited 0.00 days)\n", + "64.60: Patient 31 medically ready for rehab\n", + "65.55: Stroke arrival.\n", + "65.68: Stroke arrival.\n", + "66.18: Stroke arrival.\n", + "66.23: Patient 12 discharged from Rehab.\n", + "66.23: Patient 28 transferred to rehab. (blocked acute bed for 10.02 days)\n", + "66.23: Patient 36 admitted to acute ward.(waited 0.68 days)\n", + "66.40: Patient 32 medically ready for rehab\n", + "67.69: Stroke arrival.\n", + "68.04: Stroke arrival.\n", + "68.77: Patient 13 discharged from Rehab.\n", + "68.77: Patient 27 transferred to rehab. (blocked acute bed for 11.98 days)\n", + "68.77: Patient 37 admitted to acute ward.(waited 3.09 days)\n", + "68.84: Patient 34 medically ready for rehab\n", + "68.98: Patient 33 medically ready for rehab\n", + "69.69: Patient 16 discharged from Rehab.\n", + "69.69: Patient 29 transferred to rehab. (blocked acute bed for 11.29 days)\n", + "69.69: Patient 38 admitted to acute ward.(waited 3.51 days)\n", + "69.83: Stroke arrival.\n", + "70.54: Patient 35 medically ready for rehab\n", + "70.90: Stroke arrival.\n", + "71.72: Patient 19 discharged from Rehab.\n", + "71.72: Patient 30 transferred to rehab. (blocked acute bed for 11.44 days)\n", + "71.72: Patient 39 admitted to acute ward.(waited 4.03 days)\n", + "72.76: Patient 22 discharged from Rehab.\n", + "72.76: Patient 31 transferred to rehab. (blocked acute bed for 8.15 days)\n", + "72.76: Patient 40 admitted to acute ward.(waited 4.71 days)\n", + "72.79: Patient 36 medically ready for rehab\n", + "73.62: Patient 15 discharged from Rehab.\n", + "73.62: Patient 32 transferred to rehab. (blocked acute bed for 7.22 days)\n", + "73.62: Patient 41 admitted to acute ward.(waited 3.79 days)\n", + "73.65: Patient 18 discharged from Rehab.\n", + "73.65: Patient 34 transferred to rehab. (blocked acute bed for 4.81 days)\n", + "73.65: Patient 42 admitted to acute ward.(waited 2.74 days)\n", + "73.78: Patient 17 discharged from Rehab.\n", + "73.78: Patient 33 transferred to rehab. (blocked acute bed for 4.80 days)\n", + "75.99: Patient 37 medically ready for rehab\n", + "76.13: Patient 38 medically ready for rehab\n", + "76.53: Patient 39 medically ready for rehab\n", + "77.23: Stroke arrival.\n", + "77.23: Patient 43 admitted to acute ward.(waited 0.00 days)\n", + "77.29: Stroke arrival.\n", + "77.37: Patient 14 discharged from Rehab.\n", + "77.37: Patient 35 transferred to rehab. (blocked acute bed for 6.82 days)\n", + "77.37: Patient 44 admitted to acute ward.(waited 0.07 days)\n", + "77.49: Patient 20 discharged from Rehab.\n", + "77.49: Patient 36 transferred to rehab. (blocked acute bed for 4.70 days)\n", + "78.96: Patient 40 medically ready for rehab\n", + "79.28: Patient 21 discharged from Rehab.\n", + "79.28: Patient 37 transferred to rehab. (blocked acute bed for 3.29 days)\n", + "80.48: Patient 41 medically ready for rehab\n", + "80.65: Patient 42 medically ready for rehab\n", + "81.76: Patient 26 discharged from Rehab.\n", + "81.76: Patient 38 transferred to rehab. (blocked acute bed for 5.63 days)\n", + "81.86: Stroke arrival.\n", + "81.86: Patient 45 admitted to acute ward.(waited 0.00 days)\n", + "82.18: Stroke arrival.\n", + "82.18: Patient 46 admitted to acute ward.(waited 0.00 days)\n", + "82.30: Stroke arrival.\n", + "82.30: Patient 47 admitted to acute ward.(waited 0.00 days)\n", + "82.43: Patient 23 discharged from Rehab.\n", + "82.43: Patient 39 transferred to rehab. (blocked acute bed for 5.91 days)\n", + "83.69: Stroke arrival.\n", + "83.69: Patient 48 admitted to acute ward.(waited 0.00 days)\n", + "84.18: Patient 44 medically ready for rehab\n", + "85.15: Patient 24 discharged from Rehab.\n", + "85.15: Patient 40 transferred to rehab. (blocked acute bed for 6.19 days)\n", + "85.18: Patient 43 medically ready for rehab\n", + "86.77: Stroke arrival.\n", + "86.77: Patient 49 admitted to acute ward.(waited 0.00 days)\n", + "87.16: Patient 46 medically ready for rehab\n", + "87.85: Stroke arrival.\n", + "88.27: Stroke arrival.\n", + "89.09: Stroke arrival.\n", + "89.10: Patient 45 medically ready for rehab\n", + "89.38: Patient 47 medically ready for rehab\n", + "89.46: Stroke arrival.\n", + "90.62: Patient 48 medically ready for rehab\n", + "92.33: Stroke arrival.\n", + "92.74: Patient 25 discharged from Rehab.\n", + "92.74: Patient 41 transferred to rehab. (blocked acute bed for 12.26 days)\n", + "92.74: Patient 50 admitted to acute ward.(waited 4.88 days)\n", + "92.92: Patient 27 discharged from Rehab.\n", + "92.92: Patient 42 transferred to rehab. (blocked acute bed for 12.28 days)\n", + "92.92: Patient 51 admitted to acute ward.(waited 4.66 days)\n", + "92.99: Stroke arrival.\n", + "93.48: Stroke arrival.\n", + "93.86: Patient 28 discharged from Rehab.\n", + "93.86: Patient 44 transferred to rehab. (blocked acute bed for 9.68 days)\n", + "93.86: Patient 52 admitted to acute ward.(waited 4.76 days)\n", + "94.18: Stroke arrival.\n", + "94.27: Patient 49 medically ready for rehab\n", + "94.96: Patient 30 discharged from Rehab.\n", + "94.96: Patient 43 transferred to rehab. (blocked acute bed for 9.78 days)\n", + "94.96: Patient 53 admitted to acute ward.(waited 5.51 days)\n", + "95.92: Patient 29 discharged from Rehab.\n", + "95.92: Patient 46 transferred to rehab. (blocked acute bed for 8.76 days)\n", + "95.92: Patient 54 admitted to acute ward.(waited 3.59 days)\n", + "96.06: Stroke arrival.\n", + "97.43: Stroke arrival.\n", + "97.56: Stroke arrival.\n", + "98.97: Stroke arrival.\n", + "99.31: Patient 33 discharged from Rehab.\n", + "99.31: Patient 45 transferred to rehab. (blocked acute bed for 10.21 days)\n", + "99.31: Patient 55 admitted to acute ward.(waited 6.32 days)\n", + "99.48: Patient 34 discharged from Rehab.\n", + "99.48: Patient 47 transferred to rehab. (blocked acute bed for 10.10 days)\n", + "99.48: Patient 56 admitted to acute ward.(waited 5.99 days)\n", + "99.69: Patient 51 medically ready for rehab\n", + "99.97: Patient 52 medically ready for rehab\n" + ] + }, + { + "data": { + "text/plain": [ + "{'mean_acute_wait': 1.041965345852034, 'mean_bed_blocking': 4.3271192681703115}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "TRACE = True\n", + "experiment = Experiment()\n", + "results = single_run(experiment)\n", + "results" + ] + }, + { + "cell_type": "markdown", + "id": "a48ffebd-5af0-4354-89bc-7de77ee60e8b", + "metadata": {}, + "source": [ + "## Quick tests\n", + "\n", + "### Remove rehab bed blocking" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "8228ab0c-cc99-48e2-a2c9-c9dcce8d854f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'mean_acute_wait': 0.0, 'mean_bed_blocking': 0.0}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M = 1_000_000\n", + "TRACE = False\n", + "experiment = Experiment(n_rehab_beds=M)\n", + "results = single_run(experiment)\n", + "results" + ] + }, + { + "cell_type": "markdown", + "id": "f8e498cb-3999-4c69-8d41-e436cbebe6d8", + "metadata": {}, + "source": [ + "### Remove all waiting time for acute unit" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "00d319d8-2a15-46f1-b1e9-a8efb7a69b2a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'mean_acute_wait': 0.0, 'mean_bed_blocking': 4.80862454209246}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M = 1_000_000\n", + "TRACE = False\n", + "experiment = Experiment(n_acute_beds=M)\n", + "results = single_run(experiment)\n", + "results" + ] + } + ], + "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.11.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/content/distributions.py b/content/distributions.py new file mode 100644 index 0000000..183e86e --- /dev/null +++ b/content/distributions.py @@ -0,0 +1,139 @@ +import numpy as np +from typing import Optional, Union, Tuple +from numpy.random import SeedSequence +from numpy.typing import NDArray +import math + +class Lognormal: + """ + Lognormal distribution implementation. + + A continuous probability distribution where the logarithm of a random + variable is normally distributed. It is useful for modeling variables that + are the product of many small independent factors. + + Notes: taken from my in development package sim-tools + https://github.com/TomMonks/sim-tools + """ + + def __init__( + self, + mean: float, + stdev: float, + random_seed: Optional[Union[int, SeedSequence]] = None, + ): + """ + Initialize a lognormal distribution. + + Parameters + ---------- + mean : float + Mean of the lognormal distribution. + + stdev : float + Standard deviation of the lognormal distribution. + + random_seed : Optional[Union[int, SeedSequence]], default=None + A random seed or SeedSequence to reproduce samples. If None, a + unique sample sequence is generated. + """ + self.rng = np.random.default_rng(random_seed) + mu, sigma = self.normal_moments_from_lognormal(mean, stdev**2) + self.mu = mu + self.sigma = sigma + self.mean = mean + self.stdev = stdev + + def __repr__(self): + return f"Lognormal(mean={self.mean}, stdev={self.stdev})" + + def normal_moments_from_lognormal( + self, m: float, v: float + ) -> Tuple[float, float]: + """ + Calculate mu and sigma of the normal distribution underlying + a lognormal with mean m and variance v. + + Parameters + ---------- + m : float + Mean of lognormal distribution. + v : float + Variance of lognormal distribution. + + Returns + ------- + Tuple[float, float] + The mu and sigma parameters of the underlying normal distribution. + + Notes + ----- + Formula source: + https://blogs.sas.com/content/iml/2014/06/04/simulate-lognormal-data- + with-specified-mean-and-variance.html + """ + phi = math.sqrt(v + m**2) + mu = math.log(m**2 / phi) + sigma = math.sqrt(math.log(phi**2 / m**2)) + return mu, sigma + + def sample( + self, size: Optional[Union[int, Tuple[int, ...]]] = None + ) -> Union[float, NDArray[np.float64]]: + """ + Generate random samples from the lognormal distribution. + + Parameters + ---------- + size : Optional[Union[int, Tuple[int, ...]]], default=None + The number/shape of samples to generate: + - If None: returns a single sample as a float + - If int: returns a 1-D array with that many samples + - If tuple of ints: returns an array with that shape + + Returns + ------- + Union[float, NDArray[np.float64]] + Random samples from the lognormal distribution: + - A single float when size is None + - A numpy array of floats with shape determined by size parameter + """ + return self.rng.lognormal(self.mu, self.sigma, size=size) + +class Exponential: + """ + Convenience class for the exponential distribution. + packages up distribution parameters, seed and random generator. + """ + + def __init__(self, mean, random_seed=None): + """ + Constructor + + Params: + ------ + mean: float + The mean of the exponential distribution + + random_seed: int| SeedSequence, optional (default=None) + A random seed to reproduce samples. If set to none then a unique + sample is created. + """ + self.rand = np.random.default_rng(seed=random_seed) + self.mean = mean + + def sample(self, size=None): + """ + Generate a sample from the exponential distribution + + Params: + ------- + size: int, optional (default=None) + the number of samples to return. If size=None then a single + sample is returned. + + Returns: + ------- + float or np.ndarray (if size >=1) + """ + return self.rand.exponential(self.mean, size=size) \ No newline at end of file From 90a9c1b517d1552ad221fe5c335e888ec5986306 Mon Sep 17 00:00:00 2001 From: TomMonks Date: Sun, 4 May 2025 15:44:40 +0100 Subject: [PATCH 2/3] feat(blocking): +image dists to module --- content/11_blocking.ipynb | 339 +++-------------------------- content/distributions.py | 4 + content/img/bed_blocking_image.png | Bin 0 -> 219774 bytes 3 files changed, 34 insertions(+), 309 deletions(-) create mode 100644 content/img/bed_blocking_image.png diff --git a/content/11_blocking.ipynb b/content/11_blocking.ipynb index 4e95de0..9504779 100644 --- a/content/11_blocking.ipynb +++ b/content/11_blocking.ipynb @@ -5,21 +5,15 @@ "id": "0be7dabf-cb34-4faf-abb1-e2c8e735beda", "metadata": {}, "source": [ - "# Resource blocking\n", + "# Sequential Resource Holding and Blocking in SimPy\n", "\n", "In this notebook we will learn how to code simpy logic to mimic a process holding a resource while queuing for another resource. This simulates a blocking scenario in a process.\n", "\n", - "We will work with a hypothetical stroke pathway where patients undergo acute treatment followed by rehabilitation in a separate hospital. A patient must remain in an acute stroke bed until a rehabilitation bed is free.\n", + "We will work with a hypothetical stroke pathway where patients undergo acute treatment followed by transfer at a different hospital to undergo rehabilitation. A patient must remain in an acute stroke bed until a rehabilitation bed is free.\n", "\n", + "> In this example we will not concern ourselves with a warm-up period or initial conditions.\n", "\n", - "\n", - "| ID | Component | Distribution | Mean (days) | Std (days) |\n", - "| -- | ----------------- | ------------ | ----------- | ---------- |\n", - "| 1 | Interarrival time | Exponential | 1.5 | |\n", - "| 2 | Acute LoS | Lognormal | 7.0 | 1.0 |\n", - "| 3 | Rehab LoS | Lognormal | 30.0 | 5.0 |\n", - "\n", - "\n" + "![model image](img/bed_blocking_image.png \"Bed blocking example\")\n" ] }, { @@ -47,8 +41,21 @@ "execution_count": 2, "id": "ea3d507f-9e6d-4ff0-8b90-f9c63c8a8bdf", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax. Perhaps you forgot a comma? (distributions.py, line 27)", + "output_type": "error", + "traceback": [ + "Traceback \u001b[0;36m(most recent call last)\u001b[0m:\n", + "\u001b[0m File \u001b[1;32m~/miniconda3/envs/simpy_tutorial/lib/python3.11/site-packages/IPython/core/interactiveshell.py:3577\u001b[0m in \u001b[1;35mrun_code\u001b[0m\n exec(code_obj, self.user_global_ns, self.user_ns)\u001b[0m\n", + "\u001b[0;36m Cell \u001b[0;32mIn[2], line 2\u001b[0;36m\n\u001b[0;31m from distributions import Exponential, Lognormal\u001b[0;36m\n", + "\u001b[0;36m File \u001b[0;32m~/Documents/code/intro-open-sim/content/distributions.py:27\u001b[0;36m\u001b[0m\n\u001b[0;31m location: float\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax. Perhaps you forgot a comma?\n" + ] + } + ], "source": [ + "# to reduce code these classes can be found in distribution.py\n", "from distributions import Exponential, Lognormal" ] }, @@ -62,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "1ecf0429-f03f-4ad2-abb4-46692a74e559", "metadata": {}, "outputs": [], @@ -104,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "52c9271f-1d05-454d-a199-8768bdf5b6e8", "metadata": {}, "outputs": [], @@ -132,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "576ae9b4-b21b-4ed0-9b13-e5898d423173", "metadata": {}, "outputs": [], @@ -245,7 +252,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "bf2fae82-665f-4990-bc6c-4e43eb68bbeb", "metadata": {}, "outputs": [], @@ -329,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "b3e686ce-5371-4471-a052-b9d43309bc85", "metadata": {}, "outputs": [], @@ -372,7 +379,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "0d0ea6cf-7d95-4d2c-9690-fcdbdae35d84", "metadata": {}, "outputs": [], @@ -433,274 +440,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "caf52390-5455-4fa1-bb22-60b5b91ad8d0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4.94: Stroke arrival.\n", - "4.94: Patient 1 admitted to acute ward.(waited 0.00 days)\n", - "6.08: Stroke arrival.\n", - "6.08: Patient 2 admitted to acute ward.(waited 0.00 days)\n", - "7.96: Stroke arrival.\n", - "7.96: Patient 3 admitted to acute ward.(waited 0.00 days)\n", - "8.30: Stroke arrival.\n", - "8.30: Patient 4 admitted to acute ward.(waited 0.00 days)\n", - "8.63: Stroke arrival.\n", - "8.63: Patient 5 admitted to acute ward.(waited 0.00 days)\n", - "11.33: Stroke arrival.\n", - "11.33: Patient 6 admitted to acute ward.(waited 0.00 days)\n", - "11.37: Patient 2 medically ready for rehab\n", - "11.37: Patient 2 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "11.43: Stroke arrival.\n", - "11.43: Patient 7 admitted to acute ward.(waited 0.00 days)\n", - "12.18: Patient 3 medically ready for rehab\n", - "12.18: Patient 3 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "12.71: Patient 1 medically ready for rehab\n", - "12.71: Patient 1 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "12.78: Stroke arrival.\n", - "12.78: Patient 8 admitted to acute ward.(waited 0.00 days)\n", - "13.23: Stroke arrival.\n", - "13.23: Patient 9 admitted to acute ward.(waited 0.00 days)\n", - "16.22: Patient 4 medically ready for rehab\n", - "16.22: Patient 4 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "16.68: Stroke arrival.\n", - "16.68: Patient 10 admitted to acute ward.(waited 0.00 days)\n", - "16.96: Patient 5 medically ready for rehab\n", - "16.96: Patient 5 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "17.93: Patient 6 medically ready for rehab\n", - "17.93: Patient 6 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "18.68: Patient 7 medically ready for rehab\n", - "18.68: Patient 7 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "18.76: Patient 8 medically ready for rehab\n", - "18.76: Patient 8 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "19.46: Stroke arrival.\n", - "19.46: Patient 11 admitted to acute ward.(waited 0.00 days)\n", - "19.49: Stroke arrival.\n", - "19.49: Patient 12 admitted to acute ward.(waited 0.00 days)\n", - "19.74: Patient 9 medically ready for rehab\n", - "19.74: Patient 9 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "24.39: Patient 10 medically ready for rehab\n", - "24.39: Patient 10 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "27.41: Patient 11 medically ready for rehab\n", - "27.41: Patient 11 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "27.70: Patient 12 medically ready for rehab\n", - "27.70: Patient 12 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "27.88: Stroke arrival.\n", - "27.88: Patient 13 admitted to acute ward.(waited 0.00 days)\n", - "29.08: Stroke arrival.\n", - "29.08: Patient 14 admitted to acute ward.(waited 0.00 days)\n", - "29.60: Stroke arrival.\n", - "29.60: Patient 15 admitted to acute ward.(waited 0.00 days)\n", - "32.56: Stroke arrival.\n", - "32.56: Patient 16 admitted to acute ward.(waited 0.00 days)\n", - "33.67: Stroke arrival.\n", - "33.67: Patient 17 admitted to acute ward.(waited 0.00 days)\n", - "33.68: Stroke arrival.\n", - "33.68: Patient 18 admitted to acute ward.(waited 0.00 days)\n", - "34.92: Stroke arrival.\n", - "34.92: Patient 19 admitted to acute ward.(waited 0.00 days)\n", - "35.09: Patient 13 medically ready for rehab\n", - "35.09: Patient 13 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "35.85: Stroke arrival.\n", - "35.85: Patient 20 admitted to acute ward.(waited 0.00 days)\n", - "36.02: Patient 15 medically ready for rehab\n", - "36.02: Patient 15 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "36.62: Patient 14 medically ready for rehab\n", - "36.62: Patient 14 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "36.76: Stroke arrival.\n", - "36.76: Patient 21 admitted to acute ward.(waited 0.00 days)\n", - "38.54: Patient 3 discharged from Rehab.\n", - "38.56: Patient 5 discharged from Rehab.\n", - "39.04: Patient 16 medically ready for rehab\n", - "39.04: Patient 16 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "39.97: Patient 18 medically ready for rehab\n", - "39.97: Patient 18 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "40.33: Patient 17 medically ready for rehab\n", - "41.02: Stroke arrival.\n", - "41.02: Patient 22 admitted to acute ward.(waited 0.00 days)\n", - "41.33: Patient 19 medically ready for rehab\n", - "41.37: Stroke arrival.\n", - "41.37: Patient 23 admitted to acute ward.(waited 0.00 days)\n", - "41.50: Patient 9 discharged from Rehab.\n", - "41.50: Patient 17 transferred to rehab. (blocked acute bed for 1.17 days)\n", - "42.66: Patient 20 medically ready for rehab\n", - "42.95: Patient 21 medically ready for rehab\n", - "45.13: Stroke arrival.\n", - "45.13: Patient 24 admitted to acute ward.(waited 0.00 days)\n", - "45.62: Stroke arrival.\n", - "45.62: Patient 25 admitted to acute ward.(waited 0.00 days)\n", - "45.95: Patient 2 discharged from Rehab.\n", - "45.95: Patient 19 transferred to rehab. (blocked acute bed for 4.62 days)\n", - "47.94: Stroke arrival.\n", - "47.94: Patient 26 admitted to acute ward.(waited 0.00 days)\n", - "49.03: Patient 23 medically ready for rehab\n", - "49.52: Stroke arrival.\n", - "49.52: Patient 27 admitted to acute ward.(waited 0.00 days)\n", - "49.94: Patient 22 medically ready for rehab\n", - "50.11: Stroke arrival.\n", - "50.11: Patient 28 admitted to acute ward.(waited 0.00 days)\n", - "50.81: Patient 7 discharged from Rehab.\n", - "50.81: Patient 20 transferred to rehab. (blocked acute bed for 8.16 days)\n", - "50.88: Patient 4 discharged from Rehab.\n", - "50.88: Patient 21 transferred to rehab. (blocked acute bed for 7.93 days)\n", - "51.13: Stroke arrival.\n", - "51.13: Patient 29 admitted to acute ward.(waited 0.00 days)\n", - "51.17: Patient 8 discharged from Rehab.\n", - "51.17: Patient 23 transferred to rehab. (blocked acute bed for 2.14 days)\n", - "51.20: Patient 1 discharged from Rehab.\n", - "51.20: Patient 22 transferred to rehab. (blocked acute bed for 1.27 days)\n", - "51.23: Patient 10 discharged from Rehab.\n", - "52.55: Patient 6 discharged from Rehab.\n", - "53.81: Patient 24 medically ready for rehab\n", - "53.81: Patient 24 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "54.05: Stroke arrival.\n", - "54.05: Patient 30 admitted to acute ward.(waited 0.00 days)\n", - "54.30: Patient 26 medically ready for rehab\n", - "54.30: Patient 26 transferred to rehab. (blocked acute bed for 0.00 days)\n", - "54.82: Patient 25 medically ready for rehab\n", - "56.20: Patient 28 medically ready for rehab\n", - "56.79: Patient 27 medically ready for rehab\n", - "57.60: Patient 11 discharged from Rehab.\n", - "57.60: Patient 25 transferred to rehab. (blocked acute bed for 2.78 days)\n", - "57.62: Stroke arrival.\n", - "57.62: Patient 31 admitted to acute ward.(waited 0.00 days)\n", - "58.41: Patient 29 medically ready for rehab\n", - "58.87: Stroke arrival.\n", - "58.87: Patient 32 admitted to acute ward.(waited 0.00 days)\n", - "60.28: Patient 30 medically ready for rehab\n", - "62.00: Stroke arrival.\n", - "62.00: Patient 33 admitted to acute ward.(waited 0.00 days)\n", - "63.04: Stroke arrival.\n", - "63.04: Patient 34 admitted to acute ward.(waited 0.00 days)\n", - "63.74: Stroke arrival.\n", - "63.74: Patient 35 admitted to acute ward.(waited 0.00 days)\n", - "64.60: Patient 31 medically ready for rehab\n", - "65.55: Stroke arrival.\n", - "65.68: Stroke arrival.\n", - "66.18: Stroke arrival.\n", - "66.23: Patient 12 discharged from Rehab.\n", - "66.23: Patient 28 transferred to rehab. (blocked acute bed for 10.02 days)\n", - "66.23: Patient 36 admitted to acute ward.(waited 0.68 days)\n", - "66.40: Patient 32 medically ready for rehab\n", - "67.69: Stroke arrival.\n", - "68.04: Stroke arrival.\n", - "68.77: Patient 13 discharged from Rehab.\n", - "68.77: Patient 27 transferred to rehab. (blocked acute bed for 11.98 days)\n", - "68.77: Patient 37 admitted to acute ward.(waited 3.09 days)\n", - "68.84: Patient 34 medically ready for rehab\n", - "68.98: Patient 33 medically ready for rehab\n", - "69.69: Patient 16 discharged from Rehab.\n", - "69.69: Patient 29 transferred to rehab. (blocked acute bed for 11.29 days)\n", - "69.69: Patient 38 admitted to acute ward.(waited 3.51 days)\n", - "69.83: Stroke arrival.\n", - "70.54: Patient 35 medically ready for rehab\n", - "70.90: Stroke arrival.\n", - "71.72: Patient 19 discharged from Rehab.\n", - "71.72: Patient 30 transferred to rehab. (blocked acute bed for 11.44 days)\n", - "71.72: Patient 39 admitted to acute ward.(waited 4.03 days)\n", - "72.76: Patient 22 discharged from Rehab.\n", - "72.76: Patient 31 transferred to rehab. (blocked acute bed for 8.15 days)\n", - "72.76: Patient 40 admitted to acute ward.(waited 4.71 days)\n", - "72.79: Patient 36 medically ready for rehab\n", - "73.62: Patient 15 discharged from Rehab.\n", - "73.62: Patient 32 transferred to rehab. (blocked acute bed for 7.22 days)\n", - "73.62: Patient 41 admitted to acute ward.(waited 3.79 days)\n", - "73.65: Patient 18 discharged from Rehab.\n", - "73.65: Patient 34 transferred to rehab. (blocked acute bed for 4.81 days)\n", - "73.65: Patient 42 admitted to acute ward.(waited 2.74 days)\n", - "73.78: Patient 17 discharged from Rehab.\n", - "73.78: Patient 33 transferred to rehab. (blocked acute bed for 4.80 days)\n", - "75.99: Patient 37 medically ready for rehab\n", - "76.13: Patient 38 medically ready for rehab\n", - "76.53: Patient 39 medically ready for rehab\n", - "77.23: Stroke arrival.\n", - "77.23: Patient 43 admitted to acute ward.(waited 0.00 days)\n", - "77.29: Stroke arrival.\n", - "77.37: Patient 14 discharged from Rehab.\n", - "77.37: Patient 35 transferred to rehab. (blocked acute bed for 6.82 days)\n", - "77.37: Patient 44 admitted to acute ward.(waited 0.07 days)\n", - "77.49: Patient 20 discharged from Rehab.\n", - "77.49: Patient 36 transferred to rehab. (blocked acute bed for 4.70 days)\n", - "78.96: Patient 40 medically ready for rehab\n", - "79.28: Patient 21 discharged from Rehab.\n", - "79.28: Patient 37 transferred to rehab. (blocked acute bed for 3.29 days)\n", - "80.48: Patient 41 medically ready for rehab\n", - "80.65: Patient 42 medically ready for rehab\n", - "81.76: Patient 26 discharged from Rehab.\n", - "81.76: Patient 38 transferred to rehab. (blocked acute bed for 5.63 days)\n", - "81.86: Stroke arrival.\n", - "81.86: Patient 45 admitted to acute ward.(waited 0.00 days)\n", - "82.18: Stroke arrival.\n", - "82.18: Patient 46 admitted to acute ward.(waited 0.00 days)\n", - "82.30: Stroke arrival.\n", - "82.30: Patient 47 admitted to acute ward.(waited 0.00 days)\n", - "82.43: Patient 23 discharged from Rehab.\n", - "82.43: Patient 39 transferred to rehab. (blocked acute bed for 5.91 days)\n", - "83.69: Stroke arrival.\n", - "83.69: Patient 48 admitted to acute ward.(waited 0.00 days)\n", - "84.18: Patient 44 medically ready for rehab\n", - "85.15: Patient 24 discharged from Rehab.\n", - "85.15: Patient 40 transferred to rehab. (blocked acute bed for 6.19 days)\n", - "85.18: Patient 43 medically ready for rehab\n", - "86.77: Stroke arrival.\n", - "86.77: Patient 49 admitted to acute ward.(waited 0.00 days)\n", - "87.16: Patient 46 medically ready for rehab\n", - "87.85: Stroke arrival.\n", - "88.27: Stroke arrival.\n", - "89.09: Stroke arrival.\n", - "89.10: Patient 45 medically ready for rehab\n", - "89.38: Patient 47 medically ready for rehab\n", - "89.46: Stroke arrival.\n", - "90.62: Patient 48 medically ready for rehab\n", - "92.33: Stroke arrival.\n", - "92.74: Patient 25 discharged from Rehab.\n", - "92.74: Patient 41 transferred to rehab. (blocked acute bed for 12.26 days)\n", - "92.74: Patient 50 admitted to acute ward.(waited 4.88 days)\n", - "92.92: Patient 27 discharged from Rehab.\n", - "92.92: Patient 42 transferred to rehab. (blocked acute bed for 12.28 days)\n", - "92.92: Patient 51 admitted to acute ward.(waited 4.66 days)\n", - "92.99: Stroke arrival.\n", - "93.48: Stroke arrival.\n", - "93.86: Patient 28 discharged from Rehab.\n", - "93.86: Patient 44 transferred to rehab. (blocked acute bed for 9.68 days)\n", - "93.86: Patient 52 admitted to acute ward.(waited 4.76 days)\n", - "94.18: Stroke arrival.\n", - "94.27: Patient 49 medically ready for rehab\n", - "94.96: Patient 30 discharged from Rehab.\n", - "94.96: Patient 43 transferred to rehab. (blocked acute bed for 9.78 days)\n", - "94.96: Patient 53 admitted to acute ward.(waited 5.51 days)\n", - "95.92: Patient 29 discharged from Rehab.\n", - "95.92: Patient 46 transferred to rehab. (blocked acute bed for 8.76 days)\n", - "95.92: Patient 54 admitted to acute ward.(waited 3.59 days)\n", - "96.06: Stroke arrival.\n", - "97.43: Stroke arrival.\n", - "97.56: Stroke arrival.\n", - "98.97: Stroke arrival.\n", - "99.31: Patient 33 discharged from Rehab.\n", - "99.31: Patient 45 transferred to rehab. (blocked acute bed for 10.21 days)\n", - "99.31: Patient 55 admitted to acute ward.(waited 6.32 days)\n", - "99.48: Patient 34 discharged from Rehab.\n", - "99.48: Patient 47 transferred to rehab. (blocked acute bed for 10.10 days)\n", - "99.48: Patient 56 admitted to acute ward.(waited 5.99 days)\n", - "99.69: Patient 51 medically ready for rehab\n", - "99.97: Patient 52 medically ready for rehab\n" - ] - }, - { - "data": { - "text/plain": [ - "{'mean_acute_wait': 1.041965345852034, 'mean_bed_blocking': 4.3271192681703115}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "TRACE = True\n", "experiment = Experiment()\n", @@ -720,21 +463,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "8228ab0c-cc99-48e2-a2c9-c9dcce8d854f", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'mean_acute_wait': 0.0, 'mean_bed_blocking': 0.0}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "M = 1_000_000\n", "TRACE = False\n", @@ -753,21 +485,10 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "00d319d8-2a15-46f1-b1e9-a8efb7a69b2a", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'mean_acute_wait': 0.0, 'mean_bed_blocking': 4.80862454209246}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "M = 1_000_000\n", "TRACE = False\n", diff --git a/content/distributions.py b/content/distributions.py index 183e86e..f8f42e0 100644 --- a/content/distributions.py +++ b/content/distributions.py @@ -1,3 +1,7 @@ +""" +Distribution and utility classes avilable to these examples. +""" + import numpy as np from typing import Optional, Union, Tuple from numpy.random import SeedSequence diff --git a/content/img/bed_blocking_image.png b/content/img/bed_blocking_image.png new file mode 100644 index 0000000000000000000000000000000000000000..65fcfae61513d1645fc7bde40bcd2480bd5fdb7a GIT binary patch literal 219774 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%0Ai>r^eR6l5=w;Njk)q6 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 Date: Sun, 4 May 2025 15:48:30 +0100 Subject: [PATCH 3/3] docs(changes): unreleased info added --- CHANGELOG.md | 8 + content/11_blocking.ipynb | 324 +++++++++++++++++++++++++++++++++++--- 2 files changed, 307 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b72411..6913b8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Dates formatted as YYYY-MM-DD as per [ISO standard](https://www.iso.org/iso-8601-date-and-time-format.html). +## Unreleased + +## Added + +* `10_multiple_arrival_processes.ipynb`: simulating multiple arrivals classes each with their own distribution +* `11_blocking.ipynb`: simulating the blocking of one resource while queuing for another. +* `distributions.py`: module containing some distributions to reduce code in notebooks. + ## [v0.2.0 - 11/02/2024](https://github.com/pythonhealthdatascience/intro-open-sim/releases/tag/v0.2.0) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.14849934.svg)](https://doi.org/10.5281/zenodo.14849934) Simulation workshop 2025 release. Additional notebooks to respond to reviewers requests. diff --git a/content/11_blocking.ipynb b/content/11_blocking.ipynb index 9504779..2343aab 100644 --- a/content/11_blocking.ipynb +++ b/content/11_blocking.ipynb @@ -41,19 +41,7 @@ "execution_count": 2, "id": "ea3d507f-9e6d-4ff0-8b90-f9c63c8a8bdf", "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax. Perhaps you forgot a comma? (distributions.py, line 27)", - "output_type": "error", - "traceback": [ - "Traceback \u001b[0;36m(most recent call last)\u001b[0m:\n", - "\u001b[0m File \u001b[1;32m~/miniconda3/envs/simpy_tutorial/lib/python3.11/site-packages/IPython/core/interactiveshell.py:3577\u001b[0m in \u001b[1;35mrun_code\u001b[0m\n exec(code_obj, self.user_global_ns, self.user_ns)\u001b[0m\n", - "\u001b[0;36m Cell \u001b[0;32mIn[2], line 2\u001b[0;36m\n\u001b[0;31m from distributions import Exponential, Lognormal\u001b[0;36m\n", - "\u001b[0;36m File \u001b[0;32m~/Documents/code/intro-open-sim/content/distributions.py:27\u001b[0;36m\u001b[0m\n\u001b[0;31m location: float\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax. Perhaps you forgot a comma?\n" - ] - } - ], + "outputs": [], "source": [ "# to reduce code these classes can be found in distribution.py\n", "from distributions import Exponential, Lognormal" @@ -69,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "1ecf0429-f03f-4ad2-abb4-46692a74e559", "metadata": {}, "outputs": [], @@ -111,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "52c9271f-1d05-454d-a199-8768bdf5b6e8", "metadata": {}, "outputs": [], @@ -139,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "576ae9b4-b21b-4ed0-9b13-e5898d423173", "metadata": {}, "outputs": [], @@ -252,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "bf2fae82-665f-4990-bc6c-4e43eb68bbeb", "metadata": {}, "outputs": [], @@ -336,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "b3e686ce-5371-4471-a052-b9d43309bc85", "metadata": {}, "outputs": [], @@ -379,7 +367,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "0d0ea6cf-7d95-4d2c-9690-fcdbdae35d84", "metadata": {}, "outputs": [], @@ -440,10 +428,274 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "caf52390-5455-4fa1-bb22-60b5b91ad8d0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.94: Stroke arrival.\n", + "4.94: Patient 1 admitted to acute ward.(waited 0.00 days)\n", + "6.08: Stroke arrival.\n", + "6.08: Patient 2 admitted to acute ward.(waited 0.00 days)\n", + "7.96: Stroke arrival.\n", + "7.96: Patient 3 admitted to acute ward.(waited 0.00 days)\n", + "8.30: Stroke arrival.\n", + "8.30: Patient 4 admitted to acute ward.(waited 0.00 days)\n", + "8.63: Stroke arrival.\n", + "8.63: Patient 5 admitted to acute ward.(waited 0.00 days)\n", + "11.33: Stroke arrival.\n", + "11.33: Patient 6 admitted to acute ward.(waited 0.00 days)\n", + "11.37: Patient 2 medically ready for rehab\n", + "11.37: Patient 2 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "11.43: Stroke arrival.\n", + "11.43: Patient 7 admitted to acute ward.(waited 0.00 days)\n", + "12.18: Patient 3 medically ready for rehab\n", + "12.18: Patient 3 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "12.71: Patient 1 medically ready for rehab\n", + "12.71: Patient 1 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "12.78: Stroke arrival.\n", + "12.78: Patient 8 admitted to acute ward.(waited 0.00 days)\n", + "13.23: Stroke arrival.\n", + "13.23: Patient 9 admitted to acute ward.(waited 0.00 days)\n", + "16.22: Patient 4 medically ready for rehab\n", + "16.22: Patient 4 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "16.68: Stroke arrival.\n", + "16.68: Patient 10 admitted to acute ward.(waited 0.00 days)\n", + "16.96: Patient 5 medically ready for rehab\n", + "16.96: Patient 5 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "17.93: Patient 6 medically ready for rehab\n", + "17.93: Patient 6 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "18.68: Patient 7 medically ready for rehab\n", + "18.68: Patient 7 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "18.76: Patient 8 medically ready for rehab\n", + "18.76: Patient 8 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "19.46: Stroke arrival.\n", + "19.46: Patient 11 admitted to acute ward.(waited 0.00 days)\n", + "19.49: Stroke arrival.\n", + "19.49: Patient 12 admitted to acute ward.(waited 0.00 days)\n", + "19.74: Patient 9 medically ready for rehab\n", + "19.74: Patient 9 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "24.39: Patient 10 medically ready for rehab\n", + "24.39: Patient 10 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "27.41: Patient 11 medically ready for rehab\n", + "27.41: Patient 11 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "27.70: Patient 12 medically ready for rehab\n", + "27.70: Patient 12 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "27.88: Stroke arrival.\n", + "27.88: Patient 13 admitted to acute ward.(waited 0.00 days)\n", + "29.08: Stroke arrival.\n", + "29.08: Patient 14 admitted to acute ward.(waited 0.00 days)\n", + "29.60: Stroke arrival.\n", + "29.60: Patient 15 admitted to acute ward.(waited 0.00 days)\n", + "32.56: Stroke arrival.\n", + "32.56: Patient 16 admitted to acute ward.(waited 0.00 days)\n", + "33.67: Stroke arrival.\n", + "33.67: Patient 17 admitted to acute ward.(waited 0.00 days)\n", + "33.68: Stroke arrival.\n", + "33.68: Patient 18 admitted to acute ward.(waited 0.00 days)\n", + "34.92: Stroke arrival.\n", + "34.92: Patient 19 admitted to acute ward.(waited 0.00 days)\n", + "35.09: Patient 13 medically ready for rehab\n", + "35.09: Patient 13 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "35.85: Stroke arrival.\n", + "35.85: Patient 20 admitted to acute ward.(waited 0.00 days)\n", + "36.02: Patient 15 medically ready for rehab\n", + "36.02: Patient 15 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "36.62: Patient 14 medically ready for rehab\n", + "36.62: Patient 14 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "36.76: Stroke arrival.\n", + "36.76: Patient 21 admitted to acute ward.(waited 0.00 days)\n", + "38.54: Patient 3 discharged from Rehab.\n", + "38.56: Patient 5 discharged from Rehab.\n", + "39.04: Patient 16 medically ready for rehab\n", + "39.04: Patient 16 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "39.97: Patient 18 medically ready for rehab\n", + "39.97: Patient 18 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "40.33: Patient 17 medically ready for rehab\n", + "41.02: Stroke arrival.\n", + "41.02: Patient 22 admitted to acute ward.(waited 0.00 days)\n", + "41.33: Patient 19 medically ready for rehab\n", + "41.37: Stroke arrival.\n", + "41.37: Patient 23 admitted to acute ward.(waited 0.00 days)\n", + "41.50: Patient 9 discharged from Rehab.\n", + "41.50: Patient 17 transferred to rehab. (blocked acute bed for 1.17 days)\n", + "42.66: Patient 20 medically ready for rehab\n", + "42.95: Patient 21 medically ready for rehab\n", + "45.13: Stroke arrival.\n", + "45.13: Patient 24 admitted to acute ward.(waited 0.00 days)\n", + "45.62: Stroke arrival.\n", + "45.62: Patient 25 admitted to acute ward.(waited 0.00 days)\n", + "45.95: Patient 2 discharged from Rehab.\n", + "45.95: Patient 19 transferred to rehab. (blocked acute bed for 4.62 days)\n", + "47.94: Stroke arrival.\n", + "47.94: Patient 26 admitted to acute ward.(waited 0.00 days)\n", + "49.03: Patient 23 medically ready for rehab\n", + "49.52: Stroke arrival.\n", + "49.52: Patient 27 admitted to acute ward.(waited 0.00 days)\n", + "49.94: Patient 22 medically ready for rehab\n", + "50.11: Stroke arrival.\n", + "50.11: Patient 28 admitted to acute ward.(waited 0.00 days)\n", + "50.81: Patient 7 discharged from Rehab.\n", + "50.81: Patient 20 transferred to rehab. (blocked acute bed for 8.16 days)\n", + "50.88: Patient 4 discharged from Rehab.\n", + "50.88: Patient 21 transferred to rehab. (blocked acute bed for 7.93 days)\n", + "51.13: Stroke arrival.\n", + "51.13: Patient 29 admitted to acute ward.(waited 0.00 days)\n", + "51.17: Patient 8 discharged from Rehab.\n", + "51.17: Patient 23 transferred to rehab. (blocked acute bed for 2.14 days)\n", + "51.20: Patient 1 discharged from Rehab.\n", + "51.20: Patient 22 transferred to rehab. (blocked acute bed for 1.27 days)\n", + "51.23: Patient 10 discharged from Rehab.\n", + "52.55: Patient 6 discharged from Rehab.\n", + "53.81: Patient 24 medically ready for rehab\n", + "53.81: Patient 24 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "54.05: Stroke arrival.\n", + "54.05: Patient 30 admitted to acute ward.(waited 0.00 days)\n", + "54.30: Patient 26 medically ready for rehab\n", + "54.30: Patient 26 transferred to rehab. (blocked acute bed for 0.00 days)\n", + "54.82: Patient 25 medically ready for rehab\n", + "56.20: Patient 28 medically ready for rehab\n", + "56.79: Patient 27 medically ready for rehab\n", + "57.60: Patient 11 discharged from Rehab.\n", + "57.60: Patient 25 transferred to rehab. (blocked acute bed for 2.78 days)\n", + "57.62: Stroke arrival.\n", + "57.62: Patient 31 admitted to acute ward.(waited 0.00 days)\n", + "58.41: Patient 29 medically ready for rehab\n", + "58.87: Stroke arrival.\n", + "58.87: Patient 32 admitted to acute ward.(waited 0.00 days)\n", + "60.28: Patient 30 medically ready for rehab\n", + "62.00: Stroke arrival.\n", + "62.00: Patient 33 admitted to acute ward.(waited 0.00 days)\n", + "63.04: Stroke arrival.\n", + "63.04: Patient 34 admitted to acute ward.(waited 0.00 days)\n", + "63.74: Stroke arrival.\n", + "63.74: Patient 35 admitted to acute ward.(waited 0.00 days)\n", + "64.60: Patient 31 medically ready for rehab\n", + "65.55: Stroke arrival.\n", + "65.68: Stroke arrival.\n", + "66.18: Stroke arrival.\n", + "66.23: Patient 12 discharged from Rehab.\n", + "66.23: Patient 28 transferred to rehab. (blocked acute bed for 10.02 days)\n", + "66.23: Patient 36 admitted to acute ward.(waited 0.68 days)\n", + "66.40: Patient 32 medically ready for rehab\n", + "67.69: Stroke arrival.\n", + "68.04: Stroke arrival.\n", + "68.77: Patient 13 discharged from Rehab.\n", + "68.77: Patient 27 transferred to rehab. (blocked acute bed for 11.98 days)\n", + "68.77: Patient 37 admitted to acute ward.(waited 3.09 days)\n", + "68.84: Patient 34 medically ready for rehab\n", + "68.98: Patient 33 medically ready for rehab\n", + "69.69: Patient 16 discharged from Rehab.\n", + "69.69: Patient 29 transferred to rehab. (blocked acute bed for 11.29 days)\n", + "69.69: Patient 38 admitted to acute ward.(waited 3.51 days)\n", + "69.83: Stroke arrival.\n", + "70.54: Patient 35 medically ready for rehab\n", + "70.90: Stroke arrival.\n", + "71.72: Patient 19 discharged from Rehab.\n", + "71.72: Patient 30 transferred to rehab. (blocked acute bed for 11.44 days)\n", + "71.72: Patient 39 admitted to acute ward.(waited 4.03 days)\n", + "72.76: Patient 22 discharged from Rehab.\n", + "72.76: Patient 31 transferred to rehab. (blocked acute bed for 8.15 days)\n", + "72.76: Patient 40 admitted to acute ward.(waited 4.71 days)\n", + "72.79: Patient 36 medically ready for rehab\n", + "73.62: Patient 15 discharged from Rehab.\n", + "73.62: Patient 32 transferred to rehab. (blocked acute bed for 7.22 days)\n", + "73.62: Patient 41 admitted to acute ward.(waited 3.79 days)\n", + "73.65: Patient 18 discharged from Rehab.\n", + "73.65: Patient 34 transferred to rehab. (blocked acute bed for 4.81 days)\n", + "73.65: Patient 42 admitted to acute ward.(waited 2.74 days)\n", + "73.78: Patient 17 discharged from Rehab.\n", + "73.78: Patient 33 transferred to rehab. (blocked acute bed for 4.80 days)\n", + "75.99: Patient 37 medically ready for rehab\n", + "76.13: Patient 38 medically ready for rehab\n", + "76.53: Patient 39 medically ready for rehab\n", + "77.23: Stroke arrival.\n", + "77.23: Patient 43 admitted to acute ward.(waited 0.00 days)\n", + "77.29: Stroke arrival.\n", + "77.37: Patient 14 discharged from Rehab.\n", + "77.37: Patient 35 transferred to rehab. (blocked acute bed for 6.82 days)\n", + "77.37: Patient 44 admitted to acute ward.(waited 0.07 days)\n", + "77.49: Patient 20 discharged from Rehab.\n", + "77.49: Patient 36 transferred to rehab. (blocked acute bed for 4.70 days)\n", + "78.96: Patient 40 medically ready for rehab\n", + "79.28: Patient 21 discharged from Rehab.\n", + "79.28: Patient 37 transferred to rehab. (blocked acute bed for 3.29 days)\n", + "80.48: Patient 41 medically ready for rehab\n", + "80.65: Patient 42 medically ready for rehab\n", + "81.76: Patient 26 discharged from Rehab.\n", + "81.76: Patient 38 transferred to rehab. (blocked acute bed for 5.63 days)\n", + "81.86: Stroke arrival.\n", + "81.86: Patient 45 admitted to acute ward.(waited 0.00 days)\n", + "82.18: Stroke arrival.\n", + "82.18: Patient 46 admitted to acute ward.(waited 0.00 days)\n", + "82.30: Stroke arrival.\n", + "82.30: Patient 47 admitted to acute ward.(waited 0.00 days)\n", + "82.43: Patient 23 discharged from Rehab.\n", + "82.43: Patient 39 transferred to rehab. (blocked acute bed for 5.91 days)\n", + "83.69: Stroke arrival.\n", + "83.69: Patient 48 admitted to acute ward.(waited 0.00 days)\n", + "84.18: Patient 44 medically ready for rehab\n", + "85.15: Patient 24 discharged from Rehab.\n", + "85.15: Patient 40 transferred to rehab. (blocked acute bed for 6.19 days)\n", + "85.18: Patient 43 medically ready for rehab\n", + "86.77: Stroke arrival.\n", + "86.77: Patient 49 admitted to acute ward.(waited 0.00 days)\n", + "87.16: Patient 46 medically ready for rehab\n", + "87.85: Stroke arrival.\n", + "88.27: Stroke arrival.\n", + "89.09: Stroke arrival.\n", + "89.10: Patient 45 medically ready for rehab\n", + "89.38: Patient 47 medically ready for rehab\n", + "89.46: Stroke arrival.\n", + "90.62: Patient 48 medically ready for rehab\n", + "92.33: Stroke arrival.\n", + "92.74: Patient 25 discharged from Rehab.\n", + "92.74: Patient 41 transferred to rehab. (blocked acute bed for 12.26 days)\n", + "92.74: Patient 50 admitted to acute ward.(waited 4.88 days)\n", + "92.92: Patient 27 discharged from Rehab.\n", + "92.92: Patient 42 transferred to rehab. (blocked acute bed for 12.28 days)\n", + "92.92: Patient 51 admitted to acute ward.(waited 4.66 days)\n", + "92.99: Stroke arrival.\n", + "93.48: Stroke arrival.\n", + "93.86: Patient 28 discharged from Rehab.\n", + "93.86: Patient 44 transferred to rehab. (blocked acute bed for 9.68 days)\n", + "93.86: Patient 52 admitted to acute ward.(waited 4.76 days)\n", + "94.18: Stroke arrival.\n", + "94.27: Patient 49 medically ready for rehab\n", + "94.96: Patient 30 discharged from Rehab.\n", + "94.96: Patient 43 transferred to rehab. (blocked acute bed for 9.78 days)\n", + "94.96: Patient 53 admitted to acute ward.(waited 5.51 days)\n", + "95.92: Patient 29 discharged from Rehab.\n", + "95.92: Patient 46 transferred to rehab. (blocked acute bed for 8.76 days)\n", + "95.92: Patient 54 admitted to acute ward.(waited 3.59 days)\n", + "96.06: Stroke arrival.\n", + "97.43: Stroke arrival.\n", + "97.56: Stroke arrival.\n", + "98.97: Stroke arrival.\n", + "99.31: Patient 33 discharged from Rehab.\n", + "99.31: Patient 45 transferred to rehab. (blocked acute bed for 10.21 days)\n", + "99.31: Patient 55 admitted to acute ward.(waited 6.32 days)\n", + "99.48: Patient 34 discharged from Rehab.\n", + "99.48: Patient 47 transferred to rehab. (blocked acute bed for 10.10 days)\n", + "99.48: Patient 56 admitted to acute ward.(waited 5.99 days)\n", + "99.69: Patient 51 medically ready for rehab\n", + "99.97: Patient 52 medically ready for rehab\n" + ] + }, + { + "data": { + "text/plain": [ + "{'mean_acute_wait': 1.041965345852034, 'mean_bed_blocking': 4.3271192681703115}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "TRACE = True\n", "experiment = Experiment()\n", @@ -463,10 +715,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "8228ab0c-cc99-48e2-a2c9-c9dcce8d854f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'mean_acute_wait': 0.0, 'mean_bed_blocking': 0.0}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "M = 1_000_000\n", "TRACE = False\n", @@ -485,10 +748,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "00d319d8-2a15-46f1-b1e9-a8efb7a69b2a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'mean_acute_wait': 0.0, 'mean_bed_blocking': 4.80862454209246}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "M = 1_000_000\n", "TRACE = False\n",