Эффективное обслуживание движения v21
Как работает модель

Один проезд — шум. Тысячи проездов — ритм.

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

много проездовчистые группыповторяемый период
01 · собираем

Сначала всё смешано в одной картине

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

Это исходный материал, а не ответ. Сначала сделаем наблюдения сравнимыми — и только потом будем искать ритм.

02 · выравниваем календарь

Оставляем только понедельник–четверг

Пятница живёт переходом к выходным, а суббота и воскресенье — другим спросом и расписанием. Для первой устойчивой группы оставляем Пн–Чт; пятницу и выходные анализируем отдельно, а не подмешиваем.

Первое правило: сравниваем один подход и направление только внутри похожего календарного класса.

03 · разделяем расписание дня

Строим три независимых графика

Даже Пн–Чт нельзя складывать целиком: утром, днём и вечером светофор и поток могут жить по разным режимам. Поэтому строим отдельные распределения для 06–10, 10–16 и 16–20.

Три графика — три гипотезы расписания. Они больше не создают ложные пики друг для друга.

04 · фиксируем одну группу

Дальше работаем только с днём

Берём Пн–Чт, 10:00–16:00, один подход и одно направление. Утро и вечер никуда не исчезли — для них модель повторит те же шаги отдельно. Сейчас важно не менять объект анализа на полпути.

Наша рабочая группа: одно направление × Пн–Чт × дневной режим.

05 · защищаемся от загрязнения

Сначала отделяем правый хвост

Редкие долгие проезды могут возникнуть из-за аварии, downstream-пробки или блокировки перекрёстка. Эти одноразовые выбросы уходят из оценки периода и остаются только в приватном QA: они не считаются частью рабочего цикла.

Края уходят зеркально, но по разным причинам. Здесь вправо уходит внешний длинный хвост; после вычитания t₀ влево уйдут только отрицательные остатки.

06 · находим ноль задержки

Оцениваем свободное время проезда

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

Baseline — положение по оси времени, а не высота столбика.

07 · выделяем задержку

Вычитаем свободный проезд

Из времени каждого проезда вычитаем одно и то же t₀. Поэтому распределение целиком сдвигается влево по оси времени. Значения, которые после вычитания оказались левее нуля, не могут быть задержкой и исчезают.

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

08 · правильно читаем пик

Самый высокий столбик — не длина цикла

Положение пика по X говорит: «примерно 74 секунды дополнительной задержки встречались чаще всего». Высота пика говорит, сколько было таких наблюдений. Ни одно из этих чисел не отвечает, через какой интервал повторяется движение.

«Часто ждать 74 секунды» не означает «цикл равен 74 секундам». Для периода нужен порядок событий во времени.

09 · показываем контрпример

Одинаковые частоты могут скрывать разный ритм

В двух рядах ниже одинаковое число фиолетовых, голубых и жёлтых состояний — значит, их распределения совпадут. Но в ряду A рисунок повторяется через 60 секунд, а в ряду B — через 120.

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

10 · возвращаем порядок событий

Те же события группируем уже по времени

Мы не превращаем прошлую гистограмму в новый график. Берём те же исходные наблюдения, возвращаем каждому локальное время и складываем их в privacy-safe 5-секундные клетки. По X теперь идёт время, по Y — относительная масса событий внутри клетки.

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

11 · складываем по кандидату C

Проверяем, выравниваются ли повторения

Для каждого C от 20 до 600 секунд переводим время события в «позицию внутри цикла»: берём остаток от деления времени на C. Если всплески разных часов и дней ложатся в одни позиции, кандидат объясняет ритм.

Обязательно сравниваем C/2, C, 2C и соседей. Так модель не путает настоящий период с половиной или двойной гармоникой.

12 · собираем фазовый профиль

Четыре повтора складываем в один период

После выбора C сравниваем одинаковые позиции повторов: первую клетку с первой, вторую со второй и так далее. Четыре последовательных рисунка превращаются в один усреднённый профиль из 12 пятисекундных клеток.

Здесь ещё нет названий состояний. Мы лишь собрали вместе события с одинаковой позицией внутри проверенного периода.

13 · интерпретируем фазу периода

Разделяем закрытие и обслуживание

B — buildup: очередь накапливается, поэтому направление похоже на закрытое красным. D — discharge: накопленная очередь быстро разряжается; F — free flow: машины проходят свободно. Вместе D + F образуют наблюдаемое эффективное обслуживание — зелёноподобное открытие направления.

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

14 · доказываем переносимость

Новая неделя должна повторить результат

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

Не повторилось — не публикуем. Лучше честно показать «недостаточно данных», чем уверенно нарисовать цикл из шума.

Сырые наблюдения

Смесь времени проезда

18 420
проездов
20 свремя полного проезда240 с

По горизонтали — время проезда, по вертикали — частота наблюдений.

Что получает пользователь

Оценка циклов светофора на основе повторяемого ритма движения

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

100% / 88,7% точность / полнота Принятые оценки в контролируемой калибровке; MAE длительности 3,7 с.
≈ 5 тыс. событий на перекрёсток × час Средний порядок пригодной массы за историческое окно перед разметкой часа.
49 дней · 1,6 мес. Екатеринбург — город-миллионник 106 млн обезличенных событий в проверенном базовом окне.
≈ 19 месяцев 30% светофоров × ≥ 80% дня Сценарный горизонт при сохранении текущей плотности наблюдений.

Калибровка измеряет качество на контролируемых сценариях; внешней телеметрии контроллеров пока нет. 19 месяцев — линейный сценарий от текущих 25 из 984 узлов с режимами «утро + день + вечер», а не гарантия для отдельного перекрёстка.