Обнаружьте резкие системные изменения Используя идентификационные методы

Этот пример показывает, как обнаружить резкие изменения в поведении системы с помощью онлайновой оценки и автоматических методов сегментации данных. Этот пример использует функциональность от System Identification Toolbox™ и не требует Predictive Maintenance Toolbox™.

Описание проблемы

Рассмотрите линейную систему, транспортная задержка которой изменяется с два до одной секунды. Транспортная задержка является временем, потраченным для входа, чтобы влиять на измеренный вывод. В этом примере вы обнаруживаете изменение в транспортной задержке с помощью онлайновой оценки и методов сегментации данных. Данные ввода - вывода, измеренные от системы, доступны в файле данных pdmAbruptChangesData.mat.

Загрузите и отобразите данные на графике.

load pdmAbruptChangesData.mat
z = iddata(z(:,1),z(:,2));
plot(z)
grid on

Транспортное изменение задержки происходит приблизительно 20 секунд, но не легко видеть в графике.

Смоделируйте систему с помощью структуры ARX с одним коэффициентом полинома A, двумя коэффициентами полинома B и одной задержкой.

y(t)+ay(t-1)=b1u(t-1)+b2u(t-2)

Здесь, A = [1 a] и B = [0 b1 b2].

Ведущий коэффициент полинома B является нулем, потому что модель не имеет никакого сквозного соединения. Когда системные движущие силы изменяются, значения этих трех коэффициентов a, b1 и изменение b2. Когда b1 будет близко к нулю, эффективная транспортная задержка будет 2 выборками, потому что полином B имеет 2 начальных нуля. Когда b1 будет больше, эффективная транспортная задержка будет 1 выборкой.

Таким образом чтобы обнаружить изменения в транспортной задержке можно наблюдать изменения в коэффициентах полинома B.

Используйте онлайновую оценку для обнаружения изменения

Онлайновые алгоритмы оценки обновляют параметры модели и утверждают оценки рекурсивным способом, когда новые данные становятся доступными. Можно выполнить онлайновую оценку с помощью блоков Simulink от библиотеки System Identification Toolbox или в командной строке с помощью рекурсивных идентификационных стандартных программ, таких как recursiveARX. Онлайновая оценка может использоваться к образцовому времени переменная динамика, такая как стареющее машинное оборудование и изменяющиеся погодные условия, или обнаружить отказы в электромеханических системах.

Когда средство оценки обновляет параметры модели, изменение в системной динамике (задержка) будет обозначено большим, чем обычно изменяют в значениях параметров b1 и b2. Изменения в коэффициентах полинома B будут отслежены путем вычисления:

L(t)=abs(B(t)-B(t-1))

Используйте объект recursiveARX для онлайновой оценки параметра модели ARX.

na = 1;
nb = 2;
nk = 1;
Estimator = recursiveARX([na nb nk]);

Задайте рекурсивный алгоритм оценки как NormalizedGradient и усиление адаптации как 0,9.

Estimator.EstimationMethod = 'NormalizedGradient';
Estimator.AdaptationGain = .9;

Извлеките необработанные данные от объекта iddata, z.

Output = z.OutputData; 
Input = z.InputData; 
t = z.SamplingInstants;
N = length(t);

Используйте анимированные строки, чтобы построить предполагаемые значения параметров и L. Инициализируйте эти анимированные строки до оценки. Чтобы моделировать данные о потоковой передаче, накормите данными средство оценки одной выборкой за один раз. Инициализируйте параметры модели перед оценкой, и затем выполните онлайновую оценку.

%% Initialize plot
Colors = {'r','g','b'};
ax = gca;
cla(ax)
for k = 3:-1:1
   h(k) = animatedline('Color',Colors{k}); % lines for a, b1 and b2 parameters
end
h(4) =  animatedline('Marker','.','Color',[0 0 0]); % line for L
legend({'a','b1','b2','Deviation'},'location','southeast')
title('ARX Recursive Parameter Estimation')
xlabel('Time (seconds)')
ylabel('Parameter value')
ax.XLim = [t(1),t(end)];
ax.YLim = [-2, 2];
grid on
box on

%% Now perform recursive estimation and show results 
n0 = 6;
L = NaN(N,nk);
B_old = NaN(1,3);
for ct = 1:N
   [A,B] = step(Estimator,Output(ct),Input(ct)); 
   if ct>n0
      L(ct) = norm(B-B_old);
      B_old = B;
   end
   addpoints(h(1),t(ct),A(2))
   addpoints(h(2),t(ct),B(2))
   addpoints(h(3),t(ct),B(3))
   addpoints(h(4),t(ct),L(ct))
   pause(0.1)
end

Первый n0 = 6 выборок данных не используется для вычисления детектора изменения, L. Во время этого интервала изменения параметра являются большими вследствие неизвестных начальных условий.

Найдите местоположение всего peaks в L при помощи команды findpeaks из Signal Processing Toolbox.

[v,Loc] = findpeaks(L);
[~,I] = max(v);
line(t(Loc(I)),L(Loc(I)),'parent',ax,'Marker','o','MarkerEdgeColor','r',...
   'MarkerFaceColor','y','MarkerSize',12)

fprintf('Change in system delay detected at sample number %d.\n',Loc(I));
Change in system delay detected at sample number 21.

Местоположение самого большого пика соответствует самому большому изменению в коэффициентах полинома B и является таким образом местоположением изменения в транспортной задержке.

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

Используйте сегментацию данных для обнаружения изменения

Алгоритм сегментации данных автоматически сегментирует данные на области различного динамического поведения. Это полезно для получения резких изменений, являющихся результатом отказа или изменения условий работы. Команда segment упрощает эту операцию для одно выходных данных. segment является альтернативой онлайновым методам оценки, когда вы не должны получать изменяющееся во времени поведение во время работы системы.

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

Входные параметры к команде segment включают результаты измерений, порядки модели и предположение для отклонения, r2, шума, который влияет на систему. Если отклонение совершенно неизвестно, оно может быть оценено автоматически. Выполните сегментацию данных с помощью модели ARX тех же порядков, как используется для онлайновой оценки. Установите отклонение на 0,1.

[seg,V,tvmod] = segment(z,[na nb nk],0.1);

Метод для сегментации основан на AFMM (адаптивное упущение через многоуровневые модели). Для получения дополнительной информации о методе, смотрите Андерссона, Int. J. Управляйте ноябрем 1985.

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

Постройте параметры модели отслеживания.

plot(tvmod)
legend({'a','b_1','b_2'},'Location','best')
xlabel('Samples'), ylabel('Parameter value')
title('Time-varying estimates')

Отметьте подобие между этими траекториями параметра и теми оцененное использование recursiveARX.

segment определяет моменты времени, когда изменения произошли с помощью tvmod и q, вероятности, что модель показывает резкие изменения. Эти моменты времени используются, чтобы создать сегментированную модель путем использования процедуры сглаживания по модели отслеживания.

Значения параметров сегментированной модели возвращены в seg, первом выходном аргументе segment. Значения в каждой последовательной строке являются значениями параметров базовой сегментированной модели в соответствующие моменты времени. Эти значения остаются постоянными по последовательным строкам и изменяются только, когда системные движущие силы полны решимости измениться. Таким образом значения в seg являются кусочной константой.

Постройте ориентировочные стоимости для параметров a, b1 и b2.

plot(seg)
title('Parameter value segments')
legend({'a','b1','b2'},'Location','best')
xlabel('Time (seconds)')
ylabel('Parameter value')

Изменение замечено в значениях параметров вокруг демонстрационного номера 19. Значение b1 изменяет от маленького (близко к нулю) к большому (близко к 1) значение. Значение b2 показывает противоположный шаблон. Это изменение в значениях параметров B указывает на изменение в транспортной задержке.

Вторым выходным аргументом segment, V, является функция потерь для сегментированной модели (т.е. предполагаемое ошибочное отклонение прогноза для сегментированной модели). Можно использовать V для задниц качество сегментированной модели.

Обратите внимание на то, что двумя самыми важными входными параметрами для алгоритма сегментации является r2 и q, четвертый входной параметр к segment. В этом примере не был задан q, потому что значение по умолчанию, 0.01, соответствовало. Меньшее значение r2 и большее значение q приведут к большему количеству точек сегментации. Чтобы найти соответствующие значения, можно отличаться r2 и q и использовать тех, которые работают лучшее. Как правило, алгоритм сегментации более чувствителен к r2, чем q.

Заключения

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

Похожие темы