monotonicity

Количественная оценка монотонного тренда в индикаторах состояния

Описание

пример

Y = monotonicity(X) возвращает монотонность пожизненных данных X. Использование monotonicity количественно определить монотонный тренд в индикаторы состояния по мере развития системы в сторону отказа. Значения Y область значений от 0 до 1, где Y равен 1, если X совершенно монотонно и 0, если X является немонотонным.

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

пример

Y = monotonicity(X,lifetimeVar) возвращает монотонность пожизненных данных X использование переменной времени жизни lifetimeVar.

пример

Y = monotonicity(X,lifetimeVar,dataVar) возвращает монотонность пожизненных данных X использование переменных данных, заданных как dataVar.

пример

Y = monotonicity(X,lifetimeVar,dataVar,memberVar) возвращает монотонность пожизненных данных X использование переменной времени жизни lifetimeVar, переменные данных, заданные как dataVar, и переменной представитель memberVar.

пример

Y = monotonicity(___,Name,Value) оценивает монотонность с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар. Можно использовать этот синтаксис с любой из предыдущих комбинаций входных аргументов.

пример

monotonicity(___) без выходных аргументов строит столбчатую диаграмму с ранжированными значениями монотонности.

Примеры

свернуть все

В этом примере рассмотрите данные о жизни 10 одинаковых машин со следующими 6 потенциальными прогностическими параметрами-константа, линейная, квадратичная, кубическая, логарифмическая и периодическая. Набор данных machineDataCellArray.mat содержит C, который является 1x10 массив ячеек матриц, где каждый элемент массива ячеек является матрицей, которая содержит данные о жизни машины. Для каждой матрицы в массиве ячеек первый столбец содержит время, в то время как другие столбцы содержат переменные данных.

Загрузите данные о жизни и визуализируйте их в зависимости от времени.

load('machineDataCellArray.mat','C')
display(C)
C=1×10 cell array
  Columns 1 through 4

    {219x7 double}    {189x7 double}    {202x7 double}    {199x7 double}

  Columns 5 through 8

    {229x7 double}    {184x7 double}    {224x7 double}    {208x7 double}

  Columns 9 through 10

    {181x7 double}    {197x7 double}

for k = 1:length(C)
    plot(C{k}(:,1), C{k}(:,2:end));
    hold on;
end

Figure contains an axes. The axes contains 60 objects of type line.

Наблюдайте 6 различных показателей состояния - постоянные, линейные, квадратичные, кубические, логарифмические и периодические - для всех 10 машин на графике.

Визуализируйте монотонность потенциальных прогностических функций.

monotonicity(C)

Figure contains an axes. The axes with title Monotonicity Metric contains an object of type bar.

На графике гистограммы наблюдайте, что функции Var2, Var4 и Var5 оцените лучше, чем остальные. Следовательно, эти функции более подходят для остающихся предсказаний полезного срока службы, поскольку они являются лучшими показателями здоровья машины.

В этом примере рассмотрите данные о жизни 10 одинаковых машин со следующими 6 потенциальными прогностическими параметрами-константа, линейная, квадратичная, кубическая, логарифмическая и периодическая. Набор данных machineDataTable.mat содержит T, который является 1x10 массив ячеек из таблиц, где каждый элемент массива ячеек содержит таблицу жизненных данных для машины.

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

load('machineDataTable.mat','T');
display(T)
T=1×10 cell array
  Columns 1 through 4

    {219x7 table}    {189x7 table}    {202x7 table}    {199x7 table}

  Columns 5 through 8

    {229x7 table}    {184x7 table}    {224x7 table}    {208x7 table}

  Columns 9 through 10

    {181x7 table}    {197x7 table}

head(T{1},2)
ans=2×7 table
    Time    Constant    Linear    Quadratic    Cubic     Logarithmic    Periodic
    ____    ________    ______    _________    ______    ___________    ________

       0     3.2029     11.203     7.7029      3.8829      2.2517        0.2029 
    0.05     2.8135     10.763     7.2637      3.6006      1.8579       0.12251 

Обратите внимание, что каждая таблица в массиве ячеек содержит переменную времени жизни 'Time' и переменные данных 'ConstantLinearQuadraticCubicLogarithmic', и' Periodic'.

Вычислите монотонность с помощью метода ранговой корреляции Спирмана с Time как переменная времени жизни.

Y = monotonicity(T,'Time','Method','rank')
Y=1×6 table
    Constant    Linear    Quadratic     Cubic     Logarithmic    Periodic
    ________    ______    _________    _______    ___________    ________

    0.069487      1        0.17777     0.97993      0.99957      0.059208

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

Рассмотрим жизненные данные 4 машин. Каждая машина имеет 4 кода отказа для индикаторов потенциального состояния-напряжение, ток и степень. monotonicityEnsemble.zip - это набор из 4 файлов, где каждый файл содержит расписание жизненных данных для каждой машины - tbl1.mat, tbl2.mat, tbl3.mat, и tbl4.mat. Можно также использовать файлы, содержащие данные для нескольких машин. Для каждого расписания организация данных заключается в следующем:

При выполнении вычислений на длинные массивы MATLAB ® использует либо параллельный пул (по умолчанию, если у вас есть Parallel Computing Toolbox™), либо локальный сеанс работы с MATLAB. Чтобы запустить пример с помощью локального сеанса работы с MATLAB, измените глобальное окружение выполнения с помощью mapreducer функция.

mapreducer(0)

Извлеките сжатые файлы, считайте данные в расписаниях и создайте fileEnsembleDatastore объект с использованием данных расписания. Для получения дополнительной информации о создании файла datastore ансамбля, смотрите fileEnsembleDatastore.

unzip monotonicityEnsemble.zip;
ens = fileEnsembleDatastore(pwd,'.mat');
ens.DataVariables = {'Voltage','Current','Power','FaultCode','Machine'};
% Make sure that the function for reading data is on path
addpath(fullfile(matlabroot,'examples','predmaint','main')) 
ens.ReadFcn = @readtable_data;
ens.SelectedVariables = {'Voltage','Current','Power','FaultCode','Machine'};

Визуализируйте монотонность потенциальных прогностических функций с помощью 'Machine'как переменная-член и сгруппировать данные о жизни по' FaultCode'. Группировка жизненных данных гарантирует, что monotonicity вычисляет метрику для каждого кода отказа отдельно.

monotonicity(ens,'MemberVariable','Machine','GroupBy','FaultCode');
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.63 sec
Evaluation completed in 1.2 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.15 sec
Evaluation completed in 0.33 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.39 sec
Evaluation completed in 0.44 sec

Figure contains an axes. The axes with title Monotonicity Metric contains 4 objects of type bar. These objects represent FaultCode: 1, FaultCode: 2, FaultCode: 3, FaultCode: 4.

monotonicity возвращает график гистограммы с функциями, ранжированными по значениям монотонности. Более высокое значение монотонности указывает на более подходящий прогностический параметр. Для образца, функция кандидата Current имеет наивысший монотонный тренд для машин с FaultCode 1.

rmpath(fullfile(matlabroot,'examples','predmaint','main')) % Reset path

Входные параметры

свернуть все

Пожизненные данные, заданные как массив ячеек из матриц, массив ячеек из таблиц и расписаний, fileEnsembleDatastore объект, таблица или расписание. Данные о сроке службы содержат данные о выполнении до отказа контролируемых систем. Термин «срок службы» здесь относится к сроку службы машины, заданному в терминах модулей, которую вы используете для измерения срока службы системы. Модулями жизни могут быть такие величины, как пройденное расстояние (мили), потребленное топливо (галлоны) или время с начала операции (дни).

Если X является

  • массив ячеек из матриц или таблиц, функция принимает, что каждая матрица или таблица содержит столбцы пожизненных данных для системы. Каждый столбец каждой матрицы или таблицы, кроме первого столбца, содержит данные для прогностической переменной. 'Var1','Var2', ... может использоваться для обращения к матричным столбцам, которые содержат данные о жизни. Например, файл machineDataCellArray.mat содержит массив ячеек 1 на 10 матриц C, где каждая из 10 матриц содержит данные для конкретной машины.

  • таблица или расписание, функция принимает, что каждый столбец, кроме первого, содержит столбцы данных о жизни. Имена табличной переменной могут использоваться для ссылки на столбцы, которые содержат данные о жизни. Если lifetimeVar не задан, когда X является таблицей, затем первый столбец данных используется как переменная времени жизни.

  • a fileEnsembleDatastore задайте переменные данных dataVar и переменные представителей memberVar будет использоваться. Если lifetimeVar не задан, тогда первый столбец данных используется в качестве пожизненной переменной для расчетов.

Каждый численный представитель в X имеет тип double.

Переменная времени жизни, заданная как строка или вектор символов. lifetimeVar измеряет время жизни контролируемых систем и сортируются данные о времени жизни относительно lifetimeVar. Значение lifetimeVar должно быть допустимым именем ансамбля или табличной переменной.

Для массива ячеек из матриц значение 'Time' может использоваться для обращения к первому столбцу каждой матрицы, который, как принято, содержит переменную времени жизни. Например, файл machineDataCellArray.mat содержит массив ячеек C, где первый столбец в каждой матрице содержит переменную времени жизни, в то время как другие столбцы содержат переменные данных.

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

Если X является

  • a fileEnsembleDatastore объект, значение dataVar заменяет DataVariables свойство ансамбля.

  • массив ячеек из матриц, значение 'Time' может использоваться для обращения к первому столбцу каждой матрицы, то есть переменной времени жизни lifetimeVar. 'Var1','Var2', ... может использоваться для ссылки на другие матричные столбцы, которые содержат данные о жизни. Например, файл machineDataCellArray.mat содержит массив ячеек C где первый столбец в каждой матрице содержит переменную времени жизни. Другие столбцы массива ячеек C содержат переменные данных.

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

Значения dataVar должны быть допустимыми именами ансамбля или табличной переменной. Если dataVar не задан, расчет включает все столбцы данных, кроме указанного в lifetimeVar. Например, предположим, что каждая запись в массиве ячеек является таблицей с переменными A, B, C, и D. Настройка dataVar на ["A","D"] использует только A и D для расчета во время C и D игнорируются.

Переменная Member, заданная как строковый или символьный вектор. Использование memberVar чтобы задать переменную для идентификации систем или машин в жизненных данных X. Для образца, в fileEnsembleDatastore объект, пятый столбец в каждом расписании содержит номера, которые идентифицируют данные от конкретной машины. Имя столбца соответствует представителю переменной memberVar.

memberVar игнорируется, когда X задается как массив ячеек из матриц или таблиц.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: ...,'Method','rank'

Переменная времени жизни, заданная как разделенная разделенными запятой парами, состоящая из 'LifeTimeVariable'и либо строковый, либо вектор символов. Если 'LifeTimeVariable'не задан, затем используется первый столбец данных.

'LifeTimeVariable'эквивалентно входному аргументу lifetimeVar.

Переменные данных, заданные как разделенная разделенными запятой парами, состоящая из 'DataVariables'и массив строк, символьный вектор или массив ячеек из векторов символов.

'DataVariables'эквивалентно входному аргументу dataVar.

Переменные представителя, заданные как разделенная разделенными запятой парами, состоящая из 'MemberVariable'и либо строковый, либо вектор символов.

'MemberVariable'эквивалентно входному аргументу memberVar.

Критерий группировки, заданный как разделенная разделенными запятой парами, состоящая из 'GroupBy'и либо строковый, либо вектор символов. Используйте 'GroupBy', чтобы задать переменные для группировки пожизненных данных X по условиям работы.

Функция вычисляет метрику отдельно для каждой группы, которая является результатом применения критерия, такого как условие отказа, заданное как 'GroupBy'. Для образца, в fileEnsembleDatastore ens объекта, четвертый столбец в каждом расписании в ens содержит переменную 'FaultCode'. Метрика вычисляется для каждой машины путем группировки данных по 'FaultCode'.

Группировать переменные можно только при X определяется как fileEnsembleDatastore объект, таблица, расписание или массив ячеек из таблиц или расписаний.

Размер центрированного окна скользящего среднего для сглаживания данных, заданный как разделенная разделенными запятой парами, состоящая из 'WindowSize'и скалярный или двухэлементный вектор. Фильтр Савицкого-Голая используется для сглаживания данных. Для получения дополнительной информации смотрите smoothdata.

Если 'WindowSize'не задан, длина окна автоматически определяется из пожизненных данных X использование smoothdata(X,'sgolay'). Установите 'WindowSize'to 0, чтобы выключить сглаживание данных.

Метод вычисления монотонности, заданный как разделенная разделенными запятой парами, состоящая из 'Method'и любой из них 'sign' или 'rank'.

  • 'sign', Используйте формулу signum.

  • 'rank', Используйте формулу ранговой корреляции Спирмана.

Для получения дополнительной информации см. «Алгоритмы».

Выходные аргументы

свернуть все

Монотонность данных о жизни, возвращенная как вектор или таблица.

monotonicity характеризует тренд функции по мере развития системы к отказу. Когда система постепенно приближается к отказу, подходящий индикатор состояния обычно имеет монотонный тренд. И наоборот, любая функция с немонотонным трендом является менее подходящим индикатором состояния. Значения Y область значений от 0 до 1.

  • Y равен 1, если X совершенно монотонно.

  • Y 0, если X совершенно немонотонный.

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

Когда 'GroupBy'не задан, тогда Y возвращается как вектор-строка или таблица с одной строкой. И наоборот, когда 'GroupBy'задается, затем каждая строка в Y соответствует одной группе.

Ограничения

  • Когда X является длинная таблица или длинное расписание, monotonicity тем не менее загружает полный массив в память с помощью gather. Если доступная память недостаточна, то monotonicity возвращает ошибку.

Алгоритмы

свернуть все

Монотонность вычисляется следующими двумя способами, как задано в 'Method'опция.

Формула Signum или метод знака

Когда вы задаете 'Method'как 'sign', при расчете монотонности используется эта формула:

monotonicity = 1Mj=1M|k=1Nj1sgn(xj(k+1)xj(k))Nj1|

где xj представляет вектор измерений функции на jth система, M - количество контролируемых систем, и Nj - количество измерений на jth система.

Метод рангового коэффициента корреляции Спирмена

Когда вы задаете 'Method'как 'rank', при расчете монотонности используется эта формула:

monotonicity = 1Mj=1M|corr(rank(xj),ранг(tj))|

где M - количество контролируемых систем, а tj - вектор временных точек, соответствующих вектору xj измерения.

Ссылки

[1] Coble, J., and J. W. Hines. Идентификация оптимальных прогностических параметров из данных: подход к генетическим алгоритмам. В трудах ежегодной конференции Общества прогностики и управления здоровьем. 2009.

[2] Coble, J. «Слияние источников данных для предсказания оставшегося полезного срока службы - автоматизированный метод определения параметров прогностики». Доктор философии. Дипломная работа. Университет Теннесси, Ноксвилл, TN, 2010.

[3] Lei, Y. Intelligent Fault Diagnosis And Remaining Use Life Prediction of Rotting Machinery. Сиань, Китай: Xi 'an Jiaotong University Press, 2017.

[4] Lofti, S., J. B. Ali, E. Bechhoefer, and M. Benbouzid. «Прогноз состояния высокоскоростных подшипников вала ветряного двигателя через спектральные индексы, полученные из Куртоза, и SVR». Прикладная акустика Vol. 120, 2017, pp. 1-8.

Введенный в R2018b