exponenta event banner

Обновление прогноза RUL по мере поступления данных

В этом примере показано, как обновлять прогноз RUL по мере поступления новых данных с тестируемого компьютера. В этом примере для обучения модели RUL используется совокупность учебных данных. Затем выполняется циклический перебор тестовых данных с одной машины, обновление прогноза RUL для каждой новой точки данных. Пример показывает эволюцию прогноза RUL по мере появления новых данных.

В этом примере используется exponentialDegradationModel. Для моделей ухудшения RUL, когда становится доступной новая точка данных, необходимо сначала обновить модель ухудшения, прежде чем прогнозировать новое значение RUL. Для других типов моделей RUL пропустите этот шаг обновления.

Данные для обучения и прогнозирования

Загрузите данные для этого примера, состоящего из двух переменных, TestData и TrainingData.

load UpdateRULExampleData

TestData - таблица, содержащая значение некоторого индикатора условия, Condition, записывается каждый час, как показывают первые несколько записей.

head(TestData,5)
ans=5×2 table
    Time    Condition
    ____    _________

     1        1.0552 
     2        1.2013 
     3       0.79781 
     4          1.09 
     5        1.0324 

TrainingData - массив ячеек таблиц, имеющих те же переменные, что и TestData. Каждая ячейка в TrainingData представляет эволюцию к отказу индикатора состояния Condition за время существования одной машины в ансамбле.

Модель прогнозирования поезда

Использовать TrainingData для обучения exponentialDegradationModel модель для прогнозирования RUL. fit команда оценивает предшествующее значение для параметров модели на основе исторических записей в TrainingData. Prior свойство обучаемой модели содержит параметры модели Theta, Beta, и Rho. (Подробные сведения об этих параметрах модели см. в разделе exponentialDegradationModel.)

mdl = exponentialDegradationModel('LifeTimeUnit',"hours");
fit(mdl,TrainingData,"Time","Condition")
mdl.Prior
ans = struct with fields:
            Theta: 0.6762
    ThetaVariance: 0.0727
             Beta: 0.0583
     BetaVariance: 1.8383e-04
              Rho: -0.2811

Модели деградации наиболее надежны для отслеживания деградации после того, как в измерениях индикаторов условий возникает начальный наклон. Установите уровень обнаружения уклона на 0,1, чтобы указать модели не делать прогнозы RUL до тех пор, пока этот наклон не будет достигнут. (Если заранее известно, что измерения выполняются для компонента, деградация которого уже началась, можно отключить обнаружение наклона путем установки mdl.SlopeDetectionLevel = [].)

mdl.SlopeDetectionLevel = 0.1;

Прогнозирование значения RUL на каждом шаге времени

Определите значение индикатора порогового условия, которое указывает на окончание срока службы машины. Значение RUL - это прогнозируемое время, оставшееся до того, как индикатор состояния тестовой машины достигнет этого порогового значения.

threshold = 400;

Для прогнозирования RUL предположим, что TestData начинается в момент времени t = 1 час, и каждый час становится доступной новая выборка данных. Как правило, с каждой новой точкой данных можно прогнозировать новое значение RUL. Для модели деградации в этом примере выполните цикл TestData и обновить модель с каждой новой точкой данных, используя update команда. Затем проверьте, обнаруживает ли модель достаточное изменение наклона для надежного прогнозирования RUL. Если это так, спрогнозируйте новое значение RUL с помощью predictRUL команда. Чтобы наблюдать эволюцию оценки, сохраните оцененные значения RUL и связанные доверительные интервалы в векторах. EstRUL и CIсоответственно. Аналогично, сохраните параметры модели в массиве ModelParameters.

N = height(TestData);
EstRUL = hours(zeros(N,1));   
CI = hours(zeros(N,2));       
ModelParameters = zeros(N,3);
for t = 1:N
   CurrentDataSample = TestData(t,:);    
   update(mdl,CurrentDataSample)
   ModelParameters(t,:) = [mdl.Theta mdl.Beta mdl.Rho];
   % Compute RUL only if the data indicates a change in slope.
   if ~isempty(mdl.SlopeDetectionInstant)
      [EstRUL(t),CI(t,:)] = predictRUL(mdl,CurrentDataSample,threshold);
   end
end

Постройте график траекторий расчетных значений параметров модели. Значения быстро изменяются после того, как в данных деградации обнаруживается наклон. Они, как правило, сходятся по мере того, как становится доступно больше точек данных.

Time = hours(1:N)';
tStart = mdl.SlopeDetectionInstant; % slope detection time instant
plot(Time,ModelParameters);
hold on
plot([tStart, tStart],[-1,2],'k--')
legend({'\theta(t)','\beta(t)','\rho(t)','Slope detection instant'},'Location','best')
hold off

Figure contains an axes. The axes contains 4 objects of type line. These objects represent \theta(t), \beta(t), \rho(t), Slope detection instant.

Постройте график прогнозируемого RUL для наблюдения за его эволюцией по мере появления большего количества данных о деградации. Новое оценочное значение RUL отсутствует до тех пор, пока в данных ухудшения не будет обнаружен наклон. После этого прогнозируемый RUL со временем, как и ожидалось, уменьшается. predictRUL вычисляет статистическое распределение значений RUL. Доверительные границы на прогнозируемом RUL со временем становятся все более узкими.

plot(Time,EstRUL,'b.-',Time,CI,'c',tStart,EstRUL(hours(tStart)),'r*')
title('Estimated RUL at Time t')
xlabel('t')
ylabel('Estimated RUL')
legend({'Predicted RUL','Confidence bound','Confidence bound','Slope detection instant'})

Figure contains an axes. The axes with title Estimated RUL at Time t contains 4 objects of type line. These objects represent Predicted RUL, Confidence bound, Slope detection instant.

См. также

| |

Связанные темы