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.

Code repository 🔗

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

Documentation

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

Documentation

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

Documentation

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

Documentation

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

License text

Credits

SoyutNet logo