Skip to content

Instantly share code, notes, and snippets.

@dvoils
Last active August 13, 2023 03:04
Show Gist options
  • Save dvoils/c89f48ee209dd72ed2b851727690f989 to your computer and use it in GitHub Desktop.
Save dvoils/c89f48ee209dd72ed2b851727690f989 to your computer and use it in GitHub Desktop.
erlangc.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyMlQvmLE/4+yI0+g7yRTh26",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/dvoils/c89f48ee209dd72ed2b851727690f989/erlangc.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"The Erlang C formula is used in the field of queueing theory, and it's especially relevant in call center and help desk environments. Erlang C calculates the probability that a call (or any type of service request) will have to wait before it's serviced when there are a fixed number of servers and where blocked calls are held in a queue instead of being turned away.\n",
"\n",
"The formula is given by:\n",
"\n",
"$$ P(W > 0) = \\frac{\\frac{(A^N)}{N!}}{\\sum_{k=0}^{N-1} \\frac{A^k}{k!} + \\frac{A^N}{N! (1-\\frac{A}{N})}}$$\n",
"\n",
"Where:\n",
"\n",
"- $ P(W > 0) $ is the probability that a call has to wait.\n",
"- $ A $ is the traffic offered to the servers, measured in erlangs. This is given by the formula $A = \\lambda \\times H$, where $ \\lambda $ is the arrival rate (calls per time unit) and $ H $ is the average service time (or call duration) in the same time unit.\n",
"- $ N $ is the number of servers.\n",
"\n",
"Here's how you can interpret the Erlang C model:\n",
"\n",
"1. **Inputs**: You need two main inputs for Erlang C: the traffic offered in erlangs (A) and the number of servers (N).\n",
" \n",
"2. **Output**: The output is \\( P(W > 0) \\), the probability that a call will wait. If you multiply this by 100, you get the percentage of calls that will likely be queued.\n",
"\n",
"3. **Application in Call Centers**: Once you have the probability that a call will wait, you can further derive metrics like the expected waiting time, given that the call waits. This is useful in staffing decisions. For instance, if you have a target service level (like 90% of calls should be answered within 20 seconds), you can adjust the number of servers (agents) until the model predicts you'll meet this target.\n",
"\n",
"4. **Assumptions**:\n",
" - There's a constant arrival rate.\n",
" - All servers are identical and always busy unless there are no calls in the system.\n",
" - Calls are served in the order they arrive (FIFO).\n",
" - Blocked calls stay in the system and wait for service.\n",
" \n",
"5. **Limitations**: Like any model, Erlang C has its limitations. It assumes no abandonments, no retrials, and that all agents have the same efficiency. In reality, these assumptions might not hold. There are more complex models and tools available that address these issues, but Erlang C provides a relatively simple way to approach queuing problems.\n",
"\n",
"The Erlang C formula has been widely used in the telecommunication and call center industries for many decades and serves as the foundation for more advanced queuing models."
],
"metadata": {
"id": "jend0E8Uaoq0"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "L2z-mJwblmqi",
"outputId": "a53f9001-e0c9-4786-97bb-3a3a4d21bda4"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACYfklEQVR4nOzdeVhUZf/H8c8wbCLuKwKJppWmqWlqGoKlmbYZUaaWS2VPixk/Wy1zzUcrc2nxsc2yRdPUbFeJBwzNNDVb1cokFXEt9wUczu+P+wEd2QacYRh4v66L6zBnvnPmi54mPp773LfNsixLAAAAAADA7fy83QAAAAAAAOUVoRsAAAAAAA8hdAMAAAAA4CGEbgAAAAAAPITQDQAAAACAhxC6AQAAAADwEEI3AAAAAAAeQugGAAAAAMBDCN0AAAAAAHgIoRsA4DHz589XzZo1deTIkVJ5v7S0NNlsNr399ttF1u7fv1+VK1fWF1984fnGyimbzaahQ4d6uw2XnDp1So899pgiIyPl5+en3r17e7slAEAFQegGALjs7bffls1my/0KDg7WBRdcoKFDh2r37t1OtQ6HQ6NHj9aDDz6o0NBQL3UsffHFFxozZkye/bVq1dLdd9+tp59+uvSbclHOPyLYbDYtXLgwz/NjxoyRzWbTvn37vNCdb5k1a5aef/55xcfHa/bs2fq///u/Amuzs7P1zjvvqEOHDqpZs6aqVKmiCy64QAMGDNC3335bil0DAMoDf283AADwPePGjVOjRo104sQJrVixQv/5z3/0xRdf6Oeff1ZISIgk6dNPP9XmzZt1zz33lFpfDRs21PHjxxUQEJC774svvtArr7ySb/C+99579eKLL+q///2vrrzyylLrsyTGjRunuLg42Ww2b7fik/773/8qPDxcU6dOLbJ22LBheuWVV3TjjTeqf//+8vf31+bNm/Xll1+qcePG6tixYyl0DAAoLwjdAIBi69mzp9q1aydJuvvuu1WrVi1NmTJFH3/8sfr27StJeuutt9S5c2eFh4eXWl85V99d1axZM7Vo0UJvv/12mQ7drVu31oYNG/TRRx8pLi7O2+2UqhMnTigwMFB+fuc2OG/Pnj2qXr16kXW7d+/WjBkzNGTIEL322mtOz02bNk179+49pz5ynDp1StnZ2QoMDHTL8crKewEA8mJ4OQDgnOUE1q1bt0oyQWnJkiXq1q2bU11cXJwuvfRSp33XX3+9bDabPvnkk9x9q1evls1m05dffilJ+vvvv/XII4+oZcuWCg0NVdWqVdWzZ0/98MMPTsc6+57uQYMG6ZVXXpEkp2HxZ+revbs+/fRTWZZV4M+3du1a2Ww2zZ49O89zS5culc1m02effSZJOnz4sBISEhQVFaWgoCDVrVtX3bt31/r16ws8flFuu+02XXDBBRo3blyhfUpSVFSUBg0alGd/bGysYmNjcx+npKTIZrNp/vz5Gjt2rMLDw1WlShXFx8fr4MGDOnnypBISElS3bl2FhoZq8ODBOnnyZL7v+f777+vCCy9UcHCw2rZtq6+//jpPTXp6uu68807Vq1dPQUFBuvjiizVr1iynmpyePvjgA40cOVLh4eEKCQnRoUOHCvx5jx49qocffliRkZEKCgrShRdeqMmTJ+f+OeWcE8nJyfrll19yz4GUlJR8j7d161ZZlqXOnTvnec5ms6lu3bpO+w4cOKCEhITc92/SpImeffZZZWdn59bk9DB58mRNmzZN559/voKCgvT999/L399fY8eOzfNemzdvls1m08svv+yW9/r1118lSS+99JIuvvhihYSEqEaNGmrXrp3mzJlT4J8vAODccaUbAHDOtmzZIsncJy1J69atU2ZmZp6AHR0drY8//liHDh1S1apVZVmWVq5cKT8/P6WmpuqGG26QJKWmpsrPzy83+Pz5559avHixbrnlFjVq1Ei7d+/Wq6++qpiYGP36669q0KBBvn3961//0s6dO5WYmKh3330335q2bdtq6tSp+uWXX9SiRYt8a9q1a6fGjRtr/vz5GjhwoNNz8+bNU40aNdSjRw9JZsj6ggULNHToUDVv3lz79+/XihUrtHHjxjx/Hq6y2+0aOXKkBgwY4Par3RMnTlSlSpX0xBNP6I8//tBLL72kgIAA+fn56Z9//tGYMWP07bff6u2331ajRo00atQop9cvX75c8+bN07BhwxQUFKQZM2bommuu0Zo1a3L/PHfv3q2OHTvmTrxWp04dffnll7rrrrt06NAhJSQkOB1z/PjxCgwM1COPPKKTJ08WeIXWsizdcMMNSk5O1l133aXWrVtr6dKlevTRR5Wenq6pU6eqTp06evfddzVhwgQdOXJEEydOlGRGOeSnYcOGkqQPP/xQt9xyS+7tEvk5duyYYmJilJ6ern/9618677zz9M0332jEiBHKyMjQtGnTnOrfeustnThxQvfcc4+CgoIUFhammJgYzZ8/X6NHj3aqnTdvnux2u2655Ra3vFfNmjX1+uuva9iwYYqPj9dDDz2kEydO6Mcff9Tq1avVr1+/An9OAMA5sgAAcNFbb71lSbK++uora+/evdb27dutDz74wKpVq5ZVqVIla8eOHZZlWdYbb7xhSbJ++uknp9d/9913liTriy++sCzLsn788UdLknXLLbdYHTp0yK274YYbrDZt2uQ+PnHihOVwOJyOtXXrVisoKMgaN26c0z5J1ltvvZW774EHHrAK+9/dN998Y0my5s2bV+jPPmLECCsgIMD6+++/c/edPHnSql69unXnnXfm7qtWrZr1wAMPFHosV+X8PM8//7x16tQpq2nTplarVq2s7Oxsy7Isa/To0ZYka+/evbmvadiwoTVw4MA8x4qJibFiYmJyHycnJ1uSrBYtWliZmZm5+/v27WvZbDarZ8+eTq+//PLLrYYNGzrtk2RJstauXZu776+//rKCg4Otm266KXffXXfdZYWFhVn79u1zev1tt91mVatWzTp27JhTT40bN87dV5jFixdbkqxnnnnGaX98fLxls9msP/74w+nnv/jii4s8pmVZ1oABAyxJVo0aNaybbrrJmjx5srVx48Y8dePHj7cqV65s/fbbb077n3jiCctut1vbtm2zLOv032PVqlWtPXv2ONW++uqr+f630rx5c+vKK69063vdeOONLv8ZAADch+HlAIBi69atm+rUqaPIyEjddtttCg0N1UcffZR7//b+/fslSTVq1HB6XZs2bRQaGpo7/Dg1NVUREREaMGCA1q9fr2PHjsmyLK1YsULR0dG5rwsKCsq9p9fhcGj//v0KDQ3VhRdeeE7Dts/ssagZwPv06aOsrCwtWrQod9+yZct04MAB9enTJ3df9erVtXr1au3cufOc+jpbztXuH374QYsXL3bbcQcMGOA08VyHDh1kWZbuvPNOp7oOHTpo+/btOnXqlNP+yy+/XG3bts19fN555+nGG2/U0qVL5XA4ZFmWFi5cqOuvv16WZWnfvn25Xz169NDBgwfz/B0OHDhQlSpVKrL3L774Qna7XcOGDXPa//DDD8uyrNzbE4rrrbfe0ssvv6xGjRrpo48+0iOPPKJmzZrpqquuUnp6em7dhx9+qOjoaNWoUcPp5+rWrZscDkeeYfY333yz6tSp47QvLi5O/v7+mjdvXu6+n3/+Wb/++qvTeeWO96pevbp27Nih7777rkR/LgCAkiF0AwCK7ZVXXlFiYqKSk5P166+/6s8//8wdXn0m66z7j+12uy6//HKlpqZKMqE7OjpaV1xxhRwOh7799lv9+uuv+vvvv51Cd3Z2tqZOnaqmTZsqKChItWvXVp06dfTjjz/q4MGD5/Sz5PRY1KzgrVq10kUXXeQUjubNm6fatWs7TcL23HPP6eeff1ZkZKTat2+vMWPG6M8//zynHnP0799fTZo0cenebledd955To+rVasmSYqMjMyzPzs7O8+fd9OmTfMc84ILLtCxY8e0d+9e7d27VwcOHNBrr72mOnXqOH0NHjxYkpnk7EyNGjVyqfe//vpLDRo0UJUqVZz25wwd/+uvv1w6ztn8/Pz0wAMPaN26ddq3b58+/vhj9ezZU//9739122235db9/vvvWrJkSZ6fK2cuA1d+rtq1a+uqq67S/Pnzc/fNmzdP/v7+TrcRuOO9Hn/8cYWGhqp9+/Zq2rSpHnjgAa1cubIEf0IAgOLgnm4AQLG1b98+d/by/OTc2/3PP/8oIiLC6bkrrrhCEyZM0IkTJ5SamqqnnnpK1atXV4sWLZSamqp69epJklPo/ve//62nn35ad955p8aPH6+aNWvKz89PCQkJTpNIlcQ///wjyYSfovTp00cTJkzQvn37VKVKFX3yySfq27ev/P1P/+/01ltvVXR0tD766CMtW7ZMzz//vJ599lktWrRIPXv2PKdec652Dxo0SB9//HG+NQX944HD4ZDdbs/3mAW9V36KG/Zz/n5uv/32PPfD57jkkkucHrtylbu01KpVSzfccINuuOEGxcbGavny5frrr7/UsGFDZWdnq3v37nrsscfyfe0FF1zg9Lign+u2227T4MGDtWHDBrVu3Vrz58/XVVdd5XROuuO9mjVrps2bN+uzzz7TkiVLtHDhQs2YMUOjRo3KdzI3AIB7ELoBAG530UUXSTIzQbds2dLpuejoaGVmZmru3LlKT0/PDdddunTJDd0XXHBBbviWpAULFqhr16568803nY514MCBIsNyUVewc2ZcL2hirTP16dNHY8eO1cKFC1WvXj0dOnTI6cpnjrCwMN1///26//77tWfPHl166aWaMGHCOYduyYTXZ555RmPHjs2deO5MNWrU0IEDB/Ls/+uvv9S4ceNzfv+z/f7773n2/fbbbwoJCckd3lylShU5HI48s9mfq4YNG+qrr77S4cOHna52b9q0Kfd5d2rXrp2WL1+ujIwMNWzYUOeff76OHDlyzj9X79699a9//St3FMVvv/2mESNGONW4670qV66sPn36qE+fPsrMzFRcXJwmTJigESNGFGu5PQCA6xheDgBwu7Zt2yowMFBr167N81yHDh0UEBCgZ599VjVr1tTFF18syYTxb7/9VsuXL3e6yi2Zq65nX2H98MMPne6vLUjlypUlKd8gKpmZ1qtVq5bbR2GaNWumli1bat68eZo3b57CwsLUpUuX3OcdDkee4dd169ZVgwYNnJbb2rdvnzZt2qRjx44V+Z5ny7navWHDBqdl1nKcf/75+vbbb5WZmZm777PPPtP27duL/V6uWLVqldM92du3b9fHH3+sq6++Wna7XXa7XTfffLMWLlyon3/+Oc/rz2Xd6169esnhcDgtqyVJU6dOlc1mK9E/cuzatSt3ea0zZWZmKikpSX5+fmrSpIkkM6ph1apVWrp0aZ76AwcO5Ln/vSDVq1dXjx49NH/+fH3wwQcKDAxU7969nWrc8V45cy3kCAwMVPPmzWVZlrKyslzqFQBQfFzpBgC4XXBwsK6++mp99dVXGjdunNNzISEhatu2rb799tvcNbolc6X76NGjOnr0aJ7Qfd1112ncuHEaPHiwOnXqpJ9++knvv/++S1ducyb5GjZsmHr06CG73e50dToxMdGpj6L06dNHo0aNUnBwsO66667cCd4ks0Z3RESE4uPj1apVK4WGhuqrr77Sd999pxdeeCG37uWXX9bYsWOVnJzstHa2q/r376/x48drw4YNeZ67++67tWDBAl1zzTW69dZbtWXLFr333ns6//zzi/0+rmjRooV69OjhtGSYJKfhypMmTVJycrI6dOigIUOGqHnz5vr777+1fv16ffXVV/r7779L9N7XX3+9unbtqqeeekppaWlq1aqVli1bpo8//lgJCQkl+pl37Nih9u3b68orr9RVV12l+vXra8+ePZo7d65++OEHJSQk5I6uePTRR/XJJ5/ouuuu06BBg9S2bVsdPXpUP/30kxYsWKC0tDSXbluQzHl1++23a8aMGerRo4eqV6/u9Lw73uvq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Ua9evZSUlKTvv/9e11xzja6//npt27bNqW7y5Mlq1aqVvv/+ez399NNauXKl7r33Xj300EPasGGDunfvrgkTJji9JjU1VQMGDNBDDz2kX3/9Va+++qrefvvt3Lrv/rfsUc4V7O+KsQxSpUqVJJ2+6p6amqq2bds61cTExCglJUWSZFmWUlNTVb16da1YsUKStHz5coWHh6tJkyaSpKysLI0fP14//PCDFi9erLS0NA0aNCjf92/fvr2mTp3qNGrgzBED7du3V6qHg42/R48On+Tqet9btpir6AAAAIDPCA0t+LlevaTPPz/9uG5d6dix/GtjYsxMwzmioqR9+/LW5QwVPUetWrVSq1atch+PHz9eH330kT755BMNHTo0d/+VV16phx9+OPfxU089pZ49e+YGzQsuuEDffPONPvvss9yasWPH6oknntDAgQMlSY0bN9b48eP12GOPafTo0apTp46k01ewXXXs2DGNHDlSdrtdMTExkqS//vpLDRo0cKqLjY3Vm2++KYfDoZ9//lmBgYHq06ePUlJSdM011yglJSX39ZJ055135n7fuHFjvfjii7rssst05MgRhZ719xsYGKiqVavmjho4W4MGDbR9+3ZlZ2fLz88z16S50o08XF3v+8EHpcceM/d5AwAAAPCcI0eO6JFHHlGzZs1UvXp1hYaGauPGjXmudLdr187p8ebNm9W+fXunfWc//uGHHzRu3DiFhobmfg0ZMkQZGRk6VtA/OhSib9++Cg0NVZUqVbRw4UK9+eabuuSSSyRJx48fV3BwsFN9dHS0Dh8+rO+//17Lly9XTEyMYmNjc69+L1++XLFnXO1bt26drr/+ep133nmqUqVKbiA/+8/CFZUqVVJ2drZOnjxZ7Ne6iivdyCNnve/09IL/Yc7f34yoef55ado06fbbpUcekZo3L9VWAQAAgOI5e43cM509EdIZ9wnncfZVUQ8tf5XjkUceUWJioiZPnqwmTZqoUqVKio+PzzNZWuXKlYt97CNHjmjs2LGKO3vmZSlPQHbF1KlT1a1bN1WrVi33KnmO2rVr659//nHaV716dbVq1UopKSlatWqVunfvri5duqhPnz767bff9Pvvv+cG66NHj6pHjx7q0aOH3n//fdWpU0fbtm1Tjx49SjRx3N9//63KlSvnDoP3BEI38shZ7zs+3qztfWbwzpkAcO5cKTjYhO6vv5beest8XXedufp9xRWnax0Oc/93Roa5ih4dXfjEbgAAAIDHFCeUeqq2BFauXKlBgwbppptukmSCsivrXF944YV57sE++/Gll16qzZs3594znZ+AgAA5XJxJuX79+gUeq02bNnrvvffy7I+JiVFycrLWrFmjCRMmqGbNmmrWrJkmTJigsLAwXXDBBZKkTZs2af/+/Zo0aZIiIyMlSWvXri20n8DAwAJ7//nnn9WmTRuXfq6SYng58lXUet/x8SZgL18urVpl6m026bPPzOznnTqZZcUWLGCtbwAAAOBcNW3aVIsWLdKGDRv0ww8/qF+/fi6tL/3ggw/qiy++0JQpU/T777/r1Vdf1Zdffum0nNaoUaP0zjvvaOzYsfrll1+0ceNGffDBBxo5cmRuTVRUlJKSkrRr1648V6qLo0ePHvrll1/yHCM2NlZLly6Vv7+/Lrrootx977//vtP93Oedd54CAwP10ksv6c8//9Qnn3yi8ePHF/qeUVFROnLkiJKSkrRv3z6nIfOpqam6+uqrS/zzuILQjQK5ut53x47SwoVmybF//UsKCpK+/das833LLaz1DQAAAJyrKVOmqEaNGurUqZOuv/569ejRQ5deemmRr+vcubNmzpypKVOmqFWrVlqyZIn+7//+z2nYeI8ePfTZZ59p2bJluuyyy9SxY0dNnTpVDRs2zK154YUXlJiYqMjIyHO6MtyyZUtdeumlmj9/vtP+6OhoZWdnOwXs2NhYORwOp/u569Spo7ffflsffvihmjdvrkmTJjktN5afTp066d5771WfPn1Up04dPffcc5Kk9PR0ffPNNxo8eHCJfx5X2CzLTdPp+YhDhw6pWrVqOnjwoKpWreqR98jKytIXX3yhXr16KSAgwCPvUZbt3m2Gp0+aVPA94TabuWq+dStDzcuKin7ewjdx3sIXcd7CF/nieXvixAlt3bpVjRo1KtF9yeXZkCFDtGnTJo8vlVWQzz//XI8++qh+/vlnj80YLknZ2dk6dOiQqlatmu/7PP744/rnn3/02muvFXiMws4jV7MlV7rhdvXqSVdfXfjqCKz1DQAAAJSOyZMn64cfftAff/yhl156SbNnz85dHswbrr32Wt1zzz1K9/IySHXr1i1yaLo7MJEaPMLVtb5//JG1vgEAAABPWrNmjZ577jkdPnw4d13ru+++26s9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\n"
},
"metadata": {}
}
],
"source": [
"import math\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def erlang_c(A, N):\n",
" \"\"\"Compute the Erlang-C formula.\"\"\"\n",
" numerator = (A**N / math.factorial(N)) * (N / A)\n",
" denominator = sum([(A**i / math.factorial(i)) for i in range(N)]) + ((A**N / math.factorial(N)) * (N / A))\n",
" return numerator / denominator\n",
"\n",
"# Given values\n",
"average_service_rate = 0.3333 # 1/3\n",
"average_arrival_rate = 10 # payments per second\n",
"A = average_arrival_rate / average_service_rate\n",
"\n",
"# Generate data points for plotting\n",
"max_N = int(A) + 20 # Let's see the curve for an extra 20 servers beyond our traffic intensity\n",
"x_vals = list(range(1, max_N))\n",
"y_vals = [erlang_c(A, N) for N in x_vals]\n",
"\n",
"# Plotting\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(x_vals, y_vals, marker='o', linestyle='-', color='b')\n",
"plt.axhline(y=0.05, color='r', linestyle='--') # Target P(wait) line\n",
"plt.xlabel('Number of Servers (Lambda functions)')\n",
"plt.ylabel('P(wait)')\n",
"plt.title('P(wait) vs. Number of Servers')\n",
"plt.legend(['Erlang-C', 'Target P(wait)'])\n",
"plt.grid(True)\n",
"plt.tight_layout()\n",
"plt.show()\n"
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment