Inspiration

Inditex-tech propose a real industrial challenge with strong requirements and difficulties. After learning more about what we were asked, we started thinking on how to resolve the problem. Most of our inspiration came from the work and studies we had done in the university. We really enjoyed using what we had learned these years.

What it does

The main idea is to control all the flow of the algorithms by creating tickets. When a box has to leave, a ticket is created, same with the boxes that enter. "The director" (the name of our algorithm) then chooses the less costly action. We did it so it is similar to a thread-task implementation. As threads we have the shuttles that move boxes, and for tasks we have tickets to move boxes.

We didn't forget the second algorithm: we explore the states of the silo to find the best distribution of boxes. Now, as boxes enter, we decide which is the best place to put them.

How we built it

The "director" algorithm mainly does a greedy algorithm to choose the best local decision based on the cost of the tickets it has received.

The more complicated one is the distribution algorithm. For exploring the different silo states we implemented LNS (Large Neighborhood Search), which explores different configurations of boxes with operators of "destroy" and operators of "repair". We give the LNS algorithm an initial state based on different possible scenarios: blocked silo, semi-empty silo...
We understand the silo as a matrix of destinations, as each box is equivalent if it goes to the same place. For the algorithm to get quick convergence, we collapsed aisles and sides into only x, y, z coordinates.

We also built an interface to see how the algorithm works: how the aisles are occupied, how the shuttles move, how the pallets are loaded. We provide a focused aisle view and a 3D view!!

Challenges we ran into

The interface resulted in a very pretty way to show our work, but it was a great challenge. We didn't have the knowledge to build a correct frontend-backend project. Our backend was great, the interface was good, but the connections between the real simulation data and the UI were the biggest challenge we faced. We had to refactor most of our work to build a new interface. Thankfully, all the aesthetic decisions we took were maintained.

Accomplishments that we're proud of

How beautiful our interface turned out. A clear way of showing all boxes. It was hard but worth it.
Also, our final metrics were quite good. Pretty close to 1000 boxes/hour and sometimes, in some configurations, we reached more than 1000 b/h!!!

What we learned

Mostly how to create a real front-back project with live data to show. As for the algorithm part, we didn't know LNS, so it was a fun approach to a more efficient algorithm.

What's next for SiloHacking

Most of the work is done in Python, which is slow. We should refactor the main algorithm into C++ or directly migrate all the code to a C++ project. Also, if we take into account that real-world silos are much bigger, we would try to do a parallelized version of LNS, which is more complicated and hardware-demanding.

PD: We only use AI to code, not to write this. :)

Built With

Share this project:

Updates