Обнаружение резких системных изменений с помощью методов идентификации

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

Описание задачи

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

Загрузите и постройте график данных.

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

Figure contains 2 axes. Axes 1 with title y1 contains an object of type line. This object represents z. Axes 2 with title u1 contains an object of type line. This object represents z.

Изменение задержки транспорта происходит около 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

Figure contains an axes. The axes with title ARX Recursive Parameter Estimation contains 4 objects of type animatedline. These objects represent a, b1, b2, Deviation.

Первый 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)

Figure contains an axes. The axes with title ARX Recursive Parameter Estimation contains 5 objects of type animatedline, line. These objects represent a, b1, b2, Deviation.

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

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

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

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

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

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

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

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

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

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

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

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

Figure contains an axes. The axes with title Time-varying estimates contains 3 objects of type line. These objects represent a, b_1, b_2.

Обратите внимание на сходство между этими траекториями параметров и теми, которые оценены с помощью 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')

Figure contains an axes. The axes with title Parameter value segments contains 3 objects of type line. These objects represent a, b1, b2.

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

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

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

Заключения

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

Похожие темы