Inspiration
This algorithm was inspired by the video in the Ocado stand. The seemingly random movement of many robots in the warehouses suggested the use of stochastic methods to find an optimal solution.
What it does
The main piece of the algorithm is a set of rules that determines which items are compatible with a given item. It then employs a Monte Carlo inspired choice.
From the order of a costumer, a given object is chosen. Then, a new set of compatible objects is chosen, and the sampling process continues until we have a partition of the set in compatible non-overlapping subsets. This process is repeated several times, and the best solution is chosen.
In our approach, these optimal subsets would then be packed using a 3D bin packing algorithm (in particular, we attempted to implement Crainic et al., 2017), but unfortunately, the lack of time prevented us from finishing it.
How we built it
The algorithm is completely built in Python (although, for performance, some routines could be easily written in C/C++ or Fortran, with a very significant speedup).
Challenges we ran into
Our main challenge was the lack of organization and coordination, a clear result of none of us having a background of Computer Science - indeed, for this matter, quite the contrary: we are all quite used to code by ourselves. In this way, most of the time was spent interfacing pieces of codes, and developing routines that didn't correctly interfaced with each other.
On the other hand, we didn't start tackling this project from the beginning (we also toyed with a different project, based on NLP), so when we started we were already quite tired.
Accomplishments that we're proud of
We are proud that, despite all the loose ends, our code still shows some kind of optimal performance, and with beautiful simplicity. And we are confident that, with some more time (and rest), it could become a competitive solution of the problem.
What we learned
Although we don't have any hopes (nor intention) to win, this project has indeed been very constructive for our future in software development. We have learnt that it is very important to spend as much time as necessary ensuring that everyone has the same concept to solve the problem, and set from the very beginning a common data structure for the data manipulations (in fact, our coding time would have halved, had we decided to only use Pandas dataframes).
In general, it is also very constructive to work in a team with different skills and backgrounds, as it brings us from the academic environment we are used to, to the real world of tech industry. We are confident that this will improve as we participate in more and more hackathons.
What's next for TheBoxIsLava
Due to lack of time, we weren't able to completely implement an algorithm for 3D bin packing (although we almost succeeded in this deed). With the addition of a simple function for this process, TheBoxIsLava can easily handle realistic situations.
On the other hand, we also came up with a way to make the Monte Carlo process much more powerful, by combination with reinforcement learning. If we had more time, we think that the optimal solutions for large orders would be much better.
Log in or sign up for Devpost to join the conversation.