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

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

У нас имеется много данных по уровню топлива в баках у грузовых транспортных средств. Установленные датчики имеют точность 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$22
9 0
требуется готовую онлайн анкету на django по приему на работу перенести в whatsapp, telegram и viber. Нужно чтобы кандидат мог с удобством заполнять анкету с телефона, а все заполненные им данные по всем позициям автоматически загружались в нашу базу данных. В нашей базе будет создаваться резюме кандидата......
safe 
28 0
В наличии массив кадастровых номеров (КН), необходимо путем запроса на ПКК определить примерные географические координаты каждого объекта из массива КН (ОКС, ЗУ), вывести в результирующий файл эти ко-ты и ряд сопутствующих данных по этому КН....
1 год назад
safe 
44 1
Необходимо разработать бек и фронт мини-сервиса таким образом, чтоб его можно было развернуть внутри другого проекта....
safe$1111
23 0
Стоит на Бизнесе для своих нужд на простеньком базовом шаблоне, складываю туда контент потихоньку. Нужно начинать приводить в соответствие что бы публика сразу не убегала, а как то цеплялась, да и продвигать не торопясь. Шаблон где порвался от вставки баннеров подправить, для мобилок может сверстать.......
safe$22
55 0
Парсер для сайта stockx. com на питоне (selenium/pyppeteer). Необходим следующий функционал: 1. На главной странице с поиском по ключевым словам найти первый результат из поиска (ссылку на страницу товара) ....
1 год назад
safe$44
49 0
Трипланарная транспортная задача (отправители - транспорт - получатели) генерация исходных данных трехэтапное решение 1....
safe$1111
48 0
Требуется написать парсер маркетплейса, у которого есть только мобильное приложение (IOS, Android). Есть исходный код Android приложения (Java + Kotlin), реверснутый через JADX. Необходимо парсить данные о товарах, полученные по артикулу. За подробностями тг: @markermann)....
1 год назад
 
38 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
36 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
37 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
31 0
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
 
40 1
Требуется написать софт , который будет делать рассылку по личным сообщениям на площадке Ebay Kleinanzeigen по заранее спаршенным обьявлениям....
1 год назад
$22
59 1
В Геткурсе нужно сделать интеграцию со Сбербанком для оформления рассрочки/кредита. Основная задача – передача суммы и номера заказа при переходе для оформления рассрочки и возврат сведений при удачном оформлении. Эквайринг от Сбербанка к Геткурсу подключён, а готовой интеграции для рассрочки нет. Если......
1 год назад
 
96 0
Нужно сделать бот перехватчик заказов по фильтру такси Максим!...
1 год назад
$33
75 1
Как можно загрузить готовое фото из галереи, если приложение просит загрузить фото и при этом открывает камеру телефона? Нужно вместо использования реальной камеры смоделировать вход камеры и при этом загрузить фото из галереи....
1 год назад
 
117 3
Очень простой криптообменник в виде веб-сайта. Без смарт-контрактов и т. Все платежи вручную....
Смотреть все