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

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Разработка AI-системы управления дорожным трафиком оптимизация светофоров
Сложный
~2-4 недели
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

AI-система управления трафиком и оптимизация светофоров

Светофорная оптимизация — классическая задача MARL: каждый перекрёсток — агент, который видит локальный трафик и адаптирует фазы. CityFlow и SUMO — открытые симуляторы с Python API. Реальные внедрения (Hangzhou, Saudi Arabia) показывают -15–30% к среднему времени ожидания.

Почему RL превосходит фиксированные фазы

Фиксированные циклы работают хорошо при предсказуемом потоке. Адаптивные системы (SCOOT, SCATS) требуют ручной калибровки. RL агент оптимизирует напрямую под трафик без ручного тюнинга и адаптируется к аномалиям (ДТП, дожди, мероприятия).

Задача: N перекрёстков, у каждого K фаз (направлений). Агент выбирает текущую фазу и длительность → минимизация суммарного времени ожидания.

CityFlow — среда симуляции

import cityflow

# конфигурация города из JSON (дороги, перекрёстки, трафик)
eng = cityflow.Engine('config.json', thread_num=4)

# состояние перекрёстка
lane_vehicles = eng.get_lane_vehicle_count()  # машин в каждой полосе
lane_waiting = eng.get_lane_waiting_vehicle_count()
current_phase = eng.get_current_phase(intersection_id)

# действие: сменить фазу
eng.set_tl_phase(intersection_id, new_phase)
eng.next_step()

Gym-совместимая среда

class TrafficEnv(gym.Env):
    def __init__(self, n_intersections, config_path):
        self.n = n_intersections
        self.eng = cityflow.Engine(config_path)

        # observation per intersection: vehicle counts + waiting + phase
        obs_dim = 12 + 12 + 8  # 12 подъездных полос, 8 фаз
        self.observation_space = spaces.Box(
            low=0, high=100, shape=(n_intersections, obs_dim))

        # action: выбор фазы для каждого перекрёстка
        self.action_space = spaces.MultiDiscrete([8] * n_intersections)

    def step(self, actions):
        for i, action in enumerate(actions):
            self.eng.set_tl_phase(f'intersection_{i}', int(action))

        # несколько шагов симуляции на одно решение агента
        for _ in range(self.control_interval):  # 10–30 сек
            self.eng.next_step()

        obs = self._get_obs()
        reward = -self.eng.get_average_travel_time()  # минимизируем ATT
        return obs, reward, False, False, {}

MARL алгоритмы для трафика

Independent DQN (InDQN): Каждый перекрёсток — независимый DQN агент. Другие агенты — часть среды. Простейший baseline, часто работает неплохо.

Cooperative Light (CoLight): Attention mechanism для учёта соседних перекрёстков. Агент перекрёстка i внимательно смотрит на соседей j:

class CoLightAttention(nn.Module):
    def forward(self, own_obs, neighbor_obs):
        # own_obs: [batch, obs_dim]
        # neighbor_obs: [batch, n_neighbors, obs_dim]
        query = self.q_proj(own_obs).unsqueeze(1)
        keys = self.k_proj(neighbor_obs)
        values = self.v_proj(neighbor_obs)

        attention = F.softmax(
            torch.bmm(query, keys.transpose(1,2)) / math.sqrt(self.d_k), dim=-1
        )
        context = torch.bmm(attention, values).squeeze(1)
        return self.output_proj(torch.cat([own_obs, context], dim=-1))

MPLight: Сочетает pressure-based feature engineering (queue pressure) с MARL. Лучшие результаты на CityFlow benchmarks.

Reward Engineering

def compute_reward(self, intersection_id):
    # вариант 1: queue length (простой)
    queue = sum(self.eng.get_lane_waiting_vehicle_count()[lane]
                for lane in self.intersection_lanes[intersection_id])
    return -queue

    # вариант 2: pressure (разница очередей)
    incoming = sum incoming lane queues
    outgoing = sum outgoing lane queues
    return -(incoming - outgoing)  # "pressure"

    # вариант 3: average travel time (глобальная метрика)
    return -self.eng.get_average_travel_time()

Pressure-based reward работает лучше queue length: учитывает downstream congestion.

Интеграция с реальными контроллерами

SCATS/SCOOT совместимость: Большинство городских сетей используют SCATS (Australia) или SCOOT (UK). RL решение должно формировать сигналы в формате этих систем.

NTCIP протокол: National Transportation Communications for ITS Protocol. Управление светофорами через SNMP. RL агент → NTCIP команды.

OpenTMS: Открытый стандарт для traffic management. REST API для получения состояния + управления.

Actuated control fallback: При отказе RL (сетевой сбой, аномальный трафик) — автоматический переход на actuated control (детекторы транспорта).

Данные и мониторинг

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

  • Видеодетекторы (перекрёстки с камерами) → очереди в реальном времени
  • Индуктивные петли → точный подсчёт
  • GPS флот (такси, автобусы) → travel time feedback
  • Connected Vehicles (V2X/C-V2X) → proactive optimization

KPI мониторинг:

  • Average Travel Time (ATT) — основная метрика
  • Queue length per lane
  • Number of stops per vehicle
  • Throughput (vehicles/hour/intersection)

Сравнение с baseline (фиксированные фазы): целевое улучшение ATT -20% для смешанного трафика.

Масштабирование

Hierarchical control:

  • Микроуровень: отдельные перекрёстки (MARL агенты)
  • Макроуровень: arterial coordinator для зелёной волны
  • Мета-уровень: citywide traffic management (demand prediction + signal coordination)

Graph Neural Networks: Дорожная сеть как граф → GNN для propagation информации. Агент перекрёстка i получает embeddings от всех перекрёстков через k-hop neighbourhood.

Сроки: 12–24 недели

RL агент в CityFlow на одном перекрёстке — 4 недели. Координированная MARL система для района (20–50 перекрёстков) с attention — 12 недель. Реальное внедрение с интеграцией в городскую инфраструктуру — 20–24 недели.