{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains course material from [CBE40455](https://jckantor.github.io/CBE40455) by\n", "Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE40455.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Getting Started with SimPy](http://nbviewer.jupyter.org/github/jckantor/CBE40455/blob/master/notebooks/02.01-Getting-Started-with-SimPy.ipynb) | [Contents](toc.ipynb) | [Emergency Room Simulation](http://nbviewer.jupyter.org/github/jckantor/CBE40455/blob/master/notebooks/02.03-Emergency_Room_Simulation.ipynb) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Queuing Systems\n", "\n", "Queuing systems are a ubiquitous feature of business and engineering applications. Examples exist whereever you find descrete items passing through a system, such as cars through a toll booth, customers in line at a coffee shop, aircraft on a production line, orders at a contract pharmaceuticals manufacturer, patients in an emergency room, phone calls at a call center, ...., well, you get idea. If you are reading these notes at work or in your college dorm room, chances are that you've already dealt with at least one queueing system today.\n", "\n", "The generic pattern is \n", "\n", " Arrivals ----> Queuing System: Items in queue for processing ----> Departures\n", "\n", "This notebook introduces a few basic elements of queuing theory from an empirical perspective. The main elements include simulation methods, the Poisson and Lognormal distributions commonly used to model the random elements of these systems, and Little's Law. Hopefully these tools provide practical insights to phenomenon everyone experiences in everyday life, and form a foundation for detailed modeling of the batch processes encountered in the process industries." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Poisson Processes and Exponential Distributions\n", "\n", "Suppose we told that certain events, for example the arrival of customer orders from a web page, occur at an average rate of $\\lambda$ events per unit time. We assume these events are independent from one another, and the process behaves uniformly over time. How can this be modeled for the purpose of simulation? \n", "\n", "This is known as a **Poisson process**, one of the most widely studied and useful constructs in statistics and probability theory. Here are a few key facts about Poisson processes:\n", "\n", "1. Given a average rate of events $\\lambda$ per unit time, the probability of $n$ events occuring in a period $\\tau$ is given by the [Poisson distribution](https://en.wikipedia.org/wiki/Poisson_distribution) \\begin{align}\\\\ P(n;\\lambda\\tau) & = \\frac{(\\lambda\\tau)^n e^{-\\lambda\\tau}}{n!}\\\\ & \\end{align} This probability distribution has a mean $\\lambda\\tau$ and a standard deviation $\\sqrt{\\lambda\\tau}$.\n", "\n", "2. The time between events is given by the Exponential distribution with probability density function \n", "\\begin{align}\\\\ f^{Exp}_\\lambda(t) & = \\lambda e^{-\\lambda t}\\\\ & \\end{align} This distribution has a mean $\\frac{1}{\\lambda}$ and a standard deviation $\\frac{1}{\\lambda}$.\n", "\n", "Knowing the statistical distribution of time between events provides a convenient way to simulate the behavior of Poisson process. Given a average rate $\\lambda$ of events per unit time, the technique is to draw random variables from an exponential distribution, then to wait that period of time before issuing another event." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Simulate Customers Arriving at a Known Rate" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "import simpy\n", "import pandas as pd\n", "\n", "rate = 1/2 # customers per minute\n", "\n", "env = simpy.Environment()\n", "log = []\n", "\n", "def customer_arrival(env,rate):\n", " n = 1\n", " while True:\n", " yield env.timeout(random.expovariate(rate))\n", " log.append([n, env.now, 'Arrival'])\n", " n += 1\n", " \n", "env.process(customer_arrival(env,rate))\n", "env.run(120)\n", "\n", "# process log\n", "\n", "df = pd.DataFrame(log, columns = ['CustomerID','Time','Event'])\n", "df = df.set_index('CustomerID')\n", "df.head()\n", "\n", "df['Time'].plot(kind='line')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Let's Provide Some Service to the Customers\n", "\n", "Our customers are just hanging around, waiting in line. Let's provide some service by taking the customer's order. We'll call this the 'service_time'. We introduce a FIFO customer_queue so that we service customers in the order in which they arrived." ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average rate of arrival = 0.5\n", "Average wait time for completion of service = 7.46\n" ] }, { "data": { "image/png": "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\nAla1TjAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "import simpy\n", "import pandas as pd\n", "\n", "rate = 1/2 # customers per minute\n", "service_time = 1.95 # service time\n", "\n", "env = simpy.Environment()\n", "customer_queue = simpy.Store(env)\n", "\n", "log = []\n", "\n", "def customer_arrival(env,rate):\n", " n = 1\n", " while True:\n", " yield env.timeout(random.expovariate(rate))\n", " yield customer_queue.put(n)\n", " log.append([n, env.now, 'Arrival'])\n", " n += 1\n", " \n", "def customer_service(env):\n", " while True:\n", " n = yield customer_queue.get()\n", " yield env.timeout(service_time)\n", " log.append([n, env.now, 'Service'])\n", " \n", "env.process(customer_arrival(env,rate))\n", "env.process(customer_service(env))\n", "env.run(120)\n", "\n", "# process log\n", "\n", "df = pd.DataFrame(log, columns = ['CustomerID','Time','Event'])\n", "df = df.set_index('CustomerID')\n", "df = df.pivot(columns='Event',values='Time')\n", "\n", "# plot log\n", "\n", "plt.figure(figsize=(8,5))\n", "ax1 = plt.subplot(2,1,1)\n", "df.plot(ax = ax1, kind='line')\n", "ax1.set_ylabel('Time')\n", "\n", "df['Wait'] = df['Service'] - df['Arrival']\n", "ax2 = plt.subplot(2,1,2)\n", "df['Wait'].plot(ax=ax2)\n", "ax2.set_ylim(ymin=0)\n", "ax2.set_ylabel('Time')\n", "\n", "plt.tight_layout()\n", "\n", "# key performance measures\n", "\n", "df['Wait'] = (df['Service']-df['Arrival']).mean()\n", "rlambda = 1/df['Arrival'].diff().mean()\n", "print('Average rate of arrival =', round(rlambda,2))\n", "print('Average wait time for completion of service = ', round(W,2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Little's Law\n", "\n", "Provided service time is less than 1/rate, the average time the customer experiences appears to remain bounded. The average time experience by the customer grows as the service_time approaches 1/rate, becoming unstable in time when service time is greater than 1/rate. But what about the number of customers in process? Is there anything we can say about how many customers waiting and in the process of being served?\n", "\n", "[Little's law](http://web.mit.edu/sgraves/www/papers/Little's%20Law-Published.pdf) offers a profound insight into the behavior of queueing systems. \n", "\n", "| Symbol | Description |\n", "| :----- | :---------- |\n", "| $L$ | Average number of items in the queuing system |\n", "| $\\lambda$ | Average rate of arrivals (= average rate of departures for a stable system) |\n", "| $W$ | Average waiting time |\n", "\n", "Little's law says\n", "\n", "$$L = \\lambda W$$\n", "\n", "This seems simple enough in that perspective, but the catch is prove this it is true for any queuing system, even systems with complex organizations, and under for wide variety of statistical situations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Some analogies\n", "\n", "The rule may seem particularly obvious to chemical engineers familiar with material balances where $\\lambda$ corresponds to flowrate, $L$ to inventory, in which case $W$ takes the interpretation of average 'residence time'. \n", "\n", "| Discipline | Inventory | Rate | Time | Relationship |\n", "| :--------- | :------- | :--: | :--: | :----------: |\n", "| Queuing | $L$ (Items in Process) | $\\lambda$ (Arrival Rate) | $W$ (Wait) | $L = \\lambda W$ |\n", "| Business | $WIP$ (Work in Progress) | $Th$ (Throughput) | $CT$ (Cycle Time) | $WIP = CT \\times Th$ |\n", "| Process Engineering | $V$ (Volume) | $q$ (Flowrate) | $\\tau$ (Residence Time) | $V = \\tau q$ |" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why is this important?\n", "\n", "Any manager of, say, an hospital emergency room would like high throughput of patients (i.e., large $\\lambda$), short waiting time $W$, and low count in the waiting and treatment rooms (i.e., small $L$). Litte's law says this isn't possible. You can specify two of the parameters but the third will be dictated by Little's law. In particular, if the arrival rate $\\lambda$ is set by externally, then the only way to reduce the patient count $L$ is to find ways to reduce the average wait time by processing cases faster." ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average rate of arrival = 0.5\n", "Average wait time for completion of service = 7.46\n", "Average number in queue and being served = 3.16\n" ] }, { "data": { "image/png": "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\n/4qghlrT8qW0AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "import simpy\n", "import pandas as pd\n", "\n", "rate = 1/2 # customers per minute\n", "service_time = 1.6 # service time\n", "\n", "env = simpy.Environment()\n", "customer_queue = simpy.Store(env)\n", "\n", "log = []\n", "\n", "def customer_arrival(env,rate):\n", " n = 1\n", " while True:\n", " yield env.timeout(random.expovariate(rate))\n", " yield customer_queue.put(n)\n", " log.append([n, 'Arrival', env.now, len(customer_queue.items)])\n", " n += 1\n", " \n", "def customer_service(env):\n", " while True:\n", " n = yield customer_queue.get()\n", " yield env.timeout(service_time)\n", " log.append([n, 'Service', env.now, len(customer_queue.items)])\n", " \n", "env.process(customer_arrival(env,rate))\n", "env.process(customer_service(env))\n", "env.run(1440)\n", "\n", "# process log\n", "\n", "df = pd.DataFrame(log, columns = ['CustomerID','Event','Time','Queue'])\n", "df = df.set_index('CustomerID')\n", "\n", "# plot time of events\n", "\n", "df_time = df.pivot(columns='Event',values='Time')\n", "df_queue = df.pivot(columns='Event',values='Queue')\n", "\n", "plt.figure(figsize=(8,6))\n", "ax1 = plt.subplot(3,1,1)\n", "df_time.plot(ax = ax1, kind='line')\n", "ax1.set_ylabel('Time')\n", "\n", "df_time['Wait'] = df_time['Service'] - df_time['Arrival']\n", "ax2 = plt.subplot(3,1,2)\n", "df_time['Wait'].plot(ax=ax2)\n", "ax2.set_ylim(ymin=0)\n", "ax2.set_ylabel('Time')\n", "\n", "ax3 = plt.subplot(3,1,3)\n", "df_queue['Arrival'].plot(ax=ax3)\n", "ax3.set_ylabel('Queue Length')\n", "\n", "plt.tight_layout()\n", "\n", "# key performance measures\n", "\n", "df_time['Wait'] = (df_time['Service']-df_time['Arrival']).mean()\n", "rlambda = 1/df_time['Arrival'].diff().mean()\n", "L = 1 + df_queue['Arrival'].mean()\n", "\n", "\n", "print('Average rate of arrival =', round(rlambda,2))\n", "print('Average wait time for completion of service = ', round(W,2))\n", "print('Average number in queue and being served = ', round(L,2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lognormal Distributions of Service Time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Normal Distributions\n", "\n", "A Normal distribution (also commonly called a Gaussian distribution) is usually the first (and too frequently the only) example of a statistical distribution encountered by engineering students. It is the common 'bell-shaped' curve described by the equation\n", "\n", "$$ f^N_{\\mu_X,\\sigma_X}(x) = \\frac{1}{\\sqrt{2\\pi\\sigma_X^2}}e^{-\\frac{(x-\\mu_X)^2}{2\\sigma_X^2}} $$\n", "\n", "where $\\mu_X$ is the mean and $\\sigma_X$ is the standard deviation for the random variable $X$. It has a lot of favoriable properities and is often a good starting point for the description of random phenomena.\n", "\n", "Is it useful for modeling service times?\n", "\n", "Let's look at a typical plot of the probability density function" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "mu = 1\n", "sigma = 0.5\n", "\n", "x = np.linspace(mu-4*sigma,mu+4**sigma)\n", "f_x = (1/np.sqrt(2*np.pi*sigma**2))*np.exp(-(x - mu)**2/2/sigma**2)\n", "\n", "plt.plot(x,f_x)\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You already know how to fit a Normal distribution to data. Given a set of experimental values $x_1, x_2, \\ldots, x_N$, the most commonly used estimates of $\\mu_x$ is \n", "\n", "$$\\hat{\\mu}_X = \\bar{x} = \\frac{1}{N} \\sum_{k=1}^N x_k$$\n", "\n", "and of $\\sigma_x$ is \n", "\n", "$$\\hat{\\sigma}_X = s_X = \\sqrt{\\frac{1}{N-1}\\sum_{k=1}^N (x_k - \\bar{x})}$$\n", "\n", "This all familiar and easy enought. But we can immediately see a problem using this as a model of service time. This distribution would allow for negative service times, which doesn't make physical sense." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lognormal Distribution\n", "\n", "Suppose to have measurements of service times $t_1, t_2, \\ldots, t_N$. By their nature, these times are all non-negative numbers. We take logarithms\n", "\n", "$$x_k = \\ln(t_k)$$\n", "\n", "and find the logarithms have mean $\\mu_X$ and standard deviation $\\sigma_X$. What can we say about the distribution of service times?\n", "\n", "Under these conditions, the service time distribution is **Lognormal**. The distribution is given by\n", "\n", "$$f^{LN}_{\\mu_X, \\sigma_X}(t) = \\frac{1}{t\\sqrt{2\\pi\\sigma_X^2}} e^{-\\frac{(\\ln(t)-\\mu_X)^2}{2\\sigma_X^2}}$$\n", "\n", "At this point we are faced wiht a problem. The lognormal distribution is parameterized in terms of an underlying normal distribution. How to we estimate those parameters directly in terms of the observations $t_1, t_2, \\ldots, t_N$.\n", "\n", "There are some simple formulae for this purpose. Let $m$ be the mean of the observed service times, and let $\\nu$ be the standard deviation. Then\n", "\n", "$$\\mu = \\ln\\left(\\frac{m}{\\sqrt{1 + \\frac{\\nu^2}{m^2}}}\\right)$$\n", "\n", "and\n", "\n", "$$\\sigma = \\sqrt{\\ln\\left(1 +\\frac{\\nu^2}{m^2}\\right)}$$\n", "\n", "For example, suppose we observe a median service time of 2 minutes, and a standard deviation of 1 minutes. Then" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mu = -0.111571775657 sigma = 0.472380727077\n", "0.998496812774 0.494600779684\n" ] }, { "data": { "text/plain": [ "(0, 8)" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import random\n", "\n", "# mean and standard deviation of observed service times\n", "# that appear to be lognormal distribution\n", "m = 1\n", "nu = .5\n", "\n", "# mean and standard deviation of underlying normal distribution\n", "mu = np.log(m/np.sqrt(1 + nu**2/m**2))\n", "sigma = np.sqrt(np.log(1+nu**2/m**2))\n", "\n", "print('mu = ', mu, 'sigma =', sigma)\n", "\n", "# generate random variates from a lognormal distribution\n", "t = [random.lognormvariate(mu,sigma) for k in range(0,10000)]\n", "plt.hist(t,bins=100,normed=True)\n", "print(np.mean(t),np.std(t))\n", "\n", "# compare distributions\n", "tp = np.linspace(0.001,12,300)\n", "fLN = 1/(tp*sigma*np.sqrt(2*np.pi)) * np.exp(-(np.log(tp) - mu)**2/2/sigma**2)\n", "plt.plot(tp,fLN,lw=4)\n", "plt.xlim(0,8)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Random Service Time" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average time experienced by a customer = 4.54\n", "Average queue length = 3.55813953488\n", "Average number of customers in process = 4.56\n" ] }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "import simpy\n", "import pandas as pd\n", "\n", "rate = 1 # customers per minute\n", "\n", "# random service time\n", "mean_service_time = 1.8\n", "std_service_time = .5\n", "def random_service_time(m,nu):\n", " mu = np.log(m/np.sqrt(1 + nu**2/m**2))\n", " sigma = np.sqrt(np.log(1+nu**2/m**2))\n", " return random.lognormvariate(mu,sigma)\n", "\n", "env = simpy.Environment()\n", "customer_queue = simpy.Store(env)\n", "\n", "log = []\n", "\n", "def customer_arrival(env,rate):\n", " n = 1\n", " while True:\n", " yield env.timeout(random.expovariate(rate))\n", " yield customer_queue.put(n)\n", " log.append([n, env.now, 'Arrival'])\n", " n += 1\n", " \n", "def customer_service(env):\n", " while True:\n", " n = yield customer_queue.get()\n", " yield env.timeout(random_service_time(mean_service_time,std_service_time))\n", " log.append([n, env.now, 'Service'])\n", " \n", "rlog = []\n", "def reporter(env):\n", " while True:\n", " yield env.timeout(1)\n", " rlog.append([len(customer_queue.items)])\n", " \n", "env.process(customer_arrival(env,rate))\n", "env.process(customer_service(env))\n", "env.process(customer_service(env))\n", "env.process(reporter(env))\n", "env.run(130)\n", "\n", "# process log\n", "\n", "df = pd.DataFrame(log, columns = ['CustomerID','Time','Event'])\n", "df = df.set_index('CustomerID')\n", "df = df.pivot(columns='Event',values='Time')\n", "df.head()\n", "\n", "df.plot(kind='line')\n", "\n", "print('Average time experienced by a customer = ',round((df['Service']-df['Arrival']).mean(),2))\n", "print('Average queue length =', np.mean(rlog))\n", "print('Average number of customers in process =', round(1 + np.mean(rlog),2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Let's add multiple Queues" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average time experienced by a customer = 4.07\n", "Average queue length = 1.03335649757\n", "Average number of customers in process = 2.03\n" ] }, { "data": { "image/png": "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\nKgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "import simpy\n", "import pandas as pd\n", "\n", "rate = 1.0 # customers per minute\n", "\n", "# random service time\n", "mean_service_time = 3.0\n", "std_service_time = 1.6\n", "def random_service_time(m,nu):\n", " mu = np.log(m/np.sqrt(1 + nu**2/m**2))\n", " sigma = np.sqrt(np.log(1+nu**2/m**2))\n", " return random.lognormvariate(mu,sigma)\n", "\n", "env = simpy.Environment()\n", "customer_queue = simpy.Store(env)\n", "\n", "log = []\n", "\n", "def customer_arrival(env,rate):\n", " n = 1\n", " while True:\n", " yield env.timeout(random.expovariate(rate))\n", " yield customer_queue.put(n)\n", " log.append([n, env.now, 'Arrival'])\n", " n += 1\n", " \n", "def customer_service(env):\n", " while True:\n", " n = yield customer_queue.get()\n", " yield env.timeout(random_service_time(mean_service_time,std_service_time))\n", " log.append([n, env.now, 'Service'])\n", " \n", "rlog = []\n", "def reporter(env):\n", " while True:\n", " yield env.timeout(1)\n", " rlog.append([len(customer_queue.items)])\n", "\n", " \n", "env.process(customer_arrival(env,rate))\n", "env.process(customer_service(env))\n", "env.process(customer_service(env))\n", "env.process(customer_service(env))\n", "env.process(customer_service(env))\n", "env.process(reporter(env))\n", "env.run(1440)\n", "\n", "# process log\n", "\n", "df = pd.DataFrame(log, columns = ['CustomerID','Time','Event'])\n", "df = df.set_index('CustomerID')\n", "df = df.pivot(columns='Event',values='Time')\n", "df.head()\n", "\n", "df.plot(kind='line')\n", "\n", "print('Average time experienced by a customer = ',round((df['Service']-df['Arrival']).mean(),2))\n", "print('Average queue length =', np.mean(rlog))\n", "print('Average number of customers in process =', round(1 + np.mean(rlog),2))" ] }, { "cell_type": "code", "execution_count": 312, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average time experienced by a customer = 504.12\n", "Average queue length = 505.311327311\n", "Average number of customers in process = 506.31\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import random\n", "import simpy\n", "import pandas as pd\n", "\n", "rate = 1.0 # customers per minute\n", "\n", "# random service time\n", "mean_service_time = 3.0\n", "std_service_time = 1.6\n", "def random_service_time(m,nu):\n", " mu = np.log(m/np.sqrt(1 + nu**2/m**2))\n", " sigma = np.sqrt(np.log(1+nu**2/m**2))\n", " return random.lognormvariate(mu,sigma)\n", "\n", "env = simpy.Environment()\n", "customer_queue = simpy.Store(env)\n", "agents = simpy.Resource(env,20)\n", "\n", "log = []\n", "\n", "def customer_arrival(env,rate):\n", " n = 1\n", " while True:\n", " yield env.timeout(random.expovariate(rate))\n", " yield customer_queue.put(n)\n", " log.append([n, env.now, 'Arrival'])\n", " n += 1\n", " \n", "def customer_service(env):\n", " while True:\n", " with agents.request() as req:\n", " yield req\n", " n = yield customer_queue.get()\n", " yield env.timeout(random_service_time(mean_service_time,std_service_time))\n", " log.append([n, env.now, 'Service'])\n", " \n", "rlog = []\n", "def reporter(env):\n", " while True:\n", " yield env.timeout(1)\n", " rlog.append([len(customer_queue.items)])\n", "\n", "env.process(customer_arrival(env,rate))\n", "env.process(customer_service(env))\n", "env.process(reporter(env))\n", "env.run(1440)\n", "\n", "# process log\n", "\n", "df = pd.DataFrame(log, columns = ['CustomerID','Time','Event'])\n", "df = df.set_index('CustomerID')\n", "df = df.pivot(columns='Event',values='Time')\n", "df.head()\n", "\n", "df.plot(kind='line')\n", "\n", "print('Average time experienced by a customer = ',round((df['Service']-df['Arrival']).mean(),2))\n", "print('Average queue length =', np.mean(rlog))\n", "print('Average number of customers in process =', round(1 + np.mean(rlog),2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Getting Started with SimPy](http://nbviewer.jupyter.org/github/jckantor/CBE40455/blob/master/notebooks/02.01-Getting-Started-with-SimPy.ipynb) | [Contents](toc.ipynb) | [Emergency Room Simulation](http://nbviewer.jupyter.org/github/jckantor/CBE40455/blob/master/notebooks/02.03-Emergency_Room_Simulation.ipynb) >

\"Open

\"Download\"" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }