What it does
The algorithm first makes an initial solution in a greedy way as it is trying to minimize the costs by row while also maximizing space used and the loads obtained. Then it proceeds to do a local search in order to enhance this initial solution, where it tries a set of operators (add rack, remove rack, change one rack with another, etc.). It also has a random component added to it (LNS) which is capable of removing an entire region of the space and rebuilding it again with the said operators so that we can escape local minimums. Then we've also made a representation of the 2d space and the 3d space in a web so that the whole process can be more visual.
How we built it
We mainly used python for the solver, although we also added some optimizations and parallelisms so that the code could run smoothly. For the web we used javascript, HTML along with python.
Challenges we ran into
It was especially hard for us to make the web and the 3d representation as it was something we had never done before. We also had issues when trying to parallelize the code, as due to dependencies between threads, we obtained wrong results.
Accomplishments that we're proud of
We're proud of both the algorithm and the web we've as we were able to tackle all the challenges satisfactorily, and apart from that we are also very proud of the representation, as we believe that both the 2d/3d visualizations and the web make the algorithm come to life.
What we learned
We learned how to optimize and work with differents heuristics while parallelizing this process, and we also learned how to work with 3d visualizations on the web, as it has something we had never done before.
What's next for -
We would like to try to be able to parallelize the code further as there is still some work to do on that topic.
Log in or sign up for Devpost to join the conversation.