Inspiration
We are Physics students from the Universitat Autònoma de Barcelona (UAB) who have come to HackUPC. While we were attending the opening ceremony we came across Mecalux, who offered a really interesting challenge on optimizing the space occupied by bays in a warehouse in a way that we could minimize their cost.
We assumed that this problem could be taken on as a potential energy calculation in such a way that we could model this warehouse as it implied taking a more intuitive approach for us. This way, we made a "RandomWalk" which could learn from its mistakes and can make up for them.
What it does
We have the perimeter of a warehouse, which has been saved in a csv file, and we will fill all of this space with the type of bays that the coder needs with all the restrictions (such as obstacles, the ceiling height, the gap between bays and the limits of the warehouse itself) it offers.
The code will return a plot of the distribution that minimizes the cost in a way that the user can have the most efficient space occupation possible with the types of bays provided.
How we built it
We firstly did a layout of the code in Python, in a way that we described a Hamiltonian to have an expression of the energy of the system in a way that we describe the quality factor as a potential that our bays are linked to:
$$ Q = \left(\frac{\sum_{bay} P_i }{\sum_{bay} L_i}\right)^{2-\frac{\sum_{bay} A_i}{A_{warehouse}}} = A^{2-R}$$
With this said, we would only be in need to describe a Hamiltonian that could predict the energy that our system would have with the following expression:
$$ H (q) = Q(A,R) + \sum V_{obs} (q_i) + \sum V_{walls} (q_i) + \sum V_{bays} (q_i) \quad \text{Where } q_i = (x_i,y_i, \theta_i)$$
This way, we could do a lot of simplifications and just focus on the maximization of the space given to place the largest amount of bays.
There were also ways to provide the best layout of the bays such as giving them an "attractive potential" V(bays).
To know more about the theory behind our project, please click the link here to a LaTeX document
Challenges we ran into
The most difficult challenge that we have ran into while making this project is optimizing it, which is why we have given the final result in the programming language C/C++ and not Python as we originally intended.
Also, rotating the bays a certain angle to seemingly fit better sometimes was worse than not doing so at all. We felt that this was often counterintuitive.
Accomplishments that we're proud of
The amount of warehouses that we have managed to optimize despite their weird shapes.
What we learned
We have learnt to approach real life problems with solutions that we already know and are way more comfortable working with given the skills that we have developed by ourselves while studying our respective careers.
What's next for warehouse_optimizer
The next upgrade that we would like to give this code is a more intuitive UI in order to satisfy all of the needs that our coder might have. We would also like to add a way to visualize the path taken by the program to reach the potential energy minima, as well as the actual energy values.
Log in or sign up for Devpost to join the conversation.