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