A discrete-event simulation framework for intralogistics and operations management
Project description
Simulatte
Discrete-event simulation framework for job-shop scheduling and intralogistics, built on SimPy.
Note: Simulatte is under active development. All APIs — including those outside
simulatte.experimental— should be considered unstable and may change between releases without prior deprecation. Pin your dependency to a specific version if you need stability.
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
- Event callbacks (
psp.on_arrival,shopfloor.on_processing_end) and composable triggers - Starvation avoidance mechanisms
Extensibility
- Operation hooks: sync or generator-based, before/after processing (e.g., setup times, dispatching)
- Event callbacks:
on_processing_end,on_job_finished,on_arrivalfor reactive logic - Dispatcher protocol: one-call wiring of multi-event controllers via
attach_dispatcher() - WIP strategies: Standard and Corrected workload estimation
- Custom metrics collectors: plug in your own real-time or time-series collectors
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%}")
AI Coding Agent Skill
Simulatte ships a skill for AI coding agents (Claude Code, Cursor, Windsurf, etc.) that helps them write correct Simulatte simulations — from choosing a release policy to running multi-seed experiments.
Install it with the Vercel Skills CLI:
npx skills add https://github.com/dmezzogori/simulatte/tree/main/skills/simulatte-dev
Once installed, invoke it with /simulatte-dev or let the agent auto-trigger it when working with Simulatte code.
Documentation
Full documentation is available at simulatte.dev.
Citation
If you use Simulatte in your research, please cite:
@software{Mezzogori2025Simulatte,
author = {Mezzogori, Davide and Mercogliano, Nicola},
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.4.0}
}
Contributing
Contributions are welcome — please read CONTRIBUTING.md for the workflow (branching, PR requirements, merge process).
License
Simulatte is released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simulatte-0.4.0.tar.gz.
File metadata
- Download URL: simulatte-0.4.0.tar.gz
- Upload date:
- Size: 57.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff403e32bdc0eff5a6de824585bb89706d1f1322daa87baa81eb9531f0b7b576
|
|
| MD5 |
4c14ff93dbcf206303f5a664c1b58986
|
|
| BLAKE2b-256 |
5d78483a70ae58ec9d384f6faa3789fd4cd48a586b43f2c949677f23bfe1461e
|
File details
Details for the file simulatte-0.4.0-py3-none-any.whl.
File metadata
- Download URL: simulatte-0.4.0-py3-none-any.whl
- Upload date:
- Size: 57.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af6f1001daff840d4f10d3912018d0e609eb7a406f853d9da9843cb1b30c1f3e
|
|
| MD5 |
3aa5d430bbbe139553344c922fbe9b0b
|
|
| BLAKE2b-256 |
cad17b0d5ad516f207c30a3e4da67baac7f981f6a2d1ed5b870b73a861508e01
|