Русский военный корабль, иди нах*й.
Пожертвувати на армію
×
Упс!
Не вдала спроба:(
Будь ласка, спробуйте ще раз.

Як ми створили власний сервіс заторів з використанням ШІ та без Google Maps — досвiд Uklon

Володимир Андрієнко
Володимир Андрієнко Head of R&D у Uklon
26 серпня 2022 10 хвилин читання

У лютому, ще до початку повномасштабної війни, ми розмовляли з Володимиром Андрієнком, Head of Data & Research в Uklon. Тоді йшлося про те, як влаштовані послуги маркетплейсу поїздок, що у нього «під капотом». Сьогодні ми продовжуємо тему, до того ж є чудова нагода: нещодавно Uklon запропонував нові сервіси — Traffic Jam та ETA, створені на базі  OSRM, що відкривають додаткові можливості не тільки для повсякденних перевезень, але й більш загально — для допомоги у захисті країни та майбутнього розвитку українських міст.

Володимир Андрієнко, Head of R&D в Uklon Володимир Андрієнко, Head of R&D в Uklon

Коли твоя компанія конкурує з провідними світовими гравцями, завжди є певний набір технологій та послуг, які мають бути за замовчуванням для того, щоб зберегти технологічний паритет. У сегменті райдхейлінг, де працює Uklon, одним із найважливіших чинників бізнесу є можливість визначення з максимальною точністю часу прибуття авто. Не менш важливим виявляється і побудова оптимальних маршрутів поїздок — найвигідніших щодо витраченого часу, зручності, ціни, причому для обох учасників процесу — водія та пасажира. Для забезпечення таких можливостей Uklon потрібно було розробити цілий набір власних продуктів, які з одного боку не поступалися б зразкам міжнародних гравців, а з іншого — вкладалися у певний бюджет та дуже стислі терміни виконання. Ті, хто користується нашим сервісом, мабуть, вже відчули, що з цим завданням ми впоралися. Як? Зараз розповім.

Час — гроші, або Ані хвилини задарма

Що таке Uklon? Це IT-компанія, найвідомішим продуктом якої є  онлайн-майданчик для організації мільйонів поїздок щомісяця. Фактично Uklon створив місце, де зустрічаються «продавець» (тобто водій чи драйвер у нашій внутрішній термінології) та «покупець» (він же пасажир чи райдер). Між ними на певних умовах укладаються «контракти» (так формально можна назвати звичайну поїздку) — тисячі щохвилини по всій країні. Одна з наших цілей у тому, щоб за одиницю часу здійснювалося якнайбільше успішних угод, а відсоток відмови та порушень, навпаки, був би мінімальним. До того ж ми не можемо ставати на чийсь бік, нам важливо враховувати інтереси як водіїв, так і пасажирів. А ці інтереси різні, бо драйвер хоче більше заробити на поїздці, а райдер — витратити на той самий маршрут якнайменше.

Проте для нас критично важливим показником є те, як швидко зустрінуться райдер та драйвер. Наші конкуренти добре вміють вираховувати час прибуття, тому кожна зайва хвилина очікування потенційно знижує кількість та лояльність клієнтів. Якщо водій вкаже, надто «оптимістичну» оцінку часу, то може запізнитися і замовлення зірветься. Це теж не є добре. Тобто час прибуття треба розраховувати з точністю до 1-2 хвилин з урахуванням багатьох чинників: довжини маршруту, заторів, аварії тощо. 

Як було до впровадження ETA? Водій сам визначав часу прибуття: вказував, через приблизно скільки хвилин розраховує бути на місці. Тобто покладався на власну інтуїцію. Але, проаналізувавши великий масив даних про поїздки, ми з'ясували, що майже у половині випадків час брали з відчутним запасом. Водії таким чином хотіли підстрахуватися, щоб не зірвалося замовлення. Хтось приймав новий виклик, щойно закінчувався попередній маршрут, чи може хотів перекусити, допити каву… Очевидно, що середній час прибуття можна було помітно скоротити. Так народилася ідея створення модуля Estimated Time Arrival (ETA), який працює всередині нашого сервісу поїздок. Тепер система сама пропонує водієві час, за який він може доїхати до місця призначення, а також прокладає оптимальний маршрут.

Тепер Uklon прогнозує час прибуття авто Тепер Uklon прогнозує час прибуття авто

Але ETA працює не сама по собі, а використовує дані інших наших розробок — Traffic Jam та Optimal Route.

Open source та Big Data для оптимальних поїздок

Фактично основний сервіс тут це Traffic Jam, який дозволяє в режимі реального часу та з високою точністю відстежувати дорожню обстановку у місті. Для цього ми в режимі реального часу збираємо та аналізуємо дані з різних джерел, наприклад, від GPS-блоків водіїв, які використовують застосунок Uklon. Це все накладається на віртуальну мапу. Дані агрегуються, обробляються, уточнюються, а в результаті ми маємо змогу будувати оптимальні маршрути руху з урахуванням всіх перешкод.

Це давно уміють робити і великі світові гравці, що працюють в одній з нами ніші, але вони для побудови маршрутів використовують зазвичай Google Maps Platform. Це коштує шалених грошей. Нам як суто українській компанії просто не було сенсу так вкладатися. Тим паче є відкриті продукти. Тому Traffic Jam вирішили будувати на Open Source Routing Machine (OSRM). 

OSRM існує вже понад 10 років то поширюється безкоштовною за ліцензією BSD. Як картографічний сервіс там  використовують дані OpenStreetMap (OSM), також відкритого проєкту. За функціональністю та зовнішнім виглядом все це схоже на знайомий нам Google Maps — така сама динамічна маршрутизація, принцип click-to-drag, побудова альтернативних шляхів. Але, як і у будь-якому проєкті на базі open source, це призвело до доопрацювання, адаптації під час інтеграції модуля у нашу екосистему. 

Також дані треба постійно оновлювати, бо дорожня обстановка у містах постійно змінюється (десь ремонт, об'їзд, аварія тощо). Ще один момент — точність визначення координат. «Публічний» GPS видає значну, аж до декількох десятків метрів, похибку. Тому отримані дані треба оперативно обробляти, для чого ми використовуємо технології Map matching. Приклад можна побачити на цьому малюнку:

Побудова маршруту авто по GPS (чорна лінія) та із застосуванням обробки за допомогою Map matching (зелена лінія) Побудова маршруту авто по GPS (чорна лінія) та із застосуванням обробки за допомогою Map matching (зелена лінія)

Обробляти потрібно онлайн, тобто  сервіс завжди залишається високонавантаженим. Скажімо, щосекунди, тільки у Києві, враховуючи кількість водіїв, обробляють приблизно 2 тис. координат. На добу це 88 млн, адже Traffic Jam працює по всій країні за винятком тимчасово непідконтрольних територій, тут не обійтися без технологій Big Data. При цьому вся обробка відбувається у хмарах, переважно AWS, за межами України.

Ще одне джерело інформації для Traffic Jam — ретроспективні дані, які постійно агрегуються та аналізуються. Це дозволяє, наприклад, оптимізувати відомі маршрути та виявляти «аномалії». Буває, що водій проїжджає певну ділянку помітно швидше за інших. Треба розібратись чому: чи він порушує правила (повертає в недозволеному місці, перевищує швидкість) або знає коротший маршрут, який ми чомусь пропустили. У вивченні даних допомагають технології Data Science, це алгоритми та моделі машинного навчання. Крім того, за дорожньою обстановкою постійно стежать дванадцять (станом на кінець липня) штатних картографів, які відстежують усі значні події на дорогах загального користування та оперативно вносять їх до бази даних. Приклад таких ручних коригувань — заява Кличко про перекриття Південного мосту чи відкриття Дарницького.

Тому завдяки Traffic Jam драйвер знає, як найшвидше дістатися місця замовлення. А  райдер отримує оптимальну пропозицію щодо часу очікування та ціни. Наша пропозиція не повинна бути надто дорожчою, ніж у конкурентів, при цьому зовсім дешеві замовлення не заохочують водіїв, тож у кожному випадку необхідно дотримуватися балансу. За його знаходження відповідають розроблені нами моделі, які працюють на основі масивів великих даних, що постійно поповнюються. 

ETA вже показує результати у прогнозі часу подання авто ETA вже показує результати у прогнозі часу подання авто

З нуля у продуктив — за пів року

Проєкт ETA/Traffic Jam вийшов міжкомандним. У його реалізації брали участь наші фахівці з різних напрямів та відділів: розробники Core-функціоналу, бізнес-аналітики, експерти з Data Science та ML, команда R&D, DevOps, MapService та інші. Загалом залучили кілька десятків людей. Основний технологічний стек розробки включає .NET (routing), Python (core), Apache Kafka (Big Data), Kubernetes і Docker для роботи з контейнерами (Uklon використовує мікросервісну архітектуру під час розроблення продуктів). До речі, під час створення саме ETA-функціоналу вдалося обійтися без важких моделей. Просто умови проєкту цього не вимагали, вистачило лінійного регресійного аналізу. ЕТА вийшла простою, тому що основну роботу за неї зробив складний TrafficJam.

Загальний час реалізації проєкту становив менше пів року. Стартувавши у вересні 2021-го, вже у листопаді Traffic Jam запрацював у перших містах — Вінниці та Чернігові. На лютий 2022 року запланували повноцінний запуск і в інших частинах України, але війна завадила початковим планам. В результаті терміни трохи змінилися, і, скажімо, у Києві Traffic Jam запрацював 7 квітня, а далі почав швидко поширюватися в інших містах. Щодо ETA, то станом на середину літа він доступний в одинадцяти містах, а незабаром їхня кількість зросте до п'ятнадцяти. 

На цьому етапі кожні кілька тижнів ми видаємо нові релізи. У планах розвитку продукту — контроль дотримання водієм ПДР (зараз система вже видає попередження про перевищення швидкості). Далі буде контроль і попередження заборонених поворотів (перетин подвійної суцільної тощо). Також незабаром з'являться нові переваги для пасажира, скажімо, можливість визначення оптимальної точки подання машини.

Майбутнє для розумних міст

Уже є перші результати впровадження Traffic Jam та ETA. Очікувано скоротився середній час подання авто, підвищилася лояльність користувачів, знизилася кількість відмов

Як скоротився середній час подання авто Як скоротився середній час подання авто
Завдяки ETA знизилася і кількість відмов Завдяки ETA знизилася і кількість відмов

Ми дивимося і далі, бо проблема міського трафіку лише посилюватиметься. Водночас  наші сервіси цілком можуть допомогти у справі динамічної оптимізації дорожнього руху та контролю автомобільних потоків, наприклад, у межах проєктів Smart City. Усі можливості та вигоди Traffic Jam та ETA ще належить виявити, у цих рішень надзвичайно великий потенціал для розвитку.

Якщо ви хочете поділитися з читачами SPEKA власним досвідом, розповісти свою історію чи опублікувати колонку на важливу для вас тему, долучайтеся. Відтепер ви можете зареєструватися на сайті SPEKA і самостійно опублікувати свій пост.
1
Прокоментувати
Yevhen Nesterenko 31.08.2022, 12:39
Я думаю, що так недалеко і до партнерств з Укравтодор та переосмислення дорожної розмітки та знаків на основі даних Uklon 😎
Інші матеріали

На Steam уперше з'явилася компʼютерна гра, створена штучним інтелектом

Вадим Добровольський 22 вересня 2022 18:10

IT-волонтерство в дії. Розробники з NIX долучилися до створення онлайн-платформи для волонтерів ЮНІСЕФ

IT-команда NIX 22 вересня 2022 18:04

Три історії та поради від українок, що побудували успішну кар'єру в IT

GlobalLogic Ukraine 22 вересня 2022 13:43

Штучний інтелект — не митець. Getty Images забороняє зображення, створені нейромережею

Вадим Добровольський 22 вересня 2022 11:35

Доїхати за «БігМаком». Кількість поїздок до точок поблизу відкритих McDonald's зросла на 20-30% — дані Uklon

Юлія Даниленко 21 вересня 2022 16:32