Main Content

trendability

状態インジケーターの軌跡間の類似性の測定

R2018b 以降

説明

Y = trendability(X) は、寿命データ X のトレンド可能性を返します。trendability は、故障に至るまで実行されたいくつかの実験で測定された特徴の軌跡間に見られる類似性の尺度として使用します。トレンド可能性が高い特徴は、軌跡の基本的な形状が同じになります。Y の値の範囲は 0 から 1 までで、YX が完全にトレンドを示せば 1、X がトレンドを示さなければ 0 になります。

Y = trendability(X,lifetimeVar) は、ライフタイム変数 lifetimeVar を使用して寿命データ X のトレンド可能性を返します。

Y = trendability(X,lifetimeVar,dataVar) は、dataVar で指定されたデータ変数を使用して寿命データ X のトレンド可能性を返します。

Y = trendability(X,lifetimeVar,dataVar,memberVar) は、ライフタイム変数 lifetimeVardataVar で指定されたデータ変数、およびメンバー変数 memberVar を使用して寿命データ X のトレンド可能性を返します。

Y = trendability(___,Name,Value) は、1 つ以上の Name,Value のペアの引数で指定された追加のオプションを使用してトレンド可能性を推定します。この構文は、前述の任意の入力引数の組み合わせで使用できます。

出力引数のない trendability(___) は、ランク付けされたトレンド可能性の値の棒グラフをプロットします。

すべて折りたたむ

この例では、10 台の同一マシンの寿命データについて考えます。このデータには、予知パラメーターの候補として、定数、線形、2 次、3 次、対数、および周期の 6 つがあります。データ セット machineDataCellArray.mat には、行列の 1x10 の cell 配列 C が含まれています。cell 配列の各要素は、マシンの寿命データが格納された行列です。cell 配列の各行列には、最初の列に時間が格納され、それ以外の列にデータ変数が格納されています。

寿命データを読み込み、時間に対して可視化します。

load('machineDataCellArray.mat','C')
display(C)
C=1×10 cell array
    {219x7 double}    {189x7 double}    {202x7 double}    {199x7 double}    {229x7 double}    {184x7 double}    {224x7 double}    {208x7 double}    {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.

10 台のすべてのマシンについて、定数、線形、2 次、3 次、対数、および周期の 6 種類の状態インジケーターをプロットで観察します。

予知特徴の候補のトレンド可能性を可視化します。

trendability(C)

Figure contains an axes object. The axes object with title Trendability Metric, xlabel Features, ylabel Trendability contains an object of type bar.

ヒストグラム プロットから、特徴 Var2 および Var5 のトレンド可能性の値が 1 になっていることがわかります。したがって、これらの特徴はマシンの健全性の最適なインジケーターであり、残存耐用期間の予測にはこれらが適しています。

この例では、10 台の同一マシンの寿命データについて考えます。このデータには、予知パラメーターの候補として、定数、線形、2 次、3 次、対数、および周期の 6 つがあります。データ セット machineDataTable.mat には、table の 1x10 の cell 配列 T が含まれています。cell 配列の各要素には、マシンの寿命データの table が格納されています。

データを読み込んで表示します。

load('machineDataTable.mat','T');
display(T)
T=1×10 cell array
    {219x7 table}    {189x7 table}    {202x7 table}    {199x7 table}    {229x7 table}    {184x7 table}    {224x7 table}    {208x7 table}    {181x7 table}    {197x7 table}

head(T{1},2)
    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 

cell 配列のそれぞれの table に、ライフタイム変数 'Time' とデータ変数 ''Constant''Linear''Quadratic''Cubic''Logarithmic'、および 'Periodic' が含まれていることに注目してください。

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

トレンド可能性の値の結果を示す table から、線形、3 次、および対数の特徴の値が 1 に近いことがわかります。したがって、これらの特徴はマシンの健全性の最適なインジケーターであり、残存耐用期間の予測にはこの 3 つが適しています。

4 台のマシンの寿命データについて考えます。状態インジケーターの候補である電圧、電流、および電力について、マシンごとに 4 つの故障コードがあります。trendabilityEnsemble.zip は 4 つのファイルのコレクションであり、それぞれのファイルに各マシンの寿命データの timetable (tbl1.mattbl2.mattbl3.mat、およびtbl4.mat) が格納されています。複数のマシンのデータが格納されたファイルを使用することもできます。各 timetable のデータの構成は次のとおりです。

tall 配列で計算を実行する場合、MATLAB® では並列プール (Parallel Computing Toolbox™ がある場合の既定) またはローカル MATLAB セッションのいずれかを使用します。この例をローカル MATLAB セッションを使用して実行するには、関数mapreducerを使用してグローバル実行環境を変更します。

mapreducer(0)

圧縮されたファイルを展開し、timetable のデータを読み取り、timetable のデータを使用して fileEnsembleDatastore オブジェクトを作成します。ファイル アンサンブル データストアの作成の詳細については、fileEnsembleDatastoreを参照してください。

unzip trendabilityEnsemble.zip;
ens = fileEnsembleDatastore(pwd,'.mat');
ens.DataVariables = {'Voltage','Current','Power','FaultCode','Machine'};
ens.ReadFcn = @readtable_data;
ens.SelectedVariables = {'Voltage','Current','Power','FaultCode','Machine'};

'Machine' をメンバー変数として予知特徴の候補のトレンド可能性を可視化し、寿命データを 'FaultCode' でグループ化します。寿命データをグループ化することにより、それぞれの故障コードのメトリクスが trendability で必ず別々に計算されるようになります。

trendability(ens,'MemberVariable','Machine','GroupBy','FaultCode');
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.078 sec
Evaluation completed in 0.18 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.028 sec
Evaluation completed in 0.12 sec
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.36 sec
Evaluation completed in 0.38 sec

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

trendability は、特徴がトレンド可能性の値でランク付けされたヒストグラム プロットを返します。トレンド可能性の値が高いほど、適切な予知パラメーターであることを示します。たとえば、特徴の候補 Current では、FaultCode 1 のマシンでトレンド可能性が最も高くなっています。

入力引数

すべて折りたたむ

寿命データ。行列の cell 配列、table および timetable の cell 配列、fileEnsembleDatastore オブジェクト、table、または timetable として指定します。寿命データには、監視対象のシステムの故障に至るまで実行されたデータが含まれます。ここで "寿命" という用語は、システム寿命の測定に使用する単位により定義される、マシンの寿命を指しています。寿命の単位には移動距離 (マイル)、消費燃料 (ガロン)、操作開始からの経過時間 (日) などの数量が使用できます。

X に応じて次のようになります。

  • 行列または table の cell 配列の場合、それぞれの行列または table にシステムの寿命データの列が格納されていると関数で想定されます。それぞれの行列または table の最初の列を除く各列に予知変数のデータが格納されます。'Var1','Var2', ... を使用して、寿命データが格納された行列の列を参照できます。たとえば、ファイル machineDataCellArray.mat には、行列の 1 行 10 列の cell 配列 C が含まれており、10 個の行列のそれぞれに特定のマシンのデータが格納されています。

  • table または timetable の場合、最初の列を除く各列に寿命データの列が格納されていると関数で想定されます。table 変数の名前を使用して、寿命データが格納された列を参照できます。X が table の場合に lifetimeVar が指定されていないと、最初のデータ列がライフタイム変数として使用されます。

  • fileEnsembleDatastore オブジェクトの場合、使用するデータ変数 dataVar とメンバー変数 memberVar を指定します。lifetimeVar が指定されていない場合、最初のデータ列がライフタイム変数として計算に使用されます。

X の各数値メンバーの型は double です。

ライフタイム変数。string または文字ベクトルとして指定します。lifetimeVar で監視対象のシステムの寿命が測定され、lifetimeVar についての寿命データが並べ替えられます。lifetimeVar の値は、有効なアンサンブル変数または table 変数の名前でなければなりません。

行列の cell 配列の場合、値 'Time' を使用して、ライフタイム変数が格納されていると想定される各行列の最初の列を参照できます。たとえば、ファイル machineDataCellArray.mat には cell 配列 C が含まれており、各行列の最初の列にライフタイム変数、それ以外の列にデータ変数が格納されています。

データ変数。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。データ変数とは、アンサンブルのメンバーの主な内容です。データ変数には、予知保全アルゴリズムの解析と開発用の測定データまたは派生データが含まれます。

X に応じて次のようになります。

  • fileEnsembleDatastore オブジェクトの場合、dataVar の値がアンサンブルの DataVariables プロパティよりも優先されます。

  • 行列の cell 配列の場合、値 'Time' を使用して、各行列の最初の列、つまりライフタイム変数 lifetimeVar を参照できます。'Var1','Var2', ... を使用して、それ以外の寿命データが格納された行列の列を参照できます。たとえば、ファイル machineDataCellArray.mat には cell 配列 C が含まれており、各行列の最初の列にライフタイム変数が格納されています。cell 配列 C のそれ以外の列にはデータ変数が格納されています。

  • table の場合、table 変数の名前を使用して、寿命データが格納された列を参照できます。

dataVar の値は、有効なアンサンブル変数または table 変数の名前でなければなりません。dataVar が指定されていない場合、lifetimeVar で指定されたものを除くすべてのデータ列が計算に含まれます。たとえば、cell 配列の各エントリが変数 ABCD を含む table であるとします。dataVar["A","D"] に設定すると、AD だけが計算に使用され、CD は無視されます。

メンバー変数。string または文字ベクトルとして指定します。memberVar は、寿命データ X 内のシステムまたはマシンを識別するための変数を指定するのに使用します。たとえば、fileEnsembleDatastore オブジェクトでは、各 timetable の 5 列目に特定のマシンのデータであることを識別する番号が格納されています。列の名前はメンバー変数 memberVar に対応します。

memberVar は、X が行列または table の cell 配列として指定されている場合は無視されます。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペア自体は順不同で構いません。

R2021a 以前は、名前と値をそれぞれコンマで区切り、 Name を引用符で囲みます。

例: ...,'Method','rank'

ライフタイム変数。'LifeTimeVariable' と string または文字ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。'LifeTimeVariable' が指定されていない場合、最初のデータ列が使用されます。

'LifeTimeVariable' は入力引数 lifetimeVar と等価です。

データ変数。'DataVariables' と string 配列、文字ベクトル、または文字ベクトルの cell 配列のいずれかで構成されるコンマ区切りのペアとして指定します。

'DataVariables' は入力引数 dataVar と等価です。

メンバー変数。'MemberVariable' と string または文字ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。

'MemberVariable' は入力引数 memberVar と等価です。

グループ化の基準。'GroupBy' と string または文字ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。'GroupBy' は、寿命データ X を動作状態でグループ化するための変数を指定するのに使用します。

関数は、'GroupBy' で指定された基準 (故障状態など) を適用して得られるグループごとにメトリクスを別々に計算します。たとえば、fileEnsembleDatastore オブジェクト ens では、ens の各 timetable の 4 列目に変数 'FaultCode' が格納されています。データを 'FaultCode' でグループ化すると、マシンごとにメトリクスが計算されます。

変数をグループ化できるのは、XfileEnsembleDatastore オブジェクト、table、timetable、または table か timetable の cell 配列として定義されている場合だけです。

データ平滑化の中心移動平均ウィンドウのサイズ。'WindowSize' とスカラーまたは 2 要素ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。データ平滑化には Savitzky-Golay フィルターが使用されます。詳細については、smoothdataを参照してください。

'WindowSize' が指定されていない場合、smoothdata(X,'sgolay') を使用して寿命データ X からウィンドウの長さが自動的に決定されます。データ平滑化をオフにするには、'WindowSize' を 0 に設定します。

出力引数

すべて折りたたむ

寿命データのトレンド可能性。ベクトルまたは table として返されます。

トレンド可能性は、故障に至るまで実行されたいくつかの実験で測定された特徴の軌跡間に見られる類似性の尺度です。トレンド可能性が高い特徴は、軌跡の基本的な形状が同じになります。システムが徐々に故障に近づくにつれ、適切な状態インジケーターは一般に高いトレンドを示します。逆に、トレンドを示さない特徴は状態インジケーターとしてあまり適切でありません。Y の値の範囲は 0 から 1 までです。

  • X が完全にトレンドを示せば Y は 1 です。

  • X がまったくトレンドを示さなければ Y は 0 です。

利用可能なすべての特徴の中から適切な推定パラメーターを選択することは、信頼性の高い残存耐用期間予測エンジンを作成するための最初の手順です。Y のトレンド可能性の値は、監視対象のシステムの劣化プロセスを最も適切に追跡する状態インジケーターを特定するのに役立ちます。トレンド可能性が高いほど、予知に適した特徴となります。

'GroupBy' が指定されていない場合、Y は行ベクトルまたは単一行の table として返されます。一方、'GroupBy' が指定されている場合は、Y の各行が 1 つのグループに対応します。

制限

  • X が tall table または tall timetable の場合でも、trendabilitygatherを使用して配列全体をメモリに読み込みます。使用できるメモリが十分にないと、trendability はエラーを返します。

アルゴリズム

トレンド可能性の計算には次の式が使用されます。

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

ここで、xjjth のシステムの特徴の測定値を含むベクトルを表します。変数 M は監視対象のシステムの数です。

xjxk の長さが異なる場合、短い方のベクトルが長い方のベクトルの長さに合わせてリサンプリングされます。この処理を容易にするために、それらの時間ベクトルが最初にライフタイムの割合、つまり [0%, 100%] に正規化されます。

参照

[1] Coble, J., and J. W. Hines. "Identifying Optimal Prognostic Parameters from Data: A Genetic Algorithms Approach." In Proceedings of the Annual Conference of the Prognostics and Health Management Society. 2009.

[2] Coble, J. "Merging Data Sources to Predict Remaining Useful Life - An Automated Method to Identify Prognostics Parameters." Ph.D. Thesis. University of Tennessee, Knoxville, TN, 2010.

[3] Lei, Y. Intelligent Fault Diagnosis and Remaining Useful Life Prediction of Rotating Machinery. Xi'an, China: Xi'an Jiaotong University Press, 2017.

[4] Lofti, S., J. B. Ali, E. Bechhoefer, and M. Benbouzid. "Wind turbine high-speed shaft bearings health prognosis through a spectral Kurtosis-derived indices and SVR." Applied Acoustics Vol. 120, 2017, pp. 1-8.

バージョン履歴

R2018b で導入