Skip to main content

A discrete-event simulation framework for intralogistics and operations management

Project description

Simulatte

Simulatte

PyPI Python License codecov Docs

Discrete-event simulation framework for job-shop scheduling and intralogistics, built on SimPy.


Table of Contents


What is Simulatte?

Simulatte is a Python library for simulating manufacturing job-shops with integrated intralogistics. It models production servers, warehouses, AGVs, and material flow in a unified framework. Use it to evaluate scheduling policies, analyze bottlenecks, and study system performance under stochastic conditions.

The library provides ready-to-use components for common manufacturing scenarios while remaining extensible for custom requirements. Whether you're researching release control policies, optimizing warehouse layouts, or teaching discrete-event simulation, Simulatte offers a clean API built on proven SimPy foundations.


Features

Job-Shop Scheduling

  • Multi-server routing with configurable processing times
  • Due dates and tardiness tracking
  • Queue time and utilization metrics per server

Release Control

  • Pre-Shop Pool (PSP) for workload-based job release
  • Built-in policies: Immediate Release, LumsCor, SLAR
  • Composable triggers (periodic, on-arrival, on-completion)
  • Starvation avoidance mechanisms

Extensibility

  • Operation hooks: inject logic before/after processing (e.g., setup times)
  • WIP strategies: Standard and Corrected workload estimation
  • Custom metrics collectors: plug in your own real-time or time-series collectors
  • Job-finished callbacks: react to completed jobs synchronously

Time-Series Analysis

  • Built-in collectors for WIP, throughput, job count, lateness
  • Matplotlib integration: plot_wip(), plot_throughput(), plot_lateness()
  • Custom time-series collectors via simple protocol

Material Handling (experimental)

  • Warehouse with inventory management
  • AGV fleet coordination
  • FIFO blocking semantics for realistic material flow

Logging

  • Per-component event logging (Server, ShopFloor, Router, Warehouse, AGV)
  • JSON or text format output
  • Queryable in-memory history with filtering by component, level, time range

Multi-Run Experiments

  • Runner class for stochastic experiments across multiple seeds
  • Automatic seed management for reproducibility
  • Parallel execution with multiprocessing support
  • Progress bars via tqdm

Installation

pip install simulatte

or with uv:

uv add simulatte

Quick Start

from simulatte.environment import Environment
from simulatte.server import Server
from simulatte.shopfloor import ShopFloor
from simulatte.job import ProductionJob

# Create simulation environment
env = Environment()
shopfloor = ShopFloor(env=env)
server = Server(env=env, capacity=1, shopfloor=shopfloor)

# Create a job with routing through the server
job = ProductionJob(
    env=env,
    sku="A",
    servers=[server],
    processing_times=[5.0],
    due_date=100,
)

# Run simulation
shopfloor.add(job)
env.run()

# Analyze results
print(f"Makespan: {job.makespan}")
print(f"Server utilization: {server.utilization_rate:.1%}")

Documentation

Full documentation is available at dmezzogori.github.io/simulatte.


Citation

If you use Simulatte in your research, please cite:

@software{Mezzogori2025Simulatte,
  author = {Mezzogori, Davide},
  title = {{Simulatte}: A discrete-event simulation framework for job-shop scheduling and intralogistics},
  year = {2025},
  url = {https://github.com/dmezzogori/simulatte},
  note = {Python package version 0.1.4}
}

Contributing

Issues and pull requests are welcome at github.com/dmezzogori/simulatte.


License

Simulatte is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simulatte-0.2.0.tar.gz (7.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simulatte-0.2.0-py3-none-any.whl (53.5 kB view details)

Uploaded Python 3

File details

Details for the file simulatte-0.2.0.tar.gz.

File metadata

  • Download URL: simulatte-0.2.0.tar.gz
  • Upload date:
  • Size: 7.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for simulatte-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0b5193800bf502175ff3d2ab22f8bf0f138950d2214cdd90ac5c6beb6b980948
MD5 90c9c2212d79dbc2d5cebe0cdc81f287
BLAKE2b-256 71a49dd71b536e79741fef4383f9aaa490ebd5a9aa8b0ee6af771fa087e3bee1

See more details on using hashes here.

File details

Details for the file simulatte-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: simulatte-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 53.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for simulatte-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00c00fa6e4b500813be369a837a86cc4db3ba3b4ef9c94f965f189f3464daec9
MD5 675ad4e7d934adc696f2eeec704ed896
BLAKE2b-256 2fad7c73f390cb718d85900b8b2d9e19b63f32438c5dca2b9d58c3654ec532eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page