exponenta event banner

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

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

Найти расположение всех пиков в L с помощью findpeaks из панели инструментов обработки сигналов.

[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 полиномиальные коэффициенты и, таким образом, является местом изменения задержки передачи.

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

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

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

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

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

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

Метод сегментации основан на AFMM (адаптивное забывание через несколько моделей). Подробнее о методе см. Андерссон, Int. Дж. Контроль Ноя 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 обеспечение способа автоматического обнаружения на основе сглаживания изменяющихся во времени оценок параметров.

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