trendability

Мера подобия между траекториями индикаторов состояния

Описание

пример

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

пример

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

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

В этом примере рассмотрите пожизненные данные 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

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

Визуализируйте trendability потенциальных предвещающих функций.

trendability(C)

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

В этом примере рассмотрите пожизненные данные 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' и переменные данных 'Constant', 'Linear', 'Quadratic', 'Cubic', 'Logarithmic', и 'Periodic'.

Вычислите trendability с Time как пожизненная переменная.

Y = trendability(T,'Time')
Y=1×6 table
    Constant     Linear     Quadratic     Cubic     Logarithmic    Periodic 
    _________    _______    _________    _______    ___________    _________

    0.0035529    0.99984     0.63753     0.92057      0.99582      0.0041995

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

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

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

mapreducer(0)

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

unzip trendabilityEnsemble.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'};

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

trendability(ens,'MemberVariable','Machine','GroupBy','FaultCode');
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.08 sec
Evaluation completed in 0.23 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.041 sec
Evaluation completed in 0.14 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.17 sec
Evaluation completed in 0.2 sec

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

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

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

свернуть все

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

Если X

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

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

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

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

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

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

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

Если X

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Членская переменная'эквивалентно входному параметру memberVar.

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

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

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

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

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

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

свернуть все

Trendability пожизненных данных, возвращенных как вектор или таблица.

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

  • Y 1 если X совершенно trendable.

  • Y 0 если X отлично non-trendable.

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

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

Ограничения

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

Алгоритмы

Расчет trendability использует эту формулу:

trendability = minj,k|corr(xj,xk)|,      j,k = 1,...,M

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

Когда xj и xk имеют различные длины, более короткий вектор передискретизируется, чтобы совпадать с длиной более длинного вектора. Чтобы упростить этот процесс, их временные векторы сначала нормированы ко времени жизни процента, то есть, [0%, 100%].

Ссылки

[1] Плоскодонная рыбачья лодка, J. и Дж. В. Хайнз. "Идентифицируя оптимальные предвещающие параметры из данных: подход генетических алгоритмов". В продолжениях ежегодной конференции предзнаменований и медицинского общества управления. 2009.

[2] Плоскодонная рыбачья лодка, J. "Объединяя источники данных, чтобы предсказать остающийся срок полезного использования - автоматизированный метод, чтобы идентифицировать параметры предзнаменований". Ph.D. Тезис. Университет Теннесси, Ноксвилла, TN, 2010.

[3] Леи, Y. Интеллектуальная диагностика отказа и остающееся предсказание срока полезного использования вращающегося машинного оборудования. Сиань, Китай: Сиань университетское издательство Цзяотуна, 2017.

[4] Lofti, S., Дж. Б. Али, Э. Бечхоефер и М. Бенбузид. "Ветряной двигатель высокоскоростной медицинский прогноз подшипников вала через спектральные Выведенные из эксцесса индексы и SVR". Прикладное Издание 120, 2017 Акустики, стр 1-8.

Введенный в R2018b