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
Share this project:

Updates