prognosability

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

Синтаксис

Y = prognosability(X)
Y = prognosability(X,lifetimeVar)
Y = prognosability(X,lifetimeVar,dataVar)
Y = prognosability(X,lifetimeVar,dataVar,memberVar)
Y = prognosability(___,Name,Value)
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 = 1x10 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 машин на графике.

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

prognosability(C)

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

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

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

load('machineDataTable.mat','T');
display(T)
T = 1x10 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. Можно также использовать файлы, содержащие данные для нескольких машин. Для каждого расписания организация данных следующие:

Извлеките сжатые файлы, считайте данные в расписаниях и создайте объект 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');
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 12).
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 3.7 sec
Evaluation completed in 6.1 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 2.2 sec
Evaluation completed in 2.8 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 2.8 sec
Evaluation completed in 2.9 sec

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

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. Например, предположите, что каждая запись в массиве ячеек является таблицей с переменными A, B, C и D. Установка dataVar к ["A","D"] использует только A и D для вычисления, в то время как C и D проигнорированы.

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

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

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

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

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

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

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

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

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

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

'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(стандj(xj(Nj))среднее значениеj|xj(1)xj(Nj)|),      j  = 1,...,M

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

Ссылки

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

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

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

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

Смотрите также

| |

Введенный в R2018b