Трамвайная пунктуальность

Небольшое исследование на тему «Как трамваи соблюдают расписание»


После моего поста про 34-й трамвай начало твориться что-то невообразимое. Многие люди отмечали, что читали мой пост и им интересно продолжение истории. В моей родной компании мне вообще предложили поучаствовать в одном очень интересном проекте (пока не скажу каком). Но нашлись и те кто резонно встал на сторону ЕТТУ, и начали защищать трамвайно-троллейбусное управление, обвинив меня в незнании фактов про движение трамваев. Это подстегнуло меня к новому исследованию.

Когда я делал расписания движения трамваев, если вы читали предыдущий пост, то знаете, что мне пришлось для этого распарсить сайт ЕТТУ, то отметил, что на странице с трамваями на карте данные гоняются Ajax’ом, а значит их можно спокойно стянуть к себе. Про этот факт я вспомнил, и в начале февраля включил скрипт, который каждые 5 секунд это и делает.

Вывод результатов работы скрипта, забирающего данные

Зачем? Где-то я прочитал, что наши трамваи соблюдают расписание на 92%, что явно расходится как с моими личными наблюдениями, так и с наблюдениями пассажиров трамваев. Понятно, что можно по разному считать, но 92%! Мне стало интересно посчитать какова реальная цифра и насколько она далека от 92%.

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

Алгоритм

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

Брутфорс! Сначала подумал я. Написал. Запустил. Прождал 8 часов на примере 5-го трамвая и конечной «метро Ботаническая» и плюнул. Ещё бы, там количество итераций больше 2^50, т.е количество нулей там больше 15.

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

Вообще, для начала, надо определить правила игры. Я решил побыть в этом месте пассажиром и сформулировал следующие три правила:

  1. Если разница ухода трамвая относительно расписания меньше 4-х минут, то считаем, что трамвай попал в расписание и Δ=0
  2. Если трамвай уходит раньше расписания, то за каждую минуту 5-ти кратный штраф и Δ=-5*diff. Ещё бы, представляете, вы намеренно идёте к определённому времени на остановку, а ваш трамвай уже ушел.
  3. Если трамвай уходит на 4 и более минуты позже расписания, то за каждую минуту штраф +1: Δ=(diff-4)

К этим трём, в процессе доработки скрипта, добавилось ещё три:

  1. Если трамвай не приходит по расписанию, то Δ=60
  2. Если трамвай приходит не по расписанию, то это время никак не учитывается в подсчёте пунктуальности.
  3. Если для реальных уходов с конечной a и b, сопоставлены уходы по расписанию a1 и b1 и a < b, то a1 < b1. Иначе алгоритм станет жадным и расставит все отправления на какие-нибудь места.

С 3-й попытки алгоритм-таки написался:

  1. Для начала мы обрабатываем все фактические уходы и составляем массив ближайших уходов по расписанию («список размещения»)
  2. Далее первым шагом мы расставляем минимумы, т.е самые ближайшие до всех точек расписания
  3. Если разместились все, то алгоритм заканчивает работу.
  4. Иначе берём первого не размещённого, итерируемся по его списку размещения пробуя пристроить куда-нибудь
  5. Если в позицию, куда мы встраиваем неразмещенца никого нет, то удача, нам удалось его разместить; перезаписываем итоговый результат
  6. Если же кто-то есть, то берём его список размещения, находим там индекс текущего размещения и пытаемся пристроить его далее по его списку размещения (на самом деле это уход в 4 пункт).
  7. На каждом шагу считаем сумму diff’ов, если на каком-то из шагов сумма оказывается меньше текущего итогового, то перезаписываем итоговый результат.
  8. Если список размещения закончился, а разместить не удалось, то неразмещённый так и останется неразмещенным.

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

Результаты

Получились такие циферки для рабочих дней.

Ходят строго по расписанию (>95%)

97.1% — 34 трамвай!

Тут ничего удивительного, 34-й идёт полностью по обособленке, перегоны достаточно большие, а пересечений с проезжей частью минимум.

Ходят по расписанию с небольшими отклонениями (90–95%)

94% — 11, 93% — 24, 90.9% — 17.

11 трамвай сам по себе уникален, вообще говоря удивительно, что при этом он не на 100% пунктуален. Результат 17-го, как мне кажется, мог бы быть и повыше, если бы не пробки по Победы перед ДК Лаврова (это единственный совмещённый участок на его пути). Приятно видеть в этой же компании 24-й трамвай, который имеет достаточно протяженный маршрут.

В целом ходят по расписанию, но с отклонениями (85–90%)

89.3% — 7, 89.2% — 16, 86.0% — 23.

И вот тут первый интересный результат — 7 и 23. Оба трамвая имеют достаточно протяженные маршруты, правда не заезжают в центральную часть города, а также едут по частично обособленной Челюскинцев. Несмотря на это результат вполне достойный, почти 90%. С 16 всё понятно, он едет по обособленке значительную часть своего пути.

Ходят с отклонениями в расписании (80–85%)

84.8% — 8, 84.3% — 19, 81.7% — 20.

Тут появились первые трамваи, которые касаются центра, правда опять же не заезжают вглубь. Результаты здесь ещё более-менее сносные. 85% означает, что либо каждый 6-й трамвай не доезжал до конечной и/или отставание от расписания примерно в 9 минут.

Заметьте, что в более-менее положительных результатах нет ни одного трамвая, идущего через площадь 1905 года или по 8 марта.

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

Ходят с отклонениями в расписании (75–80%)

78.3% — 1, 78.1% — 22, 77.9% — 4, 76.7% — 9, 75.1% — 26. В этой компании наоборот удивительно видеть 22. Но тут, кажется, причина в том, что 22-й не является приоритетным маршрутом и выпуск вагонов на него может быть меньше положенного. Остальные маршруты уже едут по 8 марта или Ленина (но не и то и другое сразу) и имеют отставания в расписании.

Ходят со значительными отклонениями в расписании (70–75%)

74.5% — 5, 73.5% — 13, 73.4% — 18, 73% — 3, 71.9% — 2, 71.8% — 10, 71.2% — 15, 70.2% — 21.

Не объяснимая для меня загадка, почему у 3 пунктуальность выше парного ей 21 ☺ Результат 5-го трамвая делается за счёт более-менее пунктуального соблюдения расписания на конечной «Площадь 1-й пятилетки», по «Ботанической» у 5-ки показатель 67.2%, т.е чаще всего 5-ка укорачивается в сторону уралмаша.

Меньше 75% — это уже плохой результат, меньше 70 — это не просто плохой, а отвратительный результат.

Ходят отвратительно (<70%)

68.9% — 14, 68.6% — 32, 68.5% — 6, 67.5% — 25, 67.5% — 33, 66.3% — 27

27 — самый не пунктуальный трамвайный маршрут. У него самые громадные пробелы в течение дня, например, есть интервал размером в 3 часа! Удивительно иметь в этом списке 33-й трамвай. Отчасти, я думаю, это связано с его неприоритетностью, а отчасти с тем, что он, несмотря на небольшую длину, идет по самым загруженным участкам — Радищева, 8 марта, Куйбышева. Точнее не идёт, а стоит скорее.

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

Насколько же картина меняется в выходные?

Ходят строго по расписанию (>95%)

97.9% — 17, 96.5% — 24, 96.1% — 16.

В лидерах почти всё те же.

Ходят по расписанию с небольшими отклонениями (90–95%)

94% — 18, 93.7% — 5, 93.4% — 23, 93.3% — 11, 93% — 34, 92.5% — 7, 91% — 26, 90.2% — 9, 90.1% — 13.

Вообще где-то здесь должны быть вообще все маршруты, т.к по выходным многим вагонам не мешает дорожная ситуация, но, к сожалению, это не так, хотя в большинстве случае результаты разительно выше будни дней. В некоторых случаях (18, 26 маршруты) результат настолько улучшается, что в очередной раз хочется подчеркнуть важность выделения трамвайных путей и создания условий для беспрепятственного движения трамваев. В случае с 34 трамваем есть ощущение, что пару дней то ли ходил вагон без GPS (правда это странно), то ли не хватило водителей, т.к видно именно чередование пропусков, а не опоздания.

В целом ходят по расписанию, но с отклонениями (85–90%)

89.9% — 20, 89.1% — 10, 89.8% — 14, 88.7% — 8, 88.2% — 32, 88.2% — 6, 87.9% — 25, 86.9% — 22, 86.9% — 4, 85.6% — 27.

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

А вот дальше то, чего я не понимаю, это результаты <85%.

Ходят с отклонениями в расписании (75–85%)

81.6% — 21, 79.6% — 3.

Несмотря на улучшение показателей у этих трамваев всё ещё проблемы с выполнением графика.

Ходят отвратительно (<75%)

72.5% — 1.

Результат единички упал с плохого до отвратительного. Отчасти тому виной рейсы, которые никогда не выполняются, которых у неё нашлось целых 3.

Соберём всё вместе в график.

График пунктуальности трамваев Екатеринбурга, левый столбик — рабочие дни, правый стоблик — выходные и праздничные.

Итого

Что подтвердило данное исследование? Оно подтвердило в первую очередь гипотезу необходимости выделения трамвайных путей в городе вообще. Т.к без пробок трамваи становятся пунктуальными и предсказуемыми. Так же становится понятно, что в первую очередь обособление должно быть сделано по улицам Ленина, Луначарского, Куйбышева и 8 марта — именно идущие по этим улицам трамваи чаще всего опаздывают. К счастью эти улицы уже стоят в планах на обособление к чемпионату мира 2018 года. Осталось только ждать и посмотреть результаты, когда всё будет сделано.

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

Что ещё удалось обнаружить? Ну, например, за 15 дней наблюдения нашлись рейсы в расписании, которые не были выполнены ни разу. Например, это рейс в 21:19 у 5-го трамвая от метро Ботаническая, рейсы в 21:25 у 11-го трамвая с конечной Зелёный остров и в 21:46 с конечной ВИЗ (кстати, они и попортили 11-му статистику и не дали выбиться в лидеры) и рейс в 6:07 у 32-го трамвая от 40 лет ВЛКСМ и это только в рабочие дни.

Ещё можно гарантировать, что последние рейсы (ночники) практически всегда выполняются.

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

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

Троллейбусы на подходе.