Условие
В Москве в час-пик такси перегруз: ride request waits 8 минут. В Подмосковье в дневное время простаивают водители. Как балансировать?
Решение
Карта дисбаланса
Гранулярность: геокластер × час (или 15 минут).
WITH grid AS (
SELECT geo_cell, hour_of_week,
SUM(rides_requested) AS demand,
SUM(driver_minutes_available) AS supply
FROM data GROUP BY 1, 2
)
SELECT *, demand / NULLIF(supply, 0) AS imbalance
FROM grid
ORDER BY imbalance DESC;Способы балансировки
| Инструмент | Эффект | Стоимость |
|---|---|---|
| Surge / динамическая цена | Demand ↓, Supply ↑ | риск отрицательного PR |
| Push водителям «иди в зону X» | Supply ↑ | ограниченный effect |
| Heatmap для водителей | Supply ↑ в hot zones | бесплатно, точечно |
| Бонусы за поездку в зону Y | Supply ↑ | прямые costs |
| Cap на demand в перегруз | Demand ↓ | плохой UX |
| Заранее заказать (pre-book) | сгладить пик | помогает только если есть привычка |
Surge pricing — двусторонний эффект
- Цена ↑ на 1.5× → demand падает на ~30%, supply растёт на ~40%.
- ETA сокращается с 8 минут до 3.
- Юзеры жалуются, но wait меньше = меньше cancellation.
Granularity матricы
Слишком мелкая (1 минута × 100м) — шум. Слишком крупная (час × район) — теряется локальность. Обычно: 15 минут × 1 км сетка.
Прогноз
ML-модели предсказывают demand по часу/гео на 30-60 минут вперёд:
- Time series (Prophet/ARIMA).
- ML (XGBoost) с фичами: дня недели, погоды, событий, истории.
С прогнозом можно проактивно двигать supply (push водителям ехать в район, где через 30 мин рейв).
Метрики качества балансировки
- ETA (среднее время ожидания).
- Cancellation rate по wait > 5 мин.
- Driver idle time.
- Surge frequency / depth.
- Conversion search → ride.
Подводные камни
- Surge выше 2× становится PR-проблемой. Кап на surge — почти у всех платформ.
- Cold start новых зон (новый город) — нет supply, нет demand, нет матчинга → quit. Решение: запустить сразу обе стороны.
- Прогноз с ошибкой 20% даёт smaller benefit чем кажется — двигать водителей по неверному прогнозу = много простоя.
- Driver supply elasticity ниже у employed драйверов (есть смены) и выше у гиг — Uber работает только при гиге.
- Регуляторика: в некоторых странах surge ограничен или запрещён (Япония, некоторые штаты).
Эталонный ответ
Карта imbalance по сетке (15 мин × 1км). Балансировка: динамическая цена (двусторонний эффект — demand вниз, supply вверх), heatmap водителям, бонусы. Watch ETA + cancellation + surge depth.