High-fidelity discrete event simulation for warehouse robotics
Waremax is a discrete event simulation framework for modeling autonomous mobile robot (AMR) operations in warehouse environments. It enables engineers and architects to evaluate throughput, identify bottlenecks, and optimize fleet sizing and policies—before deploying changes to production.
# Run a 1-hour simulation with 10 robots
waremax run --preset standard
# Compare task allocation policies
waremax compare scenario.yaml \
--param policies.task_allocation=nearest_idle \
--param policies.task_allocation=least_busy
# Find optimal fleet size
waremax sweep scenario.yaml --param "robots.count=[5,10,15,20,25]"| Challenge | How Waremax Helps |
|---|---|
| Fleet sizing | Simulate different robot counts to find the throughput sweet spot |
| Policy evaluation | Compare allocation, routing, and batching strategies with statistical rigor |
| Capacity planning | Model peak loads and growth scenarios before scaling infrastructure |
| Layout optimization | Test map changes and station placements in simulation |
| What-if analysis | Evaluate impact of failures, maintenance windows, and demand spikes |
- Deterministic simulation — Same seed, same results. Debug and reproduce any scenario
- Configurable policies — Pluggable task allocation, routing, and batching strategies
- Rich metrics — Throughput, utilization, queue lengths, travel times, and more
- Statistical tools — Parameter sweeps, A/B testing, and benchmarking built-in
- YAML configuration — Human-readable scenarios with validation
- High performance — Event-driven core handles 100+ robots efficiently
# Clone and build
git clone https://github.com/example/waremax.git
cd waremax
cargo install --path .
# Verify installation
waremax --version# Run a demo simulation
waremax demo
# Run with a preset
waremax run --preset standard -o results/
# Analyze results
waremax analyze results/Create my_scenario.yaml:
simulation:
duration_s: 3600
seed: 12345
robots:
count: 10
speed_m_s: 1.5
stations:
- id: "S1"
node: 30
type: pick
concurrency: 2
orders:
generation:
type: poisson
rate_per_hour: 300
policies:
task_allocation: nearest_idle
station_assignment: shortest_queuewaremax run my_scenario.yaml -o results/waremax compare scenario.yaml \
--param policies.task_allocation=nearest_idle \
--param policies.task_allocation=least_busy \
--param policies.task_allocation=round_robin \
--runs 10waremax sweep scenario.yaml \
--param "robots.count=[10,15,20,25,30]" \
--param "policies.batching.max_batch_size=[3,5,7]"waremax stress-test scenario.yaml --load-multiplier 1.5Waremax is organized as a Cargo workspace with focused crates:
waremax/
├── src/ # CLI binary
└── crates/
├── waremax-core # DES engine, event scheduling
├── waremax-config # YAML parsing, validation
├── waremax-map # Graph topology, pathfinding
├── waremax-entities # Robots, stations, tasks
├── waremax-policies # Allocation, routing, batching
├── waremax-metrics # Collection and aggregation
├── waremax-sim # Simulation orchestration
├── waremax-testing # Presets, test utilities
└── waremax-analysis # Statistics, comparison
| Component | Technology | Purpose |
|---|---|---|
| Core | Rust | Memory-safe, high-performance simulation |
| Serialization | serde + YAML | Configuration and results |
| Graphs | petgraph | Map topology and pathfinding |
| RNG | rand + ChaCha | Reproducible randomness |
simulation:
duration_s: 3600 # Simulation length
seed: 12345 # Random seed for reproducibility
warmup_s: 300 # Warmup period (excluded from metrics)robots:
count: 10 # Fleet size
speed_m_s: 1.5 # Travel speedpolicies:
task_allocation: nearest_idle | least_busy | round_robin
station_assignment: nearest | shortest_queue | fastest_completion
routing:
policy: shortest_path | congestion_aware
congestion_weight: 1.5See full configuration reference for all options.
| Command | Description |
|---|---|
waremax run |
Execute a simulation |
waremax validate |
Check configuration |
waremax demo |
Run demo simulation |
waremax sweep |
Parameter exploration |
waremax compare |
Compare configurations |
waremax ab-test |
Statistical comparison |
waremax benchmark |
Performance testing |
waremax analyze |
Analyze results |
waremax list-presets |
Show available presets |
Contributions are welcome! Please read our Contributing Guide before submitting a pull request.
# Development setup
git clone https://github.com/example/waremax.git
cd waremax
cargo build
cargo testWaremax is licensed under the MIT License.