SoyutNet simulations¶
This repo is a hobby open research project which aims to demonstrate the capapbilities of PT net (Petri net) based formal methods to improve producer/consumer pipelines by applying appropriate discrete event system (DES) control policies in simulated real life scenarios.
The project is structured in a way to make the results easily reproducable.
This project’s main focus is the technical documentation. The code is used to illustrate the ideas and reproduce the results.
The simulations use SoyutNet PT net simulator as backend.
Building¶
python3 -m venv venv
source venv/bin/activate
make docs
Simulations¶
PI controller¶
This simulation investigates that a proportional-integral (PI) controller structure can be used to balance the work load of two TCP servers which accept requests from a single source.
Running:
git clone https://github.com/dmrokan/soyutnet-simulations
sudo apt install graphviz python3-venv
python3 -m venv venv
source venv/bin/activate
make build
make build=pi_controller
make clean=pi_controller
make run=pi_controller
make results=pi_controller
make graph=pi_controller
HTTP balancer¶
This simulation investigates that a proportional-integral (PI) controller structure can be used to balance the work load of two HTTP servers which accepts requests from a single source.
Running:
git clone https://github.com/dmrokan/soyutnet-simulations
sudo apt install graphviz python3-venv apache2-utils
python3 -m venv venv
source venv/bin/activate
make build
make build=http_balancer
make clean=http_balancer
make run=http_balancer
make results=http_balancer
make graph=http_balancer
HTTP server¶
This simulation investigates how a SoyutNet based load distribution performs compared to a plain asyncio socket server implemented by Uvicorn for different number of concurrent requesters.
Running:
git clone https://github.com/dmrokan/soyutnet-simulations
sudo apt install graphviz python3-venv apache2-utils
python3 -m venv venv
source venv/bin/activate
make build
make build=http_server
make clean=http_server
make run=http_server
make results=http_server
make graph=http_server
Timed net¶
This simulations implements a temporal-aware PT net by attaching time information to the PT net tokens. It simulates a supply chain depending on two component producers and an assembler.
Running:
git clone https://github.com/dmrokan/soyutnet-simulations
sudo apt install graphviz python3-venv
python3 -m venv venv
source venv/bin/activate
make build
make build=timed_net
make clean=timed_net
make run=timed_net
make results=timed_net
make graph=timed_net
Building¶
git clone https://github.com/dmrokan/soyutnet-simulations
sudo apt install graphviz python3-venv
python3 -m venv venv
source venv/bin/activate
make docs
SoyutNet¶
Modules¶
License¶
SoyutNet Simulations by Okan Demir is licensed under Creative Commons Attribution 4.0 International