Main Content

exponentialDegradationModel

残存耐用期間を予測する指数劣化モデル

説明

exponentialDegradationModel を使用して、コンポーネントの残存耐用期間 (RUL) を推定するための指数劣化プロセスをモデル化します。劣化モデルは、監視されている信号が事前定義されたしきい値をいつ超えるかを予測することで、RUL を推定します。指数劣化モデルはコンポーネントが累積的に劣化する場合に役立ちます。劣化モデルの詳細については、指数劣化モデルを参照してください。

特定のタイプのコンポーネントに exponentialDegradationModel オブジェクトを設定するには、次の操作を実行します。

  • 同じ仕様で製造された複数のマシンなど、類似コンポーネントのアンサンブルの健全性に関する履歴データを使ってモデル パラメーターを推定します。これを行うには、fit を使用します。

  • コンポーネントの劣化プロセスに関する知識に基づいてモデルを作成する際に、モデル パラメーターを指定します。

劣化モデルのパラメーターを設定したら、その後、類似コンポーネントの残存耐用期間を predictRUL を使用して予測できます。劣化モデルによる RUL 予測の基本的な例については、データの着信に応じた RUL 予測の更新を参照してください。

残存耐用期間の予測に関する一般的な情報については、残存耐用期間を予測するモデルを参照してください。

作成

説明

mdl = exponentialDegradationModel は、RUL を推定するための指数劣化モデルを作成し、既定の設定でモデルを初期化します。

mdl = exponentialDegradationModel(Name,Value) は、ユーザー設定可能なモデル プロパティを、名前と値のペアで指定します。たとえば、exponentialDegradationModel('NoiseVariance',0.5) は、モデル ノイズの分散を 0.5 とした指数劣化モデルを作成します。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

劣化モデルにおける θ パラメーターの現在の平均値。スカラーとして指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

名前と値のペアの引数を使用して Theta を指定できるのは、次の場合です。

  • モデルを作成する。

  • 関数 restart を使用してモデルをリセットする。

それ以外の場合は、関数 update を使用すると、Theta の値が変化します。

この プロパティ は読み取り専用です。

劣化モデルにおける θ パラメーターの現在の分散。非負のスカラーとして指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

名前と値のペアの引数を使用して ThetaVariance を指定できるのは、次の場合です。

  • モデルを作成する。

  • 関数 restart を使用してモデルをリセットする。

それ以外の場合は、関数 update を使用すると、ThetaVariance の値が変化します。

この プロパティ は読み取り専用です。

劣化モデルにおける β パラメーターの現在の平均値。スカラーとして指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

名前と値のペアの引数を使用して Beta を指定できるのは、次の場合です。

  • モデルを作成する。

  • 関数 restart を使用してモデルをリセットする。

それ以外の場合は、関数 update を使用すると、Beta の値が変化します。

この プロパティ は読み取り専用です。

劣化モデルにおける β パラメーターの現在の分散。非負のスカラーとして指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

名前と値のペアの引数を使用して BetaVariance を指定できるのは、次の場合です。

  • モデルを作成する。

  • 関数 restart を使用してモデルをリセットする。

それ以外の場合は、関数 update を使用すると、BetaVariance の値が変化します。

この プロパティ は読み取り専用です。

θ と β の間の現在の相関。[-1,1] の範囲のスカラー値として指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

名前と値のペアの引数を使用して Rho を指定できるのは、次の場合です。

  • モデルを作成する。

  • 関数 restart を使用してモデルをリセットする。

それ以外の場合は、関数 update を使用すると、Rho の値が変化します。

劣化モデルの現在の切片の値 ϕ。スカラーとして指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

Phi は、モデル作成時に名前と値のペアの引数を使用して指定できます。それ以外の場合は、関数 fit を使用してモデルの事前確率を推定すると、Phi の値が変化します。

モデル パラメーターに関する事前確率情報。以下のフィールドを持つ構造体として指定されます。

  • Theta — θ の平均値

  • ThetaVariance — θ の分散

  • Beta — β の平均値

  • BetaVariance — β の分散

  • Rho — θ と β の間の相関

次の場合に、Prior のフィールドを指定できます。

  • モデルを作成する場合。モデル作成時に ThetaThetaVarianceBetaBetaVariance、または Rho を名前と値のペアで指定すると、Prior の対応するフィールドも設定されます。

  • 関数 fit を使用する。この場合、事前確率の値はモデルの近似に使用したデータから導き出されます。

  • 関数 restart を使用する。この場合、ThetaThetaVarianceBetaBetaVarianceRho の現在値は、Prior の対応するフィールドにコピーされます。

  • モデル作成後にドット表記を使用する。

劣化モデルの詳細については、指数劣化モデルを参照してください。

劣化モデルにおける加法性ノイズの分散 ε。非負のスカラーとして指定します。劣化モデルの詳細については、指数劣化モデルを参照してください。

次の場合に、NoiseVariance を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 名前と値のペアとともに関数 restart を使用する

  • モデル作成後にドット表記を使用する

劣化プロセスの開始を判断するための勾配の検出レベル。[0,1] の範囲のスカラーとして指定します。この値は、勾配の有意性を示す t 検定における α 値に相当します。

勾配の検出の検定を無効にするには、SlopeDetectionLevel[] に設定します。

次の場合に、SlopeDetectionLevel を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 名前と値のペアとともに関数 restart を使用する

  • モデル作成後にドット表記を使用する

この プロパティ は読み取り専用です。

勾配の検出時間 (有意な勾配を検出した時点)。スカラーとして指定します。関数 update は、SlopeDetectionLevel が空でないときにこの値を設定します。

この プロパティ は読み取り専用です。

関数 update に渡される最新の劣化特徴値。スカラーとして指定されます。

この プロパティ は読み取り専用です。

モデルに対して関数 update が最初に呼び出されたときのライフタイム変数の初期値。スカラーとして指定されます。

モデルが勾配を検出すると、InitialLifeTime の値を SlopeDetectionInstant の値に合わせて変化させます。

この プロパティ は読み取り専用です。

関数 update に渡される最新のライフタイム変数値。スカラーとして指定されます。

ライフタイム変数。有効な MATLAB® 変数名または "" を含む string として指定します。

関数 fit を使用してモデルを学習させるとき、学習データが次のいずれかの場合:

  • table の場合、LifeTimeVariable が table の変数名のいずれかに一致する必要がある

  • timetable の場合、LifeTimeVariable は、table の変数名の 1 つ、または時間変数の次元名 data.Properties.DimensionNames{1} にする必要がある

次の場合に、LifeTimeVariable を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 関数 fit を呼び出す際の引数として使用する

  • モデル作成後にドット表記を使用する

ライフタイム変数の単位。string として指定します。

ライフタイム変数の単位は時間ベースとする必要はありません。テスト コンポーネントの寿命は、走行距離 (マイル) や消費燃料 (ガロン) などの使用量変数で測定できます。

劣化変数名。有効な MATLAB 変数名を含む string として指定します。劣化モデルの持つデータ変数は 1 つのみです。

次の場合に、DataVariables を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 関数 fit を呼び出す際の引数として使用する

  • モデル作成後にドット表記を使用する

データから事前確率値を近似させる際の、並列計算の使用のフラグ。true または false のいずれかとして指定します。

次の場合に、UseParallel を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • 名前と値のペアとともに関数 restart を使用する

  • モデル作成後にドット表記を使用する

記録用のその他のモデル情報。任意のデータ型またはデータ形式として指定します。モデルでは、この情報を使用しません。

次の場合に、UserData を指定できます。

  • モデル作成時に名前と値のペアを使用する

  • モデル作成後にドット表記を使用する

オブジェクト関数

fit履歴データを使用して残存耐用期間モデルのパラメーターを推定
predictRULテスト コンポーネントの残存耐用期間を推定
update劣化残存耐用期間モデルの事後パラメーター分布を更新
restart残存耐用期間劣化モデルをリセット

すべて折りたたむ

学習データを読み込みます。

load('expTrainVectors.mat')

学習データは列ベクトルの cell 配列です。各列ベクトルは、コンポーネントの劣化特徴プロファイルです。

既定の設定で、指数劣化モデルを作成します。

mdl = exponentialDegradationModel;

学習データを使用して劣化モデルに学習させます。

fit(mdl,expTrainVectors)

指数劣化モデルを作成し、既知の事前分布で構成します。

mdl = exponentialDegradationModel('Theta',0.5,'ThetaVariance',0.003,...
                                  'Beta',0.3,'BetaVariance',0.002,...
                                  'Rho',0.1);

指定された事前分布パラメーターは、モデルの Prior プロパティに保存されます。

mdl.Prior
ans = struct with fields:
            Theta: 0.5000
    ThetaVariance: 0.0030
             Beta: 0.3000
     BetaVariance: 0.0020
              Rho: 0.1000

また、モデルの現在の事後分布は、指定された事前分布と一致するように設定されます。たとえば、相関パラメーターの事後値を確認します。

mdl.Rho 
ans = 0.1000

学習データを読み込みます。

load('expTrainTables.mat')

学習データは table の cell 配列です。各 table は、コンポーネントの劣化特徴プロファイルです。各プロファイルは、変数 "Time" のライフタイム測定値と、それに対応する変数 "Condition" の劣化特徴の測定値から構成されます。

既定の設定で、指数劣化モデルを作成します。

mdl = exponentialDegradationModel;

学習データを使用して劣化モデルに学習させます。ライフタイム変数とデータ変数の名前を指定します。

fit(mdl,expTrainTables,"Time","Condition")

学習データを読み込みます。

load('expTrainTables.mat')

学習データは table の cell 配列です。各 table は、コンポーネントの劣化特徴プロファイルです。各プロファイルは、変数 "Hours" のライフタイム測定値と、それに対応する変数 "Condition" の劣化特徴の測定値から構成されます。

ライフタイム変数の単位を指定して、指数劣化モデルを作成します。

mdl = exponentialDegradationModel('LifeTimeUnit',"hours");

学習データを使用して劣化モデルに学習させます。ライフタイム変数とデータ変数の名前を指定します。

fit(mdl,expTrainTables,"Time","Condition")

テストデータを読み込みます。このデータはテスト コンポーネントの故障に至るまで実行された劣化プロファイルです。テスト データは、学習データと同じライフタイム変数とデータ変数を持つ table です。

load('expTestData.mat')

劣化特徴限界の知識に基づき、コンポーネントの耐用寿命末期を示す、状態インジケーターのしきい値を定義します。

threshold = 500;

コンポーネントの状態インジケーターを 1 時間ごとに 150 時間測定すると仮定します。学習させた劣化モデルを測定ごとに更新します。次に、150 時間時点でのコンポーネントの残存耐用期間を予測します。RUL は、劣化特徴が指定されたしきい値を通過する予測時間です。

for t = 1:150 
 update(mdl,expTestData(t,:)) 
end 
estRUL = predictRUL(mdl,threshold) 
estRUL = duration
   136.45 hr

推定された RUL は約 137 時間で、予測された寿命は合計約 287 時間です。

観測データを読み込みます。

load('expTestData.mat')

この例では、学習データが履歴データではなく、コンポーネントの状態のリアルタイムの観測値であると仮定します。

劣化特徴限界の知識に基づき、コンポーネントの耐用寿命末期を示す、状態インジケーターのしきい値を定義します。

threshold = 500;

任意の事前分布データと指定されたノイズ分散を使って、指数劣化モデルを作成します。また、観測データに対し、ライフタイムとデータの変数名を指定します。

mdl = exponentialDegradationModel('Theta',1,'ThetaVariance',1e6,...
                                  'Beta',1,'BetaVariance',1e6,...
                                  'NoiseVariance',0.003,...
                                  'LifeTimeVariable',"Time",'DataVariables',"Condition",...
                                  'LifeTimeUnit',"hours");

100 時間にわたりコンポーネントの状態を観察し、観察ごとに劣化モデルを更新します。

for i=1:100
    update(mdl,expTestData(i,:));
end

100 時間後、モデルに保存されている現在のライフタイム値によってコンポーネントの RUL を予測します。また、推定された RUL に関連付けられた信頼区間も取得します。

estRUL = predictRUL(mdl,threshold)
estRUL = duration
   221.38 hr

推定された RUL は約 234 時間で、予測された寿命は合計約 334 時間です。

アルゴリズム

すべて展開する

参照

[1] Gebraeel, Nagi. "Sensory-Updated Residual Life Distributions for Components with Exponential Degradation Patterns." IEEE Transactions on Automation Science and Engineering. Vol. 3, Number 4, 2006, pp. 382–393.

拡張機能

バージョン履歴

R2018a で導入