Навигационные алгоритмы в дипломе: кейс 2ГИС как основа защищаемой ВКР
25 марта 2026 года 2ГИС объявил о запуске навигатора для начинающих водителей: сервис строит маршрут так, чтобы объехать сложные развязки и перегруженные перекрёстки. За этим релизом стоит не косметика интерфейса, а полноценный стек — граф дорожной сети, веса рёбер, персонализация под профиль водителя и алгоритмы поиска пути. Для выпускника ИТ-специальности это почти готовый каркас ВКР: тема живая, данные открытые (OpenStreetMap), а метрики считаются честно. Ниже — как превратить новость в главы, схемы и расчёты, которые комиссия примет без вопросов «а где практическая часть?».
Вопросы, которые студенты задают первыми
Где брать дорожный граф, если нет доступа к коммерческим данным?
Берите OSM через Overpass API или выгрузки Geofabrik. Для маршрутизации — OSRM или Valhalla как эталон, а свой алгоритм сравнивайте с ними по ETA. В главе 1 это оформляется как «источники исходных данных и их ограничения» — нормоконтроль такие разделы любит.
Можно ли защитить ВКР без собственного ML, только на алгоритмах?
Да. Классическая маршрутизация (A*, Contraction Hierarchies, ALT) — это уже полноценная тема с измеримым результатом: время построения маршрута, длина, число манёвров. ML добавляйте как надстройку над весами рёбер, а не как самоцель.
Как считать эффективность, если «удобство» — субъективно?
Разложите на измеримые прокси: количество манёвров на 1 км, доля сложных развязок в маршруте, отклонение ETA от факта (MAE/MAPE), время ответа API (p95). Субъективную часть соберите опросом по шкале Ликерта — и сошлётесь на ISO/IEC 25010 в части usability.
Что оформлять по ГОСТ 34, а что по ГОСТ 19?
Если у вас система с техническим заданием и стадиями — ГОСТ 34.601 и 34.602. Если ВКР ближе к программе и модулям — ГОСТ 19. И то и другое требует схем, а схему архитектуры удобно давать в виде C4 (Context + Container) или UML-компонентов.
Три темы ВКР, которые вырастают из этого кейса
- Тема 1. Персонализация маршрутов для начинающих водителей на основе графа дорожной сети.
Актуальность: сервис 2ГИС явно разделяет профили водителей, значит, единый критерий «быстрее» перестаёт работать.
Цель: разработать модуль маршрутизации с весами рёбер, зависящими от профиля.
Задачи: анализ форматов графа; построение подграфа города; реализация A* с модифицированной функцией стоимости; оценка метрик; оформление ТЗ.
Структура: Гл.1 — обзор алгоритмов и данных; Гл.2 — проектирование и реализация модуля; Гл.3 — эксперименты и оценка. - Тема 2. Оценка сложности манёвров перекрёстка с помощью машинного обучения.
Актуальность: «сложная развязка» — это признак, который надо чем-то измерять.
Цель: модель бинарной/многоклассовой классификации сложности узла графа.
Задачи: разметка признаков (число полос, наличие левого поворота через встречку, угол, светофор); обучение градиентного бустинга; валидация; интеграция в скоринг маршрута.
Структура: Гл.1 — теория и постановка; Гл.2 — признаки и модель; Гл.3 — метрики precision/recall и вклад в маршруты. - Тема 3. Конвейер сбора и анализа телеметрии прохождения маршрутов.
Актуальность: чтобы понимать, где новичок ошибается, нужны данные с устройств.
Цель: построить ETL-конвейер геоточек и витрину агрегатов.
Задачи: приём событий; хранение в PostGIS; агрегаты по перекрёсткам; дашборд; нагрузочное тестирование.
Структура: Гл.1 — анализ потоков данных; Гл.2 — реализация конвейера; Гл.3 — производительность и качество данных.
Как разложить кейс по главам
Глава 1: данные, форматы, постановка задачи
Здесь вы объясняете, что дорога — это ориентированный граф с весами. Соберите таблицу соответствия: OSM-тег → атрибут ребра → влияние на стоимость. Например, highway=motorway_link — это съезд, для новичка он дороже; maxspeed превращается в базовое время; junction=roundabout добавляет штраф за круговое движение. Диаграмму лучше сделать в виде UML-диаграммы классов (Node, Edge, Profile, Route) и отдельно — контекстную диаграмму C4, где система взаимодействует с картографическим сервисом и мобильным клиентом.
| Атрибут ребра | Источник | Вес для новичка | Метрика проверки |
|---|---|---|---|
| Длина | геометрия OSM | базовая | MAE по длине маршрута |
| Класс дороги | highway | +0.3 к стоимости для link | доля съездов |
| Число полос | lanes | −0.1 при lanes ≥ 3 | число перестроений |
| Светофор | highway=traffic_signals | +15 с | ETA против факта |
| Загруженность | телеметрия/исторические логи | коэффициент 1.0–1.8 | MAPE в часы пик |
Глава 2: реализация и архитектура
Ядро — функция стоимости. Ниже минимальный, но защищаемый фрагмент: веса параметризуются профилем, поэтому вы легко обоснуете «персонализацию», о которой говорит 2ГИС.
import math
PROFILE_WEIGHTS = {
"novice": {"link": 0.35, "lanes": -0.10, "signal": 15.0, "roundabout": 8.0},
"regular": {"link": 0.10, "lanes": 0.00, "signal": 7.0, "roundabout": 2.0},
}
def edge_cost(edge, profile="novice", speed_kmh=50.0):
w = PROFILE_WEIGHTS[profile]
base = edge.length_m / (speed_kmh * 1000 / 3600) # секунды
cost = base
if edge.is_link:
cost *= (1 + w["link"])
if edge.lanes ≥ 3:
cost *= (1 + w["lanes"])
if edge.has_signal:
cost += w["signal"]
if edge.is_roundabout:
cost += w["roundabout"]
return cost
Саму маршрутизацию опишите как A* с эвристикой по евклидову расстоянию. Если хотите усилить работу — добавьте предобработку Contraction Hierarchies и сравните время ответа. Архитектуру нарисуйте как C4-контейнеры: клиент → API-шлюз → сервис маршрутизации → кэш графа → хранилище телеметрии. Логи и трассировку удобно показать через OpenTelemetry: в Гл.3 у вас появится честная метрика p95.
Глава 3: метрики и эксперименты
Минимум три группы метрик. Первая — качество маршрута: длина, число манёвров на километр, доля сложных узлов. Вторая — точность прогноза: MAE и MAPE для ETA. Третья — производительность: p50/p95 времени ответа, потребление памяти под граф. Сравнивайте минимум три стратегии: «быстрейший» маршрут, «простейший» и гибрид. Это и есть доказательство практической значимости.
Что проверить перед сдачей
- Каждая задача из введения имеет отражение в выводах по главам.
- Все схемы подписаны, имеют ссылки в тексте, выполнены по ГОСТ 34.602 или ГОСТ 19.
- Метрики определены формулами, а не «на глаз»; приведены условия эксперимента.
- Источники данных указаны с датой выгрузки и лицензией (ODbL для OSM).
- Код в приложении соответствует листингам в тексте, без «магических» констант.
- Проверена уникальность текста и корректность оформления списка литературы.
- Есть раздел с ограничениями исследования — комиссия это ценит.
Типичные ошибки
1. Вся работа построена на одном городе без обоснования. Если вы тестируете только на своём район... нет, если вы тестируете только на своём районе, результат не обобщается. Возьмите минимум два города разного масштаба и явно опишите, почему они выбраны.
2. Подмена персонализации глобальными коэффициентами. Кейс 2ГИС ценен именно разделением профилей. Если у вас один набор весов на всех — новизна темы исчезает. Введите хотя бы два-три профиля и покажите разницу в маршрутах на карте.
3. Метрики без базовой линии. MAE сам по себе ничего не значит. Сравнивайте с OSRM, с «кратчайшим путём» и с предыдущей итерацией вашего алгоритма. Иначе на защите спросят: «А 40 секунд ошибки — это много или мало?»
Если тема уже выбрана, но непонятно, как собрать главы в единую логику, — начните с бесплатной консультации: мы разберём структуру, подскажем источники данных и поможем оформить расчётную часть. Средний срок сопровождения — около 120 часов работы, включая правки после замечаний научрука.
Источник: 2ГИС представил навигатор для начинающих водителей (опубликовано 2026-03-25)