Как стать автором
Обновить
282.64
Ozon Tech
Команда разработки ведущего e‑com в России

Математика на складе. Как оптимизировать хаос

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров2.5K

Привет! Меня зовут Анна Дубенюк, я выпускница и преподаватель ФКН ВШЭ, автор канала всё предельно, и недавно было 3 года, как я работаю в Ozon Tech. За это время из пары математиков в команде разработки мы выросли в отдельную команду RnD, помогаем оптимизировать процессы, находим точки роста и снижаем неопределённость с помощью математического моделирования и исследований.

В статье приведён обзор того, как математика помогает в реальном мире для оптимизации складских процессов. Причём именно та математика, которая не внутри модных нейронок, а более классические подходы, которым сейчас в университетах уделяют всё меньше внимания. Если из всей статьи вы запомните только одну мысль, то пускай это будет тезис, что математика — это не только ML.

Про склад

Склад — большая фабрика, где работают тысячи людей, происходят сотни процессов одновременно. Складов много, и они разные. Есть склады с крупногабаритным товаром, там хранятся телевизоры, холодильники, ездят машинки — ричтраки. Есть склады с мезонинным хранением — шкафы с ячейками, где хранятся небольшие товары. Все эти товары надо принимать, размещать, подбирать, а ещё иногда сортировать и упаковывать.

За последние два года логистическая инфраструктура Ozon увеличилась более чем в 3 раза и на сегодняшний день превышает 3,5 млн квадратных метров. В России и странах СНГ уже действуют 47 фулфилмент-центров, более 170 сортировочных центров и более 50 тысяч пунктов выдачи заказов. Чтобы управлять всеми процессами на складе, существует складская система, которая, помимо большого числа функциональностей, формирует и назначает задания на сотрудников. Именно эти процессы и можно оптимизировать благодаря алгоритмам и математическим исследованиям.

Про математиков на складе

Как вообще работают математики в команде? На рынке есть проблемы с неймингом специализаций, у нас работают математики-разработчики. Это сильная команда из выпускников математических/IT-факультетов, многие бывшие олимпиадники. Живём по спринтам, проводим три командные встречи в неделю: планирование, статус и ретро. Раз в месяц есть MathSync — мини-конференция для внутреннего обмена опытом, где каждый математик рассказывает что-то самое интересное, по его мнению, что удалось сделать за месяц.

С течением времени проектов становится всё больше, число заказчиков растёт. Выше приведены лишь примеры нескольких наших задач. Если начинали мы только с оптимизации подбора на больших складах — фулфилментах, то с течением времени потребность в исследованиях появлялась как для других процессов, так и на других объектах, разнообразие подходов также росло из-за появления новых типов задач.

Всегда ищем баланс между глубиной исследования и сроками. К нам приходят с проблемами, инструмент их решения зависит от задачи. Благодаря прототипированию мы помогаем не потратить ресурсы на создание неэффективного решения. Так мы экономим ресурсы разработки. Не надо решать проблему, которой нет. А если проблема действительно есть, её надо решать подходящим способом.

Про подходы

Решения разные — применяем и оптимизационные модели, и классическое ML-моделирование, и методы статистического анализа, в том числе для оценки внедрений через switchback-эксперименты, используем имитационное моделирование, работаем с графами, естественно, обрабатываем и визуализируем данные.

Оптимизационные модели

Про оптимизационные модели многие слышали в университете, но тогда это казалось чем-то забытым и ненужным. Но они продолжают нас окружать.

Оптимизационные модели — инструмент экономико-математических методов для решения прикладных задач, который позволяет достичь минимума или максимума какого-нибудь количества в установленных ограничениях.

Обычно необходимо достичь максимума прибыли (Profit Net Loss, PNL) или минимизировать используемые ресурсы материалы, энергию, пробег транспортных средств, количество человеко-часов.

Ограничения можно воспринимать как набор правил, которые ограничивают пространство решений. Ограничения препятствуют получению максимального (минимального) значения целевой функции, например, не дают сократить затраты до 0 или достигнуть бесконечно большого дохода. Обычно ограничения возникают в результате ограниченного бюджета, ограниченного времени выполнения проекта, ограниченных производственных мощностей, вместимости машин, а также из-за различных требований к производственному процессу, допустимым объёмам затрат и т. д.

Оптимизационные модели широко используются в двух близких научных дисциплинах: исследование операций (от англ. operations research) и теория принятия решений (от англ. management science). Направления занимаются оптимизационными задачами, возникающими в экономике, производстве, политике и других сферах. Задачи машинного обучения (ML-моделирование) — частный случай оптимизационных моделей, где целевая функция заранее определена: например, линейная регрессияминимизация MSE — оптимизационная модель безусловной оптимизации.

Для построения оптимизационных моделей есть актуальный софт — солверы, они активно развиваются. Например, в марте 2025 NVIDIA анонсировала запуск солвера cuOpt в Open Source в этом году. Уже в Open Source активно используется OR-Tools от Google, у них есть отдельные модули для многих задач дискретной оптимизации (VRP, расписание и т. д.), хорошая документация. Именно с помощью оптимизационных моделей решается большинство задач по управлению процессами на складе.

Примеры использования оптимизационных моделей

Батчинг — определить, когда и как собирать товары так, чтобы сотрудники меньше ходили. На складе сотрудники ходят не за одним товаром, который кто-то заказал, а за «пачкой» товаров, хранящихся рядом с близким дедлайном отправки. Эта «пачка» называется батчом, а группировка товаров в задания — батчингом. На конференции CodeFest я 40 минут рассказывала про изменение теории мысли о том, как правильно решать задачу батчинга. Внедрение батчинга с маршрутами сократило пробеги сотрудников на 20-30% в зависимости от склада.

Стаффинг — определить, кому какое задание лучше выдать, исходя из местоположения сотрудников и дедлайнов по заданиям. Задачу можно рассматривать как Capacitated Vehicle Routing Problem, такое «усложнение задачи коммивояжёра». Это задача маршрутизации с ограниченной грузоподъёмностью, где нужно объехать все узлы из депо с наименьшими затратами, не превышая вместимость транспортных средств.

Переход от классических сущностей в CVRP к используемым сущностям в случае задачи стаффинга:

  • Транспортные средства — подборщики.

  • Узлы — задания на подбор.

  • Расстояние — таблица «task_trom — task_to — dist», в которой содержится расстояние между последней и первой точками всех заданий.

  • Депо — синтетическая точка, расстояние от которой до любого узла ноль (то есть можно начать и закончить маршрут в любом узле).

  • Вместимость — максимальное количество заданий для одного подборщика.

  • Приоритетность заданий реализуется через убирание рёбер.

При оценке стаффинга мы получили, что время от взятия задания до получения тары сокращается по медиане на 27-42% за счёт того, что сотрудники реже меняют сектор и блок между заданиями. Количество смен секторов сокращается на 21-31% в зависимости от склада.

Слоттинг — определить, куда размещать товары так, чтобы минимизировать пробег размещенца и чтобы в ячейках лежало как можно больше одинаковых товаров. Чем меньше разных товаров будет лежать в ячейке, тем проще подборщику потом будет найти нужный. Также в целевой функции учитываем число рядов и близость ячеек, чтобы не заставлять ходить размещенца слишком далеко.

Внедрение слоттинга на стадии пилота уже показывает положительный эффект: если подбираемый товар размещен по слоттингу, то в среднем в ячейке, где находится этот товар, больше товаров в целом, при этом среди них меньше различных SKU и больше нужного товара. Это приводит к снижению времени поиска на 7% и уменьшению ошибок при подборе из ячейки с 13% до 8%.

Конфигурация шкафа — определить, сколько и каких ячеек должно быть в шкафу, чтобы максимально утилизировать пространство склада. Товаров много, они разных размеров, условно «собери состав гардеробной».

Оптимизация конфигурации шкафа с применением жадного алгоритма и оптимизационной модели позволила сократить число шкафов для размещения товаров, рассматриваемых категорий, в среднем на 43% от изначального числа.

Мы сделали отдельный курс по оптимизационным моделям — от общего к частному, но пока он только для наших сотрудников, надеемся, что сможем его выложить во вне. Или приходите работать в Ozon Tech :)

Еще больше математики: симуляции, гипотезы, графы

Во многих процессах возникает вопрос: что будет, если сделать вот так? То есть взять текущую систему, внести в неё изменения и оценить результат. Причём хочется получать результат без реальных изменений для минимизации рисков. Для ответа на такие вопросы мы используем имитационное моделирование. Оно бывает трёх типов в зависимости от уровня абстракции: системная динамика, дискретно-событийное моделирование и агентное моделирование. В случае склада нам интересно дискретно-событийное, это как раз то, о чём вы могли слышать в универе слова «система массового обслуживания».

Дискретно-событийное моделирование — это метод моделирования динамических систем, в которых состояние системы изменяется только в дискретные моменты времени, называемые событиями, а между событиями система остается статичной. Как раз эта область математики помогает смоделировать работу системы и рассчитать, какое количество ресурсов необходимо на каждом из этапов. Например, сколько кассиров нужно в супермаркете, чтобы клиенты стояли в очереди не слишком долго. А в случае склада — сколько нужно приёмщиков, размещенцев и товароведов, чтобы у всех была работа. Такой подход помогает «проиграть» ситуацию, построить модель «что, если».

Другой полезный инструмент — проверка гипотез. В нём возникает потребность как при определении значимости бизнес-проблем, так и на этапе оценки экспериментов после внедрения решений. Например, внедрили новый алгоритм батчинга — начали по-новому формировать задания на подбор. Вопрос: стало лучше или хуже, это статистически значимые изменения? В стандартных A/B-экспериментах можно разделить выборки по пользователям: одним показывать старый экран, другим — новый и оценивать конверсии. В случае работы со складом нельзя выдавать одним сотрудникам задания, сформированные новым алгоритмом, а другим — задания, сформированные старым алгоритмом, так как будет сетевой эффект: группы будут влиять друг на друга. Чтобы этого избежать, мы проводим switchback-эксперименты, сплитимся по времени и складам. В этой серии статей можно подробнее почитать о сетевом эффекте и switchback.

В складских процессах мы активно используем подходы из теории графов. Граф описывает структуру, состоящую из вершин и рёбер, соединяющих их между собой. В случае склада графы используются для определения пробегов рабочих внутри склада. Пробег — это траектория сотрудника в рамках задания между ячейками.

На складе есть своя топология, и это не раздел математики о непрерывности, связности и компактности (и тут могла бы быть шутка про «ты такая компактная — ты хочешь сказать, что я замкнутая и ограниченная»). Топология склада — вложенность сущностей склада, где что находится. Склад разделён на зоны, внутри зон есть секторы со шкафами, в шкафах есть ячейки. Обычно сектор содержит товары одной категории: сектор одежды, сектор воды, сектор кормов. Важно соблюдать товарное соседство, чтобы еда не оказалась рядом с химией, а корма и воду размещают на первом этаже, чтобы они не просыпались/проливались на нижние этажи.

Есть и другие интересные применения графов. Например, при назначении сотрудников на разные виды операций (приёмка, размещение, подбор и т. д.) при наличии предпочтений такую задачу можно решать с помощью алгоритма Гэйла — Шепли как поиск устойчивых сочетаний.

И всё-таки про машинное обучение

Для большинства задач на складе классическое машинное обучение не подходит, так как в ретро-данных не существовало именно такой комбинации объектов, чтобы для них чётко и уверенно рассчитать оптимальную последовательность действий: что куда размещать, откуда собирать или на кого назначать. При этом есть несколько задач в складских процессах, в которых применяется ML.

Для предсказания времени и производительности задания строятся регрессионные модели. Это нужно как в моменте для распределения заданий, так и для определения значимости различных факторов на таргет, что больше влияет на производительность заданий: стаж сотрудников, вес или объём товаров, количество тары, количество товаров в ячейках или модель терминала сбора данных (ТСД — экран, с которым работает сотрудник). Такой data-driven-подход помогает определить точки роста в операционных процессах, более осознанно принимать решения по дизайну склада.

Также мы применяем обучение без учителя — к примеру, с помощью кластеризации сужается пространство выбора перед оптимизационными моделями. Например, для того чтобы слоттингу было легче определять нужные ячейки для размещения товаров, перед этим делается сегментация шкафов по заполненности с помощью поэтапных кластеризаций: AffinityPropagation и AgglomerativeClustering. Ниже приведена схема решения задачи сегментации сектора по заполненности с поэтапной кластеризацией. Возможно, когда-нибудь выйдет отдельная подробная статья об этой задаче :)

Вместо заключения

Прикладная математика — широкая область, позволяющая решать значимые задачи в реальной жизни. Оптимизационные модели, графы, switchback-эксперименты помогают управлять складскими процессами. Да, машинное обучение тоже используется на складе, но оптимальный способ решения всегда зависит от задачи, и на практике применяются далеко не только ML-подходы. Существует много полезных алгоритмов дискретной оптимизации и актуальный софт, можно начать со знакомства с документацией OR-Tools. Важно иметь широкую математическую базу — серебряной пули не существует.

Теги:
Хабы:
+35
Комментарии11

Публикации

Информация

Сайт
ozon.tech
Дата регистрации
Дата основания
Численность
5 001–10 000 человек
Местоположение
Россия