Модуль предиктивного анализа
Модуль осуществляет прогноз динамики временного ряда на основании автоматически рассчитанного тренда и фактора сезонности.
Технические требования
Операционная система Ubuntu 20/22, Linux OS 64-битная. PHP-версии 7.3, модуль работы с PostgreSQL и ClickHouse.
Требования к вычислительным ресурсам: 1 ядро, поддерживающее 64 битные вычисления, 10 Мбайт на жестком диске.
Описание работы
Модуль может быть вызван из системы и начинает выполняться с PHP-скрипта «index.php
». Данные запроса в модуль передаются через параметры GET-запроса. В параметрах запроса передаются данные, из какого канала брать данные, с какой даты брать данные и до какой даты делать прогноз.
Блок-схема работы модуля:
Predictor
Predictor – C++ программа для определения трендов и временного прогнозирования. По полученным данным строит тренд и вычисляет сезонный фактор, на основе которых делает прогноз. Минимальный временной промежуток прогноза – один день. Если дата dateFrom
, с которой необходимо брать данные менее одного месяца, она игнорируется.
Настройка модуля
Запрос расчета должен направляться на скрипт index.php в папке модуля.
Пример запроса:
http://(сервер)/Prediction/Ind3/?chart=1&device_code=o1&channel=395&dateFrom=2022-05-11T20:57:17&dateTo=2022-05-11T21:01:17//
Опции:
- chart – тип графика, работает только 1;
- device_code – код устройства;
- channel – id канала;
- dateFrom – с какой даты брать данные;
- dateTo – до какой даты делать прогноз;
- correction_channel – канал, по которому будет проводиться коррекция, по умолчанию стоит на 195. Для того, чтобы коррекция не проходила, указать номер канала -1.
Настройка модуля в файле config.php и пример конфигурации
В массив $correction_device_id
добавляется id канала, где находятся данные, по которым идет коррекция.
$correction_time_resolution
– содержит разрешение по времени в секундах, для согласования данных канала коррекции и канала, который нужно корректировать. Для примера, при измерении угла отклонения в канале коррекции ищется значение в канале коррекции, временная метка которого находится в интервале +-
$time_resolution
. Например, если корректирующий канал – уровень, который снимается раз в 1 час, то $time_resolution
нужно указывать в час (в секундах) 3600.
$level
– значение корректирующего канала, при котором данные учитываются.
$level_resolution
– интервал +-, в котором данные учитываются, интервал – ($level-$level_resolution, $level+$level_resolution
).
Пример настройки каналов коррекции:
$correction_device_id=array('195'); $correction_time_resolution['195']=3600; $correction_level['195']=4.75; $correction_level_resolution['195']=0.25;
Модуль запускается по запросу, запуск по расписанию не предусмотрен.
Подключения модуля в системе мониторинга
При настройке канала устройства (инклинометра или термокосы) необходимо включить чек-бокс «Предикция» и выбрать соответствующий «Тип устройства для предиктивного анализа».