— Если вы такие умные, то можете сказать, какой вагон когда сойдёт с рельсов?
Задача была сформулирована одним из операторов железной дороги примерно вот в таком духе, но более русским и более железнодорожным языком. Первоначальная логика была в том, чтобы предсказывать, какой вагон по какому пути в какую погоду не надо пускать. Естественно, в реальности мы решили её не так, но вот таких случаев станет в итоге меньше:
Едет вагон. Он может быть в составе пассажирского или грузового поезда. В какой-то момент он одной парой колёс теряет сцепление с рельсом. Это состояние схода. На практике это значит, что останавливается всё движение на участке, выдвигается бригада с краном, чтобы этот вагон поднять. В совсем плохом случае экологическая или техногенная катастрофа. Естественно, это проблема для компании.
Естественно, есть стандарт на регламенты и обслуживание вагонов, есть стандарт на допустимую скорость, есть стандарт на допустимый радиус дуги, уклон и так далее. Но вагоны время от времени сходят. Похоже, это зависит от их состояния, груза, степени трезвости обходчиков, давления машиниста и ещё каких-то факторов, и часть из них можно оценить заранее.
Первое, что мы исследовали, — это известные случаи сходов, чтобы понять, что же влияет на вагоны. И параллельно начали искать все доступные данные, которые мог дать нам перевозчик.
Сход вагона с этанолом с рельсов в США и его последствия.
Задача
После предварительного изучения стало понятно, что мы создаём модель, которая предскажет условия схода вагона на участке пути.
Источники данных
Начали с построения простого дерева решений. Здесь основной момент, который отдаляет от идеальной модели и по сей день, — проблема с данными. Нам интересно состояние вагона, состояние полотна (в динамике, а не в статике), как обслуживался вагон, хорошо бы знать погоду, описание локомотивной бригады, груз, который везёт вагон. На первом этапе были доступны только характеристики вагона.
Чтобы было понятнее, почему получить данные так сложно, скажу, что много ещё делается на бумаге. Например, в момент нашего прихода за выгрузкой базы данных (как нам казалось) мы застали потрясающую картину. Оператор распечатал пачку листов с данными по вагонам за месяц, выложили их на предыдущие так, чтобы предыдущие торчали на одну гранку в сторону… и начали записывать на них разницу. Но это не единственная проблема, ещё есть море согласований и прочие особенности крупных систем с привкусом бюрократии.
У нас были данные по перегонам (их уклоны, последнее известное состояние), но получать оперативную сводку от обходчиков мы не можем. Поэтому все данные по перегонам — это статика по последним известным таблицам + погода.
По бригадам, обходчикам и другому персоналу данных просто нет.
По вагонам данные интереснее, по ним как раз есть очень хороший датасет:
Сразу скажу, что получить даже такой набор данных на реальной задаче в таких условиях — большая удача. Практика сводится к тому, что нужно показать хоть какой-то результат на этих данных, а потом уже компания будет задумываться о подключении к модели каких-то других источников.
Исследование известных сходов
В наших ограниченных наборах данных выстроилась следующая иерархия весовых коэффициентов:
Естественно, это отражает только часть реальной картины, но уже этих данных достаточно для первичной модели.
Эти сходы описывают только те ситуации, которые произошли без влияния внешних факторов, то есть по техническим причинам и из-за человеческого фактора. Это примерно две трети известных нам сходов вагонов. К примеру, речь про излом боковой рамы из-за сочетания усталости металла и неудовлетворительного содержания путей. Или путь был отмечен как чистый, бригада отчиталась про это, но по факту ничего не сделала. Нашёлся даже производитель, который два года подряд выпускал бракованные рамы, судя по статистическому анализу.
Оставшаяся треть случаев схода — это ДТП с выездом автотранспорта на пути, крупный рогатый скот (коровы обладают достаточно большой инерцией), оползни, пожары рядом с путями и другие стихийные бедствия.
Заказчик, естественно, хотел решение в виде «этот сойдёт, надо ремонтировать или не пускать», «а этот не сойдёт». Но модели работают не так, мы оперируем вероятностями. И здесь начались сложности работы с неполными данными. Нам нужно было придумывать что-то, что покажет эффективность даже на них.
Практическая суть задачи
Для каждого вагона и каждого участка пути мы прогнозируем вероятность схода. На практике в условиях недостатка данных это означает очень много ложноположительных срабатываний, и наш клиент, естественно, не бросался рассматривать каждый вагон как потенциально опасный во время обкатки модели. Тем не менее к наиболее высоким вероятностям присматривались и над вагонами уже сознательно думали, бригаду предупреждали.
Обученная на известных сходах модель плохо прогнозировала новые сходы, но зато давала возможность разобраться, как уменьшить вероятность этого схода, то есть, например, по какому перегону пускать данный конкретный поезд с данными конкретными вагонами и с данным конкретным грузом. Вот пример задачи и решения:
Эта же модель позволяет давать на каждый перегон новые рекомендации в зависимости от погоды, сезона и конкретного вагона. То есть можно выбрать другой режим движения, например.
В этой модели сейчас, по сути, оценивается в основном состояние вагона. Его ремонты, паспорт вагона (кто произвёл, когда), тип вагона и дополнительно — описание груза на текущей перевозке. Интуитивно понятно, что дополнительные проверки модель должна была назначать на полные старые вагоны, но это оказалось не так: почти каждый вагон латаный-перелатаный после капитального ремонта. Наибольшее число срабатываний даёт именно сочетание состояния вагона и состояние пути.
После доказательства какой-то полезности модели заказчик начал тщательнее присматриваться к «подсвечиваемым» вагонам и ситуациям. По сути, сейчас они тратят куда больше усилий на ремонты и осмотры, чем раньше, но при этом должны накопить статистику по большей безопасности движения. И если так будет, это будет означать полный успех, потому что даже один статистически предотвращённый случай схода вполне окупает всю эту паранойю.
Что ещё выяснилось по мере решения
Одна из важных магических констант, которую использовали на железной дороге, — это длина состава в 65 вагонов. Грузоперевозчик, естественно, хочет комплектовать больше, а оператор железной дороги говорит: «Нет, 65 — это максимум». Почему? Потому что больше не принято. Прям на уровне «деды советовали» и «есть такая примета». Поскольку модель подходит для факторного анализа, мы погоняли составы с большим числом вагонов и убедились, что константа вполне обоснованная. Больше не надо. Но теперь есть доказательство. То есть уже исходных данных хватило, чтобы начать искать какие-то неизвестные зависимости и подтверждать или опровергать известные заказчикам факты.
А ещё мы узнали, зачем возят лес в цистернах. Поначалу нас это смутило, но оказалось, что есть такой способ оптимизации расходов в мошеннических целях. Сначала всё логично: есть вагон-цистерна. Когда она ломается в интеграционной части, возить жидкость в ней уже сложно. Всё остальное у вагона хорошо, только «наливайка» сломалась. Дальше ей срезают верх и получают полувагон, куда можно грузить лес. Но дело в том, что это меняет провозную плату. В итоге был период, когда возили по документам лес в цистерне, а по факту — ГСМ. Но показывали в отчёте, что это лес. И платили как за лес. В какой-то момент стали возить слишком много, и это стало заметно.
Ну и мы видели повторение байки про скорость света. Подключали один из источников данных и вдруг увидели, как в какой-то момент отвалилась половина пользователей, причём именно тех, кто рассчитывал экономику дополнительных регламентных ремонтов против рисков схода. Выяснилось, что на одной из машин переставили AIX, а группы пользователей были вписаны в конфигурационный файл. Длина строки этого файла была прописана константой в конфиге уже самой AIX. При переустановке она сбросилась в дефолт. Соответственно, файл распарсился до первой длинной строки, дальше его обработка прекратилась. А именно ниже этой строки были наши пользователи.
Что в итоге с проектом?
Теперь мы ждём развития ситуации. Нам нужно больше данных, чтобы продолжить работы. Иногда подключение к источникам в кровавом энтерпрайзе затягивается на годы, но мы тоже кровавый энтерпрайз и умеем ждать.
И да, как говорят тут, дороги у нас железные, а люди золотые. Так что всё с проектом будет хорошо.
Комментарии (38)
ksbes
11.11.2021 15:51+2Сход вагона с этанолом с рельсов в США и его последствия.
Последствия, последствия-то где? Я думал сейчас сердце кровью обольётся ...
etrosh Автор
11.11.2021 16:01Ну здесь как посмотреть) Поврежденный переезд с путями + цистерны вверх ногами - хорошая головная боль. Или вы про последствия для локомотивной бригады?)
ksbes
11.11.2021 16:17+1Я про этанол ...
etrosh Автор
11.11.2021 17:20Ох, да, точно. Ни одна капля не пострадала, все на завод в бутылки
PereslavlFoto
11.11.2021 18:42+1Вот так железнодорожная безопасность сломала людям жизнь, лишила мечты.
iwnw
11.11.2021 20:37Ни одна капля не пострадала, все на завод в бутылки
Ну разве же это последствия?.. Что сказать — американцы…
joffer
11.11.2021 15:57+5спасибо, очень интересно, с удовольствием бы читал материалы про такие вещи
вообще железная дорога инфраструктурно интересная вещь - и в плане логистики, и в плане техники
etrosh Автор
11.11.2021 16:41+1Спасибо! По сути железные дороги - основная часть "кровеносной" системы экономики, отсюда такой и интерес у связанных компаний
roboter
11.11.2021 16:08"средняя скорость" - а сама скорость известна? Или нужно IoT городить? По идее тоже окупится если сможет хоть один случай предотвратить.
etrosh Автор
11.11.2021 16:22+1Известна, но все на бумажных лентах) поэтому большая задача - это все оцифровать, почистить и добавить во входные данные. Если говорить про страны поменьше, то наверное да, окупиться. Но для России это целый инфраструктурный проект, который вроде и идёт, но вопрос когда наступит это светлое будущее
Akr0n
11.11.2021 17:16+1У нас на ЗабЖД сходы каждые несколько месяцев происходят на одних и тех же участках и никакие нейросети и экспертные системы для их предсказаний не нужны. Разгильдяйство, "оптимизации", сложный рельеф и климат.
etrosh Автор
11.11.2021 18:17+1Да, Сибирь — отдельная история. Вроде и понятно, что зима — сезон сходов, но как всегда нужно больше данных. Особенно в случаях, когда нужно описывать изломы рельс под вагонами с углем
Goodwinnew
11.11.2021 18:31+1На самом деле - всё это очень странно.
Есть определенные стандарты на пути, нагрузку, число вагонов и пр. Если вагон сходит с рельсов - тут всего два варианта:
стандарты были нарушены
стандарты не были нарушены
А тут решение выглядит так: а давайте забудем про нормативные документы и будем анализировать причины схода. Работа интересная сделана. У меня вопрос риторический не к математикам -а к заказчикам...
Это чем-то похоже на буксующие в горку зимой фуры. По нормативам этого в принципе не может быть. Должен перед подъемом стоять знак уклона (который тангенс угла наклона), на эти знаки должны ориентироваться водители. Т.е. или знака не было (деньги за буксировку фуры платят дорожники) или водитель сознательно нарушил (при знаке в 15% поехал в гололед со сцеплением 0,1) - штраф + деньги за буксировку с водителя (юр лица)
Здесь наверное аналогично:
или брак вагона - суд с производителем
или вагон перегружен - суд с ответственным за это
или вагон вовремя не прошел обслуживание - аналогично
или путь с нарушениями (ветки, мусор)
Фактически модель выглядит так - будем предсказывать вероятность схода при нарушении всего чего можно :)
PereslavlFoto
11.11.2021 18:40+1Это чем-то похоже на буксующие в горку зимой фуры. По нормативам этого в принципе не может быть.
По нормативам вы не сможете получить прибыль!
etrosh Автор
11.11.2021 19:23Действительно человеческий фактор играет большую роль. Мы в том числе делали переменные факторы для модели с рейтингами заводов, депо и так далее, по количеству отказов/брака/сходов.
Но все равно остается большой процент ситуаций, когда все было в рамках нормативов, но вагон все равно упал.
Например, ехала платформа-вагон с автомобилем в повороте и вдруг упала, так как центр тяжести подвел. Ситация для конкретного перегона разовая, но в рамках все совокупности дорог — уже какое-то правило, так как случаев было несколько. Вот здесь модель и играет ключевую роль.
AxialBox
11.11.2021 20:14+2Почему именно 65 вагонов? (Точнее — 65-67). Это т.н. «условных» вагонов, за условный принимается стандартный 4-х осный полувагон. Максимальная длина поезда определяется полезной длиной приёмо-отправочных путей на станциях (расстоянием между предельными столбиками с разных сторон пути). Исторически сложилось, что на полигоне бывшего МПС СССР это примерно 850м, вот отсюда и «растут» эти 65-67 «условных».
etrosh Автор
11.11.2021 20:37+1Спасибо за интересный факт! Мы когда в лоб построили распределение по длине поездов, то сразу увидели нормальное распределение со средним в 65-67.
Pro-invader
11.11.2021 20:50Оставшаяся треть случаев схода — это ДТП с выездом автотранспорта на пути, крупный рогатый скот (коровы обладают достаточно большой инерцией), оползни, пожары рядом с путями и другие стихийные бедствия.
Чтобы состав сошел из-за коровы или пожара, это точно было?
etrosh Автор
11.11.2021 21:54+1Действительно было, причем весьма часто. Да и сейчас происходит. Логика какая: машинист увидел силуэт, тут же применил экстренное торможение, а сзади "море" угля. Как итог - вагоны "выдавили" друг друга
С пожаром тоже все просто - балласт может "уйти" из-за высоких температур, или те же шпалы деревянные попросту сгорают и т.д.
Tarakanator
12.11.2021 09:19Т.е. до трети случаев можно предотвратить сделав равномерное торможение вагонов?
etrosh Автор
12.11.2021 16:15Думаю, весомый % таких случаев можно будет предотвратить равномерным торможением, но там тоже специфики хватает. Поэтому и решили с заказчиком смотреть в сторону "технических причин" схода
ZhangNicholas
11.11.2021 21:03+1Уклон пути на жд всегда указывают в промилле (чаще их называют "тысячными"). У вас в одном месте фигурируют градусы, в другом проценты, что несколько подрывает доверие к качеству анализа в части сбора исходных данных.
etrosh Автор
11.11.2021 21:52Здесь лишь проблема разрозненности источников данных. Не стали приводить все к «общему знаменателю», т.к. одни специалисты заказчика привыкли к промилле, другие к градусам и т.д. И все просто потому что у каждой системы свои единицы измерения
ZhangNicholas
12.11.2021 03:06Поинтересуюсь - а кто из заказчиков, связанных с железнодорожным транспортом, мог работать с градусами? У меня диплом по проектированию железнодорожной станции, поэтому уверяю, что тысячные это отраслевой стандарт на пост-СССР пространстве.
etrosh Автор
12.11.2021 15:56В ЖД согласен, уклон пути указывается в промилле в исходном источнике-справочнике. Но в прочих неотраслевых системах (ГИСы/открытые источники/...) встречаются и градусы, и процент и т.д.
piza_tera
11.11.2021 23:18Целесообразно было бы учитывать также сейсмическую активность на определенной территории во время движения поезда. Ведь даже самые незначительные толчки могут оказать решающее давление в механизмах отдельного вагона или при повороте состава.
ZhangNicholas
12.11.2021 03:14+1Небольшие толчки не влияют никак - центры масс объектов не высоко от поверхности земли, массы объектов значительны. К примеру вот это событие все окружающие железные дороги (Кузбасс, Алтай, Новосибирск) практически не заметили, инцидентов не было. Я сам находился в локомотиве, ничего не почуствовал, хотя в городах в зданиях мебель шаталась, посуда звенела и т.п.
NiksFok
12.11.2021 02:29Большое спасибо за статью! Было интересно читать.
Скажите, пожалуйста, какой размер обучающей выборки? Как проверяли исходные данные?
Заказчик задумался над автоматизацией сбора информации чтобы улучшить точность модели?
etrosh Автор
12.11.2021 16:12Сейчас обучающая выборка выборка равна примерно миллиарду строк. Далее уже "играемся" с андерсэмплингами/оверсэмплингами, чтобы выправить баланс классов для отклика=схода/несхода
Проверка данных - это отдельная история. Кроме стандратной описательной статистики и сопоставления справочников, долго смотрели нормативные документы и общались с экспертами заказчика. Потому что были в исходных данных и вагоны, которые везли больше того, что разрешенно по паспорту (но при этом схода не было), цистерны с "лесом" и т.д.
Автоматизация уже заказчика уже идет, но нет ей,
проклятой, конца и края
hungry_forester
16.11.2021 13:11Очень интересно. Сдвоенные поезда рассматривали? Увеличивается ли количество сходов (относя к длине поезда) в таких поездах?
Javian
офф "Исследование известных сходов" тоже не совсем достоверным может быть. Перенос ответственности везде есть, например как в фельетоне М.Задорного про свиней, которые выпрыгивали из вагона дальше, чем на полтора метра.
etrosh Автор
Тут согласен, но как говорится "за неимением лучшего ...", а дальше вы знаете) Да и в целом, перспектива завязнуть в междоусобных разборках модели явно не поможет. Поэтому какие-то аномалии, где вагон сошел из-за пути, а модель на трейне указала на состояние самого вагона, дополнительно обсуждались с экспертами