Skip to content

The project is a simulator of an automatic warehouse with a simple website. The inspiration came from the Vertimag of Ferretto Group, an Italian company based in Vicenza.

License

Notifications You must be signed in to change notification settings

AndreVale69/simulator-automatic-warehouse

Repository files navigation

Simulator Automatic Warehouse

This README is out of date. I'm developing a 1.0.0 version on andre-branch. The project is almost finished, and I'm studying how to make it available online using pip. So the following README refers to my bachelor's thesis (see v0.0.1 pre-release).

This repository was created for a thesis project for the University of Verona (Università di Verona).

The project is a simulator of an automatic warehouse. The inspiration came from the Vertimag of Ferretto Group, an Italian company based in Vicenza. So the logic of the warehouse digitalized is the same of the real Vertimag.

As a case study, the Vertimag present in the ICE Laboratory was chosen. The warehouse you'll find is made for education/research purposes, so it's different from a classic Vertimag that you can find in the industries (see the differences in these photos: ICELab Vertimag and Industries Vertimag). However, this does not mean that the project is not valid! In fact, the project is used as a base by the researchers at the ICELab to make another simulator using different technologies.

The repository contains a src directory where you can find: the simulator and the webpage.

The simulator is mainly made using SimPy v4.0.2 and simulates 4 actions (you can implement more if you need to). The webpage is made using Dash v2.15.0 (with the support of Dash Bootstrap Components v1.5.0) and Plotly v5.17.0 to allow the end-user, in this case the thesis advisor, to interact with the simulator in a user-friendly way.

In the future, you need to add unittest.


How to Install and Run the Project

You can choose to run the project in one of two ways: using Python v3.12.2 or using Docker and Docker compose.

Python

Install the requirements using pip:

pip install -r requirements.txt

Simulator

To run only the simulator without the webpage, go to the project directory simulator-automatic-warehouse and set the environment variable for the configuration. Each simulation uses a yaml file to set up the automatic warehouse (a full explanation of the config file can be found in configuration/sample_config.yaml:

export WAREHOUSE_CONFIGURATION_FILE_PATH=configuration/univr/ICE_lab.yaml
python3.12 run_simulator.py

Or one line:

WAREHOUSE_CONFIGURATION_FILE_PATH=configuration/univr/ICE_lab.yaml python3.12 run_simulator.py

The loaded configuration represents the Vertimag in ICELab. You can create another configuration following the json schema (resources/configuration/json_schema.json).

Finally, it's possible to manage the console log using the environment variables:

  • NO_CONSOLE_LOG: If set, console logs are not displayed.
  • DEBUG_LOG: if set, debug logging will be printed to the console.
  • FILENAME_DEBUG_LOG: if set, save the debug log to file (e.g. sim.log).

Website

To run the website, in addition to the environment variables specified in the Simulator section, you need to specify:

  • HOST: Host IP used to serve the application.
  • PORT: Port used to serve the application.
  • (optional) PROXY: If this application will be served to a different URL via a proxy configured outside of Python, you can list it here as a string of the form {input}::{output}, for example: http://0.0.0.0:8050::https://my.domain.com so that the startup message will display an accurate URL.

For example, in localhost:

export WAREHOUSE_CONFIGURATION_FILE_PATH=configuration/univr/ICE_lab.yaml
export HOST=127.0.0.1
export PORT=8050
python3.12 run_webpage.py

Note: the username and password to access at the page can be found in the index.py file after the app variable declaration. The default, the values are:

USER_PWD = {
    "admin": "admin"
}

But you can specify other users (see the complete documentation: Dash Authentication).

Docker

Everything is easier with Docker. Go to the docker folder and use docker compose to build:

cd docker && docker compose up

If you want to change or add some environment variables, edit docker-compose.yaml.


Benchmarks

Here are some benchmarks run with a private Python library and the following computer specifications:

  • Intel i7-8750H
  • SDRAM DDR4-2666 16GB
  • MZ-76Q2T0 860 QVO SSD 2TB 2.5"
  • SSD NVMe M.2 128 GB
  • NVIDIA GeForce GTX 1050
Actions Time to process Real-time simulation
10'000 1 second 1d. 2h. 48m.
63'000 7.5 seconds 1 week
267'900 25 seconds 1 month
3'250'120 9 minutes 1 year

Relationship between simulated actions and media

Standard deviation

About

The project is a simulator of an automatic warehouse with a simple website. The inspiration came from the Vertimag of Ferretto Group, an Italian company based in Vicenza.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages