Main Content

linearDegradationModel

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

説明

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

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

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

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

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

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

作成

説明

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

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

プロパティ

すべて展開する

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

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

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

  • モデルを作成する。

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

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

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

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

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

  • モデルを作成する。

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

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

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

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

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

  • Theta — 勾配パラメーターの平均値

  • ThetaVariance — 勾配パラメーターの分散

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

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

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

  • 関数 restart を使用する。この場合、ThetaThetaVariance の現在値は、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 を指定できます。

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

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

オブジェクト関数

fitEstimate parameters of remaining useful life model using historical data
predictRULEstimate remaining useful life for a test component
updateUpdate posterior parameter distribution of degradation remaining useful life model
restartReset remaining useful life degradation model

すべて折りたたむ

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

load('linTrainVectors.mat')

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

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

mdl = linearDegradationModel;

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

fit(mdl,linTrainVectors)

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

mdl = linearDegradationModel('Theta',0.25,'ThetaVariance',0.002);

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

mdl.Prior
ans = struct with fields:
            Theta: 0.2500
    ThetaVariance: 0.0020

また、モデルの現在の事後分布は、指定された事前分布と一致するように設定されます。たとえば、勾配分散の事後値を確認します。

mdl.ThetaVariance
ans = 0.0020

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

load('linTrainTables.mat')

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

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

mdl = linearDegradationModel;

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

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

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

load('linTrainTables.mat')

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

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

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

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

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

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

load('linTestData.mat','linTestData1')

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

threshold = 60;

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

estRUL = predictRUL(mdl,linTestData1(48,:),threshold)
estRUL = duration
   112.64 hr

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

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

load('linTestData.mat','linTestData1')

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

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

threshold = 60;

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

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

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

for i=1:50
    update(mdl,linTestData1(i,:));
end

50 時間後、モデルに保存されている現在のライフタイム値によってコンポーネントの RUL を予測します。

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

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

アルゴリズム

すべて展開する

参照

[1] Chakraborty, S., N. Gebraeel, M. Lawley, and H. Wan. "Residual-Life Estimation for Components with Non-Symmetric Priors." IIE Transactions. Vol. 41, Number 4, 2009, pp. 372–387.

拡張機能

バージョン履歴

R2018a で導入