{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains material from [CBE40455-2020](https://jckantor.github.io/CBE40455-2020);\n", "content is available [on Github](https://github.com/jckantor/CBE40455-2020.git).*\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [3.9 Refinements of a Grocery Store Checkout Operation](https://jckantor.github.io/CBE40455-2020/03.09-Refinements-to-the-Grocery-Store-Checkout-Operation.html) | [Contents](toc.html) | [3.11 Batch Chemical Process](https://jckantor.github.io/CBE40455-2020/03.11-Project-Batch-Chemical-Process.html) >
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 1,
"link": "[3.10 Objected-Oriented Simulation](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10-Objected-Oriented-Simulation)",
"section": "3.10 Objected-Oriented Simulation"
}
},
"source": [
"# 3.10 Objected-Oriented Simulation\n",
"\n",
"Up to this point we have been using Python generators and shared resources as the building blocks for simulations of complex systems. This can be effective, particularly if the individual agents do not require access to the internal state of other agents. But there are situations where the action of an agent depends on the state or properties of another agent in the simulation. For example, consider this discussion question from the Grocery store checkout example:\n",
"\n",
">Suppose we were to change one or more of the lanes to a express lanes which handle only with a small number of items, say five or fewer. How would you expect this to change average waiting time? This is a form of prioritization ... are there other prioritizations that you might consider?\n",
"\n",
"The customer action depends the item limit parameter associated with a checkout lane. This is a case where the action of one agent depends on a property of another. The shared resources builtin to the SimPy library provide some functionality in this regard, but how do add this to the simulations we write?\n",
"\n",
"The good news is that Python offers a rich array of object oriented programming features well suited to this purpose. The SymPy documentation provides excellent examples of how to create Python objects for use in SymPy. The bad news is that object oriented programming in Python -- while straightforward compared to many other programming languages -- constitutes a steep learning curve for students unfamiliar with the core concepts.\n",
"\n",
"Fortunately, since the introduction of Python 3.7 in 2018, the standard libraries for Python have included a simplified method for creating and using Python classes. Using [dataclass](https://realpython.com/python-data-classes/), it easy to create objects for SymPy simulations that retain the benefits of object oriented programming without all of the coding overhead. \n",
"\n",
"The purpose of this notebook is to introduce the use of `dataclass` in creating SymPy simulations. To the best of the author's knowledge, this is a novel use of `dataclass` and the only example of which the author is aware."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.1 Installations and imports](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.1-Installations-and-imports)",
"section": "3.10.1 Installations and imports"
}
},
"source": [
"## 3.10.1 Installations and imports"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.1 Installations and imports](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.1-Installations-and-imports)",
"section": "3.10.1 Installations and imports"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: sympy in /Users/jeff/opt/anaconda3/lib/python3.7/site-packages (1.5.1)\n",
"Requirement already satisfied: mpmath>=0.19 in /Users/jeff/opt/anaconda3/lib/python3.7/site-packages (from sympy) (1.1.0)\n"
]
}
],
"source": [
"!pip install sympy"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.1 Installations and imports](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.1-Installations-and-imports)",
"section": "3.10.1 Installations and imports"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import random\n",
"import simpy\n",
"import pandas as pd\n",
"from dataclasses import dataclass"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.1 Installations and imports](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.1-Installations-and-imports)",
"section": "3.10.1 Installations and imports"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.7.4 (default, Aug 13 2019, 15:17:50) \n",
"[Clang 4.0.1 (tags/RELEASE_401/final)]\n"
]
}
],
"source": [
"import sys\n",
"print(sys.version)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.1 Installations and imports](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.1-Installations-and-imports)",
"section": "3.10.1 Installations and imports"
}
},
"source": [
"Additional imports are from the `dataclasses` library that has been part of the standard Python distribution since version 3.7. Here we import `dataclass` and `field`."
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.1 Installations and imports](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.1-Installations-and-imports)",
"section": "3.10.1 Installations and imports"
}
},
"outputs": [],
"source": [
"from dataclasses import dataclass, field"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.2 Introduction to `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2-Introduction-to-`dataclass`)",
"section": "3.10.2 Introduction to `dataclass`"
}
},
"source": [
"## 3.10.2 Introduction to `dataclass`\n",
"\n",
"Tutorials and additional documentation:\n",
"\n",
"* [The Ultimate Guide to Data Classes in Python 3.7](https://realpython.com/python-data-classes/): Tutorial article from ReaalPython.com\n",
"* [dataclasses — Data Classes](https://docs.python.org/3/library/dataclasses.html): Official Python documentation.\n",
"* [Data Classes in Python](https://towardsdatascience.com/data-classes-in-python-8d1a09c1294b): Tutorial from TowardsDataScience.com"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"source": [
"### 3.10.2.1 Creating a `dataclass`\n",
"\n",
"A `dataclass` defines a new class of Python objects. A `dataclass` object takes care of several routine things that you would otherwise have to code, such as creating instances of an object, testing for equality, and other aspects. \n",
"\n",
"As an example, the following cell shows how to define a dataclass corresponding to a hypothetical Student object. The Student object maintains data associated with instances of a student. The dataclass also defines a function associated with the object."
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"outputs": [],
"source": [
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Student():\n",
" name: str\n",
" graduation_class: int\n",
" dorm: str\n",
" \n",
" def print_name(self):\n",
" print(f\"{self.name} (Class of {self.graduation_class})\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"source": [
"Let's create an instance of the Student object."
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"outputs": [],
"source": [
"sam = Student(\"Sam Jones\", 2024, \"Alumni\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"source": [
"Let's see how the `print_name()` function works."
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sam Jones (Class of 2024)\n"
]
}
],
"source": [
"sam.print_name()"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"source": [
"The next cell shows how to create a list of students, and how to iterate over a list of students."
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sam Jones (Class of 2024)\n",
"Alumni\n",
"Becky Smith (Class of 2023)\n",
"Howard\n"
]
}
],
"source": [
"# create a list of students\n",
"students = [\n",
" Student(\"Sam Jones\", 2024, \"Alumni\"),\n",
" Student(\"Becky Smith\", 2023, \"Howard\"),\n",
"]\n",
"\n",
"# iterate over the list of students to print all of their names\n",
"for student in students:\n",
" student.print_name()\n",
" print(student.dorm)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.1 Creating a `dataclass`](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.1-Creating-a-`dataclass`)",
"section": "3.10.2.1 Creating a `dataclass`"
}
},
"source": [
"Here are a few details you need to use `dataclass` effectively:\n",
"\n",
"* The `class` statement is standard statement for creating a new class of Python objects. The preceding `@dataclass` is a Python 'decorator'. Decorators are Python functions that modify the behavior of subsequent statements. In this case, the `@dataclass` decorator modifies `class` to provide a streamlined syntax for implementing classes.\n",
"* A Python class names begin with a capital letter. In this case `Student` is the class name.\n",
"* The lines following the the class statement declare parameters that will be used by the new class. The parameters can be specified when you create an instance of the dataclass. \n",
"* Each paraameter is followed by type 'hint'. Commonly used type hints are `int`, `float`, `bool`, and `str`. Use the keyword `any` you don't know or can't specify a particular type. Type hints are actually used by type-checking tools and ignored by the python interpreter.\n",
"* Following the parameters, write any functions or generators that you may wish to define for the new class. To access variables unique to an instance of the class, preceed the parameter name with `self`."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.2.2 Specifying parameter values](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2-Specifying-parameter-values)",
"section": "3.10.2.2 Specifying parameter values"
}
},
"source": [
"### 3.10.2.2 Specifying parameter values\n",
"\n",
"There are different ways of specifying the parameter values assigned to an instance of a dataclass. Here are three particular methods:\n",
"\n",
"* Specify the parameter value when creating a new instance. This is what was done in the Student example above.\n",
"* Provide a default values determined when the dataclass is defined.\n",
"* Provide a default_factory method to create a parameter value when an instance of the dataclass is created."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.1 Specifying a parameter value when creating a new instance](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.1-Specifying-a-parameter-value-when-creating-a-new-instance)",
"section": "3.10.2.2.1 Specifying a parameter value when creating a new instance"
}
},
"source": [
"#### 3.10.2.2.1 Specifying a parameter value when creating a new instance\n",
"\n",
"Parameter values can be specified when creating an instance of a dataclass. The parameter values can be specified by position or by name as shown below."
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.1 Specifying a parameter value when creating a new instance](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.1-Specifying-a-parameter-value-when-creating-a-new-instance)",
"section": "3.10.2.2.1 Specifying a parameter value when creating a new instance"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sam Jones (Class of 2031)\n",
"Gilda Radner (Class of 2030)\n"
]
}
],
"source": [
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Student():\n",
" name: str\n",
" graduation_year: int\n",
" dorm: str\n",
" \n",
" def print_name(self):\n",
" print(f\"{self.name} (Class of {self.graduation_year})\")\n",
" \n",
"sam = Student(\"Sam Jones\", 2031, \"Alumni\")\n",
"sam.print_name()\n",
"\n",
"gilda = Student(name=\"Gilda Radner\", graduation_year=2030, dorm=\"Howard\")\n",
"gilda.print_name()"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.2 Setting default parameter values](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.2-Setting-default-parameter-values)",
"section": "3.10.2.2.2 Setting default parameter values"
}
},
"source": [
"#### 3.10.2.2.2 Setting default parameter values\n",
"\n",
"Setting a default value for a parameter can save extra typing or coding. More importantly, setting default values makes it easier to maintain and adapt code for other applications, and is a convenient way to handle missing data. \n",
"\n",
"There are two ways to set default parameter values. For str, int, float, bool, tuple (the immutable types in Python), a default value can be set using `=` as shown in the next cell."
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.2 Setting default parameter values](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.2-Setting-default-parameter-values)",
"section": "3.10.2.2.2 Setting default parameter values"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"John Doe (Class of None)\n"
]
}
],
"source": [
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Student():\n",
" name: str = None\n",
" graduation_year: int = None\n",
" dorm: str = None\n",
" \n",
" def print_name(self):\n",
" print(f\"{self.name} (Class of {self.graduation_year})\")\n",
" \n",
"jdoe = Student(name=\"John Doe\", dorm=\"Alumni\")\n",
"jdoe.print_name()"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.2 Setting default parameter values](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.2-Setting-default-parameter-values)",
"section": "3.10.2.2.2 Setting default parameter values"
}
},
"source": [
"Default parameter values are restricted to 'immutable' types. This technical restriction eliminiates the error-prone practice of use mutable objects, such as lists, as defaults. The difficulty with setting defaults for mutable objects is that all instances of the dataclass share the same value. If one instance of the object changes that value, then all other instances are affected. This leads to unpredictable behavior, and is a particularly nasty bug to uncover and fix.\n",
"\n",
"There are two ways to provide defaults for mutable parameters such as lists, sets, dictionaries, or arbitrary Python objects. \n",
"\n",
"The more direct way is to specify a function for constucting the default parameter value using the `field` statement with the `default_factory` option. The default_factory is called when a new instance of the dataclass is created. The function must take no arguments and must return a value that will be assigned to the designated parameter. Here's an example."
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.2 Setting default parameter values](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.2-Setting-default-parameter-values)",
"section": "3.10.2.2.2 Setting default parameter values"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"John Doe (Class of None)\n",
" 1. Math\n",
" 2. Chemical Engineering\n"
]
}
],
"source": [
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Student():\n",
" name: str = None\n",
" graduation_year: int = None\n",
" dorm: str = None\n",
" majors: list = field(default_factory=list)\n",
" \n",
" def print_name(self):\n",
" print(f\"{self.name} (Class of {self.graduation_year})\")\n",
" \n",
" def print_majors(self):\n",
" for n, major in enumerate(self.majors):\n",
" print(f\" {n+1}. {major}\")\n",
" \n",
"jdoe = Student(name=\"John Doe\", dorm=\"Alumni\", majors=[\"Math\", \"Chemical Engineering\"])\n",
"jdoe.print_name()\n",
"jdoe.print_majors()\n",
"\n",
"Student().print_majors()"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 4,
"link": "[3.10.2.2.3 Initializing a dataclass with __post_init__(self)](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.2.2.3-Initializing-a-dataclass-with-__post_init__(self))",
"section": "3.10.2.2.3 Initializing a dataclass with __post_init__(self)"
}
},
"source": [
"#### 3.10.2.2.3 Initializing a dataclass with __post_init__(self)\n",
"\n",
"Frequently there are additional steps to complete when creating a new instance of a dataclass. For that purpose, a dataclass may contain an\n",
"optional function with the special name `__post_init__(self)`. If present, that function is run automatically following the creation of a new instance. This feature will be demonstrated in following reimplementation of the grocery store checkout operation."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.3 Using `dataclass` with Simpy](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3-Using-`dataclass`-with-Simpy)",
"section": "3.10.3 Using `dataclass` with Simpy"
}
},
"source": [
"## 3.10.3 Using `dataclass` with Simpy"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.1 Step 0. A simple model](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.1-Step-0.-A-simple-model)",
"section": "3.10.3.1 Step 0. A simple model"
}
},
"source": [
"### 3.10.3.1 Step 0. A simple model\n",
"\n",
"To demonstrate the use of classes in SimPy simulations, let's begin with a simple model of a clock using generators."
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.1 Step 0. A simple model](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.1-Step-0.-A-simple-model)",
"section": "3.10.3.1 Step 0. A simple model"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A 0\n",
"B 0\n",
"A 1.0\n",
"B 1.5\n",
"A 2.0\n",
"B 3.0\n",
"A 3.0\n",
"A 4.0\n",
"B 4.5\n"
]
}
],
"source": [
"import simpy\n",
"\n",
"def clock(id=\"\", t_step=1.0):\n",
" while True:\n",
" print(id, env.now)\n",
" yield env.timeout(t_step)\n",
" \n",
"env = simpy.Environment()\n",
"env.process(clock(\"A\"))\n",
"env.process(clock(\"B\", 1.5))\n",
"env.run(until=5.0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.2 Step 1. Embed the generator inside of a class](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.2-Step-1.-Embed-the-generator-inside-of-a-class)",
"section": "3.10.3.2 Step 1. Embed the generator inside of a class"
}
},
"source": [
"### 3.10.3.2 Step 1. Embed the generator inside of a class"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.2 Step 1. Embed the generator inside of a class](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.2-Step-1.-Embed-the-generator-inside-of-a-class)",
"section": "3.10.3.2 Step 1. Embed the generator inside of a class"
}
},
"source": [
"As a first step, we rewrite the generator as a Python dataclass named `Clock`. The parameters are given default values, and the generator is incorporated within the Clock object. Note the use of `self` to refer to parameters specific to an instance of the class."
]
},
{
"cell_type": "code",
"execution_count": 181,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.2 Step 1. Embed the generator inside of a class](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.2-Step-1.-Embed-the-generator-inside-of-a-class)",
"section": "3.10.3.2 Step 1. Embed the generator inside of a class"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A 0\n",
"B 0\n",
"A 1.0\n",
"B 1.5\n",
"A 2.0\n",
"B 3.0\n",
"A 3.0\n",
"A 4.0\n",
"B 4.5\n"
]
}
],
"source": [
"import simpy\n",
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Clock():\n",
" id: str = \"\"\n",
" t_step: float = 1.0\n",
" \n",
" def process(self):\n",
" while True:\n",
" print(self.id, env.now)\n",
" yield env.timeout(self.t_step)\n",
"\n",
"env = simpy.Environment()\n",
"env.process(Clock(\"A\").process())\n",
"env.process(Clock(\"B\", 1.5).process())\n",
"env.run(until=5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.3 Step 2. Eliminate (if possible) global variables](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.3-Step-2.-Eliminate-(if-possible)-global-variables)",
"section": "3.10.3.3 Step 2. Eliminate (if possible) global variables"
}
},
"source": [
"### 3.10.3.3 Step 2. Eliminate (if possible) global variables\n",
"\n",
"Our definition of clock requires the simulation environment to have a specific name `env`, and assumes env is a global variable. That's generally not a good coding practice because it imposes an assumption on any user of the class, and exposes the internal coding of the class. A much better practice is to use class parameters to pass this data through a well defined interface to the class."
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.3 Step 2. Eliminate (if possible) global variables](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.3-Step-2.-Eliminate-(if-possible)-global-variables)",
"section": "3.10.3.3 Step 2. Eliminate (if possible) global variables"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A 0\n",
"B 0\n",
"A 1.0\n",
"B 1.5\n",
"A 2.0\n",
"B 3.0\n",
"A 3.0\n",
"A 4.0\n",
"B 4.5\n",
"A 5.0\n",
"B 6.0\n",
"A 6.0\n",
"A 7.0\n",
"B 7.5\n",
"A 8.0\n",
"B 9.0\n",
"A 9.0\n"
]
}
],
"source": [
"import simpy\n",
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Clock():\n",
" env: simpy.Environment\n",
" id: str = \"\"\n",
" t_step: float = 1.0\n",
" \n",
" def process(self):\n",
" while True:\n",
" print(self.id, self.env.now)\n",
" yield self.env.timeout(self.t_step)\n",
"\n",
"env = simpy.Environment()\n",
"env.process(Clock(env, \"A\").process())\n",
"env.process(Clock(env, \"B\", 1.5).process())\n",
"env.run(until=10)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.4 Step 3. Encapsulate initializations inside __post_init__](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.4-Step-3.-Encapsulate-initializations-inside-__post_init__)",
"section": "3.10.3.4 Step 3. Encapsulate initializations inside __post_init__"
}
},
"source": [
"### 3.10.3.4 Step 3. Encapsulate initializations inside __post_init__"
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {
"nbpages": {
"level": 3,
"link": "[3.10.3.4 Step 3. Encapsulate initializations inside __post_init__](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.3.4-Step-3.-Encapsulate-initializations-inside-__post_init__)",
"section": "3.10.3.4 Step 3. Encapsulate initializations inside __post_init__"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A 0\n",
"B 0\n",
"A 1.0\n",
"B 1.5\n",
"A 2.0\n",
"B 3.0\n",
"A 3.0\n",
"A 4.0\n",
"B 4.5\n"
]
}
],
"source": [
"import simpy\n",
"from dataclasses import dataclass\n",
"\n",
"@dataclass\n",
"class Clock():\n",
" env: simpy.Environment\n",
" id: str = \"\"\n",
" t_step: float = 1.0\n",
" \n",
" def __post_init__(self):\n",
" self.env.process(self.process())\n",
" \n",
" def process(self):\n",
" while True:\n",
" print(self.id, self.env.now)\n",
" yield self.env.timeout(self.t_step)\n",
"\n",
"env = simpy.Environment()\n",
"Clock(env, \"A\")\n",
"Clock(env, \"B\", 1.5)\n",
"env.run(until=5)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.4 Grocery Store Model](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.4-Grocery-Store-Model)",
"section": "3.10.4 Grocery Store Model"
}
},
"source": [
"## 3.10.4 Grocery Store Model\n",
"\n",
"Let's review our model for the grocery store checkout operations. There are multiple checkout lanes, each with potentially different characteristics. With generators we were able to implement differences in the time required to scan items. But another parameter, a limit on number of items that could be checked out in a lane, required a new global list. The reason was the need to access that parameter, something that a generator doesn't allow. This is where classes become important building blocks in creating more complex simulations.\n",
"\n",
"Our new strategy will be encapsulate the generator inside of a dataclass object. Here's what we'll ask each class definition to do:\n",
"\n",
"* Create a parameter corresponding to the simulation environment. This makes our classes reusable in other simulations by eliminating a reference to a globall variable.\n",
"* Create parameters with reasonable defaults values.\n",
"* Initialize any objects used within the class.\n",
"* Register the class generator with the simulation environment.\n"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.4 Grocery Store Model](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.4-Grocery-Store-Model)",
"section": "3.10.4 Grocery Store Model"
}
},
"outputs": [],
"source": [
"from dataclasses import dataclass\n",
"\n",
"# create simulation models\n",
"@dataclass\n",
"class Checkout():\n",
" env: simpy.Environment\n",
" lane: simpy.Store = None\n",
" t_item: float = 1/10\n",
" item_limit: int = 25\n",
" t_payment: float = 2.0\n",
" \n",
" def __post_init__(self):\n",
" self.lane = simpy.Store(self.env)\n",
" self.env.process(self.process())\n",
" \n",
" def process(self):\n",
" while True:\n",
" customer_id, cart, enter_time = yield self.lane.get()\n",
" wait_time = env.now - enter_time\n",
" yield env.timeout(self.t_payment + cart*self.t_item)\n",
" customer_log.append([customer_id, cart, enter_time, wait_time, env.now]) \n",
" \n",
"@dataclass\n",
"class CustomerGenerator():\n",
" env: simpy.Environment\n",
" rate: float = 1.0\n",
" customer_id: int = 1\n",
" \n",
" def __post_init__(self):\n",
" self.env.process(self.process())\n",
" \n",
" def process(self):\n",
" while True:\n",
" yield env.timeout(random.expovariate(self.rate))\n",
" cart = random.randint(1, 25)\n",
" available_checkouts = [checkout for checkout in checkouts if cart <= checkout.item_limit]\n",
" checkout = min(available_checkouts, key=lambda checkout: len(checkout.lane.items))\n",
" yield checkout.lane.put([self.customer_id, cart, env.now])\n",
" self.customer_id += 1\n",
"\n",
"def lane_logger(t_sample=0.1):\n",
" while True:\n",
" lane_log.append([env.now] + [len(checkout.lane.items) for checkout in checkouts])\n",
" yield env.timeout(t_sample)\n",
" \n",
"# create simulation environment\n",
"env = simpy.Environment()\n",
"\n",
"# create simulation objects (agents)\n",
"CustomerGenerator(env)\n",
"checkouts = [\n",
" Checkout(env, t_item=1/5, item_limit=25),\n",
" Checkout(env, t_item=1/5, item_limit=25),\n",
" Checkout(env, item_limit=5),\n",
" Checkout(env),\n",
" Checkout(env),\n",
"]\n",
"env.process(lane_logger())\n",
"\n",
"# run process\n",
"customer_log = []\n",
"lane_log = []\n",
"env.run(until=600)"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {
"nbpages": {
"level": 2,
"link": "[3.10.4 Grocery Store Model](https://jckantor.github.io/CBE40455-2020/03.10-Creating-Simulation-Classes.html#3.10.4-Grocery-Store-Model)",
"section": "3.10.4 Grocery Store Model"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average waiting time = 4.18 minutes\n",
"\n",
"Average lane queue \n",
"lane 0 1.406500\n",
"lane 1 1.192167\n",
"lane 2 0.050667\n",
"lane 3 0.840000\n",
"lane 4 0.635833\n",
"dtype: float64\n",
"\n",
"Overall aaverage lane queue \n",
"0.8250\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
}
],
"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
}