{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## model.RepeatActivity\n", "\n", "This notebook provides an example of OpenCLSim's __model.RepeatActivity__. The repeat activity repeats a set of __sub_processes__ a given number of times." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 0. Import libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import datetime, time\n", "import simpy\n", "\n", "import shapely.geometry\n", "import pandas as pd\n", "\n", "import openclsim.core as core\n", "import openclsim.model as model\n", "import openclsim.plot as plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1. Initialise simpy environment" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# setup environment\n", "simulation_start = 0\n", "my_env = simpy.Environment(initial_time=simulation_start)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2. Define object classes\n", "In this example we won't use object classes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3. Create objects\n", "##### 3.1. Create site object(s)\n", "No site objects are created" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 3.2. Create vessel object(s)\n", "No vessel objects are created" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 3.3 Create activity/activities" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# initialise registry\n", "registry = {}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# create a list of the sub processes\n", "sub_processes = [\n", " model.BasicActivity(\n", " env=my_env,\n", " name=\"Basic activity\",\n", " registry=registry,\n", " duration=20,\n", " )\n", "]\n", "\n", "# create a 'repeat activity' that is made up of the 'sub_processes'\n", "repeat_activity = model.RepeatActivity(\n", " env=my_env,\n", " name=\"Repeat activity\",\n", " registry=registry,\n", " sub_processes=sub_processes,\n", " repetitions=3,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4. Register processes and run simpy" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# initate the simpy processes defined in the 'repeat activity' and run simpy\n", "model.register_processes([repeat_activity])\n", "my_env.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 5. Inspect results\n", "##### 5.1 Inspect logs" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Activity | \n", "Timestamp | \n", "ActivityState | \n", "type | \n", "ref | \n", "
---|---|---|---|---|---|
0 | \n", "Repeat activity | \n", "1970-01-01 00:00:00 | \n", "START | \n", "NaN | \n", "NaN | \n", "
1 | \n", "Repeat activity | \n", "1970-01-01 00:00:00 | \n", "START | \n", "subprocess | \n", "f38fdf97-d4c5-4e1a-ba02-a86c89faa934 | \n", "
2 | \n", "Repeat activity | \n", "1970-01-01 00:00:20 | \n", "STOP | \n", "subprocess | \n", "f38fdf97-d4c5-4e1a-ba02-a86c89faa934 | \n", "
3 | \n", "Repeat activity | \n", "1970-01-01 00:00:20 | \n", "START | \n", "subprocess | \n", "f38fdf97-d4c5-4e1a-ba02-a86c89faa934 | \n", "
4 | \n", "Repeat activity | \n", "1970-01-01 00:00:40 | \n", "STOP | \n", "subprocess | \n", "f38fdf97-d4c5-4e1a-ba02-a86c89faa934 | \n", "
5 | \n", "Repeat activity | \n", "1970-01-01 00:00:40 | \n", "START | \n", "subprocess | \n", "f38fdf97-d4c5-4e1a-ba02-a86c89faa934 | \n", "
6 | \n", "Repeat activity | \n", "1970-01-01 00:01:00 | \n", "STOP | \n", "subprocess | \n", "f38fdf97-d4c5-4e1a-ba02-a86c89faa934 | \n", "
7 | \n", "Repeat activity | \n", "1970-01-01 00:01:00 | \n", "STOP | \n", "NaN | \n", "NaN | \n", "