-
A 2D visualization of the displayed bays solution in a warehouse returned by our algorithm.
-
A 3D visualization of the desplayed bays solution in a warehouse returned by our algorithm.
-
A 3D visualization of the displayed bays solution in a warehouse returned by our algorithm, now filled.
-
A 2D visualization of X-Z ceiling of the warehouse (limits on the altitude of it).
Inspiration
We think to do this project because it was a challenge for us to get the better setting of bays in a warehouse. We found it relevant how we could construct this algorithm that would find an optimal solution to the problem. We also found the idea of visually showing the warehouse with the bays interesting.
What it does
Our program visualizes the warehouse, the bays, the obstacles where bays are not permitted to be set, and the limit of the height of the warehouse. It computes the optimal positions and rotations for the bays, which is the core thing of the project.
How we built it
We have built it in Python mainly as a terminal program, but with C++ to execute the algorithm with OpenMP API to exploit parallelism. We have also used shell scripts to call the Python files to make the executions of the causes more suitable for users. We developed a greedy algorithm to get the best possible moves, then we applied a Simulated Annealing to further improve our program, and we also used parallelism to make the algorithm faster.
Challenges we ran into
At first we did not know well which kind of algorithm use. The same happends with the implementation of the parallel regions and how to use openMP API. Those difficulties were solved by a deep searching.
Accomplishments that we're proud of
We are proud of our algorithm, we think that we gave good metrics so the algorithm prioritates one type of solution and also discard others.
What we learned
We have learned to distribute tasks among our team and to see what each team member offers best. We also have learned how to exploid paralelism (taking into account CPU manegement and data sharing problem). Finally, we also descovered ways to solve this type of problems not only using backtracking (which is like the "basic" way to implement this type of problem); for instance: A*, genetics algorithms, greedy, Simulated Annealing, Hill Climbing and so on (bolds ones are the ones that we used. The others are not too much suitable for this problem).
What's next for HackUPC 2026: Warehouse Optimizer for Mecalux Company
To improve the 3D visualization of the warehouse and to launch it in a web ecosystem. The solution does not take into account that the warehouse with the bays must be accessible. This means that, with at leats the gaps, someone in the warehouse may be able to access all the bays (all bays are connected).
Log in or sign up for Devpost to join the conversation.