Команда «MISIS and more» заняла первое место в онлайн-хакатоне Magnetic Code Hackathon, посвященном решению задач для одного из крупнейших ритейлеров России — сети магазинов Магнит. Участники создали мобильное приложение с удобным интерфейсом, которое поможет сотрудникам склада быстро получить лучший вариант размещения коробок с товаром на палете.
Участникам необходимо было решить задачу распределения определенного количества коробок так, чтобы объем тары использовался оптимально, а товары лежали наиболее плотно. В результате расчета должна была появиться схема размещения коробок с учетом возможных вращений и с указанием порядковых номеров загрузки.
В состав команды вошли опытные участники, уже неоднократно создававшие цифровые продукты как для вуза, так и для сторонних компаний: Илья Брегман (ИТКН, 2 курс), Геннадий Альхеев (ИТКН, 3 курс), Анастасия Зубченко (ИТКН, 2 курс), Марк Вишневский (выпускник НИТУ МИСИС, студент университета Иннополис), Евгений Гришин (студент ПГУ).
«Трое backend-разработчиков на Java отвечали за разработку алгоритма, налаживание процесса сортировки и проработку системы парсинга json файла, приходящего от WMS. Frontend-разработчик на Flutter занимался организацией отображения данных с бэкенда, а также творил чудеса с различными вариантами визуализации размещения коробок на палете. Я, как UX/UI-дизайнер, работал над проработкой удобного интерфейса, а также презентацией на защиту проекта. В результате мы должны были получить кроссплатформенное мобильное приложение», — рассказал капитан команды Илья Брегман.
Участники приняли решение, что выбор алгоритма из трех возможных вариантов должен происходить динамически в зависимости от загруженных данных. Такой подход позволяет компенсировать недостатки каждого отдельно взятого алгоритма и всегда находить оптимальный вариант упаковки. Алгоритм полного перебора Brute Force, например, генерирует идеальное решение, но занимает очень много времени. LVFF — итеративный поиск самого объёмного объекта и установка в любое возможное место. LAFF — алгоритм, основанный на идее упаковки объектов с большой площадью в первую очередь.
Самой интересной частью проекта была визуализация. За время хакатона у ребят возникло целых три идеи того, как можно отобразить результат работы предложенного алгоритма, но выбрать оптимальный вариант помогло время на отдых.
«Первой идеей было создать полноценную 3D-модель получившегося расположения коробок на палете. Однако при проработке данного варианта мы столкнулись с тем, что приложение очень долго прогружало модели. Вторым вариантом стало создание четырёх проекций палеты, заполненной коробками. На первом экране — вид слева, справа и спереди, на втором — пошаговое заполнение палеты с видом сверху. Данный вариант работал довольно быстро, однако ни о каком удобстве не могло идти и речи. И вот, когда мы оказалась в идейном тупике, было принято решение выделить пару часов времени на отдых. Как раз в это время младшая сестра одного из участников команды смотрела TikTok, и коллега, бросив взгляд на видеоряд, мелькавший на экране смартфона, побежал рассказывать внезапно возникшую идею применения „ложного“ 3D — изометрии. Таким образом, мы одновременно и сделаем визуализацию более понятной, и сохраним скорость работы приложения», — поделился историей возникновения идеи Илья Брегман.
В результате у команды получился концепт мобильного кроссплатформенного приложения, позволяющего сотруднику склада увидеть необходимое расположение коробок. Пошаговый прогресс позволяет вернуться на шаг назад и уточнить детали. Так как в ТЗ допускалась возможность вращения коробок, то для определения стороны участники создали отдельную текстуру в виде линии разреза, которая обозначает верх. Также для большего удобства приложение показывает название, габариты и тип товара, который в текущий момент «падает» на палету.
Участникам удалось добиться высокой скорости работы алгоритма. Файл, содержащий информацию о 56 коробках с товарами, он обработал всего за три секунды.
Все участники команды являются членами студенческого хакатон-клуба НИТУ МИСИС, развивающего платформу IT at MISIS (ITAM) для поддержки студенческих инициатив в сфере информационных технологий.