Inspiration
Modern logistics systems face a fundamental challenge: how to efficiently store and retrieve massive volumes of items in constrained physical spaces while minimizing operational time. Inspired by real-world automated warehouses, we wanted to model and optimize the decision-making behind these systems.
This project explores how intelligent algorithms can dramatically improve throughput in a multi-dimensional storage environment where movement is costly and constraints (like depth and access) matter.
What it does
Our solution simulates an automated silo warehouse system where boxes are stored and retrieved using shuttles. The goal is to maximize throughput (pallets/hour) by minimizing total operational time.
The system:
Stores incoming boxes based on destination-aware heuristics Groups boxes into pallets (12 boxes per destination) Dynamically selects which boxes to retrieve based on cost and priority Handles depth constraints (Z=2) through intelligent relocation of blocking boxes Balances workload across multiple shuttles
We provide key performance metrics such as:
Throughput (pallets/hour) Average time per pallet Median pallet completion time
How we built it
We developed the system in C++ using an object-oriented architecture:
Silo: represents the warehouse structure and manages box placement Solver: contains the core optimization logic Shuttle: models movement and time cost CsvReader: handles input data
Key algorithmic decisions:
A cost-based heuristic for insertion that considers both immediate and future retrieval cost A dynamic priority system that selects the next box globally across pallets A time-aware selection strategy using availableAt + cost instead of just distance A relocation mechanism to access blocked boxes in depth (Z=2) Limiting to 8 active pallets as per system constraints
Challenges we ran into
Designing a heuristic that balances local vs global optimization Handling Z=2 depth constraints, which required implementing relocation logic Avoiding greedy decisions that reduce short-term cost but harm overall throughput Parsing and supporting multiple input formats (initial state + incoming boxes) Ensuring the system scales and behaves correctly under stress datasets
Accomplishments that we're proud of
Successfully modeling a realistic warehouse system with constraints Implementing dynamic pallet prioritization (not fixed order) Supporting both initial state + real-time incoming boxes Achieving strong throughput results with optimized heuristics Incorporating relocation logic for deeper storage layers
What we learned
The importance of global optimization over local greedy decisions How small heuristic changes can significantly impact system performance Practical challenges in simulating real-world logistics systems How to model time-dependent systems using event-based logic The trade-offs between simplicity and optimality in algorithm design
What's next for IndiAlgorithm
Further optimize insertion using predictive pallet completion models Introduce machine learning to improve decision-making dynamically Simulate more realistic constraints (multiple entry points, congestion, etc.) Improve visualization of the silo state and shuttle movements Benchmark against alternative strategies and optimize further
Built With
- algorithm
- c++
- csv
- debug
Log in or sign up for Devpost to join the conversation.