Зачем прогнозировать спрос перевозок на железной дороге и какие особенности построения таких прогнозов важно учитывать?

Всем привет! Меня зовут Шамиль, закончил МФТИ в 2018 году, сейчас я руковожу продуктом «Прогнозирование спроса» в Первой грузовой компании. До этого на протяжении 5 лет управлял различными ML продуктами и проектами. В статье расскажу про уникальный для себя опыт решения задачи прогнозирования спроса в ж/д перевозках, опишу бизнес потребность в продукте и процесс постановки задачи. Поделиться всеми нюансами в одном тексте не получится, поэтому про техническую реализацию продукта и другие детали мы с командой расскажем в следующих материалах. Смело оставляйте свои комментарии и вопросы, они лягут в основу остальных статей про продукт.

Статья написана совместно с моими коллегами - Павлом Докучаевым (@Pauldok) и Леонидом Зверевым (@QualityControl).

Вводная. Как устроен бизнес ж/д грузовых перевозок в России

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

По железной дороге выгодно провозить на длинные расстояния, что очень актуально для РФ
По железной дороге выгодно провозить на длинные расстояния, что очень актуально для РФ

Железнодорожная отрасль достаточно консервативна, так как за всю историю своего существования находилась под контролем государства вне рыночного поля. Всё изменилось с созданием частных вагонных парков и независимых операторов в 2008г.

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

Первая грузовая компания – ведущий частный оператор на рынке железнодорожных перевозок. Компания управляет парком из около 100 тыс. вагонов и активно занимается цифровой трансформацией бизнес-процессов: например, оптимизирует ремонты и движение вагонов по железной дороге, упрощает и ускоряет взаимодействие с клиентами. Почему строить математические модели важно в любых отраслях, даже самых консервативных, можно прочитать в статье Top Ten List of Lame Excuses for Not Quantifying Uncertainty — The Flaw of Averages.

С индустрией разобрались. Теперь о постановке задачи. Что мы хотим сделать

Нам важно, чтобы наш вагон постоянно ездил и зарабатывал деньги. Для этого надо сократить порожние перевозки (это такие перевозки, при которых вагон едет пустым от станции разгрузки до станции погрузки) и находить наиболее прибыльные перевозки.

Для достижения цели необходимо уметь решать три математические задачи:

  1. Расчет оптимальной ставки (стоимость перевозки одного вагона).

  2. Прогнозирование спроса, что применительно к нам означает прогнозирование грузопотоков и вагонопотоков.

  3. Оптимизация расходов, путем сокращения порожнего пробега.

Каждой из этих задач в ПГК занимается своя команда. Сегодня мы поговорим про вторую задачу – прогнозирование спроса, которую решает моя команда с помощью ML-моделей.

Входные данные

Основные входные данные для нас – это:

1. Данные о перевозках вагонов на целевом уровне, то есть детализация перевозок в формате:

  • Клиент,

  • Тип вагона,

  • Перевозимый груз,

  • Станция отправления,

  • Станция назначения.

2. Экспертные маркетинговые оценки.

3. Статистика по рыночной стоимости перевозимых грузов.

4. Данные по контрактам с клиентами.

Результат: прогноз минимального и максимального объемов перевозок на целевом уровне.

В России порядка 5 тысяч наименований перевозимых ж/д грузов, а также порядка 4,1 тысяч станций, на которых могут загружаться либо разгружаться вагоны. Каждый набор параметров на целевом уровне для нас – это отдельный временной ряд. На текущий момент для двух типов вагонов мы выделяем более 1 млн таких временных рядов, по каждому из которых необходимо выдать прогноз минимального и максимального спроса.

 Пример формата таблицы, в которой мы выдаем наш прогноз:

Выходные данные

Решая нашу задачу по прогнозированию спроса, на выходе мы получаем прогнозы минимального и максимального объема спроса.

Расскажу, что включает в себя каждое из этих значений.

Минимальный объем спроса – это перевозки, которые мы обязаны выполнить. Такие обязательства фиксируются в долгосрочных контрактах. Например, условия контракта могут включать в себя конкретное количество вагонов, которые мы предоставляем клиенту каждый месяц.

Максимальный объем спроса - это все доступные на рынке перевозки, которые мы делим с другими перевозчиками. В максимальный объем спроса не включаются:

  1. Перевозки, которые клиенты совершают собственными вагонами. Такие перевозки называют «кэптивными».

  2. Перевозки, которые стабильно из месяца в месяц осуществляют другие операторы.

Зачем нам нужны эти прогнозные значения, почему просто не прогнозировать одно значение наиболее вероятного спроса?

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

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

Как мы решаем задачу

1. Строим прогнозы. Иерархическое прогнозирование

Перейдем к самому прогнозированию. Мы используем парк, включающий линейные и древесные модели различной архитектуры:

  • Ridge regressor,

  • Lasso,

  • XGBoost,

  • Random Forest и др.

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

Процесс повторяется на более крупном уровне гранулярности для корректировки результатов, полученных на разреженных временных рядах нижнего уровня.

Исследуются альтернативные подходы к построению прогнозов, учитывающие не только один временной ряд, но и весь имеющийся объем данных. Прорабатывается архитектурная возможность их соединения.

2. Учитываем экспертную информацию, которая еще не успела повлиять на исторические данные, но уже известна нам из внешних источников

Изменение направлений перевозок грузов, временное закрытие станций, ожидаемое изменение объема перевозок сегментов грузов в связи с макроэкономическими факторами – все это для логистического бизнеса весьма нормальные явления. Но эти явления не сразу можно считать в исторических, хоть и ежедневно обновляемых, данных о перевозках: алгоритм может неверно интерпретировать внезапные спады или увеличения перевозок по отдельным направлениям. Благо в компании работают эксперты, которые могут дать информацию о наступивших, либо предстоящих изменениях на рынке перевозок в качестве вводных данных нашему продукту.

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

Нашей задачей было систематизировать сбор всей этой информации, а также придумать как перевести его в читаемый для алгоритмов вид. Так мы пришли к созданию сущности «Бизнес-правила» – это вводные от экспертов, которые поступают на вход в наш продукт по прогнозированию спроса и учитываются при построении прогноза. Например, эксперты говорят, что в следующем месяце на 5% вырастет объем перевозки щебня. Мы прописываем «Бизнес-правило», что для сегмента груза «Щебень» в следующем месяце будет рост 5%. Продукт считывает эти данные и корректирует прогноз.

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

Заключение

Надеюсь, что статья была полезной. В следующий раз мы с командой расскажем о технических деталях решения: интеграции БД, деплой, Airflow, мониторинги и так далее.

Если у вас остались вопросы или хотите обменяться опытом – смело пишите мне в telegram @musin_shamil.

Комментарии (1)


  1. ptr128
    19.08.2023 20:52

    Работая на одного из Ваших конкурентов (НТК), больше проблем составило прогнозирование времени в пути (2.5 миллионов временных серий) и оборота (погрузки и разгрузки). А вот задачу оптимизации решаем средствами gurobi.

    А вообще, интересно было бы пообщаться, так как решаемые задачи достаточно близки.