Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

predictRUL

テスト コンポーネントの残存耐用期間を推定

説明

関数 predictRUL は、与えられた推定モデルとその使用時間や劣化プロファイルに関する情報から、テスト コンポーネントの残存耐用期間 (RUL) を推定します。RUL を予測する前に、同じ仕様で製造された複数のマシンなど、類似コンポーネントのアンサンブルの健全性に関する履歴データを使用して推定モデルを構成しておく必要があります。これを行うには、関数 fit を使用します。

predictRUL を使用して、次のタイプの推定モデルの残存耐用期間を推定できます。

  • 劣化モデル

  • 生存モデル

  • 類似性モデル

RUL 予測の基本的な例については、データの着信に応じた RUL 予測の更新を参照してください。

これらのモデルを使用した残存耐用期間の予測に関する一般的な情報については、RUL 推定器モデルを使用した RUL の推定を参照してください。

estRUL = predictRUL(mdl,data) は、類似性モデル mdldata の劣化特徴プロファイルを使用してコンポーネントの残存耐用期間を推定します。data には、コンポーネントの現在のライフタイムまでの寿命全体にわたる特徴の測定値が格納されます。

estRUL = predictRUL(mdl,data,bounds) は、類似性モデルと bounds で指定された特徴の範囲を使用してコンポーネントの残存耐用期間を推定します。

estRUL = predictRUL(mdl,threshold) は、劣化モデル mdlmdl に格納されている現在のライフタイム変数値を使用してコンポーネントの RUL を推定します。RUL は、モデルの予測応答がしきい値 threshold に達するまでの残り時間になります。

estRUL = predictRUL(mdl,usageTime) は、信頼性生存モデル mdl とコンポーネントの現在の使用時間を使用してコンポーネントの RUL を推定します。

estRUL = predictRUL(mdl,covariates) は、共変量生存モデル mdl とコンポーネントの現在の共変量値を使用してコンポーネントの RUL を推定します。

estRUL = predictRUL(___,Name,Value) は、名前と値のペアの引数を 1 つ以上使用して追加のオプションを指定します。

[estRUL,ciRUL] = predictRUL(___) は、RUL 推定に関連付けられた信頼区間を返します。

[estRUL,ciRUL,pdfRUL] = predictRUL(___) は、RUL 推定の確率密度関数を返します。

[estRUL,ciRUL,pdfRUL,histRUL] = predictRUL(___) は、類似性モデルを使用して RUL を推定するときにコンポーネントの類似性スコアのヒストグラムを返します。

すべて折りたたむ

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

load('pairwiseTrainTables.mat')

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

絶対距離計量で動的時間伸縮法を使用して距離を計算し、時間数をライフタイムの単位として使用するペアワイズ類似性モデルを作成します。

mdl = pairwiseSimilarityModel('Method',"dtw",'Distance',"absolute",'LifeTimeUnit',"hours");

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

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

テスト データを読み込みます。テスト データには、テスト コンポーネントの現在のライフタイムまでの劣化特徴の測定値が含まれています。

load('pairwiseTestData.mat')

学習させた類似性モデルを使用してテスト コンポーネントの RUL を予測します。

estRUL = predictRUL(mdl,pairwiseTestData)
estRUL = duration
   93.671 hr

コンポーネントの推定 RUL は約 94 時間です。

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

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 時間です。

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

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('covariateData.mat')

このデータには、電池の放電時間や関連する共変量情報が含まれています。共変量変数は以下のとおりです。

  • 温度

  • 負荷

  • 製造元

製造元情報は、符号化する必要があるカテゴリカル変数です。

共変量生存モデルを作成し、学習データを使用して学習させます。

mdl = covariateSurvivalModel('LifeTimeVariable',"DischargeTime",'LifeTimeUnit',"hours",...
   'DataVariables',["Temperature","Load","Manufacturer"],'EncodedVariables',"Manufacturer");
fit(mdl,covariateData)
Successful convergence: Norm of gradient less than OPTIONS.TolFun

たとえば、製造元が B 社で、30 時間稼働したバッテリー パックがあるとします。使用時間 DischargeTime、測定された周囲温度 TestAmbientTemperature、電流 TestBatteryLoad を含むテスト データ table を作成します。

TestBatteryLoad = 25;
TestAmbientTemperature = 60; 
DischargeTime = hours(30);
TestData = timetable(TestAmbientTemperature,TestBatteryLoad,"B",'RowTimes',hours(30));
TestData.Properties.VariableNames = {'Temperature','Load','Manufacturer'};
TestData.Properties.DimensionNames{1} = 'DischargeTime';

バッテリーの RUL を予測します。

estRUL = predictRUL(mdl,TestData)
estRUL = duration
   38.332 hr

バッテリーの共変量データの生存時間関数をプロットします。

plot(mdl,TestData)

Figure contains an axes object. The axes object with title Survival Function Plot, xlabel Time, ylabel S(t) contains 2 objects of type stair. These objects represent Baseline Survival Function, Current Survival Function.

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

load('reliabilityData.mat')

このデータは、バッテリー放電時間を表す duration オブジェクトの列ベクトルです。

ライフタイム変数とライフタイムの単位を指定して、信頼性生存モデルを作成します。

mdl = reliabilitySurvivalModel('LifeTimeVariable',"DischargeTime",'LifeTimeUnit',"hours");

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

fit(mdl,reliabilityData)

新しいコンポーネントの寿命を予測し、推定の確率分布関数を取得します。

[estRUL,ciRUL,pdfRUL] = predictRUL(mdl);

確率分布をプロットします。

bar(pdfRUL.RUL,pdfRUL.ProbabilityDensity)
xlabel('Remaining useful life (hours)')
xlim(hours([40 90]))

Figure contains an axes object. The axes object with xlabel Remaining useful life (hours) contains an object of type bar.

予測のビン数とビン サイズを指定して分布の表示を改善します。

[estRUL,ciRUL,pdfRUL] = predictRUL(mdl,'BinSize',0.5,'NumBins',500);
bar(pdfRUL.RUL,pdfRUL.ProbabilityDensity)
xlabel('Remaining useful life (hours)')
xlim(hours([40 90]))

Figure contains an axes object. The axes object with xlabel Remaining useful life (hours) contains an object of type bar.

50 時間動作しているコンポーネントの RUL を予測します。

[estRUL,ciRUL,pdfRUL] = predictRUL(mdl,hours(50),'BinSize',0.5,'NumBins',500);
bar(pdfRUL.RUL,pdfRUL.ProbabilityDensity)
xlabel('Remaining useful life (hours)')
xlim(hours([0 40]))

Figure contains an axes object. The axes object with xlabel Remaining useful life (hours) contains an object of type bar.

入力引数

すべて折りたたむ

残存耐用期間予測モデル。次のモデルのいずれかとして指定します。

それぞれのモデル タイプとそれらを使用する状況の詳細については、残存耐用期間を予測するモデルを参照してください。

コンポーネントのライフ スパンにわたり現在のライフタイムまで測定された、類似性モデルを使用して RUL を推定するための劣化特徴プロファイル。以下のいずれかとして指定します。

  • N 行 (Mi + 1) 列の配列。ここで、N は (異なる使用時間における) 特徴の測定値の数、Mi は特徴の数です。最初の列には使用時間が含まれ、残りの列には対応する劣化特徴の測定値が含まれています。特徴の順序は、mdlDataVariables プロパティで指定されている順序と一致する必要があります。

  • table オブジェクトまたは timetable オブジェクト。table には、mdlDataVariables プロパティおよび LifeTimeVariable プロパティにある string と名前の一致する変数が含まれている必要があります。

data は、mdlhashSimilarityModel オブジェクト、pairwiseSimilarityModel オブジェクト、または residualSimilarityModel オブジェクトの場合に適用されます。

コンポーネントの有効寿命を示す劣化特徴の範囲。N 行 2 列の配列として指定します。ここで、N は劣化特徴の数です。i 番目の特徴について、bounds(i,1) が特徴の下限、bounds(i,2) が上限です。特徴の順序は、 mdlDataVariables プロパティで指定されている順序と一致する必要があります。

bounds は、劣化特徴の許容可能な範囲に関する知識に基づいて選択します。

bounds は、mdlhashSimilarityModel オブジェクト、pairwiseSimilarityModel オブジェクト、または residualSimilarityModel オブジェクトの場合に適用されます。

劣化モデルのデータ変数のしきい値の制限。スカラー値として指定します。残存耐用期間は、モデルの予測応答がしきい値に達するまでの残り時間になります。

mdlTheta プロパティの符号は、劣化が進む方向を示します。Theta に応じて次のようになります。

  • 正の場合、threshold は劣化特徴の上限です。

  • 負の場合、threshold は劣化特徴の下限です。

threshold は、劣化特徴の許容可能な範囲に関する知識に基づいて選択します。

threshold は、mdllinearDegradationModel オブジェクトまたは exponentialDesgradationModel オブジェクトの場合に適用されます。

コンポーネントの現在の使用時間。スカラー値または duration オブジェクトとして指定します。usageTime の単位は、mdlLifeTimeUnit プロパティと互換性がなければなりません。

コンポーネントの現在の共変量値と使用時間。以下として指定します。

  • 最初の列に使用時間を含む行ベクトル。残りの列ではコンポーネントの共変量値のみを指定し、ライフタイム値は指定しません。共変量値の数は、fit を用いて mdl を推定する際に使用する共変量データ列の数と順序に一致させる必要があります。

  • 1 行の table または 1 行の timetable。table には、mdlLifeTimeVariableDataVariables、および CensorVariable のプロパティで指定された変数を含める必要があります。

共変量データに符号化された変数が含まれる場合は、table または timetable を使用して covariates を指定する必要があります。

名前と値の引数

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

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

例: Alpha,0.2 は、予測の信頼区間を 0.2/2 から 1-0.2/2 までの百分位数の領域に設定します。

ciRUL の計算の信頼度。'Alpha' と 0 から 1 までの範囲のスカラー値で構成されるコンマ区切りのペアとして指定します。predictRUL は、信頼区間を Alpha/2 から 1-Alpha/2 までの百分位数の領域として計算します。

pdfRUL の評価に使用されるビン数。'NumBins' と正の整数で構成されるコンマ区切りのペアとして指定します。この引数は、mdl が劣化モデルまたは生存モデルの場合に適用されます。

pdfRUL を計算する寿命の判別に使用されるビン サイズ。'BinSize' と正のスカラーまたは duration オブジェクトのいずれかで構成されるコンマ区切りのペアとして指定します。この引数は、mdl が劣化モデルまたは信頼性生存モデルの場合に適用されます。

共変量生存モデルの確率密度関数を生成するための生存時間関数の変換方法。'Method' と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'empirical' — 経験的累積分布関数の勾配を求めることで pdfRUL を生成します。累積分布関数は 1-S(t) です。ここで、S(t) は生存時間関数です。

  • 'weibull' — 生存時間関数にワイブル分布を当てはめることで pdfRUL を生成します。

生存時間関数の詳細については、covariateSurvivalModel を参照してください。

出力引数

すべて折りたたむ

コンポーネントの推定される残存耐用期間。スカラーとして返されます。戻り値の単位は、mdlLifeTimeUnit プロパティで示されるライフタイム変数の単位です。

estRUL に関連付けられた信頼区間。2 要素の行ベクトルとして返されます。信頼区間の百分位数は Alpha を使用して指定します。

RUL の確率密度関数。mdl のライフタイム変数が時間ベースの場合は timetable、それ以外の場合は table として返されます。

predictRUL で確率密度関数を計算するときに使用される寿命は、指定する RUL モデルのタイプに応じて異なります。mdl に応じて次のようになります。

  • 劣化モデルの場合、寿命は [usageTime usageTime+BinSize*NumBins] です。

  • 信頼性生存モデルの場合、寿命は [T T+BinSize*NumBins] です。ここで、TusageTime で指定される使用時間です。

  • 共変量生存モデルの場合、寿命は linspace(T1,T2,NumBins) です。ここで、[T1,T2]mdlBaslineCumulativeHazard プロパティで決定されるコンポーネントの寿命範囲です。

  • 類似性モデルの場合、寿命は探索アルゴリズムで検出された最近傍の寿命に依存します。たとえば、mdlNumNearestNeighbors プロパティが 10 で、10 個の最近傍の寿命が 10 か月から 3 年の範囲にわたる場合、この範囲全体の故障時間のヒストグラムが求められます。その後、predictRUL は、その生のヒストグラム データにカーネル平滑化手法を使用して確率密度関数を当てはめます。

ヒストグラム プロットの生の類似性スコア。mdl のライフタイム変数が時間ベースの場合は timetable、それ以外の場合は table として返されます。histRUL には次の変数があります。

  • 'RUL'mdl のパラメーターの当てはめに使用される、過去のコンポーネントの残存耐用期間の値。

  • 'NormalizedDistanceScore'mdl のパラメーターの当てはめに使用される、テスト コンポーネントを過去のコンポーネントと比較して得られた類似性スコア。

histRUL のデータのヒストグラムは、pdfRUL の当てはめられていないバージョンです。ヒストグラムをプロットするには、MATLAB® コマンド ラインで次のように入力します。

bar(histRUL.RUL,histRUL.NormalizedDistanceScore)

histRUL は、mdlhashSimilarityModel オブジェクト、pairwiseSimilarityModel オブジェクト、または residualSimilarityModel オブジェクトの場合に返されます。

拡張機能

バージョン履歴

R2018a で導入

すべて展開する