IoT: Написать алгоритм сглаживания числовых данных для топлива в баках

Бюджет 167$ / 10000
руб
в месяц
Создан: 6 лет назад
Открыт
Описание
Всех приветствую!

У нас имеется много данных по уровню топлива в баках у грузовых транспортных средств. Установленные датчики имеют точность 99% когда т/с стоит на месте. Во время движения (ускорение/торможение) солярка в баке движется и погрешность значительно растет (скриншот 1)

Задача такая:
Нужно написать алгоритм с сглаживанием числовых данных, а затем произвести расчеты для статистики по израсходованному топливу (пример в архиве result.js)
На входе имеется массив с данными. Выглядит это приблизительно так:

const data = [
  { timestamp: 1596749449000, fuel_level: 172.5, speed: 0 },
  { timestamp: 1596751619000, fuel_level: 171.03, speed: 0 },
  { timestamp: 1596751648000, fuel_level: 174.14, speed: 5 },
  { timestamp: 1596751654000, fuel_level: 172.76, speed: 5 },
  { timestamp: 1596751659000, fuel_level: 172.76, speed: 4 },
  { timestamp: 1596751660000, fuel_level: 172.76, speed: 4 },
  { timestamp: 1596751662000, fuel_level: 172.76, speed: 4 },
  { timestamp: 1596751664000, fuel_level: 172.76, speed: 4 }
  ....
]

(timestamp int32, fuel_level float64, speed int32)

Что должен уметь делать алгоритм и какие решает он задачи:

1) Сглаживает все данные (уберет все отскоки, которые появляются из-за того, что топливо в баках движется при ускорениях, торможениях и поворотах т/с)
2) Вычислит сколько топлива было заправлено (привязка к timestamp)
3) Вычислит сколько топлива было израсходовано за всё время вместе с сливаниями
4) Вычислит сколько топлива было слито (привязка к timestamp)
5) Минимальный уровень топлива (привязка к timestamp)
6) Максимальный уровень топлива (привязка к timestamp)

Все заправки и сливы должны быть привязаны к timestamp. Если использовать moving median или moving mean нужно учитывать, что timestamp съедет и время слива или заправки не будет соответствовать действительности.

По поводу gps координат: они у нас имеются не во всех случаях, а в случаях, когда они есть – координаты могут тоже быть не точными. Поэтому обходимся без них.

На первом скриншоте это то, что приходит с датчиков. (y – уровень топлива, x – timestamp)
Данные реальные и за этот промежуток времени было 2 заправки по 200 литров

Второй скриншот – это результат, который мы имеем на данный момент с использованием решения написанного на Python. Его главный недостаток – невозможно определить точный timestamp слива и заправки, ну и второй недостаток – неудовлетворительное сглаживание (оно нужно, потому что на треке мы хотим видеть адекватное значение уровня топлива). В нашем случае проблема не в Python, а в том, что алгоритм написан на коленках в сжатые сроки

Во вложении также есть архив, где можно посмотреть 2 примера с тестовыми данными.
На первом примере как раз те данные, которые отражены не скриншотах.
На втором примере слив топлива в объеме 20 литров. Наш код показывается 21.39 литра и то, что сливали 3 раза. Это тоже неправильно.

Также в архиве есть файл result.js – вот такой формат данных с таким набором полей мы ожидаем на выходе.

Теперь про то – на чем пишем алгоритм.
В конечном итоге код будет использоваться в микросервисе, написанный на GO1.15 поэтому очень хотелось бы, чтобы вы сразу написали его на GO

Если вы не знакомы с GO, но владеете, к примеру Java, Kotlin, C или Python – нам подойдет такой вариант, мы сами перепишем его под нас, однако в таком случае ваш код не должен содержать любых сторонних библиотек. Так как мы не сможем перенести их на GO. Желательно чтобы вы написали на строго типизированном языке.

Большое спасибо!
Если есть вопросы по задаче или бюджету – пишите, не стесняемся, обсудим.
Категория
Источник: fl.ru

Похожие проекты

safe 
0 2
Необходимо разработать систему, которая: Подключается к API Diagnocat и iDent (через токены доступа). Получает данные о пациенте, результатах диагностики, снимках и назначениях. Автоматически формирует структурированный отчет по шаблону (включая врачей, этапы лечения, стоимость и описание процедур).......
 
0 0
Необходимо связать БД 1C:ERP с БД Outlook, MS Access, Битрикс24. Например при вводе нового сотрудника в 1С:ERP он должен автоматически появляться в вышеперечисленных БД....
1 месяц назад
 
0 1
Требуется реализация отчёта на кастомизированной 1С:УПП 1. 2, ТЗ и контрольный пример во вложении, 80% кода должно быть покрыто модульными тестами....
2 месяца назад
$7
0 1
Мне нужно копировать мой текст и вставлять в одну группу ВК с открытой стеной для публикации рекламы. Задача скрипта/сервиса/программы - примерно каждые 10 секунд брать мой текст и вставлять в эту группу. Я пробовал через одну программу, которая записывает действия мышки и потом повторяет, но она как-то......
4 месяца назад
safe 
0 0
Написать прошивку для A94B114, используя 2 подобные рабочие прошивки. Все файлы есть....
$21
0 2
Нужно разархивировать файл архив. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы(скрины)....
6 месяцев назад
safe 
0 1
Входные: Имеется скрипт по обработке email писем и добавление их в систему Redmine   Проблема: Система обработки этих писем написана некорректная и негибкая    Задача: Переписать логику обработки входящих писем, чтобы исключить их потерю при незначительных отклонениях от ожидаемой структуры....
$37
0 1
- В обязанности сотрудника входит поддержание мобильного приложения системы автоматизации бизнеса. - Работа сдельная: задачи выдаются на оценку, далее после согласования передаются на реализацию. - Заключаем договор и NDA (соглашение о неразглашении)....
$71
0 0
Информация о проекте: Проект включает в себя React Native приложение с Expo внутри которого находится webview с сайтом На устройствах с ОС IOS проблема с воспроизведением видео....
6 месяцев назад
safe 
0 0
Разрабатываю десктопные программы на языке Java,  а так же Java + SQL....
 
0 6
  1. Чтобы можно было писать описание события (без заголовка) - превью в списке берется N количества букв с начала. (в списке писать дату события и сколько осталось до него) . Выставление даты и времени напоминания и ИНТЕРВАЛА ПОВТОРА ОТ 1 МИНУТЫ! Выставлять количество повторов, далее напоминания прекращаются.......
safe 
0 4
Сайт arg2028t. beget. tech/. Нужно сделать вот такой калькулятор. airprint. by/outdoor/wide-format. и еще некоторые доработки....
safe 
0 6
Краткое описание: Мы ищем исполнителя для тестирования функционала мобильного приложения на платформе Android. Задача включает проверку основных функций приложения, таких как работа комнаты, передача видео, звука и чата, а также создание подробной отчетности о найденных ошибках.   Требования к исполнителю:......
safe 
0 12
Разработка чат-бота под ваши нужды....
$143
0 0
Oпpocы (1008pyб/чaс) Заходитe на сaйт: gonsù....
9 месяцев назад
 
0 4
Требуется создать скрипт для premiere pro. Данная суть скрипта: в выделеном бине нужно что бы автоматически проставлялся in out ровно по серидине файла так что бы выделенная область была длиной 3 секунды. И требуется кнопка что бы работало через окно expressions. Проблема текущего в том что он не работает......
 
0 2
Нужно создать приложения под гемблинг/беттинг, на котлин. Приложение должно работать Firebase. Детали вышлю при обсуждение....
$21
0 4
Нужно разархивировать файл archive. ujems, есть распаковщик, но выдает ошибку. Прислать пруфы  ....
1 год назад
safe 
0 3
Разработать впн сервис ( Приложения на ios и android + сайт для оплаты подписки). Настройка Серверов. Оплата по договоренности. Работаем черед безопасную сделку....
1 год назад
Смотреть все