prognosability

Мера изменчивости индикаторов состояния при отказе

Описание

пример

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

пример

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

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

В этом примере рассмотрите пожизненные данные 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 object. The axes object contains 60 objects of type line.

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

Визуализируйте prognosability потенциальных индикаторов состояния.

prognosability(C)

Figure contains an axes object. The axes object with title Prognosability 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' и переменные данных 'Constant', 'Linear', 'Quadratic', 'Cubic', 'Logarithmic', и 'Periodic'.

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

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

    0.56697     0.92321     0.28044     0.85048      0.96475      0.33853 

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

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

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

mapreducer(0)

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

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

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

prognosability(ens,'MemberVariable','Machine','GroupBy','FaultCode');
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.088 sec
Evaluation completed in 0.22 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.043 sec
Evaluation completed in 0.14 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.14 sec
Evaluation completed in 0.16 sec

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

prognosability возвращает график гистограммы с признаками, отранжированными их prognosability значениями. Более высокое prognosability значение указывает на более подходящий индикатор состояния. Например, функция кандидата Current имеет самую высокую степень prognosability для машин с 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: ...,'WindowSize',0

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Ограничения

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

Алгоритмы

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

prognosability = exp(stdj(xj(Nj))meanj|xj(1)xj(Nj)|),      j = 1,...,M

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

Ссылки

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

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

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

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

Введенный в R2018b