Розробка AI-системи оптимізації маршрутів громадського транспорту
Міський транспорт — система з пасажиропотоками, що постійно змінюються. AI оптимізує розклад та маршрутну мережу на основі реальних даних, скорочуючи час очікування та підвищуючи заповнюваність.
Аналіз пасажиропотоків
Джерела даних: - Турнікети (AFC - Automated Fare Collection): точний час входу/виходу, тип картки - GPS-трекери транспортних засобів: реальне місце розташування, відхилення від розкладу - Камери в салоні: CV-підрахунок пасажирів (YOLOv8 + tracking) - Мобільний додаток:
Прогноз пасажиропотоку:
import pandas as pd
import numpy as np
from lightgbm import LGBMRegressor
class PassengerFlowPredictor:
"""Прогноз пассажиропотока на остановке по 15-минутным интервалам"""
def build_features(self, df):
df = df.copy()
df['hour'] = df['timestamp'].dt.hour
df['minute_bin'] = df['timestamp'].dt.minute // 15
df['dayofweek'] = df['timestamp'].dt.dayofweek
df['is_weekend'] = df['dayofweek'].isin([5, 6]).astype(int)
df['month'] = df['timestamp'].dt.month
# Лаги: те же интервалы в предыдущие периоды
for lag_days in [1, 7, 14]:
df[f'lag_{lag_days}d'] = df['passengers'].shift(lag_days * 96) # 96 интервалов/день
# Скользящее среднее
df['ma_7d'] = df['passengers'].rolling(7 * 96).mean()
return df
def train_and_predict(self, historical_df, forecast_horizon=96):
df = self.build_features(historical_df)
feature_cols = ['hour', 'minute_bin', 'dayofweek', 'is_weekend', 'month',
'lag_1d', 'lag_7d', 'lag_14d', 'ma_7d', 'is_holiday',
'weather_temp', 'weather_rain']
train = df.dropna(subset=feature_cols + ['passengers'])
model = LGBMRegressor(n_estimators=300, learning_rate=0.05, num_leaves=64)
model.fit(train[feature_cols], train['passengers'])
# Прогноз на следующие 24 часа
future = df.tail(forecast_horizon)[feature_cols]
return model.predict(future).clip(min=0)
Оптимізація розкладу
Headway Optimization:
Завдання: визначити оптимальний інтервал відправлення (headway) для кожного маршруту в кожний часовий період: - мінімізувати очікування пасажирів (proportional to headway) - мінімізувати витрати на транспорт (proportional to frequency) - обмеження: місткість при піковому попиті ≤ 85% місць
Для кожного маршруту та години: headway* = sqrt(2 × vehicle_capacity × cycle_cost / (passenger_demand × vot))
Динамічний розклад:
На відміну від фіксованого розкладу на квартал, AI коригує частоту в реальному часі: - Прогноз піків на наступні 1-2 години → збільшення частоти заздалегідь - Вихід транспортного засобу з ладу → перерозподіл інтервалів
Маршрутна мережа
Transit Network Design:
Оптимізація конфігурації маршрутної мережі - завдання мета-евристики (Genetic Algorithm, Simulated Annealing): - Покриття: % мешканців у кроковій доступності від зупинки (норма: 500 м) - Пересадочність: середня кількість пересадок до мети - Дублювання: мінімізувати паралельні маршрути
Demand Responsive Transport (DRT):
Міні-буси на вимогу (як Uber Pool для громадського транспорту): - Пасажир запитує поїздку A→B через додаток - Алгоритм об'єднує запити з маршрутами, що перетинаються - VRP-solver в реальному часі → маршрут для міні-автобуса - Використовується в малонаселених районах, де нерентабелен
Управління парком
Depot allocation:
Скільки транспортних засобів випустити з кожного депо для обслуговування ранкового піку: - Оптимізація MILP: мінімізація порожніх пробігів у/з депо - Облік технічного стану кожної одиниці (ТО розклад)
Electric fleet charging:
Для електробусів (ЛіАЗ 6274, Yutong E12): - прогноз споживання заряду по кожному маршруту - оптимізація зарядки: вночі дешевий тариф + у проміжках маршруту - гарантія: до початку кожного рейсу достатньо заряду
Інтеграція з міськими системами
- АСУДД: світлофорний пріоритет для громадського транспорту (TSP - Transit Signal Priority) - ГІС Москва/міста: публікація розкладу через GTFS (General Transit Feed Specification) - Пасажирські додатки (Яндекс.Транспорт, 2ГІС): real-time позиції через API
Термін розробки: 4-7 місяців для платформи з прогнозом пасажиропотоку, оптимізацією розкладу та DRT-модулем.







