— Если вы такие умные, то можете сказать, какой вагон когда сойдёт с рельсов?

Задача была сформулирована одним из операторов железной дороги примерно вот в таком духе, но более русским и более железнодорожным языком. Первоначальная логика была в том, чтобы предсказывать, какой вагон по какому пути в какую погоду не надо пускать. Естественно, в реальности мы решили её не так, но вот таких случаев станет в итоге меньше:



Едет вагон. Он может быть в составе пассажирского или грузового поезда. В какой-то момент он одной парой колёс теряет сцепление с рельсом. Это состояние схода. На практике это значит, что останавливается всё движение на участке, выдвигается бригада с краном, чтобы этот вагон поднять. В совсем плохом случае экологическая или техногенная катастрофа. Естественно, это проблема для компании.

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

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


Сход вагона с этанолом с рельсов в США и его последствия.

Задача


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

Источники данных


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

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

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

По бригадам, обходчикам и другому персоналу данных просто нет.

По вагонам данные интереснее, по ним как раз есть очень хороший датасет:

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

Исследование известных сходов


В наших ограниченных наборах данных выстроилась следующая иерархия весовых коэффициентов:



Естественно, это отражает только часть реальной картины, но уже этих данных достаточно для первичной модели.

Эти сходы описывают только те ситуации, которые произошли без влияния внешних факторов, то есть по техническим причинам и из-за человеческого фактора. Это примерно две трети известных нам сходов вагонов. К примеру, речь про излом боковой рамы из-за сочетания усталости металла и неудовлетворительного содержания путей. Или путь был отмечен как чистый, бригада отчиталась про это, но по факту ничего не сделала. Нашёлся даже производитель, который два года подряд выпускал бракованные рамы, судя по статистическому анализу.

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

Заказчик, естественно, хотел решение в виде «этот сойдёт, надо ремонтировать или не пускать», «а этот не сойдёт». Но модели работают не так, мы оперируем вероятностями. И здесь начались сложности работы с неполными данными. Нам нужно было придумывать что-то, что покажет эффективность даже на них.

Практическая суть задачи


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

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



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

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

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

Что ещё выяснилось по мере решения


Одна из важных магических констант, которую использовали на железной дороге, — это длина состава в 65 вагонов. Грузоперевозчик, естественно, хочет комплектовать больше, а оператор железной дороги говорит: «Нет, 65 — это максимум». Почему? Потому что больше не принято. Прям на уровне «деды советовали» и «есть такая примета». Поскольку модель подходит для факторного анализа, мы погоняли составы с большим числом вагонов и убедились, что константа вполне обоснованная. Больше не надо. Но теперь есть доказательство. То есть уже исходных данных хватило, чтобы начать искать какие-то неизвестные зависимости и подтверждать или опровергать известные заказчикам факты.

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

Ну и мы видели повторение байки про скорость света. Подключали один из источников данных и вдруг увидели, как в какой-то момент отвалилась половина пользователей, причём именно тех, кто рассчитывал экономику дополнительных регламентных ремонтов против рисков схода. Выяснилось, что на одной из машин переставили AIX, а группы пользователей были вписаны в конфигурационный файл. Длина строки этого файла была прописана константой в конфиге уже самой AIX. При переустановке она сбросилась в дефолт. Соответственно, файл распарсился до первой длинной строки, дальше его обработка прекратилась. А именно ниже этой строки были наши пользователи.

Что в итоге с проектом?


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

И да, как говорят тут, дороги у нас железные, а люди золотые. Так что всё с проектом будет хорошо.

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


  1. Javian
    11.11.2021 15:31
    +2

    офф "Исследование известных сходов" тоже не совсем достоверным может быть. Перенос ответственности везде есть, например как в фельетоне М.Задорного про свиней, которые выпрыгивали из вагона дальше, чем на полтора метра.


    1. etrosh Автор
      11.11.2021 15:54

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


  1. ksbes
    11.11.2021 15:51
    +2

    Сход вагона с этанолом с рельсов в США и его последствия.

    Последствия, последствия-то где? Я думал сейчас сердце кровью обольётся ...


    1. etrosh Автор
      11.11.2021 16:01

      Ну здесь как посмотреть) Поврежденный переезд с путями + цистерны вверх ногами - хорошая головная боль. Или вы про последствия для локомотивной бригады?)


      1. ksbes
        11.11.2021 16:17
        +1

        Я про этанол ...


        1. etrosh Автор
          11.11.2021 17:20

          Ох, да, точно. Ни одна капля не пострадала, все на завод в бутылки


          1. PereslavlFoto
            11.11.2021 18:42
            +1

            Вот так железнодорожная безопасность сломала людям жизнь, лишила мечты.


          1. iwnw
            11.11.2021 20:37

            Ни одна капля не пострадала, все на завод в бутылки

            Ну разве же это последствия?.. Что сказать — американцы…


  1. joffer
    11.11.2021 15:57
    +5

    спасибо, очень интересно, с удовольствием бы читал материалы про такие вещи

    вообще железная дорога инфраструктурно интересная вещь - и в плане логистики, и в плане техники


    1. etrosh Автор
      11.11.2021 16:41
      +1

      Спасибо! По сути железные дороги - основная часть "кровеносной" системы экономики, отсюда такой и интерес у связанных компаний


  1. roboter
    11.11.2021 16:08

    "средняя скорость" - а сама скорость известна? Или нужно IoT городить? По идее тоже окупится если сможет хоть один случай предотвратить.


    1. etrosh Автор
      11.11.2021 16:22
      +1

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


  1. Akr0n
    11.11.2021 17:16
    +1

    У нас на ЗабЖД сходы каждые несколько месяцев происходят на одних и тех же участках и никакие нейросети и экспертные системы для их предсказаний не нужны. Разгильдяйство, "оптимизации", сложный рельеф и климат.


    1. etrosh Автор
      11.11.2021 18:17
      +1

      Да, Сибирь — отдельная история. Вроде и понятно, что зима — сезон сходов, но как всегда нужно больше данных. Особенно в случаях, когда нужно описывать изломы рельс под вагонами с углем


  1. Goodwinnew
    11.11.2021 18:31
    +1

    На самом деле - всё это очень странно.

    Есть определенные стандарты на пути, нагрузку, число вагонов и пр. Если вагон сходит с рельсов - тут всего два варианта:

    • стандарты были нарушены

    • стандарты не были нарушены

    А тут решение выглядит так: а давайте забудем про нормативные документы и будем анализировать причины схода. Работа интересная сделана. У меня вопрос риторический не к математикам -а к заказчикам...

    Это чем-то похоже на буксующие в горку зимой фуры. По нормативам этого в принципе не может быть. Должен перед подъемом стоять знак уклона (который тангенс угла наклона), на эти знаки должны ориентироваться водители. Т.е. или знака не было (деньги за буксировку фуры платят дорожники) или водитель сознательно нарушил (при знаке в 15% поехал в гололед со сцеплением 0,1) - штраф + деньги за буксировку с водителя (юр лица)

    Здесь наверное аналогично:

    • или брак вагона - суд с производителем

    • или вагон перегружен - суд с ответственным за это

    • или вагон вовремя не прошел обслуживание - аналогично

    • или путь с нарушениями (ветки, мусор)

    Фактически модель выглядит так - будем предсказывать вероятность схода при нарушении всего чего можно :)


    1. PereslavlFoto
      11.11.2021 18:40
      +1

      Это чем-то похоже на буксующие в горку зимой фуры. По нормативам этого в принципе не может быть.

      По нормативам вы не сможете получить прибыль!


    1. etrosh Автор
      11.11.2021 19:23

      Действительно человеческий фактор играет большую роль. Мы в том числе делали переменные факторы для модели с рейтингами заводов, депо и так далее, по количеству отказов/брака/сходов.

      Но все равно остается большой процент ситуаций, когда все было в рамках нормативов, но вагон все равно упал.

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


    1. Tarakanator
      12.11.2021 09:16
      +2

      Вспоминаю знак крутой спуск, с надписью от руки "только 4х4"


  1. VT100
    11.11.2021 19:48

    Не восходит ли "56 вагонов" к банальной длине участка автоблокировки - 800(?) метров?


    1. etrosh Автор
      11.11.2021 20:37

      В данном случае скорее нет, так как в таблице представлен один отдельно взятый грузовой поезд с 56 вагонами, а не все такие поезда на дороге


  1. AxialBox
    11.11.2021 20:14
    +2

    Почему именно 65 вагонов? (Точнее — 65-67). Это т.н. «условных» вагонов, за условный принимается стандартный 4-х осный полувагон. Максимальная длина поезда определяется полезной длиной приёмо-отправочных путей на станциях (расстоянием между предельными столбиками с разных сторон пути). Исторически сложилось, что на полигоне бывшего МПС СССР это примерно 850м, вот отсюда и «растут» эти 65-67 «условных».


    1. etrosh Автор
      11.11.2021 20:37
      +1

      Спасибо за интересный факт! Мы когда в лоб построили распределение по длине поездов, то сразу увидели нормальное распределение со средним в 65-67.


  1. Pro-invader
    11.11.2021 20:50

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

    Чтобы состав сошел из-за коровы или пожара, это точно было?


    1. etrosh Автор
      11.11.2021 21:54
      +1

      Действительно было, причем весьма часто. Да и сейчас происходит. Логика какая: машинист увидел силуэт, тут же применил экстренное торможение, а сзади "море" угля. Как итог - вагоны "выдавили" друг друга

      С пожаром тоже все просто - балласт может "уйти" из-за высоких температур, или те же шпалы деревянные попросту сгорают и т.д.


      1. Tarakanator
        12.11.2021 09:19

        Т.е. до трети случаев можно предотвратить сделав равномерное торможение вагонов?


        1. etrosh Автор
          12.11.2021 16:15

          Думаю, весомый % таких случаев можно будет предотвратить равномерным торможением, но там тоже специфики хватает. Поэтому и решили с заказчиком смотреть в сторону "технических причин" схода


  1. ZhangNicholas
    11.11.2021 21:03
    +1

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


    1. etrosh Автор
      11.11.2021 21:52

      Здесь лишь проблема разрозненности источников данных. Не стали приводить все к «общему знаменателю», т.к. одни специалисты заказчика привыкли к промилле, другие к градусам и т.д. И все просто потому что у каждой системы свои единицы измерения


      1. ZhangNicholas
        12.11.2021 03:06

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


        1. etrosh Автор
          12.11.2021 15:56

          В ЖД согласен, уклон пути указывается в промилле в исходном источнике-справочнике. Но в прочих неотраслевых системах (ГИСы/открытые источники/...) встречаются и градусы, и процент и т.д.


      1. kisaa
        12.11.2021 05:00

        В таблице у вас вообще «30%», такого уклона на жд не бывает!


        1. Javian
          12.11.2021 08:53
          +1

          Фуникулёр наверное


        1. etrosh Автор
          12.11.2021 16:06
          +1

          Да, вы правы, знак промилле потерялся. Процент здесь лишний

          В России, если правильно помню, самый крутой уклон дороги - около 44 промилле


  1. piza_tera
    11.11.2021 23:18

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


    1. ZhangNicholas
      12.11.2021 03:14
      +1

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


  1. NiksFok
    12.11.2021 02:29

    Большое спасибо за статью! Было интересно читать.

    Скажите, пожалуйста, какой размер обучающей выборки? Как проверяли исходные данные?

    Заказчик задумался над автоматизацией сбора информации чтобы улучшить точность модели?


    1. etrosh Автор
      12.11.2021 16:12

      Сейчас обучающая выборка выборка равна примерно миллиарду строк. Далее уже "играемся" с андерсэмплингами/оверсэмплингами, чтобы выправить баланс классов для отклика=схода/несхода

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

      Автоматизация уже заказчика уже идет, но нет ей, проклятой, конца и края


  1. hungry_forester
    16.11.2021 13:11

    Очень интересно. Сдвоенные поезда рассматривали? Увеличивается ли количество сходов (относя к длине поезда) в таких поездах?