Склад фулфилмента получил модель, которая проверяет график смен перед распродажей, и ИИ-агента, который прогоняет сценарии и предлагает варианты расстановки людей. Руководитель смены работает с ними в обычном веб-интерфейсе. Всё это собрал Евгений Росляков. С 2016 года он делает сайты и рабочие веб-инструменты для бизнеса. Оформлен как самозанятый, подписывает договор, а для юрлиц готовит закрывающие документы. Принимает проекты в Москве, работает и удалённо.
Склад принадлежит логистическому оператору и обслуживает несколько интернет-магазинов. В обычные недели всё идёт ровно. Перед большими распродажами поток заказов растёт скачками, и никто не знал заранее, сколько человек ставить на смены и где встанет работа. Решения принимали по памяти: «в прошлый раз хватило двадцати человек». Потом оказывалось, что зона упаковки забита, а на сборке люди простаивают.
Ошибки стоили денег. Простой оплачивается, а заказы, которые не успели собрать в срок, магазины штрафуют или отменяют. Склад растёт: приходят новые клиенты, и старый опыт перестаёт подходить.
У логистов была своя модель в MATLAB. Её сделал один аналитик, работала она только на его компьютере, вводные правились прямо в коде, и к ней обращались раз в год.
Руководителю смены нужен был инструмент, чтобы за час самому проверить план, а не ждать аналитика неделю, и чтобы он подсказывал, какой график выбрать.
Сначала я разобрал старую модель. Выписал, что она считает: приход заказов по часам, зоны сборки, переходы между ними, упаковку, отгрузку. Сверил логику с руководителями смен. Правила, известные всем на складе, были зашиты в код неточно, их поправили.
Модель на MATLAB переписана на Python. Склад в ней проживает смену шаг за шагом по минутам: заказы приходят, встают в очереди у зон, обрабатываются сотрудниками. Состояние зон хранится в массивах NumPy, а прогоны с разными вводными считаются векторно, так что сотни вариантов занимают минуты. Имитационное моделирование теперь запускается без MATLAB и без аналитика. Результаты сверяли со старой версией на одних и тех же данных, пока цифры не сошлись. MATLAB-код остался у аналитика как эталон для проверки.
Параметры модели взяты из истории: заказы за два года, сканы на сборке и упаковке, время простоев. Это миллионы строк, и Большие данные в таблицах руками не разобрать. Поэтому из них автоматически считаются распределения: сколько строк в заказе, сколько уходит на упаковку, как меняется поток в дни акций.
Поверх модели работает ИИ-агент. Он получает прогноз заказов на распродажу и сам запускает серию сценариев с разным числом людей по зонам. Смотрит, где копится очередь, и предлагает два-три варианта графика с коротким пояснением, чем они различаются. Агент действует в строгих рамках: он вызывает только модель и может менять только число людей по зонам и часам. Все цифры в ответе берутся из расчёта, а не придумываются языковой моделью. Назначать смены агент не может, решение принимает человек.
Интерфейс для руководителя смены сделан на Streamlit. Он загружает прогноз, двигает ползунки по зонам, видит график очередей по часам и сравнивает варианты рядом.
Подготовка к распродаже выглядит иначе. Руководитель смены сам загружает прогноз, за несколько минут просматривает сценарии и приходит на планёрку с графиком, который можно обсуждать. Раньше на планёрке спорили на ощущениях, теперь спорят о конкретных допущениях.
Модель показала то, о чём не думали. Узким местом в распродажу оказалась не сборка, а столы упаковки и выход к отгрузке. Часть людей на пиковые часы перенесли из сборки в упаковку, и очередь стала расти медленнее.
Аналитик перестал быть единственным, кто может запустить расчёт. Код лежит в общем репозитории, вводные правятся через интерфейс, а не в тексте программы.
Модель настроена на прошлые распродажи и хорошо считает типичные нагрузки. Если случится небывалое, например сорвётся поставка или встанет конвейер, прогноз придётся перепроверять вручную. Поэтому ИИ-агенты в таком проекте работают советчиками, а последнее слово остаётся за логистом.
Обсуждаем следующий шаг: подтягивать фактические данные прямо в день акции и пересчитывать график по ходу смены. Пока этого нет, модель работает на плановых данных.
Если смены на вашем складе или в цехе планируются «на глаз», черкните мне через freelance.ru: обсудим, какую модель собрать.