Как определить сливы топлива и махинации с заправками с помощью ИИ


Поиск сливов топлива и манипуляций с заправками на базе телематических данных всегда был интересной задачей. Современные мониторинговые системы, в том числе Navixy, успешно справляются с ней. Однако на смену классическим алгоритмам детекции постепенно приходят ИИ-модели, которые умеют классифицировать события и находить аномалии напрямую по сырым данным.
Мы протестировали такой подход на практике: создали прототип, который передает модели Jev от Typesafe AI фрагменты телематических данных из IoT Query (аналитической платформы Navixy) и получает классификацию события вместе с оценками для интерпретации результата. Подчеркнем: Jev не позиционируется как замена существующих решений по определению топливных событий. Это дополнительный инструмент и новый способ построения решений.
Главная ценность подхода — гибкость и кастомизация. Сочетание IoT Query и Jev позволяет разработчикам и системным интеграторам создавать собственные приложения принятия решений, точно адаптированные под бизнес-процессы конкретной компании. Речь не о том, чтобы заменить то, что уже работает, а о расширении возможностей с помощью ИИ-моделей.
Где и зачем нужны такие ИИ-модели, как Jev
Jev не пишет тексты и не генерирует код. Ее главная задача — возвращать формализованные решения и вероятности, которые можно сразу использовать в приложениях и системах принятия решений. На вход модель получает два блока:
- Состояние системы (параметры, значения, JSON-контекст).
- Набор типизированных вопросов.
Модель Jev оценивает каждый вопрос относительно переданного состояния и отдает один из зафиксированных вариантов вместе с вероятностью. Пользователь или его агент могут использовать результаты дальше в приложениях, например, для принятия решений.
Как с помощью Jev найти сливы и заправки?
В управлении автопарком вопросы, связанные с топливом, всегда являются одними из самых острых. Сегодня сливы происходят реже, но махинации с чеками никто не отменял: по чеку 50 литров, фактически залито 40.
Традиционно для поиска таких событий используют скользящие средние и классическое машинное обучение. Теперь ядром определения событий может стать ИИ-модель, которая на сырых данных отвечает: «это заправка», «это слив», «это калибровка/перемещение жидкости» или «не уверен», и сразу добавляет вероятность и рассчитанный объем.
Для работы с кастомной аналитикой в экосистеме Navixy удобно использовать IoT Query — решение, которое предоставляет доступ ко всему спектру клиентских данных: от телематических до бизнес-данных, используемых для интеграций и построения собственных аналитических приложений. В нашем прототипе мы используем сырые данные как основу для анализа событий, а Jev помогает определить, к какому типу относится каждое из них.
Схема работы прототипа проста:
- Алгоритм отслеживает уровень топлива и фиксирует события-претенденты (резкие изменения объема).
- Вырезает короткий фрагмент временного ряда с телематическими параметрами.
- Передает его в Jev вместе с типизированными вопросами.
- Модель возвращает класс события, вероятность и дополнительные оценки.
В результате получается запись вида: 13:32 — заправка, 67 литров, вероятность 87 %
Как выглядит запрос и ответ
С технической точки зрения взаимодействие выглядит просто. Мы передаем модели объект state с параметрами события и объект questions с тем, что именно нужно оценить.
Запрос к модели:
{
"model": "typesafe/jev-1.13",
"state": {
"vehicle_speed": "...",
"vehicle_stationary": "...",
"gps_quality": "...",
"..."
},
"questions": {
"real_fuel_increase": {
"type": "noul",
"instructions": "Is the observed fuel increase a genuine added volume rather than sensor noise, tilt, a spike, or recovery from zero?",
"criteria": {
"true": "Sustained, physically plausible increase from a non-empty tank.",
"false": "Change is within noise, oscillatory, a recovery from zero, or not a real fill."
}
},
"..."
}
}
В state перечислены параметры и значения окна: бак (было/стало/дельта/скорость залива), движение (скорость, стоял ли, GPS), качество сигнала (шум, дыра, число точек) и пороги профиля (минимум заправки, пустой бак, максимальная скорость «на колонке»).
В questions — вопросы «да/нет» (noul): реальный плюс, реальный минус, шум, стоял, похоже на заправку, на слив, калибровка. И один вопрос «выбери класс» (event_type): заправка / слив / аномалия / калибровка / не уверен.
Ответ содержит оценки по отдельным признакам и результат классификации:
{
"answers": {
"real_fuel_increase": { "noul": 0.87 },
"real_fuel_decrease": { "noul": 0.11 },
"sensor_noise": { "noul": 0.07 },
"vehicle_stationary": { "noul": 0.77 },
"matches_refuel_profile": { "noul": 0.94 },
"matches_drain_profile": { "noul": 0.02 },
"likely_calibration": { "noul": 0.08 },
"gap_confounds_event": { "noul": 0.07 },
"event_type": {
"choice": "REFUEL",
"confidence": 1.0,
"probabilities": {
"REFUEL": 1,
"FUEL_DRAIN": 0,
"FUEL_SENSOR_ANOMALY": 0,
"CALIBRATION_SHIFT": 0,
"UNKNOWN_FUEL_EVENT": 0
}
}
}
}
В этом примере модель выбрала класс REFUEL, оценила соответствие профилю заправки в 0,94 и реальность увеличения уровня топлива — в 0,87.
Какой результат мы получили?
Мы тестировали модель на недельных окнах данных, приближая условия к задачам флит-менеджера, и сравнивали результаты с фактическими событиями.
| Показатель | Результат |
|---|---|
| Охват данных | 93,8 % |
| Точность | 98,4 % |
| Достоверность событий заправки и рассчитанного объема | 99 % |
В прототипе использовались 25 параметров из слоя сырых данных IoT Query, включая настраиваемые пороги для конкретного автопарка и сенсоров, а также кастомные метрики.
Такая гибкость позволяет учитывать реальные рабочие процессы: объединять последовательные изменения в одно событие заправки, отличать сбои телеметрии от потенциального хищения и корректно обрабатывать пограничные ситуации.
Что дальше?
Заправки и сливы — лишь один из сценариев. В повседневной работе автопарка таких задач гораздо больше:
- вход и выход из геозоны — согласованное изменение маршрута или нарушение;
- длительный простой — плановая разгрузка или ожидание;
- потеря связи — временное отсутствие покрытия или поломка устройства.
Связка IoT Query (сырые данные) + Jev (детерминированная классификация с вероятностями) может стать основой для кастомного решения событийной аналитики или автономной системы принятия решений во всех перечисленных случаях. Хотите создавать свои приложения на базе телематических данных, напишите нам.
Подробнее о том, как строить агентные системы на телематических данных, — в статье о разговорной аналитике.
