|
@@ -7,12 +7,13 @@
|
|
|
"# Process Model simulation\n",
|
|
|
"In this example, we present a simple process model and simulate its execution to obtain performance metrics.\n",
|
|
|
"## Initialization\n",
|
|
|
- "As usual, we start the notebook by initializing the Modelverse connection."
|
|
|
+ "As usual, we start the notebook by initializing the Modelverse connection.\n",
|
|
|
+ "Additionally, we will be using matplotlib to draw a figure at the end, so include it now already"
|
|
|
]
|
|
|
},
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
- "execution_count": 1,
|
|
|
+ "execution_count": 16,
|
|
|
"metadata": {},
|
|
|
"outputs": [],
|
|
|
"source": [
|
|
@@ -20,22 +21,8 @@
|
|
|
"sys.path.append(\"../wrappers/\")\n",
|
|
|
"from modelverse import *\n",
|
|
|
"init()\n",
|
|
|
- "login(None, None)"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "markdown",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "Additionally, we will be using matplotlib to draw a figure at the end, so include it now already"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 2,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
+ "login(None, None)\n",
|
|
|
+ "\n",
|
|
|
"%matplotlib inline\n",
|
|
|
"import matplotlib.pyplot as plt"
|
|
|
]
|
|
@@ -44,8 +31,8 @@
|
|
|
"cell_type": "markdown",
|
|
|
"metadata": {},
|
|
|
"source": [
|
|
|
- "## Load formalisms\n",
|
|
|
- "Load all the necessary formalisms first.\n",
|
|
|
+ "## Load libraries\n",
|
|
|
+ "Load all the necessary formalisms and activities first.\n",
|
|
|
"They might already exist in the Modelverse, but it doesn't matter that much now: just overwrite.\n",
|
|
|
"Also loads the DEVS library for process modelling building blocks."
|
|
|
]
|
|
@@ -60,124 +47,16 @@
|
|
|
"model_add(\"~/formalisms/PM/PM_Extended_MM\", \"formalisms/SimpleClassDiagrams\", open(\"../models/FTGPM/metamodels/control_patterns.mvc\", 'r').read())\n",
|
|
|
"model_add(\"~/formalisms/Experiment/Experiment_MM\", \"formalisms/SimpleClassDiagrams\", open(\"../models/PythonPDEVS_Experiment/metamodels/experiment.mvc\", 'r').read())\n",
|
|
|
"model_add(\"~/models/DEVS/PM_library\", \"~/formalisms/DEVS/DEVS_MM\", open(\"../models/ClassicDEVS/models/process_patterns_library.mvc\", 'r').read())\n",
|
|
|
- "model_add(\"~/formalisms/String\", \"formalisms/SimpleClassDiagrams\", open(\"../models/String/metamodels/String.mvc\", 'r').read())"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "markdown",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "## Add Process\n",
|
|
|
- "Now load in the process that we will be using, this should normally not be changed, though the content is valuable to know the bindings (for the signature)."
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 4,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "model_add(\"~/models/PM/to_DEVS\", \"formalisms/ProcessModel\", \"\"\"\n",
|
|
|
- " Start start {}\n",
|
|
|
- "\n",
|
|
|
- " Exec translate {\n",
|
|
|
- " name = \"~/formalisms/PM/to_DEVS\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Exec merge {\n",
|
|
|
- " name = \"~/formalisms/DEVS/merge\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Exec simulate {\n",
|
|
|
- " name = \"~/formalisms/DEVS/simulate\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Finish finish {}\n",
|
|
|
- "\n",
|
|
|
- " Next (start, translate) {}\n",
|
|
|
- " Next (translate, merge) {}\n",
|
|
|
- " Next (merge, simulate) {}\n",
|
|
|
- " Next (simulate, finish) {}\n",
|
|
|
+ "model_add(\"~/formalisms/String\", \"formalisms/SimpleClassDiagrams\", open(\"../models/String/metamodels/String.mvc\", 'r').read())\n",
|
|
|
"\n",
|
|
|
- " Data pm_model {\n",
|
|
|
- " name = \"PM\"\n",
|
|
|
- " type = \"~/formalisms/PM/PM_MM\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Data cdevs_model {\n",
|
|
|
- " name = \"\"\n",
|
|
|
- " type = \"~/formalisms/DEVS/DEVS_MM\"\n",
|
|
|
- " }\n",
|
|
|
- " \n",
|
|
|
- " Data result_model {\n",
|
|
|
- " name = \"result\"\n",
|
|
|
- " type = \"~/formalisms/String\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Data adevs_model {\n",
|
|
|
- " name = \"DEVS library\"\n",
|
|
|
- " type = \"~/formalisms/DEVS/DEVS_MM\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Data devs_model {\n",
|
|
|
- " name = \"\"\n",
|
|
|
- " type = \"~/formalisms/DEVS/DEVS_MM\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Data experiment_model {\n",
|
|
|
- " name = \"Experiment\"\n",
|
|
|
- " type = \"~/formalisms/Experiment/Experiment_MM\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Consumes (translate, pm_model) {\n",
|
|
|
- " name = \"PM\"\n",
|
|
|
- " }\n",
|
|
|
- " Produces (translate, cdevs_model) {\n",
|
|
|
- " name = \"DEVS\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Consumes (merge, adevs_model) {\n",
|
|
|
- " name = \"model1\"\n",
|
|
|
- " }\n",
|
|
|
- " Consumes (merge, cdevs_model) {\n",
|
|
|
- " name = \"model2\"\n",
|
|
|
- " }\n",
|
|
|
- " Produces (merge, devs_model) {\n",
|
|
|
- " name = \"result\"\n",
|
|
|
- " }\n",
|
|
|
- "\n",
|
|
|
- " Consumes (simulate, devs_model) {\n",
|
|
|
- " name = \"DEVS\"\n",
|
|
|
- " }\n",
|
|
|
- " Consumes (simulate, experiment_model) {\n",
|
|
|
- " name = \"Experiment\"\n",
|
|
|
- " }\n",
|
|
|
- " Produces (simulate, result_model) {\n",
|
|
|
- " name = \"result\"\n",
|
|
|
- " }\n",
|
|
|
- " \"\"\")"
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "markdown",
|
|
|
- "metadata": {},
|
|
|
- "source": [
|
|
|
- "## Add Activities\n",
|
|
|
- "Now add the activities that will do the heavy lifting."
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 5,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
"def traceability_pm_devs(model):\n",
|
|
|
" instantiate(model, \"Association\", (\"PM/ProcessNode\", \"DEVS/DEVSInstance\"), ID=\"Trace\")\n",
|
|
|
"\n",
|
|
|
"transformation_add_MT({\"PM\": \"~/formalisms/PM/PM_Extended_MM\"}, {\"DEVS\": \"~/formalisms/DEVS/DEVS_MM\"}, \"~/formalisms/PM/to_DEVS\", open(\"../models/FTGPM/transformations/patterns_to_DEVS.mvc\", 'r').read(), traceability_pm_devs)\n",
|
|
|
"transformation_add_AL({\"model1\": \"~/formalisms/DEVS/DEVS_MM\", \"model2\": \"~/formalisms/DEVS/DEVS_MM\"}, {\"result\": \"~/formalisms/DEVS/DEVS_MM\"}, \"~/formalisms/DEVS/merge\", open(\"../models/ClassicDEVS/transformations/merge.alc\", 'r').read())\n",
|
|
|
- "transformation_add_AL({\"DEVS\": \"~/formalisms/DEVS/DEVS_MM\", \"Experiment\": \"~/formalisms/Experiment/Experiment_MM\"}, {\"result\": \"~/formalisms/String\"}, \"~/formalisms/DEVS/simulate\", open(\"../models/ClassicDEVS/transformations/simulate.alc\", 'r').read())"
|
|
|
+ "transformation_add_AL({\"DEVS\": \"~/formalisms/DEVS/DEVS_MM\", \"Experiment\": \"~/formalisms/Experiment/Experiment_MM\"}, {\"result\": \"~/formalisms/String\"}, \"~/formalisms/DEVS/simulate\", open(\"../models/ClassicDEVS/transformations/simulate.alc\", 'r').read())\n",
|
|
|
+ "\n",
|
|
|
+ "model_add(\"~/models/PM/to_DEVS\", \"formalisms/ProcessModel\", open(\"../models/FTGPM/PM_patterns_simulation_relative.mvc\", 'r').read())"
|
|
|
]
|
|
|
},
|
|
|
{
|