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

В этом примере показано, как обнаружить резкие изменения в поведении системы с помощью онлайновой оценки и автоматических методов сегментации данных. Этот пример использует функциональность от 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 параметры указывают на изменение в транспортной задержке.

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

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

Заключения

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

Похожие темы

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